Умножение Caffe Element-Wise с фиксированными каплями
Я думаю, что я буду задавать несколько вопросов здесь, я хотел бы любой комментарий, потому что я новичок в Кафе.
В моей сети входные изображения имеют размер 1x41x41
Так как я использую 64 размера пакета, я думаю, что размер данных будет 64x1x41x41
(Пожалуйста, поправьте меня, если это не так)
После нескольких сверточных слоев (которые не меняют размер данных) я хотел бы умножить полученные данные на предварительно определенные большие размеры. 1x41x41
, Кажется удобным в использовании EltwiseLayer
сделать умножение. Таким образом, чтобы определить второй нижний слой Eltwise
Мне нужно иметь другие входные данные для BLOB-объектов. (Пожалуйста, сообщите, если это можно сделать другим способом)
Первый вопрос: пакетное обучение меня смущает. Если я хочу умножить пакет изображений с одним большим двоичным объектом в EltwiseLayer
должны ли размеры дна быть одинаковыми? Другими словами, я должен использовать repmat
(Matlab), чтобы клонировать 64 BLOB-объектов, чтобы иметь размер 64x1x41x41
или я могу просто подключить один шарик размером 1x1x41x41
?
Второй вопрос: я хочу умножить данные на 100 различных блобов, а затем взять среднее из 100 результатов. Нужно ли определять 100 EltwiseLayers
делать работу? Или я могу собрать капли в одном размере данных 1x100x41x41
(или же 64x100x41x41
) и клонировать данные для умножения в 100 раз? И если так, как я могу это сделать? Пример был бы очень полезен. (Я видел TileLayer
где-то, но информация распространяется по всей галактике.)
Заранее спасибо.
1 ответ
Чтобы сделать поэлементное умножение в кофе, оба сгустка должны иметь одинаковую форму. Кафе не "вещает" по синглтонным измерениям.
Итак, если вы хотите умножить партию из 64 шариков формы 1x41x41
каждый, вы должны будете предоставить два 64x1x41x41
нижние капли.
Как вы уже заметили, вы можете использовать "Tile"
слой, чтобы сделать repmat
ING:
layer {
name: "repmat"
type: "Tile"
bottom: "const_1x1x41x41_blob"
top: "const_64x1x41x41_blob"
tile_param {
axis = 0 # you want to "repmat" along the first axis
tiles = 64 # you want 64 repetitions
}
}
Теперь вы можете сделать "Eltwise"
умножение
layer {
name: "mul"
type: "Eltwise"
bottom: "const_64x1x41x41_blob"
bottom: "other_blob"
top: "mul"
eltwise_param {
operation: MUL
}
}