Я тренирую модель с tf.layers.batch_normalization
API.И после обучения мне нужно загрузить обученную модель, чтобы сделать прогноз на новых данных.Существует два способа загрузки весов:
(1):
saver1 = tf.train.Saver(tf.global_variables(), max_to_keep=10)
saver1.restore(sess, '{}'.format(args.restore_ckpt))
(2):
saver2 = tf.train.import_meta_graph('{}.meta'.format(args.restore_ckpt))
saver2.restore(sess, '{}'.format(args.restore_ckpt))
Я обнаружил (1) банкагенерировать высокую точность предсказания (скажем, 97%
), но (2) имеет гораздо более низкую точность (скажем, 59%
).Означает ли это, что (2) неправильно загрузили веса для слоев нормализации партии?Ждем ваших комментариев!
ОБНОВЛЕНО:
Я обнаружил, что у модели, загруженной (1), одинаковая точность прогнозирования, независимо от того, какой тест имеет batch_size.Я попробовал размер пакета с 1 и 16, оба результата имеют точность 97%.
Кажется, с весами, загруженными (2), мне нужно добавить следующий код:
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
train_op = optimizer_op.minimize(loss_total_op, global_step=global_step)
Тогда получится высокая точность 97%
.Может быть, я неправильно понял нормализацию партии.