【发布时间】:2021-09-04 10:27:38
【问题描述】:
我正在尝试创建 PyTorch MNIST 数据集类的子类,我称之为 CustomMNISTDataset,如下所示:
import torchvision.datasets as datasets
class CustomMNISTDataset(datasets.MNIST):
def __init__(self, root='/home/psando'):
super().__init__(root=root,
download=False)
但是当我执行时:
dataset = CustomMNISTDataset()
失败并出现错误:“RuntimeError: Dataset not found. You can use download=True to download it”。
但是,当我在同一个文件中运行以下命令时:
dataset = datasets.MNIST(root='/home/psando', download=False)
print(len(dataset))
成功并按预期打印“60000”。
由于CustomMNISTDataset 子类datasets.MNIST 为什么行为不同?我已经验证路径“/home/psando”包含带有原始和已处理子目录的 MNIST 目录(否则,显式调用datasets.MNIST() 的构造函数会失败)。当前的行为意味着在CustomMNISTDataset 中对super().__init__() 的调用并未调用datasets.MNIST 的构造函数,这很奇怪!
其他细节:我使用 Python 3.6.8 和 torch==1.6.0 和
torchvision==0.7.0。任何帮助将不胜感激!
【问题讨论】:
-
你试过
download='True'吗? -
根据文档,
download应该是一个布尔值,而不是一个字符串。但是让我在CustomMNISTDataset中创建download=True,看看它把下载的文件放在哪里... -
即使在 download = "True" 的情况下也可以使用
标签: python python-3.x constructor pytorch subclass