Как добиться быстрого вычислительного времени в пользовательских сверточных слоях в MATLAB - PullRequest
0 голосов
/ 21 января 2020

Я создаю свой собственный сверточный слой с помощью 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".

Но я не специалист по информатике, я хотел бы попросить несколько полезных советов.

Заранее большое спасибо.

...