Deep learning 从封闭系统中的本地目录导入MNIST数据集

Deep learning 从封闭系统中的本地目录导入MNIST数据集,deep-learning,computer-vision,pytorch,mnist,Deep Learning,Computer Vision,Pytorch,Mnist,我正在尝试基于群集中的MNIST数据运行教程,并且运行培训脚本的节点没有internet访问权限,因此我手动将MNIST数据集放置在所需目录中,但我得到了dataset not found error。 我正在尝试在集群上运行教程。 我试过这个答案,但这个答案不能解决我的问题。 下面是我的代码修改- import horovod.torch as hvd train_dataset = \ datasets.MNIST('/scratch/netra/MNIST/processed/traini

我正在尝试基于群集中的MNIST数据运行教程,并且运行培训脚本的节点没有internet访问权限,因此我手动将MNIST数据集放置在所需目录中,但我得到了
dataset not found error。
我正在尝试在集群上运行教程。 我试过这个答案,但这个答案不能解决我的问题。 下面是我的代码修改-

import horovod.torch as hvd
train_dataset = \
datasets.MNIST('/scratch/netra/MNIST/processed/training.pt-%d' % hvd.rank(), train=True, download=True,
               transform=transforms.Compose([
                   transforms.ToTensor(),
                   transforms.Normalize((0.1307,), (0.3081,))
               ]))
test_dataset = \
datasets.MNIST('/scratch/netra/MNIST/processed/test.pt-%d' % hvd.rank(), train=False, 
               transform=transforms.Compose([
                   transforms.ToTensor(),
                   transforms.Normalize((0.1307,), (0.3081,))
               ]))

如何解决此问题?

您必须指定根文件夹,而不是已处理文件的完整路径:

root(string)
:数据集的根目录,其中
MNIST/processed/training.pt
MNIST/processed/test.pt
存在

就你而言:

root是/scratch/netra

因此,

train\u数据集=\
datasets.MNIST('/scratch/netra-%d'%hvd.rank(),train=True,download=True,
transform=transforms.Compose([
transforms.ToTensor(),
规范化((0.1307,),(0.3081,))
]))
测试数据集=\
datasets.MNIST('/scratch/netra-%d'%hvd.rank(),train=False,
transform=transforms.Compose([
transforms.ToTensor(),
规范化((0.1307,),(0.3081,))
]))

您必须指定根文件夹,而不是已处理文件的完整路径:

root(string)
:数据集的根目录,其中
MNIST/processed/training.pt
MNIST/processed/test.pt
存在

就你而言:

root是/scratch/netra

因此,

train\u数据集=\
datasets.MNIST('/scratch/netra-%d'%hvd.rank(),train=True,download=True,
transform=transforms.Compose([
transforms.ToTensor(),
规范化((0.1307,),(0.3081,))
]))
测试数据集=\
datasets.MNIST('/scratch/netra-%d'%hvd.rank(),train=False,
transform=transforms.Compose([
transforms.ToTensor(),
规范化((0.1307,),(0.3081,))
]))

如果上述操作无效,请尝试将这些.pt文件放在当前工作目录中名为
.data
的文件夹中:

import os
CURR_DIR = os.getcwd()
print(CURR_DIR)

train = datasets.MNIST(root='./data',download=False, train=True,
               transform=transforms.Compose([transforms.ToTensor(),
                                             transforms.Normalize((0.1307,), (0.3081,))]))
# works

train = datasets.MNIST(root=CURR_DIR + '\\data',
                       download=False, train=True,
               transform=transforms.Compose([
                   transforms.ToTensor(),
                   transforms.Normalize((0.1307,), (0.3081,))]))
# works

# same files also in this folder
train = datasets.MNIST(root=CURR_DIR + '\\processed',download=False, train=True,
               transform=transforms.Compose([
                   transforms.ToTensor(),
                   transforms.Normalize((0.1307,), (0.3081,))
               ]))
# Dataset not found

有趣的是,在最后一个示例中,这正是生成数据的torch MNIST data set类放置.pt文件的位置。

如果上述操作不起作用,请尝试将这些.pt文件放在当前工作目录中名为
.data
的文件夹中:

import os
CURR_DIR = os.getcwd()
print(CURR_DIR)

train = datasets.MNIST(root='./data',download=False, train=True,
               transform=transforms.Compose([transforms.ToTensor(),
                                             transforms.Normalize((0.1307,), (0.3081,))]))
# works

train = datasets.MNIST(root=CURR_DIR + '\\data',
                       download=False, train=True,
               transform=transforms.Compose([
                   transforms.ToTensor(),
                   transforms.Normalize((0.1307,), (0.3081,))]))
# works

# same files also in this folder
train = datasets.MNIST(root=CURR_DIR + '\\processed',download=False, train=True,
               transform=transforms.Compose([
                   transforms.ToTensor(),
                   transforms.Normalize((0.1307,), (0.3081,))
               ]))
# Dataset not found

有趣的是,在上一个示例中,这正是生成数据的torch MNIST数据集类放置.pt文件的位置。

我认为问题在于horovod扩展名,因为它仍然给出相同的错误,但是如果我在没有horovod的情况下使用它,那么它就可以正常工作。尝试调试
hvd.rank()
或try f-strings:
f”/scratch/netra-{hvd.rank()}“
我认为问题在于horovod扩展,因为它仍然给出相同的错误,但如果我在没有horovod的情况下使用它,那么它工作正常。尝试调试
hvd.rank()
或尝试f-strings:
f”/scratch/netra-{hvd.rank()}”
我认为问题在于horovod扩展,因为它仍然给出相同的错误,但是如果我在没有horovod的情况下使用它,那么它工作正常。我认为问题在于horovod扩展,因为它仍然给出相同的错误,但是如果我在没有horovod的情况下使用它,那么它工作正常。