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

Diff of /marvin/src/libnn/init/initTdnnVisitor.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 49  open Nn Line 49  open Nn
49  open InitVisitor  open InitVisitor
50  open DefaultVisitor  open DefaultVisitor
51  open TdNN  open TdNN
   
52    
 (**  
   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#getFeaturesNb i) [||];  
       for j = 0 to (network#getFeaturesNb i) - 1 do  
         outputActivation.(i).(j) <- Array.make (network#getTimeNb i) 0.0  
       done  
     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#getFeaturesNb i) [||];  
       for j = 0 to (network#getFeaturesNb i) - 1 do  
         inputSum.(i).(j) <- Array.create (network#getTimeNb i) 0.0  
       done  
     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#getFeaturesNb i) [||];  
       for j = 0 to (network#getFeaturesNb i) - 1 do  
         error.(i).(j) <- Array.make (network#getTimeNb i) 0.0  
       done  
     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#getFeaturesNb i) [|[||]|];  
       for j = 0 to (network#getFeaturesNb i) - 1 do  
         weights.(i).(j) <- Array.make (network#getFeaturesNb (i + 1)) [||];  
         for k = 0 to (network#getFeaturesNb (i + 1)) - 1 do  
           weights.(i).(j).(k) <- Array.make (network#getTimeNb i) (Random.float (Env.getEnv())#getRandLimit)  
         done  
       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.make (network#getFeaturesNb i) [|[||]|];  
       for j = 0 to (network#getFeaturesNb i) - 1 do  
         gradients.(i).(j) <- Array.make (network#getFeaturesNb (i + 1)) [||];  
         for k = 0 to (network#getFeaturesNb (i + 1)) - 1 do  
           gradients.(i).(j).(k) <- Array.make (network#getTimeNb i) (Random.float (Env.getEnv())#getRandLimit)  
         done  
       done  
     done;  
     network#setGradients gradients  
53                            
54  (**  (**
55    Initializes a Time Delay Neural Network.    Initializes a Time Delay Neural Network.
# Line 141  object Line 70  object
70    *)    *)
71    method visit (network : tdNN) =    method visit (network : tdNN) =
72            
73      (** Initialize the random number generator. *)      (**
74      Random.self_init();        First, define a bunch of functions which initializes the different
75          stuffs.
76      (** Initialize everything *)      *)
     initOutputActivation network;  
     initInputSum network;  
     initError network;  
     initGradients network;  
     initWeights network  
77    
78        let featuresNb = network#getFeaturesNb and
79          timeNb = network#getTimeNb in
80          
81        (**
82          Initializes the output activation.
83        *)
84        let initOutputActivation network =
85          let outputActivation =
86            Array.make network#getLayerNb [|[||]|] in
87            for i = 0 to network#getLayerNb - 1 do
88              outputActivation.(i) <- Array.make (featuresNb.(i)) [||];
89              for j = 0 to (featuresNb.(i)) - 1 do
90                outputActivation.(i).(j) <- Array.make (timeNb.(i)) 0.0
91              done
92            done;
93            network#setOutputActivation outputActivation
94        and
95          
96          (**
97            Initializes the the input sum.
98          *)
99          initInputSum (network : tdNN) =
100          let inputSum = Array.make network#getLayerNb [|[||]|] in
101            for i = 0 to network#getLayerNb - 1 do
102              inputSum.(i) <- Array.create (featuresNb.(i)) [||];
103              for j = 0 to (featuresNb.(i)) - 1 do
104                inputSum.(i).(j) <- Array.create (timeNb.(i)) 0.0
105              done
106            done;
107            network#setInputSum inputSum
108        and
109          
110          (**
111            Initializes the error.
112          *)
113          initError (network : tdNN) =
114          let error = Array.make network#getLayerNb [|[||]|] in
115            for i = 0 to network#getLayerNb - 1 do
116              error.(i) <- Array.make (featuresNb.(i)) [||];
117              for j = 0 to (featuresNb.(i)) - 1 do
118                error.(i).(j) <- Array.make (timeNb.(i)) 0.0
119              done
120            done;
121            network#setError error
122        and
123          
124          (**
125            Initializes the weights (using random numbers).
126          *)
127          initWeights (network : tdNN) =
128          let weights = Array.make (network#getLayerNb - 1) [|[|[||]|]|] in
129            for i = 0 to network#getLayerNb - 2 do
130              weights.(i) <- Array.make (featuresNb.(i)) [|[||]|];
131              for j = 0 to (featuresNb.(i)) - 1 do
132                weights.(i).(j)
133                <- Array.make (featuresNb.(i + 1)) [||];
134                for k = 0 to (featuresNb.(i + 1)) - 1 do
135                  weights.(i).(j).(k)
136                  <- Array.make (timeNb.(i))
137                    (Random.float (Env.getEnv())#getRandLimit)
138                done
139              done
140            done;
141            network#setWeights weights
142        and
143          
144          (**
145        Initializes the gradients.
146          *)
147          initGradients (network : tdNN) =
148          let gradients = Array.make (network#getLayerNb - 1) [|[|[||]|]|] in
149            for i = 0 to network#getLayerNb - 2 do
150              gradients.(i) <- Array.make (featuresNb.(i)) [|[||]|];
151              for j = 0 to (featuresNb.(i)) - 1 do
152                gradients.(i).(j)
153                <- Array.make (featuresNb.(i + 1)) [||];
154                for k = 0 to (featuresNb.(i + 1)) - 1 do
155                  gradients.(i).(j).(k)
156                  <- Array.make (timeNb.(i))
157                    (Random.float (Env.getEnv())#getRandLimit)
158                done
159              done
160            done;
161            network#setGradients gradients
162        in
163          
164          (** Initialize the random number generator. *)
165          Random.self_init();
166          
167          (** Initialize everything *)
168          initOutputActivation network;
169          initInputSum network;
170          initError network;
171          initGradients network;
172          initWeights network
173            
174  end  end
175      

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