"vscode:/vscode.git/clone" did not exist on "7e5c8eee5c65bcf7c0d46d5fe3b084fd70d36015"
message-edge.rst 850 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.. _guide_cn-message-passing-edge:

2.4 在消息传递中使用边的权重
-----------------------

:ref:`(English Version) <guide-message-passing-edge>`

一类常见的图神经网络建模的做法是在消息聚合前使用边的权重,
比如在 `图注意力网络(GAT) <https://arxiv.org/pdf/1710.10903.pdf>`__ 和一些 `GCN的变种 <https://arxiv.org/abs/2004.00445>`__ 。
DGL的处理方法是:

-  将权重存为边的特征。
-  在消息函数中用边的特征与源节点的特征相乘。

例如:

.. code::

    import dgl.function as fn

21
22
    # 假定eweight是一个形状为(E, *)的张量,E是边的数量。
    graph.edata['a'] = eweight
23
24
25
    graph.update_all(fn.u_mul_e('ft', 'a', 'm'),
                     fn.sum('m', 'ft'))

26
在以上代码中,eweight被用作边的权重。边权重通常是一个标量。