Ich versuche meine neuronalen Netze auf Hunderassen Datensatz zu trainieren. Nach dem Feedforward, während der Verlust Berechnung wirft es diesen Fehler:`THIndexTensor_ (Größe) (Ziel, 0) == Batch_Size 'fehlgeschlagen. bei d: projekte pytorch torch lib thnn generisch/ClassNLLCriterion.c: 54
RuntimeError: Assertion `THIndexTensor_(size)(target, 0) == batch_size' failed. at d:\projects\pytorch\torch\lib\thnn\generic/ClassNLLCriterion.c:54
Code:
criterion =nn.CrossEntropyLoss()
optimizer=optim.Adam(net.parameters(),lr=0.001)
for epoch in range(10): # loop over the dataset multiple times
running_loss = 0.0
print(len(trainloader))
for i, data in enumerate(trainloader, 0):
# get the inputs
inputs, labels = data
# wrap them in Variable
inputs, labels = Variable(inputs).float(), Variable(labels).float().type(torch.LongTensor)
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.data[0]
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss/2000))
running_loss = 0.0
print('Finished Training')
Fehler in dieser Zeile generiert wird:
loss = criterion(outputs, labels)
Was das Problem ist ??
können Sie die Form von 'outputs' und' labels' drucken? Verwenden Sie 'print (outputs.size(), labels.size())' vor 'loss = criteria (outputs, labels)'. dann können wir helfen. –
hier ist das Ergebnis von "print (outputs.size(), labels.size())" torch.Size ([2500, 120]) torch.Size ([4]) – fateh