如何在PyTorch Geometric中构建含多边的银行账户转账图?
你的实现是正确的
你的代码思路完全符合PyTorch Geometric处理多重复边的要求,正好适配同一账户间多次转账的场景,具体说明如下:
- 关于
edge_index:PyTorch Geometric允许同一对节点之间存在多条边,你的edge_index第一行是转账发起方(源节点),第二行是接收方(目标节点),三个[0,1]的配对完美对应账户A到账户B的三次转账操作。 - 关于
edge_attr:每个子列表对应一条边的属性(如转账时间、金额),只要列表长度和边的数量一致,就能正确绑定每条转账的特征,这个设计是合理的。
注意事项
需要把所有数据转换为PyTorch张量(Tensor),否则Data类会报错。以下是修正后的可运行示例:
import torch from torch_geometric.data import Data # 节点特征:假设每个节点用唯一标识表示账户 x = torch.tensor([[0], [1]], dtype=torch.float) # 边索引:3次从账户0到账户1的转账 edge_index = torch.tensor([[0, 0, 0], [1, 1, 1]], dtype=torch.long) # 边属性:每条边对应转账时间、金额(示例数据) edge_attr = torch.tensor([[1620000000, 100], [1620086400, 200], [1620172800, 300]], dtype=torch.float) # 构建图数据对象 data = Data(x=x, edge_index=edge_index, edge_attr=edge_attr)
验证图结构
可以通过打印data对象查看关键信息:
print(data) # 输出:Data(x=[2, 1], edge_index=[2, 3], edge_attr=[3, 2])
其中edge_index=[2, 3]表示有3条边,edge_attr=[3,2]表示每条边有2个特征,完全符合多次转账的场景。
内容的提问来源于stack exchange,提问作者陈arvin
相关产品推荐
相关产品推荐

