小编Spa*_*y05的帖子

如何创建图神经网络数据集?(pytorch几何)

如何将我自己的数据集转换为可供 pytorch 几何图形神经网络使用的数据集?

所有教程都使用已转换为可由 pytorch 使用的现有数据集。例如,如果我有自己的点云数据集,如何使用它来训练图神经网络的分类?我自己的分类图像数据集怎么样?

python graph-databases pytorch pytorch-geometric

11
推荐指数
1
解决办法
1万
查看次数

如何将网络中的图形加载到 PyTorch 几何图形并设置节点特征和标签?

目标:我正在尝试将网络中的图形导入 PyTorch 几何图形并设置标签和节点特征

(这是Python中的)

问题)

  1. 我该如何做到这一点[从networkx到PyTorch几何的转换]?(大概是通过使用该from_networkx功能)
  2. 如何传输节点特征和标签?(更重要的问题)

我看过一些其他/以前的帖子有这个问题,但他们没有得到回答(如果我错了,请纠正我)。

尝试:(我刚刚在下面使用了一个不切实际的例子,因为我无法在这里发布任何真实的内容)

让我们想象一下我们正在尝试在一组汽车上执行图形学习任务(例如节点分类)(正如我所说的不太现实)。也就是说,我们有一组汽车、一个邻接矩阵和一些特征(例如年底的价格)。我们想要预测节点标签(即汽车的品牌)。

我将使用以下邻接矩阵:(抱歉,不能使用乳胶来格式化它)

A = [(0, 1, 0, 1, 1), (1, 0, 1, 1, 0), (0, 1, 0, 0, 1), (1, 1, 0, 0, 0) , (1, 0, 1, 0, 0)]

这是代码(适用于 Google Colab 环境):

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx
from torch_geometric.utils.convert import to_networkx, from_networkx
import torch

!pip install torch-scatter torch-sparse torch-cluster …
Run Code Online (Sandbox Code Playgroud)

python networkx pytorch pytorch-geometric

11
推荐指数
1
解决办法
1万
查看次数

Pytorch 几何包中的 train_test_split_edges 中的正边和负边

我试图找到图中负边和正边的解释,如函数 train_test_split_edges Pytorch Geometric doc开头所述。根据文档文件,它说该函数应该将图分成“正和负训练/验证/测试边缘”。就此而言,正边缘或负边缘的含义是什么?根据代码,正边“似乎”是图的邻接矩阵的上三角形中的边的连接,负边是邻接矩阵的下三角形中的边。因此,如果 (1,0) 被认为是正边,那么在无向图中 (0,1) 就是负边。我对么?我没有找到任何有关图表中正边缘/负边缘含义的信息。

python classification graph pytorch pytorch-geometric

7
推荐指数
1
解决办法
1976
查看次数

Pytorch几何中的edge_weight和edge_attr有什么区别

我想在 Pytorch Geometric 中处理加权无向图。节点特征是50维的。我发现这可以通过类x的属性来处理torch_geometric.data.data。边的权重是标量值。我们发现edge_attredge_weight是处理边缘的属性。

我想我应该使用edge_weight,这是正确的吗?

edge_attr另外,和 之间有什么区别edge_weight

我的英语不太好,所以对此我深表歉意。我希望我能得到一个好的答案。

谢谢。

graph pytorch pytorch-geometric

6
推荐指数
1
解决办法
8379
查看次数

如何处理Pytorch Geometric中未标记的节点?

我自己有一个数据集,该数据集包含两个类,比方说0和1。此外,还有很大一部分类的节点未标记。我的目标是使用 GCN 预测这些未标记的节点。但我对如何处理 Pytorch Geometric 中这些未标记的节点感到困惑。

据我所知,我可以将节点标记为 3 类:0、1 和未知。但如果我这样做,这意味着我试图将数据集分为三类?(但这不是我想要的,因为未知不是一个类)。

处理这些节点的另一种方法是忽略它们,只需在标记的节点上运行 PyG 即可。但这样看来,这些未标记的节点(具有特征)在数据集中似乎没有用处?

pytorch pytorch-geometric

5
推荐指数
1
解决办法
772
查看次数

Pytorch几何稀疏邻接矩阵到边缘索引张量

我的数据对象有data.adj_t参数,给我稀疏邻接矩阵。我怎样才能从中得到edge_index尺寸张量?[2, num_edges]

python graph adjacency-matrix pytorch pytorch-geometric

5
推荐指数
1
解决办法
6890
查看次数

使用 Networkx 可视化大图

我有一个节点1、节点2 形式的数据集,想要使用网络来构建图表。这是一个相当大的数据集,导致图具有 500k 个节点

import pandas as pd
import numpy as np
import networkx as nx

df = pd.read_csv('large.csv')
G=nx.from_pandas_edgelist(df, 'node1','node2')
Run Code Online (Sandbox Code Playgroud)

这部分代码运行速度非常快,将数据帧转换为图形。然后我尝试应用弹簧布局:

pos = nx.spring_layout(G)
Run Code Online (Sandbox Code Playgroud)

这部分代码需要很长时间。如果我尝试不同的布局,如circular_layout或shell_layout,它会非常快,但布局与我的图表相符。

对于这么大的图,有没有更好的方法来应用 spring_layout ?

python graph networkx

4
推荐指数
1
解决办法
7433
查看次数

如何修复使用 Matplotlib 绘制 NetworkX 图形时图形被截断的问题?

我正在使用 NetworkX 和 Matplotlib 绘制节点,但节点有时会在图形边缘被切断。是否有设置可以增加边距或防止它们被切断?

图像:节点在图形边缘被切除

示例程序:

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np

adjacency_matrix = np.array([[1,0,0,0,0,0,1,0],[0,1,1,1,1,0,0,0],[0,1,1,0,0,0,0,0],[0,1,0,1,0,0,0,0],
    [0,1,0,0,1,1,0,0],[0,0,0,0,1,1,1,1],[1,0,0,0,0,1,1,0],[0,0,0,0,0,1,0,1]])

nx_graph = nx.from_numpy_matrix(adjacency_matrix)
pos = nx.networkx.kamada_kawai_layout(nx_graph)

nx.draw_networkx_nodes(nx_graph, pos, node_color="#000000", node_size=10000)

nx.draw_networkx_edges(nx_graph, pos, color="#808080", alpha=0.2, width=2.0)

plt.axis('off')
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

python graph matplotlib networkx

3
推荐指数
1
解决办法
2116
查看次数