在Tensorflow中使用import_meta_graph时使用动态input_map

时间:2019-06-08 01:43:54

标签: python tensorflow import load

因此,我正在尝试加载经过预训练的网络作为管道的一部分。为此,我使用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'分配了新值,则在使用sess.run时out的输出应更改:

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,
    })

只是忽略了分配运算符,使用sess.run时得到的输出结果与没有分配运算符时的输出结果相同。我不明白为什么会这样,我的理解是,assign运算符应该先运行,然后get_collection应该相应地获取新结果。有人可以帮我了解发生了什么事。

0 个答案:

没有答案