训练时在pytorch中没有grad集错误

ee7vknir  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(139)

第一个月
我在下面的训练循环中得到了这个错误,梯度必须是由序列本身设置的,但它说没有梯度。

"""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}')

字符串
我试着在网上冲浪,但没有得到解决方案。
任何帮助是赞赏!

7rtdyuoh

7rtdyuoh1#

有时,当代码的一部分被

with torch.no_grad():

字符串
我建议在你的代码中检查各种函数,也许你已经检查过了,但这是一个好的开始!

相关问题