我在我的代码中使用了loss_val.item()而不是loss_val.data [0],因为新版本的python不支持该功能,但是正如您在此处看到的那样,但是在列表中收集损失我收到了错误
“'float'对象不可迭代”
你知道我该怎么办吗?
num_epochs = 10损失= []对于范围内的纪元(num_epochs):对于i,(枚举(train_dl)中的(输入,目标):输入= to_var(输入)#转换为变量目标= to_var(目标)
# forwad pass
optimizer.zero_grad()
outputs = model(inputs)
# loss
loss_val = criterion(outputs, targets)
**losses+= loss_val.item()**
# backward pass
loss_val.backward()
# update parameters
optimizer.step()
#W=W-Ir*dW
# report
if (i + 1) % 50 == 0:
print('Epoch [%2d/%2d], Step [%3d/%3d], Loss: %.4f'% (epoch + 1, num_epochs, i + 1, len(train_ds) // batch_size, loss_val.item()))
我认为我应该说更多:如果你看我的代码
1)损失= []是一个列表,然后我尝试在每次迭代中将损失添加到绘制图表中:
2)loss_val =准则(输出,目标)
3)损失+ = loss_val.item()
但我收到此错误,即“ float”对象不可迭代”
此错误分为三行