我正在使用卷积进行神经网络,目前它正在像这样实现
for f = 1:NumberOfKernels
tempC = conv2(input(:,:,1),kernels(:,:,1,f),'same');
tempM = conv2(input(:,:,2),kernels(:,:,2,f),'same');
tempY = conv2(input(:,:,3),kernels(:,:,3,f),'same');
preactivation(:,:,f) = tempC + tempM + tempY;
end
这可以在一行中完成,而无需单独为每个颜色通道写出conv2吗?图像处理工具箱中的this功能可以加快速度吗?考虑到我没有GPU。
答案 0 :(得分:1)
您可以执行以下操作:
szk = size(kernels);
temp = zeros(size(input)+szk(1:3)-1);
szk = ceil(szk(1:2) / 2);
temp(szk(1):szk(1)-1+size(input,1),szk(2):szk(2)-1+size(input,2),:) = input;
for f = 1:NumberOfKernels
preactivation(:,:,f) = convn(temp,kernels(:,:,:,f),'valid');
end
然而,我不希望它快得多。如果内核可以分离,那会让事情变得更快的是什么。