鱼C论坛

 找回密码
 立即注册
查看: 2646|回复: 2

[已解决]TypeError: 'DataLoader' object is not callable

[复制链接]
发表于 2023-5-20 16:45:29 | 显示全部楼层
这个错误提示是因为你在 fit 函数的第一行中调用了 train_dl 和 test_dl,但其实这两个变量是 torch.utils.data.DataLoader 类型的对象,而不是函数,所以不能被调用。你需要把 train_dl 和 test_dl 改成 train_ds 和 test_ds,这样才能正确运行 fit 函数。修改后的代码如下:

  1. epochs = 30
  2. train_loss = []
  3. train_acc = []
  4. test_loss = []
  5. test_acc = []
  6. for epoch in range(epochs):
  7.     train_loss_epoch, train_acc_epoch, test_loss_epoch, test_acc_epoch = fit(epoch, model, train_ds, test_ds, loss_fn, optimizer)
  8.     train_loss.append(train_loss_epoch)
  9.     train_acc.append(train_acc_epoch)
  10.     test_loss.append(test_loss_epoch)
  11.     test_acc.append(test_acc_epoch)
  12.     template = ("epoch:{:2d},train_loss:{:.5f},train_acc:{:.1f},test_loss:{:.5f}, test_acc:{:.1f}")
  13.     print(template.format(epoch, train_loss_epoch, train_acc_epoch * 100, test_loss_epoch, test_acc_epoch * 100))

  14. print(train_loss, train_acc, test_loss, test_acc)
复制代码

此外,由于你定义了一个 train_loss 的列表作为存储每个 epoch 训练损失的变量,所以在上面的代码中也需要把变量名 train_loss 改成 train_loss_epoch,以避免冲突。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-15 03:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表