from . import citation_graph as citegrh ImportError: attempted relative import with no known parent package
时间: 2023-08-07 19:11:05 浏览: 148
这个错误是由于相对导入时没有找到父级包而引起的。相对导入是指在Python中使用相对路径导入模块,但在这种情况下,Python解释器无法确定当前模块所属的父级包。
要解决这个问题,你可以尝试以下几种方法:
1. 确保你的导入语句在正确的位置。相对导入必须位于包内的模块中,而不是独立的脚本文件中。
2. 如果你正在运行脚本文件,请确保你的脚本文件位于正确的包中,并在命令行中使用正确的相对路径运行。
3. 如果你的文件结构是正确的,但仍然遇到问题,可以尝试使用绝对导入来代替相对导入。将导入语句更改为绝对路径导入,例如 `import package.module`。
4. 确保你的项目结构是正确的,并且你的包和模块之间有正确的父子关系。
如果上述方法都无法解决问题,请提供更多相关的代码和项目结构信息,以便我能够给出更具体的帮助。
相关问题
def load_data(path="./data/cora/", dataset="cora"): """Load citation network dataset (cora only for now)""" print('Loading {} dataset...'.format(dataset)) idx_features_labels = np.genfromtxt("{}{}.content".format(path, dataset), dtype=np.dtype(str)) features = sp.csr_matrix(idx_features_labels[:, 1:-1], dtype=np.float32) labels = encode_onehot(idx_features_labels[:, -1])
这段代码是用来加载 citation network dataset 中的数据集的。具体来说,它加载了一个叫做 "cora" 的数据集。
这段代码首先使用 `np.genfromtxt` 函数从文件中读取数据,该文件的路径由 `path` 变量指定,文件名由 `dataset` 变量指定。这个文件的格式是一个文本文件,每一行代表了图中的一个节点,每一行包含了节点的特征和标签。
接下来,这段代码使用 `sp.csr_matrix` 函数将节点特征矩阵转换为 Compressed Sparse Row matrix (CSR) 格式。最后,它使用 `encode_onehot` 函数将标签转换为 one-hot 编码格式。
总的来说,这段代码是为了将 citation network dataset 中的数据集加载到内存中,并将其转换为合适的格式以供机器学习算法使用。
现在有两个字典citation_dict与network,citation_dict和network键完全相同,均为作者id,citation_dict的值为作者的引用量,network的值为作者的合作者id,依据 这两个字典,构建学者合作网络图数据集。使用torch_geometric.data.data.Data类型存储图数据,其中每一张图代表一个作者的合作网络,图中的节点为作者id,节点的属性为作者的引用量,图的属性即y,为该图中心作者的引用量,请给出Python代码:
以下是构建学者合作网络图数据集的 Python 代码:
```
import torch
import torch_geometric.data
citation_dict = {'author_1': 10, 'author_2': 5, 'author_3': 20}
network = {'author_1': ['author_2', 'author_3'],
'author_2': ['author_1', 'author_3'],
'author_3': ['author_1', 'author_2']}
graphs = []
for author, coauthors in network.items():
edge_index = []
edge_index.append(torch.tensor([0, i] for i, coauthor in enumerate(coauthors)))
edge_index.append(torch.tensor([i, 0] for i, coauthor in enumerate(coauthors)))
edge_index = torch.cat(edge_index, dim=0)
x = torch.tensor([citation_dict[author]] + [citation_dict[coauthor] for coauthor in coauthors])
y = torch.tensor([citation_dict[author]])
graphs.append(torch_geometric.data.Data(x=x, edge_index=edge_index, y=y))
```
这段代码首先定义了两个字典 `citation_dict` 和 `network`,分别代表作者的引用量和作者的合作者关系。接着,使用 `for` 循环遍历 `network` 字典,对于每一个作者,通过创建一个 `torch_geometric.data.Data` 对象来存储该作者的合作网络。图的边是通过创建两个 `torch.tensor` 对象存储的,第一个存储的是起点,第二个存储的是终点。节点的属性 `x` 是所有合作者的引用量的列表,图的属性 `y` 是该图的中心作者的引用量。最后,所有的图都存储在 `graphs` 列表中。
阅读全文