【问题标题】:Importing MNIST dataset from local directory in a closed system从封闭系统中的本地目录导入 MNIST 数据集
【发布时间】:2021-05-31 11:36:28
【问题描述】:

我正在尝试基于集群中的 MNIST 数据运行教程,并且运行训练脚本的节点无法访问 Internet,因此我手动将 MNIST 数据集放在所需的目录中,但我收到了Dataset not found error. 我正在尝试在集群上运行 this 教程。 我试过this 回答,但答案并没有解决我的问题。 以下是我的代码修改 -

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,))
               ]))

如何解决?

【问题讨论】:

    标签: deep-learning computer-vision pytorch mnist


    【解决方案1】:

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

    root (string)MNIST/processed/training.pt 所在数据集的根目录 和MNIST/processed/test.pt 存在。

    在你的情况下:

    root is /scratch/netra

    因此,

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

    【讨论】:

    • 我认为问题是 horovod 扩展,因为它仍然给出相同的错误,但如果我在没有 horovod 的情况下使用它,那么它可以正常工作。
    • 尝试调试hvd.rank()或尝试f-strings:f"/scratch/netra-{hvd.rank()}"
    【解决方案2】:

    如果上述方法不起作用,请尝试将这些 .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 的情况下使用它,那么它可以正常工作。
    猜你喜欢
    • 2021-01-12
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2018-06-23
    • 2016-05-31
    • 2013-06-09
    相关资源
    最近更新 更多