有没有一种方法来加速这段代码在MATLAB


Input = rand(32,32,3);
Theta = rand(10,16);

Output = zeros(30,30,3,16); % preallocate
for i = 1:30
     for j = 1:30
          Output(i,j,:,:) = permute(cat(2,ones(1,1,3),reshape(Input(i:i+2,j:j+2,1:3),1,9,3)), [2 3 1]).'*Theta;
     end
end

唷!我知道这里发生了很多事情,但也许有一种方法可以加快速度。此代码将32 × 32 CMY图像输入的通道分解为3 × 3重叠的矩阵,将其重塑为向量,加上1并乘以矩阵Theta,以获得(卷积神经网络的)特征映射作为输出。

试着改变这一行:

Output(i,j,:,:) = permute(cat(2,ones(1,1,3),reshape(Input(i:i+2,j:j+2,1:3),1,9,3)), [2 3 1]).'*Theta;

:

Output2(i,j,:,:) = [1 1 1; reshape(Input(i:i+2,j:j+2,:),9,3,1)].'*Theta;

在这里平均一千次循环,在代码中从16.3ms6.9ms

相关内容

  • 没有找到相关文章