原创文章~转载请注明出处哦。其他部分内容参见以下链接~
GraphSAGE 代码解析(一) - unsupervised_train.py
1. class MeanAggregator(Layer):
该类主要用于实现
1. __init__()
__init_() 用于获取并初始化成员变量 dropout, bias(False), act(ReLu), concat(False), input_dim, output_dim, name(Variable scopr)
用glorot()方法初始化节点v的权值矩阵 vars['self_weights'] 和邻居节点均值u的权值矩阵 vars['neigh_weights']
用零向量初始化vars['bias']。(见inits.py: zeros(shape))
若logging为True,则调用 layers.py 中 class Layer()的成员函数_log_vars(), 生成vars中各个变量的直方图。
glorot()
其中,glorot() 在inits.py中定义,用于权值初始化。(from .inits import glorot)
均匀分布初始化方法,又称Xavier均匀初始化,参数从 [-limit, limit] 的均匀分布产生,其中limit为 sqrt(6 / (fan_in + fan_out))。fan_in为权值张量的输入单元数,fan_out是权重张量的输出单元数。该函数返回 [fan_in, fan_out]大小的Variable。
1 def glorot(shape, name=None): 2 """Glorot & Bengio (AISTATS 2010) init.""" 3 init_range = np.sqrt(6.0/(shape[0]+shape[1])) 4 initial = tf.random_uniform(shape, minval=-init_range, maxval=init_range, dtype=tf.float32) 5 return tf.Variable(initial, name=name)