因此,我正在尝试加载经过预训练的网络作为管道的一部分。为此,我使用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应该相应地获取新结果。有人可以帮我了解发生了什么事。