PyTorch训练循环报错TypeError: 'Tensor' object is not callable如何解决?
PyTorch线性回归报错:TypeError: 'Tensor' object is not callable 解决方法
问题根源
报错指向for epoch in range(epochs):这一行,说明变量epochs实际是Tensor对象,而非你代码中声明的整数50。range()函数要求传入整数类型参数,若传入Tensor,就会触发'Tensor' object is not callable错误——大概率是你在之前的代码中不小心将epochs赋值为Tensor,后续的epochs=50未成功覆盖该变量,或者存在变量名冲突。
解决步骤
- 先验证变量类型:在循环前添加一行代码,确认
epochs的类型:
如果输出为print(type(epochs))<class 'torch.Tensor'>,即可确认问题所在。 - 强制将
epochs转为整数:- 若
epochs是误定义为Tensor,直接重新赋值整数:
确保这行代码在循环语句之前执行,且没有被其他代码覆盖。epochs = 50 - 若
epochs是从Tensor计算得到的,用.item()方法转换为Python整数:epochs = epochs.item()
- 若
- 额外排查:确认没有将内置函数
range误赋值为Tensor(比如之前写过range = torch.tensor(...)),这种情况虽少见,但也会引发同类错误。
补充验证
修复后,运行循环前的代码,确认type(epochs)输出为<class 'int'>,再执行训练循环即可正常运行。
内容的提问来源于stack exchange,提问作者Safi Ahmed
相关产品推荐
相关产品推荐

