Тонкая настройка ResNet для Cat-Dog - PullRequest
0 голосов
/ 31 мая 2019

Я изучаю CNN по классическому набору данных Cat-Dog Kaggle.Я пытаюсь реализовать разные архитектуры CNN;ResNet - следующий в списке.

Я понимаю, что ResNet (в частности, ResNet50) является функциональной моделью.Последний слой выглядит следующим образом:

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
fc1000 (Dense)                  (None, 1000)         2049000     avg_pool[0][0] 

Я хочу изменить его на плотный слой с 2 ​​выходами.Когда я делал это с VGG-16, я использовал следующий код:

vgg16_model = Sequential()
for layer in pre_vgg16_model.layers:
    vgg16_model.add(layer)
vgg16_model.layers.pop()
for layer in vgg16_model.layers:
    layer.trainable = False
vgg16_model.add(Dense(2, activation='softmax'))

Естественно, здесь это не сработает, потому что он не последовательный.Документация Keras, кажется, указывает на то, что функциональные модели построены в более «голом» стиле, определяя и переопределяя тензоры по мере разработки модели.Проблема в том, что, если я это сделаю, я потеряю преимущество предварительной подготовки.

Как я могу выполнить аналогичное извлечение и замену окончательного слоя Dense для функциональной модели CNN?

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