第一个月
我在下面的训练循环中得到了这个错误,梯度必须是由序列本身设置的,但它说没有梯度。
"""Training"""
Epochs = 100
for epoch in range(Epochs):
model.train()
train_logits = model(X_train)
train_preds_probs = torch.softmax(train_logits,dim=1).argmax(dim=1).type(torch.float32)
loss = loss_fn(train_preds_probs,y_train)
train_accu = accuracy(y_train,train_preds_probs)
print(train_preds_probs)
optimiser.zero_grad()
loss.backward()
optimiser.step()
#training
model.eval()
with torch.inference_mode():
test_logits = model(X_test)
test_preds = torch.softmax(test_logits.type(torch.float32),dim=1).argmax(dim=1)
test_loss = loss_fn(test_preds,y_train)
test_acc = accuracy(y_test,test_preds)
if epoch%10 == 0:
print(f'Epoch:{epoch} | Train loss: {loss} |Taining acc:{train_accu} | Test Loss: {test_loss} | Test accu: {test_acc}')
字符串
我试着在网上冲浪,但没有得到解决方案。
任何帮助是赞赏!
1条答案
按热度按时间7rtdyuoh1#
有时,当代码的一部分被
字符串
我建议在你的代码中检查各种函数,也许你已经检查过了,但这是一个好的开始!