【发布时间】:2020-04-15 09:35:00
【问题描述】:
我在我的代码中使用了 loss_val.item() 而不是 loss_val.data[0] 因为新版本的 python 不支持,但是正如你在这里看到的,但是我收到了在列表中收集损失的错误
" 'float' 对象不可迭代"
你知道我该怎么办吗?
num_epochs = 10 损失= [] 对于范围内的纪元(num_epochs): 对于我,枚举(train_dl)中的(输入,目标): inputs = to_var(inputs) # 转换为变量 目标 = 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()))
【问题讨论】:
-
请发送一个最小的例子(我们可以运行的东西)。除了你得到的堆栈跟踪,
标签: python-3.x list syntax-error training-data loss