Использовать динамический input_map при использовании import_meta_graph в тензорном потоке - PullRequest
0 голосов
/ 08 июня 2019

Итак, я пытаюсь загрузить предварительно обученную сеть как часть моего конвейера. Для этого я использую 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 должен получить новый результат соответственно. Может ли кто-нибудь помочь мне понять, что происходит.

...