Как заморозить один фильтр в слое, оставляя другие фильтры пригодными для обучения? - PullRequest
0 голосов
/ 20 мая 2019

Предположим, что весовая матрица для одного слоя равна [32,64,4,2]. Можно ли заморозить свой первый фильтр, оставив остальные 31 фильтр пригодным для обучения?

Я пытался установить require_grad, однако этот параметр предназначен для всего слоя.

1 Ответ

0 голосов
/ 21 мая 2019

Это возможно, но не так просто, как вы думаете.Что nn.Conv2d эффективно делает, так это инициализирует и владеет весовыми (и, если применимо, смещенными) параметрами, а затем в forward просто отправляет functional.conv2d.

.для достижения вашей цели вам нужно будет создать класс, который будет содержать замороженный фильтр в виде буфера (без параметров) и 31 оставшийся фильтр в качестве параметра .Затем, вперед, он просто объединит буфер и параметр для получения 32-канального фильтра и отправит functional.conv2d.

...