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

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

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