dmlc--dgl
9f32554296
* change the signature of node/edge filter * upd filter * Support multi-dimension node feature in SPMV * push transformer * remove some experimental settings * stable version * hotfix * upd tutorial * upd README * merge * remove redundency * remove tqdm * several changes * Refactor * Refactor * tutorial train * fixed a bug * fixed perf issue * upd * change dir * move un-related to contrib * tutuorial code * remove redundency * upd * upd * upd * upd * improve viz * universal done * halt norm * fixed a bug * add draw graph * fixed several bugs * remove dependency on core * upd format of README * trigger * trigger * upd viz * trigger * add transformer tutorial * fix tutorial * fix readme * small fix on tutorials * url fix in readme * fixed func link * upd
18 行
588 B
Python
18 行
588 B
Python
import torch as th
|
|
|
|
def src_dot_dst(src_field, dst_field, out_field):
|
|
"""
|
|
This function serves as a surrogate for `src_dot_dst` built-in apply_edge function.
|
|
"""
|
|
def func(edges):
|
|
return {out_field: (edges.src[src_field] * edges.dst[dst_field]).sum(-1, keepdim=True)}
|
|
return func
|
|
|
|
def scaled_exp(field, c):
|
|
"""
|
|
This function applies $exp(x / c)$ for input $x$, which is required by *Scaled Dot-Product Attention* mentioned in the paper.
|
|
"""
|
|
def func(edges):
|
|
return {field: th.exp((edges.data[field] / c).clamp(-10, 10))}
|
|
return func
|