#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