UFLDL params2stack.m

主要有两个参数,所有参数的列向量params和网络的参数ei。
params保存着所有的参数值,而ei保存着每一层的大小,也就是参数reshape的矩阵维度。
最后返回的stack保存着网络层间的参数矩阵。

function stack = params2stack(params, ei)

% 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
% ei - auxiliary variable containing 
%             the configuration of the network
%


% Map the params (a vector into a stack of weights)
depth = numel(ei.layer_sizes);
stack = cell(depth,1);
% the size of the previous layer
prev_size = ei.input_dim; 
% mark current position in parameter vector
cur_pos = 1;

for d = 1:depth
    % Create layer d
    stack{d} = struct;

    hidden = ei.layer_sizes(d);
    % Extract weights
    wlen = double(hidden * prev_size);
    stack{d}.W = reshape(params(cur_pos:cur_pos+wlen-1), hidden, prev_size);
    cur_pos = cur_pos+wlen;

    % Extract bias
    blen = hidden;
    stack{d}.b = reshape(params(cur_pos:cur_pos+blen-1), hidden, 1);
    cur_pos = cur_pos+blen;

    % Set previous layer size
    prev_size = hidden;

end

end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值