how to initialize the neural network to a set of weights ???
    11 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I created my NN with patternet ??
0 Commenti
Risposta accettata
  Greg Heath
      
      
 il 20 Ott 2012
        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 Commenti
  Samisam
 il 7 Gen 2018
				@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??
Più risposte (3)
  Greg Heath
      
      
 il 19 Ott 2012
        
      Modificato: Greg Heath
      
      
 il 20 Ott 2012
  
      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 Commenti
  LukasJ
 il 6 Nov 2020
				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
      
 il 19 Ott 2012
        net.IW{1} = %input weights
net.LW{2} = %layer weights
% biases:
net.b{1}  = 
net.b{2}  =
0 Commenti
  Sara Perez
 il 12 Set 2019
        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:
0 Commenti
Vedere anche
Categorie
				Scopri di più su Modeling and Prediction with NARX and Time-Delay Networks in Help Center e File Exchange
			
	Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!