dgl.readout_edges
- dgl.readout_edges(graph, feat, weight=None, *, op='sum', etype=None)[source]
在
graph
中对边特征feat
进行求和,可以选择性地将其乘以边的weight
。该函数通常用作一批图的读出函数,以生成图级别的表示。因此,结果张量的形状取决于输入图的批量大小。给定一个批量大小为\(B\)的图,以及特征大小为\(D\),结果形状将为\((B, D)\),其中每一行是每个图的聚合边特征。
- Parameters:
graph (DGLGraph.) – The input graph.
feat (str) – 边缘特征名称。
weight (str, optional) – 边的权重特征名称。如果为None,则不进行加权, 否则,使用字段
feat
对每个边的特征进行加权。 用于求和。权重特征的形状必须与特征张量进行逐元素乘法兼容。op (str, optional) – 读取操作符。可以是‘sum’, ‘max’, ‘min’, ‘mean’。
etype (str 或 (str, str, str), 可选) –
边的类型名称。允许的类型名称格式为:
(str, str, str)
用于源节点类型、边类型和目标节点类型。或者一个
str
边类型名称,如果该名称可以唯一标识图中的三元组格式。
如果图中只有一种类型的边,则可以省略。
- Returns:
结果张量。
- Return type:
张量
示例
>>> import dgl >>> import torch as th
Create two
DGLGraph
objects and initialize their edge features.>>> g1 = dgl.graph(([0, 1], [1, 0])) # Graph 1 >>> g1.edata['h'] = th.tensor([1., 2.]) >>> g2 = dgl.graph(([0, 1], [1, 2])) # Graph 2 >>> g2.edata['h'] = th.tensor([2., 3.])
对一个图求和:
>>> dgl.readout_edges(g1, 'h') tensor([3.]) # 1 + 2
在批处理图上求和:
>>> bg = dgl.batch([g1, g2]) >>> dgl.readout_edges(bg, 'h') tensor([3., 5.]) # [1 + 2, 2 + 3]
加权和:
>>> bg.edata['w'] = th.tensor([.1, .2, .1, .5]) >>> dgl.readout_edges(bg, 'h', 'w') tensor([.5, 1.7])
最大读数:
>>> dgl.readout_edges(bg, 'w', op='max') tensor([2., 3.])
另请参阅