Attention Models in Graphs A Survey
Attention Models in Graphs A Survey关键点
提及了三种分类方法:根据图的类型来看,其中大部分方法还是聚焦到homogeneous graph上,而heterogeneous graph的研究较少
三种attention的方法:
learnable attention weights
主要代表就是GAT(基于softmax使得所有的weights和为1,其中$a$是可学习的参数,也即attention):
$$\alpha_{0, j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\mathrm{a}\left[\mathrm{W}{\mathrm{X}{0}} | \mathrm{W}{\mathrm{X}{j}}\right]\right)\right)}{\sum_{k \in \mathrm{F}{\nu{0}}} \exp \left(\operatorname{LeakyReLU}\left(\mathrm{a}\left[\mathrm{W} \mathrm{x}{0} | ...
networkx基础
建图最简单的undirected graph:
import networkx as nx
g = nx.Graph
add nodes可以通过一次加一个,也可以多个
一次加一个,这样方便一起加入attributes(node或者edge的),然后再在外面套for
for node, value in zip(split_sorted_indices.tolist(),
zip(split_sorted_node_features, split_sorted_eval_label.tolist(), split_sorted_loss.tolist(),
split_original_label.tolist())):
attr_dict = dict(zip(['node_features', 'eval_label', 'loss', 'original_label'], value))
g.add_node(node, **attr_dict)
还可以一次加一 ...
python-basic
从两个list(key list,value list)构建dict直接用zip
dictionay = dict(zip(key, value))
嵌套zip就是先把一个zip的item,和另一个iterable的item拼在一起,和普通zip没区别
for node, value in zip(split_sorted_indices.tolist(),
zip(split_sorted_node_features, split_sorted_eval_label.tolist(), split_sorted_loss.tolist(),
split_original_label.tolist())):
attr_dict = dict(zip(['node_features', 'eval_label', 'loss', 'original_label'], value))
g.add_node(node, **attr_dict)
路径问题. ...
pytorch的基本操作
tensor转化为listtensor.tolist即可。如果是一个scalar,则用tensor.item().
dilation的含义参考:
dilated convolution
查看梯度
用hook参考:
how-to-print-models-parameters-with-its-name-and-requires-grad-value
先获取各层的parameter,然后逐层register_hook。
关键在于named_paramters(),这个能够返回各层参数的name。.paramters只能返回一个不带对应name的parameter generator。
def hook(grad, param_name):
logger.debug('Paramter:{} | \n grad:{} '.format(param_name, grad.sum()))
handle = []
for i, (name, param) in enumerate(model.named_parameters()):
if ...
python config 读取与config parser的使用
主要参考:
configparser— Configuration file parser
Config简介
主要就是本地读取.ini文件,其中放入自己需要的参数。
.ini文件的编写需要分section,默认应该都有一个[DEFAULT]区,来实现fallback, i.e., 当某个section里的参数没有设定的时候,在文件中强行读取会用[DEFALUT]中的来代替。
具体使用格式
默认以key = value 或者 key : value 来写。 section names are case sensitive but keys are not
注释用 # 来代替
[You can use comments]
# like this
; or this
# By default only in an empty line.
# Inline comments can be harmful because they prevent users
# from using the delimiting characters as parts of values.
# ...
Hexo+Github搭建blog笔记(踩过的坑)
Hexo部署参考:
[使用Hexo + GitHub Pages搭建个人博客详解][0]
[0]: https://www.crazypudding.com/2016/10/01/Building-my-blog-by-Hexo-and-GitHubPages/ “使用Hexo + GitHub Pages搭建个人博客详解”[1]: https://juejin.im/post/5c2e22fcf265da615d72c596 “submodule”
大坑1:github pages(即默认的blog)只支持master分支默认是这么说的:
真的是大坑啊!!然而github pages默认只能是master分支的(可能是因为个人用户的关系??)
正确做法
把_config.yaml中的deploy部分的branch改成master。
新建一个branch,然后本地add remote到那个branch,用来备份所有文件(包括主题什么的)。具体而言,就是:
如果远程没有branch:(默认remote叫origin 分支名叫publish) git push --set-up ...