Загрузка Tensorflow Graph в другой файл не дает такой же точности - PullRequest
0 голосов
/ 05 сентября 2018

Я тренировал CNN в Tensorflow, и он тестировал с точностью 92%. Я сохранил его как обычный файл ckpt.

session = tf.Session(config=tf.ConfigProto(log_device_placement=True))
session.run(tf.global_variables_initializer())
<TRAINING ETC>
saver.save(session, save_path_name)

В другом файле я хочу выполнить вывод, поэтому я назвал мета-граф, как объяснено в документации:

face_recognition_session = tf.Session()
saver = tf.train.import_meta_graph(<PATH TO META FILE>, clear_devices=True)

saver.restore(face_recognition_session, <PATH TO CKPT FILE>)

graph = tf.get_default_graph()
x = graph.get_tensor_by_name('input_variable_00:0')
y = graph.get_tensor_by_name('output_variable_00:0')

При выполнении логического вывода или его повторном тестировании точность падает до 3%.

Я что-то пропускаю?

1 Ответ

0 голосов
/ 06 сентября 2018

Вы назначаете неправильный метод для saver. Из TF Guide вы можете увидеть, что хотите начать сеанс, а затем загрузить через tensorflow.train.Saver().

tf.reset_default_graph()
# Create some variables.
x = tf.get_variable("input_variable_00:0", [x_shape])
y = tf.get_variable("output_variable_00:0", [y_shape])

saver = tf.train.Saver()

# Use the saver object normally after that.
with tf.Session() as sess:
  # Initialize v1 since the saver will not.
  saver.restore(sess, <PATH TO CKPT FILE>)

  print("x : %s" % x.eval())
  print("y : %s" % y.eval())

Я бы также рекомендовал посмотреть замораживание и экспорт ваших графиков как GraphDef, если вы хотите получить согласованные результаты вывода.

...