如何从 Tensorflow 中的训练模型中删除最后一层

mrS*_*h91 9 keras tensorflow

我想删除从https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md下载的“faster_rcnn_nas_lowproposals_coco”模型的最后一层。我知道我在 Keras 中我们可以使用 model.layers.pop() 删除最后一层。

但是我在网上搜了一下,tensorflow中没有对应的功能。如果 tensorflow 中没有等效函数,有没有人可以告诉我如何通过 Keras 加载训练有素的模型动物园?

Thi*_*ses 17

你不需要“弹出”一个层,你只需要不加载它:

以 Mobilnet 为例(但将您下载的模型放在这里):

model = mobilenet.MobileNet()
x = model .layers[-1].output 
Run Code Online (Sandbox Code Playgroud)

第一行加载整个模型,第二行加载最后一层之前的输出。您可以更改“layer[-x]”,其中 x 是您想要的图层的输出!

然后可以像这样使用它:

x = Dense(256)(x)
predictions = Dense(15, activation = "softmax")(x)
model = Model(inputs = model.input, outputs = predictions)
Run Code Online (Sandbox Code Playgroud)

我希望我有所帮助!