Возможно ли иметь не обучаемый слой в Керасе?
Я хотел бы рассчитать постоянную свертку, такую как размытие или пересэмплирование, и хочу, чтобы она никогда не меняла тренировки во время тренировки.
Можно ли инициализировать ядро свертки постоянным и исключить его из обучения в Керасе?
ОБНОВИТЬ
Я не хочу использовать это в целях, заявленных в документе. Я хочу реализовать остаточную сеть следующим образом: одна ветвь выполняет обычную обучаемую свертку, в то время как параллельная ветвь делает что-то постоянное, например, усреднение.
1 ответ
Вы должны быть в состоянии передать trainable = False
аргумент вашего определения слоя, или установите layer.trainable = False
свойство после создания вашего слоя. В последнем случае нужно скомпилировать по факту. Смотрите FAQ здесь.
Затем вы можете установить постоянные веса для слоя, передав kernel_initializer = initializer
аргумент. Более подробную информацию об инициализаторах можно найти здесь. Если у вас где-то уже определена матрица весов, я думаю, вам нужно будет определить пользовательский инициализатор, который устанавливает весовые значения для ваших желаемых значений. Ссылка показывает, как определить пользовательские инициализаторы в нижней части.
Тем не менее, я не подтвердил, и когда я сделал поиск в Google, я увидел много сообщений об ошибках, всплывающих о том, что замораживание слоев не работает должным образом. Хотя стоит попробовать.