Тензор потока - переменные, которые не инициализируются после импорта графика, чтобы объединиться с другим графиком и выполнить обучение
Моя цель состоит в том, чтобы объединить граф A, на котором проведено обучение, с графом B. Кажется, я не могу инициализировать переменные, поступающие из графа A.
экспортировать graph_def и meta_graph
tf.train.write_graph(sess.graph, './tmp', 'model.pb', as_text=False)
tf.train.export_meta_graph(filename='./tmp/mod.meta', graph=graph, clear_devices=True)
импортировать в граф графа б.
tf.import_graph_def(graph_def)
tf.train.import_meta_graph(tf.train.latest_checkpoint('./tmp') + '.meta')
инициализация переменных в сеансе
saver.restore(sess, tf.train.latest_checkpoint('./tmp'))
init_op = sess.graph.get_operation_by_name("init")
sess.run(tf.global_variables_initializer())
sess.run(init_op)
Следующая команда сообщает, что неинициализированных переменных нет. если я выполнил команду до того, как команды инициализатора сверху будут отображать переменные из графа A и B, они не будут инициализированы.
print(sess.run(tf.report_uninitialized_variables()))
ошибка вывода
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value import/b3
Любые идеи о том, что может быть не так, очень ценятся.
1 ответ
Одна альтернатива - вы можете сохранить метку и контрольную точку + и загрузить ее, в отличие от загрузки мета-графика graphDef +.
# saving a checkpoint + metagraph
with tf.Session() as sess:
tf.Saver().save(sess, save_path='./tmp/model.chkpt', global_step=global_step)
tf.train.export_meta_graph('./graph/final.meta', clear_devices=True)
# loading checkpoint + metagraph
new_saver = tf.train.import_meta_graph('./graph/final.meta')
with tf.Session() as sess:
new_saver.restore(sess, tf.train.latest_checkpoint('./tmp'))