Поскольку вы собираетесь обучать свою сеть сквозной, какую бы конфигурацию вы ни использовали - весы будут обучены для их учета.
BatchNorm?
Iугадайте первый вопрос, который вам нужно задать себе: вы хотите использовать BatchNorm
?Если ваша сеть глубока, и вы обеспокоены ковариатными сдвигами , то, вероятно, у вас должно быть BatchNorm
- и здесь идет вариант №.3
BatchNorm первым?
Если ваш x
является выходом другого слоя conv
, то на самом деле нет никакой разницы между вашей первой и второй альтернативой: ваша сетькаскад ...- conv
- bn
- ReLU
- conv
- BN
- ReLU
- conv
-... так что это только "искусственное" разбиение сети на триплетыфункций conv
, bn
, relu
и вплоть до самых первых и последних функций, которые вы можете разделить вещи, как вы хотите.Более того, так как пакетная норма является линейной операцией (масштаб + смещение), ее можно «сложить» в смежный слой conv
без изменения сетки, поэтому вы в основном остались с conv
- relu
парами.
Итак, между первыми двумя выделенными вами вариантами нет большой разницы.
Что еще нужно учитывать?
Вам действительно нужно ReLU
при изменении размеров объектов?Вы можете думать о сокращающих измерениях как о линейном отображении - разложении отображений весов на x
в более низкую матрицу rank , которая в конечном итоге отображается в c
пространство измерений вместо 2c
пространство.Если вы рассматриваете линейное отображение, то вы можете вообще пропустить ReLU
.
См. быстрый RCNN SVD трюк для примера.