Итак, я пытаюсь загрузить предварительно обученную сеть как часть моего конвейера. Для этого я использую tf.train.import_meta_graph
. Теперь, когда я использую предварительно обученную сеть в середине моего конвейера, ее вход изменяется динамически.
Чтобы решить эту проблему, я попытался изменить входные данные в сети от заполнителя до переменной, используя аргумент input_map
:
new_saver = tf.train.import_meta_graph('{}.meta'.format(check_point), input_map={'image:0': tf.convert_to_tensor(var))
Теперь меня интересует вывод предварительно обученной сети, который я получаю, используя out = tf.get_collection('output')[0]
Если я назначу новое значение для 'var', вывод out должен измениться при использовании sess.run:
assign_op1 = tf.assign(var, new_im)
with tf.control_dependencies([assign_op1]):
out = tf.get_collection('output')[0]
init_op = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_op)
new_saver.restore(sess, check_point)
out_np = sess.run(out, {
new_im: image_data,
})
Оператор assign просто игнорируется, и результат out, который я получаю при использовании sess.run, такой же, как и без оператора assign. Я не понимаю, почему это так, я понимаю, что сначала должен выполняться оператор assign, а затем get_collection должен получить новый результат соответственно. Может ли кто-нибудь помочь мне понять, что происходит.