xavier_initializer和xavier_initializer_conv2d有什么区别?

时间:2017-02-16 23:06:32

标签: tensorflow neural-network deep-learning conv-neural-network

我注意到TensorFlow 1.0在contrib中包含两个Xavier初始化助手,

两者都链接到同一文档页面并具有相同的签名:

tf.contrib.layers.xavier_initializer(uniform=True, seed=None, dtype=tf.float32)
tf.contrib.layers.xavier_initializer_conv2d(uniform=True, seed=None, dtype=tf.float32)
然而,它们之间的差异根本没有解释。我可以通过名称猜测_conv2d版本应该用于2D卷积层,但是如果要使用常规版本会产生明显的影响吗?

1 个答案:

答案 0 :(得分:8)

实际上没有区别。因为这两个函数都实现了权重初始化:

   Xavier Glorot和Yoshua Bengio(2010):Understanding the difficulty of training deep feedforward neural networks.人工智能与统计国际会议。

初始化器的设计都是为了保持所有层中渐变的比例大致相同。在均匀分布中,这最终为范围:x = sqrt(6. / (in + out)); [-x, x],对于正态分布,使用标准偏差sqrt(3. / (in + out))