Ответ 1
Как вы хорошо заметили, встроенные слои обычно не работают "из коробки".
Для некоторых слоев это довольно тривиально ("ReLU"
и другие уровни активации нейронов).
Однако для других он требует специальной обработки кода. Например, в реализации слоя "PReLU"
есть конкретная переменная-член bottom_memory_
, в которой хранится информация, необходимая для backprop.
Вы можете увидеть аналогичный код для других слоев, которые специально проверяют на if (top[0] == bottom[0])
, чтобы увидеть, используется ли этот слой в случае "на месте".
Кроме того, нет смысла иметь слой на месте, для которого вход и выход имеют разные формы, поэтому такие слои, как "Convolution"
, "InnerProduct"
, "Pool"
, не считаются кандидатами на "in -place".