我正在尝试加载一个keras模型和2个tf模型,并在一段代码中依次运行它们,但是它不起作用。如何正确使用它们?
环境:Python-3.5,Tensorflow-1.14.0
这是我的代码框架
load keras_model
load tf_model_1
load tf_model_2
predict using keras_model
predict using tf_model_1
predict using tf_model_2
有关加载和使用tf_model的详细信息
g1 = tf.Graph()
sess_1 = tf.Session(graph=g1, config=get_config())
with sess_1.as_default():
with sess_1.graph.as_default():
print(tf.get_default_graph())
output = build_model()
init_fn = slim.assign_from_checkpoint_fn(
'model1.ckpt',
slim.get_model_variables(),
ignore_missing_vars=True)
init_op = tf.global_variables_initializer()
sess_1.run(init_op)
init_fn(sess_1)
###########################
g2 = tf.Graph()
sess_2= tf.Session(graph=g2, config=get_config())
with sess_2.as_default():
with sess_2.graph.as_default():
print(tf.get_default_graph())
output = build_model()
init_fn = slim.assign_from_checkpoint_fn(
'model2.ckpt',
slim.get_model_variables(),
ignore_missing_vars=True)
init_op = tf.global_variables_initializer()
sess_2.run(init_op)
init_fn(sess_2)
使用tf_model时
with sess_1.as_default():
with sess_1.graph.as_default():
out = sess_1.run(
[output], feed_dict={inputs: x})
3个模型都可以独立正常工作,但是当我尝试按顺序组合时,在运行tf_model_1时报告错误:
TypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("Placeholder:0", shape=(?, 224, 224, 3), dtype=float32) is not an element of this graph.
我已经尝试过将它们与以下序列结合起来:
1.load keras_model
2.load tf_model_1
3.load tf_model_2
4.predict using keras_model
5.predict using tf_model_2
6.predict using tf_model_1
它可以运行到第6步并抛出错误。所以我怀疑这是2个不同的tensorflow图的问题。我在加载和运行tf_model时加入了这一行
print(tf.get_default_graph())
我得到了输出
loading tf_model_1:
<tensorflow.python.framework.ops.Graph object at 0x7fca53563550>
loading tf_model_2:
<tensorflow.python.framework.ops.Graph object at 0x7fca53559ba8>
runnng tf_model_1:
<tensorflow.python.framework.ops.Graph object at 0x7fca53563550>
在运行相应的模型时,它似乎已经设置了正确的tf图,这使我非常困惑。 同样没有第二个tf_model,我连接了keras模型和一个tf模型。
1.load keras_model
2.load tf_model_1
3.predict using keras_model
4.predict using tf_model_1
如何正确使用它们?