Зачем нам включать include_top = False, если нам нужно изменить input_shape? - PullRequest
0 голосов
/ 27 апреля 2018

Насколько я знаю, входной кортеж входит из блоков свертки. Поэтому, если мы хотим изменить форму input_tuple, изменение свертки имело бы смысл. Зачем нам включать include_top = False и удалять полностью связанные слои в конце?

С другой стороны, если у нас другое количество классов, у Keras есть возможность изменить слой softmax, используя no_of_classes

Я знаю, что мне здесь чего-то не хватает. Пожалуйста, помогите мне

Пример: для начального Resnet V2

input_shape: необязательный кортеж формы, указывается только если include_top Неверно (иначе входная форма должна быть (299, 299, 3) (с формат данных channel_last) или (3, 299, 299) (с помощью channel_first) формат данных). Он должен иметь ровно 3 входных канала, а ширина и высота должна быть не меньше 139. Например, (150, 150, 3) будет один действительное значение.

include_top: включить ли сверху полностью подключенный слой сети.

https://keras.io/applications/#inceptionresnetv2

1 Ответ

0 голосов
/ 27 апреля 2018

Это просто потому, что полностью подключенные слои в конце могут принимать только входы фиксированного размера, которые ранее были определены формой ввода и всей обработкой в ​​сверточных слоях. Любое изменение формы ввода приведет к изменению формы ввода для полностью связанных слоев, что приведет к несовместимости весов (размеры матрицы не совпадают и не могут быть применены).

Это специфическая проблема для полностью связанных слоев. Если вы используете другой слой для классификации, такой как глобальное среднее объединение, такой проблемы не возникнет.

...