质心
- 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_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\)是输入与目标类原型的余弦相似度。