я использую conv2 Функция в броненосце с размером изображения 224х224 и размером маски 10х10. Для 3-канального изображения я делаю что-то вроде:
arma::mat temp(215, 215, fill::zeros);
for (int i = 0; i < 3; i++)
temp += arma::mat(arma::conv2(image_channel, channel_mask)).submat(9, 9, 222, 222);
Я хочу только действительный свертка и, следовательно, я использую submat. Этот код выполняется в цикле 32 раз с разными масками. За 32 итерации занимают 2,37 секунды, что намного медленнее, чем октава. Octave может выполнить тот же код за 0,25 секунды.
И октава, и броненосец настроены на использование OpenBLAS, и я определил соответствующие флаги в файле c ++. (Например. ARMA_USE_BLAS
так далее.). Кто-нибудь может сказать, пожалуйста, в чем здесь проблема.
Задача ещё не решена.
Других решений пока нет …