我最初设定权重如下:
def new_weights(shape):
return tf.Variable(tf.truncated_normal(shape, stddev=0.05))
但我意识到我的权重为-0,如下图所示:
然后我决定用那种方式定义它,对我来说权重更容易接受:
def new_weights(shape):
return tf.Variable(tf.zeros(shape))
我想知道使用tf.truncated_normal的含义是什么,-zeros是什么意思?如果你有任何问题像这样初始化它们。
在我介绍的两者之间,什么是初始化权重的最佳方法?
答案 0 :(得分:1)
tf.truncated_normal 从截断的正态分布输出随机值。因此,DNN具有良好的收敛性。下图是MNIST数据集上CNN的验证损失(左)和验证准确度(右)。使用的权重初始化如下,
正如您所看到的,-1到+1范围内的随机权重显示了良好的结果。因此,它是DNN中最常用的权重初始化方法。
参考, https://medium.com/@amarbudhiraja/towards-weight-initialization-in-deep-neural-networks-908d3d9f1e02