/[marvin]/marvin/src/libnn/init/initMlpnnVisitor.ml
ViewVC logotype

Diff of /marvin/src/libnn/init/initMlpnnVisitor.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by srv89, Tue Aug 26 07:49:29 2003 UTC revision 1.3 by srv89, Mon Sep 1 13:08:34 2003 UTC
# Line 47  open Random Line 47  open Random
47    
48  open Nn  open Nn
49  open InitVisitor  open InitVisitor
 open DefaultVisitor  
50  open MlpNN  open MlpNN
51        
   
 (**  
   Initializes the output activation.  
 *)  
 let initOutputActivation network =  
   let outputActivation = Array.make network#getLayerNb [||] in  
     for i = 0 to network#getLayerNb - 1 do  
       outputActivation.(i) <- Array.make (network#getNeuronsPerLayer i) 0.0  
     done;  
     network#setOutputActivation outputActivation  
         
 (**  
   Initializes the the input sum.  
 *)  
 let initInputSum network =  
   let inputSum = Array.make network#getLayerNb [||] in  
     for i = 0 to network#getLayerNb - 1 do  
       inputSum.(i) <- Array.create (network#getNeuronsPerLayer i) 0.0  
     done;  
     network#setInputSum inputSum  
         
 (**  
   Initializes the error.  
 *)  
 let initError network =  
   let error = Array.make network#getLayerNb [||] in  
     for i = 0 to network#getLayerNb - 1 do  
       error.(i) <- Array.make (network#getNeuronsPerLayer i) 0.0  
     done;  
     network#setError error  
         
 (**  
   Initializes the weights (using random numbers).  
 *)  
 let initWeights network =  
   let weights = Array.make (network#getLayerNb - 1) [|[||]|] in  
     for i = 0 to network#getLayerNb - 2 do  
       weights.(i) <- Array.make (network#getNeuronsPerLayer i) [||];  
       for j = 0 to (network#getNeuronsPerLayer i) - 1 do  
         weights.(i).(j) <- Array.make (network#getNeuronsPerLayer (i + 1)) (Random.float (Env.getEnv())#getRandLimit)  
       done;  
     done;  
     network#setWeights weights  
         
 (**  
   Initializes the gradients.  
   *)  
 let initGradients network =  
   let gradients = Array.make (network#getLayerNb - 1) [|[||]|] in  
     for i = 0 to network#getLayerNb - 2 do  
       gradients.(i) <- Array.create (network#getNeuronsPerLayer i) [||];  
       for j = 0 to (network#getNeuronsPerLayer i) - 1 do  
         gradients.(i).(j) <- Array.create (network#getNeuronsPerLayer (i + 1)) 0.0  
       done;  
     done;  
     network#setGradients gradients  
         
         
52  (**  (**
53    Initializes a Multi Layer Perceptron.    Initializes a Multi Layer Perceptron.
54  *)        *)      
# Line 126  object Line 67  object
67      Used to initialize the random number generator.      Used to initialize the random number generator.
68    *)    *)
69    method visit (network : mlpNN) =    method visit (network : mlpNN) =
       
     (** Initialize the random number generator. *)  
     Random.self_init();  
70    
71      (** Initialize everything *)      (**
72      initOutputActivation network;        First, define a bunch of functions which initializes the different
73      initInputSum network;        stuffs.
74      initError network;      *)
75      initGradients network;      let neuronsPerLayer = network#getNeuronsPerLayer in
76      initWeights network  
77        (**
78          Initializes the output activation.
79        *)
80        let initOutputActivation network =
81          let outputActivation = Array.make network#getLayerNb [||] in
82            for i = 0 to network#getLayerNb - 1 do
83              outputActivation.(i)
84              <- Array.make (neuronsPerLayer.(i)) 0.0
85            done;
86            network#setOutputActivation outputActivation
87        and  
88          
89          (**
90            Initializes the the input sum.
91          *)
92          initInputSum network =
93          let inputSum = Array.make network#getLayerNb [||] in
94            for i = 0 to network#getLayerNb - 1 do
95              inputSum.(i)
96              <- Array.make (neuronsPerLayer.(i)) 0.0
97            done;
98            network#setInputSum inputSum
99        and
100          
101          (**
102            Initializes the error.
103          *)
104          initError network =
105          let error = Array.make network#getLayerNb [||] in
106            for i = 0 to network#getLayerNb - 1 do
107              error.(i)
108              <- Array.make (neuronsPerLayer.(i)) 0.0
109            done;
110            network#setError error
111        and
112          
113          (**
114            Initializes the weights (using random numbers).
115          *)
116          initWeights network =
117          let weights = Array.make (network#getLayerNb - 1) [|[||]|] in
118            for i = 0 to network#getLayerNb - 2 do
119              weights.(i) <- Array.make (neuronsPerLayer.(i)) [||];
120              for j = 0 to (neuronsPerLayer.(i)) - 1 do
121                weights.(i).(j)
122                <- Array.make (neuronsPerLayer.(i + 1))
123                  (Random.float (Env.getEnv())#getRandLimit)
124              done;
125            done;
126            network#setWeights weights
127        and
128          
129          (**
130            Initializes the gradients.
131          *)
132          initGradients network =
133          let gradients = Array.make (network#getLayerNb - 1) [|[||]|] in
134            for i = 0 to network#getLayerNb - 2 do
135              gradients.(i) <- Array.make (neuronsPerLayer.(i)) [||];
136              for j = 0 to ((neuronsPerLayer.(i)) - 1) do
137                gradients.(i).(j)
138                <- Array.make (neuronsPerLayer.(i + 1)) 0.0
139              done
140            done;
141            network#setGradients gradients
142        in
143          
144          (** Initialize the random number generator. *)
145          Random.self_init();
146          
147          (** Initialize everything *)
148          initOutputActivation network;
149          initInputSum network;
150          initError network;
151          initGradients network;
152          initWeights network
153            
154  end  end

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26