投影
- class torchhd.embeddings.Projection(in_features, out_features, vsa: Literal['BSC', 'MAP', 'HRR', 'FHRR', 'BSBC', 'VTB', 'MCR'] = 'MAP', requires_grad=False, device=None, dtype=None)[来源]
使用随机投影矩阵进行嵌入。
基于A Theoretical Perspective on Hyperdimensional Computing实现。 它计算\(x \Phi^{\mathsf{T}}\),其中\(\Phi \in \mathbb{R}^{d \times m}\)是一个矩阵,其行是从\(d\)维单位球面均匀随机采样的。 这种编码确保输入空间中的相似性在高维空间中得以保留。
- Parameters:
in_features (int) – 输入特征向量的维度。
out_features (int) – 超向量的维度。
vsa – (
VSAOptions, 可选): 指定要实例化的超向量类型。默认值:"MAP".requires_grad (bool, 可选) – 如果自动求导应该记录返回张量上的操作。默认值:
False。dtype (
torch.dtype, 可选) – 返回张量的期望数据类型。默认值:如果None,则使用全局默认值(参见torch.set_default_tensor_type())。device (
torch.device, 可选) – 返回张量的期望设备。默认值:如果None,则使用当前设备作为默认张量类型(参见 torch.set_default_tensor_type())。device对于 CPU 张量类型将是 CPU,对于 CUDA 张量类型将是当前的 CUDA 设备。
示例:
>>> embed = embeddings.Projection(6, 5) >>> x = torch.randn(3, 6) >>> x tensor([[ 0.4119, -0.4284, 1.8022, 0.3715, -1.4563, -0.2842], [-0.3772, -1.2664, -1.5173, 1.3317, 0.4707, -1.3362], [-1.8142, 0.0274, -1.0989, 0.8193, 0.7619, 0.9181]]) >>> embed(x).sign() MAPTensor([[-1., 1., 1., 1., 1.], [ 1., 1., 1., 1., 1.], [ 1., -1., -1., -1., -1.]])