我已经将一个预训练模型保存为ckpt文件(元,索引...),并且正在使用tf.train.import_meta_graph()
和tf.train.Saver.restore()
加载图形。
我也有一个tf.keras.applications
的resnet50模型。
我需要将resnet模型的输出提供给从磁盘加载的模型。
我该如何实现?
代码:
resnet_model = Resnet50(include_top=False,pooling='avg')
preprocessed_video = preprocess_input(tf.cast(video,tf.float32))
features = self.resnet_model([preprocessed_video])
sess1 = tf.Session()
saver = tf.train.import_meta_graph(model_path.as_posix() + '.meta')
graph = tf.get_default_graph()
saver.restore(sess1,model_path.as_posix())
input_x = graph.get_tensor_by_name('input/Identity:0')
result = graph.get_tensor_by_name('output/Identity:0')
我需要将features
赋予input_x
并得到result
。请注意,这必须在构建图形时发生,而不是在运行sess.run
时发生。我的意思是video
,features
都是tensors
而不是numpy.ndarray
。因此,我不能使用sess.run
编辑1 :
像在this answer中一样,我可以解决以下问题:
preprocessed_video = preprocess_input(tf.cast(video,tf.float32))
features = self.resnet_model([preprocessed_video])
sess1 = tf.Session()
saver = tf.train.import_meta_graph(model_path.as_posix() + '.meta',input_map={'input/Identity:0': features})
graph = tf.get_default_graph()
saver.restore(sess1,model_path.as_posix())
quality_score = graph.get_tensor_by_name('output/Identity:0')
感谢jdehesa