Доступ к выходам средних слоев в тонко настроенной сети в керасе - PullRequest
0 голосов
/ 08 мая 2018

Я настроил vgg16 в Keras с этими слоями:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
vgg16 (Model)                (None, 1, 1, 512)         14714688  
_________________________________________________________________
flatten_1 (Flatten)          (None, 512)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 1024)              525312    
_________________________________________________________________
dense_2 (Dense)              (None, 512)               524800    
_________________________________________________________________
dropout_1 (Dropout)          (None, 512)               0         
_________________________________________________________________
dense_3 (Dense)              (None, 10)                5130      
=================================================================
Total params: 15,769,930
Trainable params: 8,134,666
Non-trainable params: 7,635,264

Но я могу просто извлечь особенности моего входного изображения из flatten_1 , dense_1 ... , dense_3 на model.layers[1].output , model.layers[1].output , ... , model.layers[5].output

Так как же извлечь элементы из средних слоев vgg16?

1 Ответ

0 голосов
/ 09 мая 2018

Это обычный шаблон для получения выходных данных промежуточных слоев для заданного ввода x_test:

import keras.backend as K

get_layer = K.function(
    [model.layers[0].input, K.learning_phase()],
    [model.layers[LAYER_DESIRED].output])
layer_output = get_layer([x_test, 0])[0]

где LAYER_DESIRED - индекс слоя, который вы хотите вывести.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...