大家。为了我的目的,我使用tensorflow 1.4训练像 U-net 这样的模型。由于我的硬件限制,在训练时, batch_size只能设置为1,否则会出现OOM错误。
这是我的问题。在这种情况下,当batch_size等于1时,tf.layers.batch_normalization()
是否正常工作(说移动平均线,移动方差,伽玛,β)?小的batch_size会使它工作不稳定吗?
在我的工作中,我在培训时设置training=True
,在测试时设置training=False
。在训练时,我使用
logits = mymodel.inference()
loss = tf.mean_square_error(labels, logits)
updata_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
train_op = optimizer.minimize(loss)
...
saver = tf.train.Saver(tf.global_variables())
with tf.Session() as sess:
sess.run(tf.group(tf.global_variables_initializer(),
tf.local_variables_initializer()))
sess.run(train_op)
...
saver.save(sess, save_path, global_step)
测试时,我使用:
logits = model.inference()
saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess, checkpoint)
sess.run(tf.local_variables_initializer())
results = sess.run(logits)
有谁可以告诉我,我使用这个错误?在 tf.layers.batch_normalization()中 batch_size对1 的影响有多大?
任何帮助将不胜感激!提前谢谢。
答案 0 :(得分:0)
是的,tf.layers.batch_normalization()
适用于多个单个元素。在此类批次上执行批量规范化实际上命名为实例规范化(即单个实例的规范化)。