问题标签 [dgl]

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 投票
2 回答
806 浏览

python - 如何修复 RuntimeError:dlpack 不支持 Bool 类型

我一直在使用下面的代码来获取DGL提供的默认Cora数据集,但是今天突然出现如下错误。

该代码在 CoLab(python 3.7 和 Pytorch 后端)中运行。我认为这是 DGL 更新的错误(因为它之前一直有效)。但是,我只是想知道我们是否可以做些什么来解决这个问题?

谢谢。

在此处输入图像描述

0 投票
1 回答
57 浏览

python - pip install -c dglteam dgl 失败

我从另一个线程中看到当前频道可能会影响它。我想安装 dgl 0.4.3。和 pip 命令或从环境文件安装失败。我怎样才能安装它?下面是错误日志。非常感谢。

收集包元数据(current_repodata.json):完成求解环境:初始冻结求解失败。使用灵活的求解重试。收集包元数据(repodata.json):完成求解环境:初始冻结求解失败。使用灵活的求解重试。

PackagesNotFoundError:当前频道不提供以下软件包:

  • dgl

当前频道:

要搜索可能提供您正在寻找的 conda 包的替代频道,请导航至

并使用页面顶部的搜索栏。

0 投票
0 回答
35 浏览

python - 在 Windows 上使用 DGL 自定义 Neighborhood Sampler 时 DataLoader Worker 意外退出

我正在使用 DGL 库自定义邻域采样器。但是,当我在初始化 NodeDataLoader 时将参数“num_workers”设置为非零数字时,采样器无法工作。例如:

上面的代码运行良好,我在“dgl.dataloading”中使用了 MultiLayerFullNeighborSampler。请注意,无论参数“num_workers”是否设置为非零,它都有效。

上面的代码也运行良好。TestSampler 类的实现完全复制自 MultiLayerFullNeighborSampler 的实现。但是,当我将参数“num_workers”设置为非零时:

上面的代码在枚举时失败。错误消息是关于多处理的:

查了一下资料,觉得可能和windows系统的multiprocessing有关。但是,它不能解释为什么 MultiLayerFullNeighborSampler 类可以运行良好。我想知道如何正确修复它。

软件版本:

Python:Python 3.8.8(默认,2021 年 4 月 13 日,15:08:03)[MSC v.1916 64 位(AMD64)] :: Ana conda, Inc. on win32

Pytorch:1.9.1 py3.8_cuda10.2_cudnn7_0

dgl-cuda10.2:0.7.1

0 投票
0 回答
60 浏览

python - Pytorch-DGL-LightGCN-RuntimeError:尝试第二次向后遍历图形

我正在使用 DGL 构建 LightGCN 模型。我看过其他类似的问题,但仍然找不到我的问题的解决方案。我没有在这个模型中保存或使用隐藏状态或其他中间值。

这是我定义的损失函数:

下面是训练代码:

这是模型代码:

这是错误消息:

0 投票
0 回答
6 浏览

graph - 保存图形以供 dgl 使用

我在尝试存储图形并加载它们以供以后在 dgl 期间使用时遇到问题。我正在使用 networkx 创建图,然后将它们转换为 dgl 图,然后使用 .bin 将它们存储在 .bin 文件中 dgl.save_graphs("./data.bin)

在稍后加载它们时,dgl.load_graphs("/data.bin")我正在尝试使用数据来创建 dgl.data.gindt.GINDataset对象,因此文件的格式不适用于数据集对象。

关于与 dgl GINDataset 兼容的其他图形存储方法的任何想法?抱歉,如果问题没有很好地表述,谢谢。

0 投票
1 回答
54 浏览

python - 如何从networkx获取节点权重到dgl

考虑以下玩具 networkx 图:

我想在dgl中使用它,但我不确定如何读取节点权重。我尝试过:

但这给出了:

这样做的正确方法是什么?

0 投票
0 回答
43 浏览

python - 如何使用 stable-baselines3 做 RL+图神经网络

我是 stable-baselines3 的新手,正在尝试解决一个玩具图神经网络问题。我之前有一个使用数组的翻转示例。问题是这样的:给定一个包含 10 个随机位的列表和一个翻转位的操作,找到一种翻转位以将它们全部设置为 1 的方法。显然,您可以通过翻转当前为 0 但系统具有的位来做到这一点学习这个。

我想做同样的事情,输入是带有节点权重的简单线性图而不是数组。我不知道该怎么做。以下代码片段将制作一个有 10 个节点的线性图,将节点权重添加到每个节点并将其转换为 dgl 图

当我在位翻转示例中使用线性数组时,我的环境是这样的:

完成数组版本中代码的最后几行很简单:

我不能再spaces对图表使用稳定基线了,那么对于这个玩具问题,让稳定基线与我的 dgl 图表交互的正确方法是什么?

0 投票
0 回答
18 浏览

python - 在使用 dgl 实现图注意力网络时,用 min、max、sum 或 Hadamard 函数替换 concat 函数

我在 python 中使用 dgl 实现图形注意网络代码:

    理解图注意力网络——DGL 0.6.1

我想在实现的等式(2)中使用 min、max、sum 或 Hadamard 函数而不是串联函数。我怎样才能做到这一点?

等式(2)的代码如下:

连接函数torch.cat()在下面的代码中:

如何更改原始实现的串联功能?

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 回答
23 浏览

python - 使用没有节点属性的 DGL GNN 对图进行分类

我正在按照本指南从我自己的数据中创建用于图形分类的数据集:https ://docs.dgl.ai/en/0.6.x/new-tutorial/6_load_data.html

在那里,它们不会创建任何节点的特征,因为如果您要预测图形类,则没有必要。就我而言,它是相同的,我不想使用任何节点功能(还)进行分类。

为了训练 GNN,我正在学习本教程:https ://docs.dgl.ai/tutorials/blitz/5_graph_classification.html#sphx-glr-tutorials-blitz-5-graph-classification-py

两者都来自官方文档,但它们似乎不兼容,因为当我尝试将它们一起使用时,我收到了这个错误:

而且我没有找到另一个不使用节点功能的情况下使用 DGl 训练 GNN 的示例。可能吗?我必须创建虚假属性吗?

谢谢!