首页 > 解决方案 > 与 pytorch 权重的元素乘法

问题描述

我正在尝试构建一个简单的“神经网络”,只需按元素乘以权重。仅对于这种情况,我有一个具有 5 个特征的数据,其中只有一个是“1”,其余的都是“0”(一个热编码),我试图用 softmax 和交叉熵损失预测正确的类。这是我的代码(假设我有 26 个功能和(类):

class Net(nn.Module):
    def __init__(self,n):
        super(Net, self).__init__()
        self.weights = nn.Parameter(torch.Tensor(n))

    def forward(self, x):
        return F.softmax(x * self.weights)

net = Net(n=26)

现在我尝试给出形状为 的未压缩张量数据(例如批量大小为 1)和形状为(1,1,26)的张量标签(1,26)。当我通过使用插入损失函数loss = criterion(nn_outputs, labels)并收到以下错误时:

RuntimeError: Assertion `cur_target >= 0 && cur_target < n_classes' failed.  at c:\a\w\1\s\tmp_conda_3.7_110509\conda\conda-bld\pytorch_1544094576194\work\aten\src\thnn\generic/SpatialClassNLLCriterion.c:110

也许有更简单的方法来构建和训练这个简单的神经网络而不会出错?

标签: pytorchelementwise-operationsone-hot-encoding

解决方案


推荐阅读