gpt4 book ai didi

python - 类型错误 : 'int' object is not callable in loss. 向后()

转载 作者:行者123 更新时间:2023-12-01 07:18:24 26 4
gpt4 key购买 nike

在尝试设置 pytorch 模型时,我收到错误消息,表示在尝试执行 Pytorch autograd 时损失对象不可调用。 (相关代码如下所示)

optimizer = torch.optim.Adam(model.parameters(), lr=lr, 
betas(0.0,0.9))

def train(epoch, shuffle, wisdom_model, optim, loss):
print('train')
accuracy = 0
batch_num = 0
wisdom_model.train()
for batch in data.train_dl:

optim.zero_grad()

result = model(batch[0])
loss = nn.CrossEntropyLoss()(result, batch[1].long())

loss.backward()

accuracy += accuracy(result, batch[1])
print(accuracy)
pdb.set_trace()
batch_num += 1

return accuracy / batch_num
TypeError                                 Traceback (most recent call last)
<ipython-input-28-5b9c9fe3b320> in <module>
----> 1 run(1, False)

<ipython-input-27-d0d67dbf6eb2> in run(num_models, dropout)
71
72 for epoch in range(10):
---> 73 train_accuracy = train(epoch, False, model, optimizer, loss)
74 accuracy.append(validate(epoch, model))
75

<ipython-input-27-d0d67dbf6eb2> in train(epoch, shuffle, model, optim, loss)
24 pdb.set_trace()
25
---> 26 loss.backward()
27 optim.step()
28

TypeError: 'int' object is not callable

最佳答案

问题出在这一行:

loss = nn.CrossEntropyLoss()(result, batch[1].long())

查看 nn.CrossEntropyLoss .

不应该是这样的:

nn.CrossEntropyLoss()()

应该看起来像这样:

nn.CrossEntropyLoss()

关于python - 类型错误 : 'int' object is not callable in loss. 向后(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com