Неожиданная форма для deconv слоя - PullRequest
0 голосов
/ 01 июля 2019

Я работаю на слое deconv, который масштабирует 64 канала: 64x48x48 => 64x96x96.

layer {
    bottom: "layer41_conv"
    top: "layertest_upsample"
    name: "layertest_upsample"
    type: "Deconvolution"
    convolution_param {
        num_output: 64
        group: 64
        kernel_size: 2
        pad: 0
        stride: 2
    }
}

Когда я печатаю форму параметров: (64,1,2,2). Я ожидал что-то вроде: (64,64,2,2) из-за 64 каналов на входе и 64 каналов на выходе. Может кто-нибудь объяснить мне, что происходит?

1 Ответ

1 голос
/ 04 июля 2019

Вы определили group: 64

Что group делает (согласно инструкции ):

group (g) [по умолчанию 1]: Если g > 1, мы ограничиваем возможность подключения каждого фильтра подмножеством входных данных. В частности, входной и выходной каналы разделены на g группы, а k -ые каналы выходной группы будут подключаться только к k -ым каналам входной группы.

В вашем случае вы сгруппировали все 64 канала в 64 группы - это то, что k -ый входной канал отображается (изолированно) ядром 2x2 на k -ый выходной канал. Всего у вас есть 64 таких сопоставления 2x2, и поэтому ваш блоб веса составляет 64x1x2x2, а не 64x64x2x2.
Если вы удалите group: 64, то получите ожидаемую матрицу полной массы.

...