为什么我可以从python文件而不是笔记本上运行PyTorch数据集文件



我在文件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和"数据"-目录在同一目录中";MyProject";。我尝试过使用绝对路径(如示例中所示(和相对路径,但在这两种情况下都是相同的结果。如果有任何见解的话,我会使用vscode。

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

欢迎任何帮助或建议!

尝试检查路径是否有任何问题

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

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

Jupyter和Python文件具有不同的cwd。您可以执行此操作以获得cwd:
import os
print(os.getcwd())

您可以将其添加到settings.json文件中,以修改jupyter笔记本的cwd,使其像python文件一样使用${workspaceFolder}作为cwd:

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

最新更新