质心

class torchhd.models.Centroid(in_features: int, out_features: int, device=None, dtype=None, requires_grad=False)[来源]

使用类原型实现质心分类模型。

Parameters:
  • in_features (int) – 每个输入样本的大小。

  • out_features (int) – 输出的大小,通常是类别的数量。

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

  • dtype (torch.dtype, 可选) – 权重的期望数据类型。默认值:如果 None,则使用 torch.get_default_dtype()

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

Shape:
  • 输入: \((*, d)\) 其中 \(*\) 表示任意数量的维度,包括无维度和 d = in_features

  • 输出:\((*, n)\) 其中除了最后一个维度外,其他维度的形状与输入相同,且 n = out_features

weight

模块的可训练权重,或类原型,形状为 \((n, d)\)。值初始化为全零。

Type:

torch.Tensor

示例:

>>> m = Centroid(20, 30)
>>> input = torch.randn(128, 20)
>>> output = m(input)
>>> output.size()
torch.Size([128, 30])
add(input: Tensor, target: Tensor, lr: float = 1.0) None[来源]

将输入向量按学习率缩放后添加到目标原型向量中。

add_adapt(input: Tensor, target: Tensor, lr: float = 1.0) None[来源]

仅更新错误预测输入的原型向量。

实现了AdaptHD: Adaptive Efficient Training for Brain-Inspired Hyperdimensional Computing中描述的迭代训练方法。

从错误预测的类别原型中减去输入,该原型按学习率缩放,并将输入添加到目标原型中,该原型也按学习率缩放。

add_online(input: Tensor, target: Tensor, lr: float = 1.0) None[来源]

仅更新错误预测输入的原型向量。

实现了如OnlineHD: Robust, Efficient, and Single-Pass Online Learning Using Hyperdimensional System中所述的迭代训练方法。

将输入添加到由\(\epsilon - 1\)缩放的误分类原型中, 并将输入添加到由\(1 - \delta\)缩放的目标原型中, 其中\(\epsilon\)是输入与误分类原型的余弦相似度, \(\delta\)是输入与目标类原型的余弦相似度。

extra_repr() str[来源]

设置模块的额外表示。

要打印自定义的额外信息,您应该在自己的模块中重新实现此方法。单行和多行字符串都是可接受的。

forward(input: Tensor, dot: bool = False) Tensor[来源]

定义每次调用时执行的计算。

应该由所有子类覆盖。

注意

尽管前向传递的配方需要在此函数内定义,但之后应该调用Module实例而不是这个,因为前者负责运行已注册的钩子,而后者则默默地忽略它们。

normalize(eps=1e-12) None[来源]

将所有类原型向量转换为单位向量。

调用此方法后,通过在正向传递中指定dot=True,可以更高效地进行推断。 不建议在调用此方法后继续训练。