Поэлементное умножение с весами питора - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь построить простую «нейронную сеть» с простым поэлементным умножением на весовые коэффициенты.Только для этого сценария у меня есть данные с 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,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

Возможно, есть более простой способ построить и обучить эту простую нейронную сетьбез ошибок?

...