Я создаю свой собственный сверточный слой с помощью MATLAB.
После того, как я понял его функцию, мне немного сложно ускорить его с помощью оптимизации кода.
Ниже это код:
function output=convolutiontransform(input,kernel,bias)
after_data=zeros(size(kernel,4),size(input,2),size(input,3));
before_data=zeros(size(input));
for (i=1:size(after_data,1))
for (j=1:size(input,1))
before_data(j,:,:)=conv2(squeeze(input(j,:,:)),squeeze(kernel(:,:,j,i)),'same');
end
after_data(i,:,:)=sum(before_data,1);
end
output=after_data;
end
Я предполагаю, что основное узкое место в вычислениях связано с использованием "for".
Но я не специалист по информатике, я хотел бы попросить несколько полезных советов.
Заранее большое спасибо.