CNN convolution fast implementation
Ältere Kommentare anzeigen
Below is my implementation of the CNN convolution. "in" is a 3D matrix, there are also a 4D matrix "weights" and a 1D matrix "bias". "Out" is a 3D matrix. I am wondering if there is a better fast implementation.
function out = spConvLayerForward(in, layer, weights, bias)
[row, col, planeIn] = size(in);
planeOut = size(layer.weights, 4);
out = single(zeros(row, col, planeOut));
for i = 1 : planeOut
bias = layer.bias(i);
tmp = out(:, :, i);
tmp(:) = 0;
for j = 1 : planeIn
tmp = tmp + conv2(in(:, :, j), weight, 'same');
end
tmp = tmp + bias;
end
1 Kommentar
Walter Roberson
am 14 Sep. 2016
You can reshape in() to 2d and use a single conv2() call, but the boundary conditions become a nuisance.
Where is the variable "weight" coming from, and why did you make it so similar to the unused parameter "weights"?
Antworten (0)
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!