필터 지우기
필터 지우기

how to initialize the neural network to a set of weights ???

조회 수: 28 (최근 30일)
Mariem Harmassi
Mariem Harmassi 2012년 10월 16일
댓글: LukasJ 2020년 11월 6일
I created my NN with patternet ??

채택된 답변

Greg Heath
Greg Heath 2012년 10월 20일
Unlike the older nets (e.g., newfit, newpr, newff,...), you cannot assign weights to the newer networks (e.g., fitnet, patternnet, feedforwardnet,...) unless the net is configured.
There are two ways to configure the net before manually assigning your own initial weights. Both will assign initial weights that you can overwrite:
1. help/doc configure.
net = configure(net, x, t );
2. Train the net for 1 epoch
net.trainParam.epochs= 1.
net = train(net,x,t);
Hope this helps.
Thank you for formally accepting my answer.
Greg
  댓글 수: 2
Mariem Harmassi
Mariem Harmassi 2012년 10월 20일
ok i will try to cinfigure the net before training cauz the second solution is not a good one i need to train the net according to a specifical set of weignts .
Samisam
Samisam 2018년 1월 7일
@Greg Heath can I do a manual weight initialization before I train the net???
I mean if I have an optimal weight from a spesific algorithm and I want to create a NN to test data using these weights is there any way to do this without training the net again??

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Greg Heath
Greg Heath 2012년 10월 19일
편집: Greg Heath 2012년 10월 20일
net = patternet;
will default to H = 10 hidden nodes. For other values use
net = patternnet(H);
If
size(input) = [I N ]
size(target) = [O N ]
the node topology is I-H-O.
For a manual weight initialization, first configure the net:
net = configure(net,x,t);
For a random weight initialization, initialize the random number generator. Then generate and assign the weights:
rng(0)
IW = 0.01*randn(H,I);
b1 = 0.01*randn(H,1);
LW = 0.01*randn(O,H);
b2 = 0.01*randn(O,1);
then
net.IW{1,1} = IW;
net.b{1,1} = b1;
net.LW{2,1} = LW;
net.b{2,1} = b2;
Hope this helps.
Thank you for formally accepting my answer.
Greg
  댓글 수: 4
Heather Zhang
Heather Zhang 2016년 8월 30일
Thank you Greg. "configure" works really well.
LukasJ
LukasJ 2020년 11월 6일
Dear Greg Heath,
unfortunately configuring the net doesn't do the trick for me:
I tried setting the inital weights manually e.g.
net.iw{1,1} = zeros(...
and via
net.initFcn = 'initlay';
net.layers{1,1}.initFcn = 'initwb';
net.layers{2,1}.initFcn = 'initwb';
net.InputWeights{1,1}.initFcn = 'midpoint';
net.LayerWeights{2,1}.initFcn = 'midpoint';
initFcn to call for midpoint initialization. The first won't update any weights after training, the former won't do anything (still random weights when I check before training, training results after fixed epochs are not comparable).
Your help would be very much appreciated!
Best regards,
Lukas

댓글을 달려면 로그인하십시오.


renz
renz 2012년 10월 19일
net.IW{1} = %input weights
net.LW{2} = %layer weights
% biases:
net.b{1} =
net.b{2} =

Sara Perez
Sara Perez 2019년 9월 12일
You can specify your own function for the initialization of the weights with 'WeightsInitializer' in convolution2dLayer.
layer = convolution2dLayer(filterSize,numFilters, ...
'WeightsInitializer', @(sz) rand(sz) * 0.0001, ...
'BiasInitializer', @(sz) rand(sz) * 0.0001)
info here:

카테고리

Help CenterFile Exchange에서 Sequence and Numeric Feature Data Workflows에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by