我想使用一个经过预先训练的模型,并在该模型的末尾添加一个分段头,但问题是,我只有一个‘冻结_推断_Graph.pb’。下面是我从模型中得到的文件:

我尝试过几种方法:
1.将经过预先训练的模型加载到Keras模型中:,使用我所拥有的文件似乎是不可能的。它只是给了我一个AutoTrackable对象,而不是模型。
2.访问冻结模型的张量对象并使用张量建立模型:我找到了如何访问张量,但无法使用张量对象创建Keras模型。
with self.graph.as_default():
graph = tf.import_graph_def(graph_def, name='')
graph = tf.compat.v1.import_graph_def(graph_def)
tf.compat.v1.Graph.as_default(graph)
self.sess = tf.Session(graph=self.graph)
self.tensors = [tensor for op in tf.compat.v1.get_default_graph().get_operations() for tensor in op.values()]在这里,我可以得到张量,但是我不能在模型中使用张量:
model = tf.keras.models.Model(inputs=self.tensors[0], outputs=self.tensors[-1])有没有办法将这个冻结的图转换成Keras模型?或者,如果有另一种方法,我可以训练的模式,我会很高兴知道。
预先训练的模型是“ssd_mobilenet_v3_small_coco_2020_01_14”,可以找到这里。
发布于 2020-09-07 21:48:12
您可以使用两种方法:
customModel = tf.keras.models.load_model(' savedModel ') #savedModel是包含.pb data pretrainedOutput =CustomModel.Layers-1.输出newOutput = tf.keras.layers.Dense(2)(pretrainedOutput) # change layer的文件夹,new_model = tf.keras.Model(inputs=customModel.inputs,outputs=newOutput) #创建一个新模型,输入旧模型和新的输出张量。
其中'savedModel‘是带有'frozen_inference_graph.pb’和其他元数据的文件夹的名称。请参阅有关使用.pb文件和细化TFguide中的自定义模型的详细信息。
将tf.Session()作为sess: new_saver =new_saver new_saver.restore(sess,tf.train.latest_checkpoint('./'))
请参阅关于如何在TF1.x中加载和自定义已恢复的模型的教程。
https://stackoverflow.com/questions/63532983
复制相似问题