Тензор потока - переменные, которые не инициализируются после импорта графика, чтобы объединиться с другим графиком и выполнить обучение

Моя цель состоит в том, чтобы объединить граф 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'))
Другие вопросы по тегам