git-svn-id: http://moon:8086/svn/matlab/trunk@91 801c6759-fa7c-4059-a304-17956f83a07c
39 lines
1.4 KiB
Matlab
39 lines
1.4 KiB
Matlab
function [Wc, Wd, bc, bd] = cnnParamsToStack(theta,imageDim,filterDim,...
|
|
numFilters,poolDim,numClasses)
|
|
% Converts unrolled parameters for a single layer convolutional neural
|
|
% network followed by a softmax layer into structured weight
|
|
% tensors/matrices and corresponding biases
|
|
%
|
|
% Parameters:
|
|
% theta - unrolled parameter vectore
|
|
% imageDim - height/width of image
|
|
% filterDim - dimension of convolutional filter
|
|
% numFilters - number of convolutional filters
|
|
% poolDim - dimension of pooling area
|
|
% numClasses - number of classes to predict
|
|
%
|
|
%
|
|
% Returns:
|
|
% Wc - filterDim x filterDim x numFilters parameter matrix
|
|
% Wd - numClasses x hiddenSize parameter matrix, hiddenSize is
|
|
% calculated as numFilters*((imageDim-filterDim+1)/poolDim)^2
|
|
% bc - bias for convolution layer of size numFilters x 1
|
|
% bd - bias for dense layer of size hiddenSize x 1
|
|
|
|
outDim = (imageDim - filterDim + 1)/poolDim;
|
|
hiddenSize = outDim^2*numFilters;
|
|
|
|
%% Reshape theta
|
|
indS = 1;
|
|
indE = filterDim^2*numFilters;
|
|
Wc = reshape(theta(indS:indE),filterDim,filterDim,numFilters);
|
|
indS = indE+1;
|
|
indE = indE+hiddenSize*numClasses;
|
|
Wd = reshape(theta(indS:indE),numClasses,hiddenSize);
|
|
indS = indE+1;
|
|
indE = indE+numFilters;
|
|
bc = theta(indS:indE);
|
|
bd = theta(indE+1:end);
|
|
|
|
|
|
end |