我目前正在张量流中构建CNN,我正在使用He正常权重初始化初始化我的权重矩阵。但是,我不确定如何初始化我的偏差值。我在每个卷积层之间使用ReLU作为激活函数。是否有标准方法来初始化偏差值?
# Define approximate xavier weight initialization (with RelU correction described by He)
def xavier_over_two(shape):
std = np.sqrt(shape[0] * shape[1] * shape[2])
return tf.random_normal(shape, stddev=std)
def bias_init(shape):
return #???
答案 0 :(得分:4)
请注意最后一层偏差的具体情况。正如Andrej Karpathy在他的Recipe for Training Neural Networks中解释的那样:
初始化好。正确初始化最终图层权重。例如。如果您要回归一些平均值为50的值,则将最终偏倚初始化为50。如果您的数据集不平衡,正比为1:10,请在logit上设置偏倚,以便网络可以预测初始化时为0.1。 正确设置这些参数将加快收敛速度,并消除“曲棍球”损耗曲线,而在最初的几次迭代中,您的网络基本上只是在学习偏差。
答案 1 :(得分:3)
初始化偏差。初始化可能是常见的 偏差为零,因为不对称性破坏是由...提供的 权重中的小随机数。对于ReLU非线性,有些 人们喜欢使用0.01等小常数值来表示所有偏差 因为这可确保所有ReLU装置在开始时点火 因此获得并传播一些梯度。但是,目前尚不清楚 如果这提供了一致的改进(事实上似乎有些结果 表明这表现更差)并且更简单地说 使用0偏差初始化。