Hopfield

class torchhd.memory.Hopfield(vector_dim: int, kappa: int | None = None, dtype=None, device=None, requires_grad=False)[来源]

经典霍普菲尔德网络

Parameters:
  • vector_dim (int) – 内存中向量的维度。

  • kappa (int, optional) – 每个记忆单元的最大计数,值被限制在 [-kappa, kappa] 之间。默认值:无限制。

  • dtype (torch.dtype, 可选) – 返回张量的期望数据类型。默认值:如果 None 则取决于 VSATensor。

  • device (torch.device, 可选) – 返回张量的期望设备。默认值:如果 None,则使用当前设备作为默认张量类型(参见 torch.set_default_tensor_type())。device 对于 CPU 张量类型将是 CPU,对于 CUDA 张量类型将是当前的 CUDA 设备。

  • requires_grad (bool, 可选) – 如果自动求导应该记录返回张量上的操作。默认值:False

Shapes:
  • 内存: \((d, d)\)

Examples::
>>> items = torchhd.random(6, 512)
>>> hopfield = torchhd.memory.Hopfield(512)
>>> hopfield.write(items)
>>> read = hopfield.read(items).sign()
>>> torchhd.cosine_similarity(read, items)
tensor([[ 1.0000,  0.0156, -0.0039, -0.0742,  0.0000, -0.0195],
        [ 0.0156,  1.0000, -0.0352, -0.0586,  0.0000, -0.0039],
        [-0.0039, -0.0352,  1.0000,  0.0156,  0.0820, -0.0234],
        [-0.0742, -0.0586,  0.0156,  1.0000, -0.0039,  0.0000],
        [ 0.0000,  0.0000,  0.0820, -0.0039,  1.0000,  0.0195],
        [-0.0195, -0.0039, -0.0234,  0.0000,  0.0195,  1.0000]])
read(query: Tensor) Tensor[来源]

从Hopfield网络中读取与查询最相似的键的值。

Parameters:

query (Tensor) – 用于内存查找的查询向量。

Shapes:
  • 查询: \((*, d)\)

  • 结果: \((*, d)\)

write(items: Tensor) Tensor[来源]

将项目写入Hopfield记忆。

Parameters:

items (Tensor) – 要写入内存的项目向量。

Shapes:
  • 项目: \((*, d)\)