我正在使用卷积深度神经网络(特别是CRBM)。我需要执行几个有效的'卷积和几个完整的'卷积。我需要优化他们的速度。我正在使用C ++。
如果有效'卷积我通过重新排列图像(这相当于Matlab中的 im2col )并将(矩阵乘法)乘以内核矩阵(每行一个),可以将其加速约50% ,用一个矩阵乘法代替几个卷积。
不幸的是,我还没有能够获得满满的'卷积。我知道我也可以重新排列图像(在Matlab中使用等效的 convmtx2 ),但只是将图像矩阵重新排列到卷积矩阵已经慢得多(几乎一个数量级)而不是做所有的卷积。卷积矩阵变得非常快。
是否有一种很好的实用方法可以加快速度。使用C ++中的矩阵乘法进行卷积(使用多个内核)?也许,一种有效的计算convmtx2的方法?