擅长:python、mysql、java
<p>我一直在尝试对keras tensorflow VGFace模型做同样的事情。经过大量的实验,我发现这种方法是有效的。在这种情况下,将使用除最后一层之外的所有模型,该层将替换为自定义嵌入层:</p>
<pre><code>vgg_model = VGGFace(include_top=True, input_shape=(224, 224, 3)) # full VGG16 model
inputs = Input(shape=(224, 224, 3))
x = inputs
# Assemble all layers except for the last layer
for layer in vgg_model.layers[1:-2]:
x = vgg_model.get_layer(layer.name)(x)
# Now add a new last layer that provides the 128 embeddings output
x = Dense(128, activation='softmax', use_bias=False, name='fc8x')(x)
# Create the custom model
custom_vgg_model = Model(inputs, x, name='custom_vggface')
</code></pre>
<p>与层[x]或pop()不同,get_layer获取实际层,允许将它们组装到新的输出层集中。然后可以从中创建新模型。“for”语句以1而不是0开头,因为输入层已由“inputs”定义</p>
<p>这种方法适用于序列模型。不清楚它是否适用于更复杂的模型</p>