前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TypeError: 'module' object is not callable (pytorch在进行MNIST数据集预览时出现的错误)

TypeError: 'module' object is not callable (pytorch在进行MNIST数据集预览时出现的错误)

原创
作者头像
陶陶name
发布于 2022-05-12 00:32:51
发布于 2022-05-12 00:32:51
2.2K0
举报
文章被收录于专栏:陶陶计算机陶陶计算机

在使用pytorch在对MNIST数据集进行预览时,出现了TypeError: 'module' object is not callable的错误:

上报错信息图如下:

在这里插入图片描述
在这里插入图片描述

从图中可以看出,报错位置为第35行,也就是如下位置的错误:

代码语言:txt
AI代码解释
复制
images, labels = next(iter(data_loader_train))

在经过多次的检查发现,引起MNIST数据集无法显现的问题不是由于这一行所引起的,而是由于缺少了对图片进行处理,在加载数据代码的前添加上如下的代码:

代码语言:txt
AI代码解释
复制
transform = transforms.Compose([
     transforms.ToTensor(),
     transforms.Lambda(lambda x: x.repeat(3,1,1)),
     transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
 ])   
  • 此时问题就已经解决了
  • 下面完整的代码贴出来:
代码语言:txt
AI代码解释
复制
 1.获取手写数字的训练集和测试集
# 2.root 存放下载的数据集的路径
# 3.transform用于指定导入数据集需要对数据进行哪种操作
# 4.train是指定在数据集下完成后需要载入数据哪部分
import torch
import torchvision
import matplotlib.pyplot as plt
from torchvision import *
from torchvision import transforms
from torch.autograd import Variable

transform = transforms.Compose([
     transforms.ToTensor(),
     transforms.Lambda(lambda x: x.repeat(3,1,1)),
     transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
 ])   # 修改的位置

# 获取数据
data_train=datasets.MNIST(root='./MNIST_Model/',
                          transform=transforms,
                          train=True,           # true训练集
                          download=True)
data_test=datasets.MNIST(root='./MNIST_Model/',
                         transform=transforms,
                         train=False)          # false测试集
# 装载数据
data_loader_train=torch.utils.data.DataLoader(dataset=data_train,
                                              batch_size=64,  # 处理批次的大小(一次处理的数据大小)
                                              shuffle=True)   # 将处理的数据集合打乱
data_loader_test=torch.utils.data.DataLoader(dataset=data_test,
                                             batch_size=64,
                                             shuffle=True)
# 装载好数据之后,进行预览
images, labels = next(iter(data_loader_train))
img = torchvision.utils.make_grid(images)

img = img.numpy().transpose(1, 2, 0)
std = [0.5, 0.5, 0.5]
mean = [0.5, 0.5, 0.5]
img = img * std + mean
plt.imshow(img)
plt.show() #这一行非常关键,不写这一行的代码的话,其预览的图片是无法展示出来的

最终的结果如图所示:

在这里插入图片描述
在这里插入图片描述

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档