keras transfer learning добавьте один слой раньше и выберите определенный слой в качестве вывода

#python #keras

#python #keras

Вопрос:

Я хочу добавить слой перед VGG19 и выбрать «block4_conv3» для следующего шага, мой код выглядит так:

 input = Input(shape=input_shape)

base_model = vgg19.VGG19(include_top=False, input_shape=input_shape, weights=weights)
base_model.trainable = False

start_layer = Conv2D(3, (3, 3), activation='relu', padding='same')(input)     
x = base_model(start_layer)
    
(here how to get layer 'block4_conv4' from base_model??) 

x = Conv2D(512, (3, 3), activation='relu', padding='same')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block5_pool')(x)

flat1 = Flatten()(x)
class1 = Dense(1024, activation='relu')(flat1)
dropout1 = Dropout(0.2)(class1)
class2 = Dense(512, activation='relu')(dropout1)
dropout2 = Dropout(0.2)(class2)
output = Dense(1, activation='sigmoid')(dropout2)

# Building model:
model = Model(inputs=input, outputs=output)

 

Как мне получить слой ‘block4_conv4’ из base_model?

Спасибо.

Ответ №1:

Попробуйте это:

 l = base_model.get_layer('block4_conv4').output
 

Комментарии:

1. Я думаю, что так и должно быть, l = base_model.get_layer(‘block4_conv4’).output