/[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.5 by matthieu, Wed Sep 10 18:02:33 2003 UTC revision 1.6 by matthieu, Wed Sep 10 21:20:10 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    
53                
54  (**  (**
55    Initializes the output activation.    Initializes a Time Delay Neural Network.
 *)  
 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).  
56  *)  *)
 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  
               
57  class initTdnnVisitor =  class initTdnnVisitor =
58  object  object
59    inherit [tdNN] initVisitor    inherit [tdNN] initVisitor
60            
61      initializer
62        _moduleName <- "TDNN initialization"
63                        
64    (**    (**
65      The method which initializes the networks.      The method which initializes the network.
66      It uses the Random module to initialize the weights.      It uses the Random module to initialize the weights.
67      @see      @see
68      <http://caml.inria.fr/oreilly-book/html/book-ora076.html>      <http://caml.inria.fr/oreilly-book/html/book-ora076.html>
# Line 138  object Line 73  object
73    *)    *)
74    method visit (network : tdNN) =    method visit (network : tdNN) =
75            
76      (** Initialize the random number generator. *)      (**
77      Random.self_init();        First, define a bunch of functions which initializes the different
78          stuffs.
79      (** Initialize everything *)      *)
     initOutputActivation network;  
     initInputSum network;  
     initError network;  
     initGradients network;  
     initWeights network  
80    
81        let featuresNb = network#getFeaturesNb and
82          timeNb = network#getTimeNb in
83          
84        (**
85          Initializes the output activation.
86        *)
87        let initOutputActivation network =
88          let outputActivation =
89            Array.make network#getLayerNb [|[||]|] in
90            for i = 0 to network#getLayerNb - 1 do
91              outputActivation.(i) <- Array.make (featuresNb.(i)) [||];
92              for j = 0 to (featuresNb.(i)) - 1 do
93                outputActivation.(i).(j) <- Array.make (timeNb.(i)) 0.0
94              done
95            done;
96            network#setOutputActivation outputActivation
97        and
98          
99          (**
100            Initializes the the input sum.
101          *)
102          initInputSum (network : tdNN) =
103          let inputSum = Array.make network#getLayerNb [|[||]|] in
104            for i = 0 to network#getLayerNb - 1 do
105              inputSum.(i) <- Array.create (featuresNb.(i)) [||];
106              for j = 0 to (featuresNb.(i)) - 1 do
107                inputSum.(i).(j) <- Array.create (timeNb.(i)) 0.0
108              done
109            done;
110            network#setInputSum inputSum
111        and
112          
113          (**
114            Initializes the error.
115          *)
116          initError (network : tdNN) =
117          let error = Array.make network#getLayerNb [|[||]|] in
118            for i = 0 to network#getLayerNb - 1 do
119              error.(i) <- Array.make (featuresNb.(i)) [||];
120              for j = 0 to (featuresNb.(i)) - 1 do
121                error.(i).(j) <- Array.make (timeNb.(i)) 0.0
122              done
123            done;
124            network#setError error
125        and
126          
127          (**
128            Initializes the weights (using random numbers).
129          *)
130          initWeights (network : tdNN) =
131          let weights = Array.make (network#getLayerNb - 1) [|[|[||]|]|] in
132            for i = 0 to network#getLayerNb - 2 do
133              weights.(i) <- Array.make (featuresNb.(i)) [|[||]|];
134              for j = 0 to (featuresNb.(i)) - 1 do
135                weights.(i).(j)
136                <- Array.make (featuresNb.(i + 1)) [||];
137                for k = 0 to (featuresNb.(i + 1)) - 1 do
138                  weights.(i).(j).(k)
139                  <- Array.make (timeNb.(i))
140                    (Random.float (Env.getEnv())#getRandLimit)
141                done
142              done
143            done;
144            network#setWeights weights
145        and
146          
147          (**
148        Initializes the gradients.
149          *)
150          initGradients (network : tdNN) =
151          let gradients = Array.make (network#getLayerNb - 1) [|[|[||]|]|] in
152            for i = 0 to network#getLayerNb - 2 do
153              gradients.(i) <- Array.make (featuresNb.(i)) [|[||]|];
154              for j = 0 to (featuresNb.(i)) - 1 do
155                gradients.(i).(j)
156                <- Array.make (featuresNb.(i + 1)) [||];
157                for k = 0 to (featuresNb.(i + 1)) - 1 do
158                  gradients.(i).(j).(k)
159                  <- Array.make (timeNb.(i))
160                    (Random.float (Env.getEnv())#getRandLimit)
161                done
162              done
163            done;
164            network#setGradients gradients
165        in
166          
167          (** Initialize the random number generator. *)
168          Random.self_init();
169          
170          (** Initialize everything *)
171          initOutputActivation network;
172          initInputSum network;
173          initError network;
174          initGradients network;
175          initWeights network
176            
177  end  end

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

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