git-svn-id: http://moon:8086/svn/matlab/trunk@91 801c6759-fa7c-4059-a304-17956f83a07c
23 lines
816 B
Matlab
23 lines
816 B
Matlab
function [ stack ] = initialize_weights( ei )
|
|
%INITIALIZE_WEIGHTS Random weight structures for a network architecture
|
|
% eI describes a network via the fields layerSizes, inputDim, and outputDim
|
|
%
|
|
% This uses Xavier's weight initialization tricks for better backprop
|
|
% See: X. Glorot, Y. Bengio. Understanding the difficulty of training
|
|
% deep feedforward neural networks. AISTATS 2010.
|
|
|
|
%% initialize hidden layers
|
|
stack = cell(1, numel(ei.layer_sizes));
|
|
for l = 1 : numel(ei.layer_sizes)
|
|
if l > 1
|
|
prev_size = ei.layer_sizes(l-1);
|
|
else
|
|
prev_size = ei.input_dim;
|
|
end;
|
|
cur_size = ei.layer_sizes(l);
|
|
% Xaxier's scaling factor
|
|
s = sqrt(6) / sqrt(prev_size + cur_size);
|
|
stack{l}.W = rand(cur_size, prev_size)*2*s - s;
|
|
stack{l}.b = zeros(cur_size, 1);
|
|
end
|