You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行PyTorch图像加载代码时遇TypeError:'module'对象不可调用

解决PyTorch加载猫狗数据集时的TypeError: 'module' object is not callable错误

这是个很容易犯的小失误,我马上就能定位问题所在:

错误根源

你在初始化ImageFolder数据集时,把参数值写错了——你传入的是transform = transforms,但这里的transforms是PyTorch的整个变换模块(比如torchvision.transforms),它本身并不是一个可调用的变换函数。而你明明已经提前定义好了一个组合好的变换流水线transform(注意没有末尾的s),却没正确引用它。当DataLoader尝试把这个"模块"当作变换函数去执行时,自然就会抛出"module object is not callable"的错误。

解决方案

只需要把ImageFolder初始化代码里的transforms改成你之前定义好的transform变量即可。

修正后的完整代码如下:

import torch
from torchvision import datasets, transforms
# 假设helper模块已存在
import helper

data_dir = '../Cat_Dog_data/train'
# 定义组合后的变换流水线
transform = transforms.Compose([
    transforms.ToTensor(), 
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
# 修正transform参数的引用
dataset = datasets.ImageFolder(data_dir, transform=transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)

# 测试数据加载器
images, labels = next(iter(dataloader))
helper.imshow(images[0], normalize=False)

额外提示

以后写代码时要注意区分模块名和自定义的变量名,尤其是当两者只有一个字母差异时(比如这里的transform和transforms),很容易手滑写错,多检查一遍就能避免这类问题~

内容的提问来源于stack exchange,提问作者spchaane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:28:15