Memory Module

The bayes_hdc.memory module provides content-addressable memory structures.

SparseDistributedMemory

class bayes_hdc.memory.SparseDistributedMemory(locations, contents, dimensions, radius)[source]

Bases: object

Sparse Distributed Memory (SDM) for content-addressable storage.

Parameters:
  • locations (Array)

  • contents (Array)

  • dimensions (int)

  • radius (float)

locations: Array
contents: Array
dimensions: int
radius: float
static create(num_locations, dimensions, radius=0.0, key=None)[source]
Parameters:
  • num_locations (int)

  • dimensions (int)

  • radius (float)

  • key (Array | None)

Return type:

SparseDistributedMemory

write(address, value)[source]
Parameters:
  • address (Array)

  • value (Array)

Return type:

SparseDistributedMemory

read(address)[source]
Parameters:

address (Array)

Return type:

Array

__init__(locations, contents, dimensions, radius)
Parameters:
  • locations (Array)

  • contents (Array)

  • dimensions (int)

  • radius (float)

Return type:

None

HopfieldMemory

class bayes_hdc.memory.HopfieldMemory(patterns, dimensions, beta=1.0)[source]

Bases: object

Modern continuous Hopfield network (Ramsauer et al. 2020).

One-step softmax-attention retrieval over stored patterns. Distinct from the classical sign-thresholded recurrent Hopfield network (Hopfield 1982) — which settles via repeated application of a sign update — and from the spiking-neuron cleanup memories of Stewart, Tang & Eliasmith (2010), which run on populations of leaky- integrate-and-fire neurons via the Neural Engineering Framework. Retrieval here is a single feed-forward softmax over cosine similarities to the stored patterns; no recurrent settling.

References: Ramsauer, H. et al. (2020). Hopfield Networks is All You Need. arXiv:2008.02217. Hopfield, J. J. (1982). Neural networks and physical systems with emergent collective computational abilities. PNAS 79(8): 2554-2558. Stewart, T. C., Tang, Y., Eliasmith, C. (2010). A Biologically Realistic Cleanup Memory: Autoassociation in Spiking Neurons. Cognitive Systems Research 12: 84-92.

Parameters:
  • patterns (Array)

  • dimensions (int)

  • beta (float)

patterns: Array
dimensions: int
beta: float = 1.0
static create(dimensions, beta=1.0)[source]
Parameters:
Return type:

HopfieldMemory

add(pattern)[source]
Parameters:

pattern (Array)

Return type:

HopfieldMemory

retrieve(query)[source]
Parameters:

query (Array)

Return type:

Array

__init__(patterns, dimensions, beta=1.0)
Parameters:
  • patterns (Array)

  • dimensions (int)

  • beta (float)

Return type:

None

AttentionMemory

class bayes_hdc.memory.AttentionMemory(keys, values, dimensions, temperature=1.0, num_heads=1)[source]

Bases: object

Attention-based retrieval with key-value storage and multi-head support.

Parameters:
  • keys (Array)

  • values (Array)

  • dimensions (int)

  • temperature (float)

  • num_heads (int)

keys: Array
values: Array
dimensions: int
temperature: float = 1.0
num_heads: int = 1
static create(dimensions, temperature=1.0, num_heads=1)[source]
Parameters:
Return type:

AttentionMemory

write(key, value)[source]
Parameters:
  • key (Array)

  • value (Array)

Return type:

AttentionMemory

write_batch(keys, values)[source]
Parameters:
  • keys (Array)

  • values (Array)

Return type:

AttentionMemory

retrieve(query)[source]
Parameters:

query (Array)

Return type:

Array

retrieve_with_weights(query)[source]
Parameters:

query (Array)

Return type:

tuple

__init__(keys, values, dimensions, temperature=1.0, num_heads=1)
Parameters:
  • keys (Array)

  • values (Array)

  • dimensions (int)

  • temperature (float)

  • num_heads (int)

Return type:

None