我在犰狳中使用conv2函数,图像大小为 224x224,掩码大小为 10x10。对于 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 慢得多。Octave 可以在 0.25 秒内执行相同的代码。
octave 和 armadillo 都设置为使用 OpenBLAS,我在 c++ 文件中定义了适当的标志。(例如ARMA_USE_BLAS
等)。谁能告诉我这里有什么问题。