You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch Geometric:from_networkx与group_node_attrs联用报错问题

解决NetworkX转PyTorch Geometric时group_node_attrs参数报错问题

错误原因

from_networkx的group_node_attrs参数不是用来直接传入特征张量的,它的作用是指定NetworkX图中已存在的节点属性键名,让PyG把这些键对应的属性值合并成x张量。你直接传入特征列表x,因为列表是不可哈希类型,所以触发TypeError: unhashable type: 'list'。

正确实现方式

方式1:先给NetworkX节点添加属性,再用group_node_attrs合并

先将字符串特征转为数值类型,然后把每个节点的特征作为属性添加到NetworkX图中,再指定属性名让PyG合并:

import networkx as nx
from torch_geometric.utils.convert import from_networkx
import torch

nodes= ['1', '5', '28']
edges= [('1', '5'), ('5', '28')]

G = nx.DiGraph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)

# 1. 将字符串特征转为float类型的列表
x = [[float(val) for val in row] for row in [
    ['0.7844669818878174', '-0.40328940749168396', '-0.9366764426231384'],
    ['0.14061762392520905', '-1.1449155807495117', '-0.1811756044626236'],
    ['-1.8840126991271973', '-1.2096494436264038', '1.0780194997787476']
]]

# 2. 给每个节点添加特征属性
for node, feat in zip(nodes, x):
    G.nodes[node]['feat'] = feat  # 给节点添加名为'feat'的属性

# 3. 转换时指定要合并的属性名
pyg_graph = from_networkx(G, group_node_attrs=['feat'])
# 此时pyg_graph.x就是合并后的特征张量
print(pyg_graph.x)

方式2:直接转换后设置x张量(更简洁)

如果不需要依赖NetworkX的节点属性,直接转换后手动设置x张量更高效:

import networkx as nx
from torch_geometric.utils.convert import from_networkx
import torch

nodes= ['1', '5', '28']
edges= [('1', '5'), ('5', '28')]

G = nx.DiGraph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)

# 转换特征为torch张量
x_tensor = torch.tensor([
    [float(val) for val in row] for row in [
        ['0.7844669818878174', '-0.40328940749168396', '-0.9366764426231384'],
        ['0.14061762392520905', '-1.1449155807495117', '-0.1811756044626236'],
        ['-1.8840126991271973', '-1.2096494436264038', '1.0780194997787476']
    ]
], dtype=torch.float)

# 先转换图结构
pyg_graph = from_networkx(G)
# 手动设置特征张量
pyg_graph.x = x_tensor

print(pyg_graph.x)

关键注意点

  • 特征必须转换为数值类型(float/int),不能是字符串,否则PyG无法转为张量
  • group_node_attrs仅用于合并已存在的节点属性,不能直接传入特征数据

内容的提问来源于stack exchange,提问作者Iris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:03:07