我有一个模型,我在每个卷积层都期望最后一个之后执行批量标准化。我使用函数 tensorflow.contrib.layers.batch_norm 函数来执行此操作。当我将 is__training 标志设置为 True 时,报告的损失值似乎是正确的。对于我的特定示例,它从 60 秒开始并减少到几乎为 0。当我将 is_training 标志设置为 flase 时,我得到的损失值大约为 1e10,这看起来很荒谬。
我附上了我在代码中使用的代码段。
loss=loss_func_l2(logits,y)
update_ops=tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
optimizer=tf.train.AdamOptimizer(learning_rate=lr)
Trainables=optimizer.minimize(loss)
#Training
sess=tf.Session()
training(train_output,train_input,sess) # is_training is true here
#validation
validate(test_output,train_input,sess) # is_training is false here
可能是什么原因?