|
发表于 2023-5-20 16:45:29
|
显示全部楼层
这个错误提示是因为你在 fit 函数的第一行中调用了 train_dl 和 test_dl,但其实这两个变量是 torch.utils.data.DataLoader 类型的对象,而不是函数,所以不能被调用。你需要把 train_dl 和 test_dl 改成 train_ds 和 test_ds,这样才能正确运行 fit 函数。修改后的代码如下:
- epochs = 30
- train_loss = []
- train_acc = []
- test_loss = []
- test_acc = []
- for epoch in range(epochs):
- train_loss_epoch, train_acc_epoch, test_loss_epoch, test_acc_epoch = fit(epoch, model, train_ds, test_ds, loss_fn, optimizer)
- train_loss.append(train_loss_epoch)
- train_acc.append(train_acc_epoch)
- test_loss.append(test_loss_epoch)
- test_acc.append(test_acc_epoch)
- template = ("epoch:{:2d},train_loss:{:.5f},train_acc:{:.1f},test_loss:{:.5f}, test_acc:{:.1f}")
- print(template.format(epoch, train_loss_epoch, train_acc_epoch * 100, test_loss_epoch, test_acc_epoch * 100))
- print(train_loss, train_acc, test_loss, test_acc)
复制代码
此外,由于你定义了一个 train_loss 的列表作为存储每个 epoch 训练损失的变量,所以在上面的代码中也需要把变量名 train_loss 改成 train_loss_epoch,以避免冲突。 |
|