все.Я использую tenorflow 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)
Может кто-нибудь сказать мне, что я использую это неправильно?И сколько влияния с batch_size равно 1 в tf.layers.batch_normalization () ?
Любая помощь будет оценена!Заранее спасибо.