问题描述
今天在用 pytorch 实现自定义数据读取时,出现了下面这个bug :
AttributeError: module ‘torch.utils’ has no attribute ‘data’
代码如下:
import torch
class MyDataset(torch.utils.data.Dataset):
def __init__(self, root, train=True, transform=None, target_transform=None):
pass
def __getitem__(self, index):
pass
def __len__(self):
return 0
问题的出错描述是,torch.utils
下面没有 data
这个属性,但是我看了一下 Pytorch 的 github,发现,是有 data 这个包的:
百思不得其解,为此还怀疑了一下 pytorch 的安装问题,重新安装了一遍,发现还是这样。
解决方法
问了一下学长,发现是 data
包没导入的问题,data
这个包需要额外导入,添加代码:
from torch.utils import data
还需要更改引用的方式,更改后:
import torch
from torch.utils import data
class MyDataset(data.Dataset):
def __init__(self, root, train=True, transform=None, target_transform=None):
pass
def __getitem__(self, index):
pass
def __len__(self):
return 0
后来又谷歌了一下,发现了这个话题:
Torch.utils has no module ‘data’
直接添加 import torch.utils.data 也能解决问题,不用更改引用方式,更改后的代码如下:
import torch
import torch.utils.data
class MyDataset(torch.utils.data.Dataset):
def __init__(self, root, train=True, transform=None, target_transform=None):
pass
def __getitem__(self, index):
pass
def __len__(self):
return 0
总结
有的包是不能直接 .
出来的,后来看到了这篇文章:Python import 到底引入了什么 。 虽然没怎么看懂,但觉得还不错。
出现这个 bug, 原因还是自己对 python 导入包的理解不够,打算系统地学习一下 python…