В Keras, удаляет ли использование include_top = False в моей собственной модели весь последний плотный слой и могу ли я определить «вершину» моей модели?

#keras #transfer-learning

#keras #передача-обучение

Вопрос:

Могу ли я определить, какие слои я хочу определить как «верхние».

Насколько я понимаю, include_top = false удалит весь слой denses сверху. Я хочу использовать «include_top = False» для переноса обучения с моими собственными моделями и не хочу, чтобы весь мой последний плотный слой автоматически удалялся.

Ответ №1:

для доступа к последним плотным слоям, которые вы должны установить 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, 14, 512)       2359808   
_________________________________________________________________
block5_pool (MaxPooling2D)   (None, 7, 7, 512)         0         
_________________________________________________________________
flatten (Flatten)            (None, 25088)             0         
_________________________________________________________________
fc1 (Dense)                  (None, 4096)              102764544 
_________________________________________________________________
dense_6 (Dense)              (None, 32)                131104