【问题标题】:Why can I run my PyTorch dataset file from a python file but not a notebook?为什么我可以从 python 文件而不是笔记本运行我的 PyTorch 数据集文件?
【发布时间】:2022-01-21 23:25:55
【问题描述】:

我已经在文件 dataset.py 中的 PyTorch 中编写了一个自定义数据集类,并尝试通过在我的笔记本中使用以下代码运行以下代码来测试它:

from dataset import MyCustomDataset
from torch.utils.data import DataLoader

ds = MyCustomDataset("/Volumes/GoogleDrive/MyDrive/MyProject/data/train.pkl",target_type="labels")
dl = DataLoader(ds,batch_size = 16, shuffle = False)
X, y = next(iter(dl))
print(f"X: {X}, y: {y}")

在一些不成功的故障排除后,我尝试在文件 test.py 中运行完全相同的代码,但没有问题!

为什么我不能从我的笔记本上运行它?

对我来说,问题通常出在路径上,但在这种情况下,所有文件,包括 .py、.ipynb 和“data”目录都在同一个目录“MyProject”中。我尝试过使用绝对路径(如示例中)和相对路径,但这两种情况下的结果相同。如果可以提供任何见解,我正在使用 vscode。

此外,笔记本中的错误消息是“列表索引必须是整数或切片,而不是 str”,不幸的是,提示告诉我错误的行(错误应该在的行上有注释)。但是如果这真的是一个错误,那么它也不应该在 python 文件中工作,对吧?

欢迎任何帮助或建议!

【问题讨论】:

    标签: python jupyter-notebook pytorch filepath


    【解决方案1】:

    尝试检查路径是否有问题

    import os.path
    from os import path
    a= path.exists("/Volumes/GoogleDrive/MyDrive/MyProject/data/train.pkl")
    print(a)
    

    如果返回 true,则表示路径不是问题,您需要在问题中提供更多详细信息

    【讨论】:

      【解决方案2】:

      Jupyter 和 Python 文件有不同的cwd。你可以执行这个来获取cwd:

      import os
      print(os.getcwd())
      

      你可以在settings.json文件中添加这个来修改jupyter notebook的cwd,让它像python文件一样把${workspaceFolder}当作cwd:

      "jupyter.notebookFileRoot": "${workspaceFolder}",
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-30
        • 2020-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-15
        • 1970-01-01
        相关资源
        最近更新 更多