问题标签 [pytorch-geometric]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
34 浏览

pytorch - 是否可以在 pytorch 中运行 scatter matmul?

编辑:显然 DGL 已经在研究它了:https ://github.com/dmlc/dgl/pull/3641

我有几种类型的嵌入,每一种都需要自己的线性投影。我可以用一个 for 循环来解决这个问题:

但理想情况下,我想做某种分散操作来并行运行它。就像是:

pytorch_scatter(lin_layers, embeddings, layer_map, reduce='matmul'),其中层图告诉哪个嵌入应该通过哪个层。如果我有 2 种类型的线性层并且 batch_size = 5,那么 layer_map 将类似于 [1,0,1,1,0]。

是否可以像在pytorch_scatter中那样以有效的方式对 for 循环进行矢量化?请检查以下最小示例。

相关stackoverflow问题:如何向量化scatter-matmul操作

pytorch 中的相关问题:https ://github.com/pytorch/pytorch/issues/31942

0 投票
1 回答
47 浏览

nodes - 将 PyG 图转换为 NetworkX 图

我正在尝试使用将我的 PyG 图转换为 NetworkX 图to_networkx

根据文档,除了 Data 对象之外,我还可以选择将节点和边缘属性作为 str 可迭代对象传递。

以下是节点和边缘属性列表,其值转换为字符串:

to_networkx当我只将 Data 对象传递给它时运行良好。但是,当我也传递这些属性列表时,我收到以下错误:

我查看了源代码,但无法弄清楚它在做什么。有人可以帮助解释我的属性列表有什么问题以及我需要更改哪些内容才能被接受。

我可以看出,这个错误专门指的是我的边缘属性。如果我删除它们,我会收到以下与节点属性相关的类似错误:

我如何构建我的图表并将其传递给to_networkx

在传递节点和边属性之前,我会进行字符串转换以符合 str 可迭代要求:

0 投票
0 回答
27 浏览

pytorch - 关于在 Google Colab 中运行 PyTorch 几何函数

我正在尝试调用在名为 sparse_smoothing 的文件夹中名为 model.py 的文件中编写的某些 Pytorch 几何函数。我在功能描述或它们的导入方式中看不到任何错误。但是,当我尝试从代码 demo.ipynb 外部导入这些函数时,我遇到了错误。如果有人能在这里帮助我,我将不胜感激。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述 在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
29 浏览

graph - 输入数据的 GNN 置换不变性?

我有一个关于图神经网络的排列不变性和等变性的问题。在我的设置中,我有一组通过一组边连接的节点。我想预测二进制类wrt。节点,例如,标签是零和一的向量。

在图构建阶段,假设 GNN 是置换等变的,我基本上以未排序的方式将“正”和“负”节点堆叠在一起。因此节点特征矩阵为:[X_p, X_n]^T。因此,只要标签向量以相同的方式排列,它就应该在排列等方差下正常工作。

但是,我发现我的预测准确度在我打乱节点特征矩阵(类似于标签向量)后会大幅下降。这导致我的解释是天真的堆叠操作缓解了学习问题。

GNN 执行的所有操作都是 MLP (X*W)、ReLU、邻域聚合和、Sigmoid 或通过邻接矩阵(torch_geometric 中的 edge_index)利用节点连接性。因此,节点排序不可能影响学习结果,因为所有操作都是置换不变的。然而,相反的情况发生了。

我将不胜感激任何帮助。非常感谢!

0 投票
1 回答
19 浏览

graph - 有什么方法可以将“DGL.heterograph”转换为“torch_geometric”图?

我正在使用 dgl 库,因为它很容易理解。但是我需要 torch_geometric 中的几个模块,但它们不支持 dgl 图。

有什么方法可以将 dgl 图更改为 torch_geometric 图?我的数据集是在 dgl 图形中构建的,当我加载数据集时,我会将它们更改为 torch_geometric 图形。

0 投票
0 回答
28 浏览

graph - 具有图卷积神经网络的 MNIST

嗨,我正在尝试构建一个 GCN 来对 MNIST 图像进行分类我想知道我必须使我的图像成为什么形状,或者传递给 GCN 层的输入是什么,例如邻接矩阵,如果是的话如何获得提前感谢

我正在使用 torch_geometrical

0 投票
1 回答
40 浏览

python - Pytorch 几何数据集

我需要你的帮助。我有两组图形结构化数据,一组来自 Open Graph Benchmark (OGB),另一组torch_geometric.data.Dataset来自我自己的数据。数据如下:

数据(edge_index=[2, 88], edge_attr=[88, 3], x=[39, 9], y=[1, 1]) #OGB

数据(x=[23, 9], edge_index=[2, 48], edge_attr=[48, 2], y=[1]) #PyG

我正在尝试使用使用 OGB 函数开发的框架,这不适用于使用 PyG 创建的数据。例如:框架的第一部分加载并将数据集拆分为训练、验证和测试:

当我使用本机 ogb 数据集运行此代码时,我没有问题,当我使用 PyG 数据时返回错误:

属性错误

这很奇怪,因为它们都是 Pytorch 对象,唯一的区别是 OGB 数据集是 InMemoryDataset 而 PyG 是“更大”数据集(https://pytorch-geometric.readthedocs.io/en/latest/notes/ create_dataset.html)。有什么方法可以解决这个问题而不必更改源代码?

谢谢!

0 投票
0 回答
22 浏览

python - 当 Torch Lightning 中的准确度等于 F1 以进行二进制分类时,如何更正?

我知道对于多类,F1 (micro) 与 Accuracy 相同。我的目标是在 Torch Lightning 中测试二进制分类,但总是得到相同的 F1 和准确度。

为了获得更多详细信息,我在GIST分享了我的代码,在那里我使用了MUTAG数据集。以下是我想提出讨论的一些重要部分

我计算精度和 F1 的函数(第 28-40 行)

为了检查,我在第 35 行放置了一个检查点,得到acc=0.5, f1_score=0.5, whilepredictionlabel分别是

使用这些值,我运行一个笔记本来仔细检查scikit-learn

与评估的代码相比,我得到了不同的结果。此外,我再次验证torch,有趣的是,我得到了正确的结果

我想不知何故torch-lightning将我的计算视为一项多类任务。我的问题是如何纠正它的行为?

0 投票
0 回答
16 浏览

pandas - Pytorch 几何加载来自 .csv 的一系列图表

我有一个.csv文件,它给出了具有不同节点特征的相同图,因为有 104 个节点,这意味着 , 中的每 104 行.csv是相同的图,但节点特征的值不同。
例如

我想将其加载.csv为它所代表的多个(几千个)图形状态(即edge_index所有这些图形都是相同的,唯一的区别是节点特征值。)

我将如何在 Pytorch Geometric 中做到这一点?(即将它作为Data()对象列表加载)

0 投票
0 回答
26 浏览

python - 我在元组中使用了哈希函数,但它不起作用

实际上我正在研究 Pytorch 和 Pytorch Geometric。

我做了我的数据

并执行 WLConv 的过程(来自文档)

但是,发生错误:unhashable type: 'list' 我认为这已经足够了,因为我创建了元组,但出了什么问题?