稀疏分布式
- class torchhd.memory.SparseDistributed(memory_size: int, key_dim: int, value_dim: int, p: float = 0.000368, kappa: int | None = None, dtype=None, device=None, requires_grad=False)[来源]
-
稀疏分布式内存(SDM)由其(通常是随机的)键及其值指定。
- Parameters:
memory_size (int) – 内存键值对的数量。
key_dim (int) – 键向量的维度。
value_dim (int) – 值向量的维度。
p (float, 可选) – 预计包含任何值的内存地址的比例。默认值:
0.000368。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:
键值: \((n, a)\)
值:\((n, c)\)
- Examples::
>>> keys = torchhd.random(6, 512) >>> sdm = torchhd.memory.SparseDistributed(100000, 512, 512) >>> # use as associative memory >>> sdm.write(keys, keys) >>> read = sdm.read(keys).sign() >>> torchhd.cosine_similarity(read, keys) 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]])