问题描述
我可以定义要定义为“顶部”的哪些层。
据我了解,include_top = false将删除顶部的所有密集层。 我想使用“ include_top = False”进行我自己的模型的迁移学习,并且不希望我所有的最后密集层都被自动删除。
解决方法
要访问最后一个密集层,您必须设置include_top = True
。这样,您可以创建具有所需所有中间层的子模型。这是VGG16的示例
from tensorflow.keras.layers import *
from tensorflow.keras.models import *
from tensorflow.keras.applications import VGG16
vgg = VGG16(include_top = True,input_shape = (224,224,3))
new_layer = Dense(32)(vgg.layers[-3].output) # add new layer
sub_model = Model(vgg.input,new_layer)
在这种情况下,sub_model
的最后一层是:
block5_conv3 (Conv2D) (None,14,512) 2359808
_________________________________________________________________
block5_pool (MaxPooling2D) (None,7,512) 0
_________________________________________________________________
flatten (Flatten) (None,25088) 0
_________________________________________________________________
fc1 (Dense) (None,4096) 102764544
_________________________________________________________________
dense_6 (Dense) (None,32) 131104