--- a +++ b/combinedDeepLearningActiveContour/functions/params2stack.m @@ -0,0 +1,39 @@ +function stack = params2stack(params, netconfig) + +% Converts a flattened parameter vector into a nice "stack" structure +% for us to work with. This is useful when you're building multilayer +% networks. +% +% stack = params2stack(params, netconfig) +% +% params - flattened parameter vector +% netconfig - auxiliary variable containing +% the configuration of the network +% + + +% Map the params (a vector into a stack of weights) +depth = numel(netconfig.layersizes); +stack = cell(depth,1); +prevLayerSize = netconfig.inputsize; % the size of the previous layer +curPos = double(1); % mark current position in parameter vector + +for d = 1:depth + % Create layer d + stack{d} = struct; + + % Extract weights + wlen = double(netconfig.layersizes{d} * prevLayerSize); + stack{d}.w = reshape(params(curPos:curPos+wlen-1), netconfig.layersizes{d}, prevLayerSize); + curPos = curPos+wlen; + + % Extract bias + blen = double(netconfig.layersizes{d}); + stack{d}.b = reshape(params(curPos:curPos+blen-1), netconfig.layersizes{d}, 1); + curPos = curPos+blen; + + % Set previous layer size + prevLayerSize = netconfig.layersizes{d}; +end + +end \ No newline at end of file