import os.path as osp
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch_geometric.datasets import MNISTSuperpixels
import torch_geometric.transforms as T
from torch_geometric.data import DataLoader
from torch_geometric.utils import normalized_cut
from torch_geometric.nn import (NNConv, graclus, max_pool, max_pool_x, global_mean_pool)
path = osp.join(osp.dirname(osp.realpath(__file__)), '..', 'data', 'MNIST')
transform = T.Cartesian(cat=False)
train_dataset = MNISTSuperpixels(path, True, transform=transform)
test_dataset = MNISTSuperpixels(path, False, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
d = train_dataset
我正在尝试使用MNISTSuperpixels数据进行图卷积,但是在使用示例代码时遇到了一些麻烦。
大多数脚本都在使用
path = osp.join(osp.dirname(osp.realpath(__file__)), '..', 'data', 'MNIST')
但是,他们给了我一个错误
NameError: name '__file__' is not defined
,但我不明白osp.realpath(__file__)
的真正含义。
我在Ubuntu上使用Jupyter笔记本,我的工作目录为
print(os.getcwd())
/home/hkimlx/GDL/pytorch_geometric/examples
与示例代码mnist_nn_conv.py
所在的目录相同。
请帮助我。谢谢!
答案 0 :(得分:0)
__file__
是从中加载模块的文件的路径名(如果它是从文件加载的)。__file__
属性可能丢失 对于某些类型的模块,例如静态的C模块 链接到口译员;用于动态加载的扩展模块 在共享库中,它是共享库文件的路径名。
根据answer,您无法以实用的方式获得笔记本的路径。使用os.getcwd()作为解决方法。
答案 1 :(得分:0)
在笔记本中,您需要像在osp.realpath("__file__")
中那样使用双引号“ __file__”来代替osp.realpath(__file__)