В чем разница между следующими двумя способами загрузки модели в тензорном потоке? - PullRequest
0 голосов
/ 26 апреля 2018

Я тренирую модель с 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%.Может быть, я неправильно понял нормализацию партии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...