Tensorflow:这是批量标准化的正常行为吗?

时间:2017-02-10 17:14:08

标签: python tensorflow deep-learning

查看截图。没有批量标准化是蓝线。上部情节的准确性,下部的损失。因此,没有BN,损失会缓慢下降,准确性会慢慢增加,预期的行为。

然后我尝试批量标准化。训练损失收敛到接近零的值。比没有好得多,但是在列车和测试装置上的测试精度都会产生更差的结果。 enter image description here

我的实施基于此:http://ruishu.io/2016/12/27/batchnorm/ 因此,将批量规范添加到这样的层:

h1_p_bn = tf.contrib.layers.batch_norm(h1_p, center=True, scale=True, is_training=self.is_training,scope='bn1')

使用model.is_training一个占位符,在测试精度时将其设置为零(上图)。

我也是这样做的:

# Requirement from tf.contrib.layers.batch_norm
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
    # Ensures that we execute the update_ops before performing the train_step
    optimizer = tf.train.AdamOptimizer(learning_rate)
    self.train_op = optimizer.minimize(self.loss, global_step=global_step)

有任何想法或建议吗?

0 个答案:

没有答案