aboutsummaryrefslogblamecommitdiff
path: root/nerv/nn/network.lua
blob: 35e11e3190e40f359f09c804c0ea34f50d91daed (plain) (tree)
1
2
3
4
5
6
7

                                          

                                                      


                                       










                                                     
                    

                         
                                            
















                                                        
                              




                                                  







                                                      
                                        
                               

                                 

                                               
                                         


                                          







                                                                          





                                                       

                                                        
                   


                                                                       



                                                                          


                                                             

                                                           



                                                                                                   
                       

                                                                     





                   








                                             



                                                   


                          
                                      













                                                       
                                                         

























                                                                             
                                                     
















                                                                         
                                        











































































































































                                                                                 
                                 
                                 










                                                                 
                                 










                                                                 
                                 





















                                                                      














                                                                                                      




                                 
                                 








                                                         

           
 
                  



                                                       


                                                                                          



                                                                             


               














                                                                    




               
                            




                                                                               
                                  









                                                                          
                                 


                                                           
                                    

                                               

                                                            



                                                                                                                                   





                                                                         



           
                         





                                                                                                   
   











                                        
local network = nerv.class('nerv.Network')

function network:__init(id, global_conf, network_conf)
    self.id = id
    self.network = network_conf.network
    self.dim_in = self.network.dim_in
    self.dim_out = self.network.dim_out
    self.gconf = global_conf
    if self.gconf.use_cpu then
        self.mat_type = self.gconf.mmat_type
    else
        self.mat_type = self.gconf.cumat_type
    end
    self.clip = network_conf.clip
    self.nn_act_default = network_conf.nn_act_default
    if self.nn_act_default == nil then
        self.nn_act_default = 0
    end
    self.layers = {}
    self.input_conn = {}
    self.output_conn = {}
    self.socket = self:compile(self.network)
    for i = 1, #self.dim_in do
        local edge = self.socket.inputs[i]
        local id, port, time = edge[1], edge[2], edge[3]
        if self.input_conn[id][port] ~= nil then
            nerv.error('duplicate edge')
        end
        self.input_conn[id][port] = {0, i, time}
    end
    for i = 1, #self.dim_out do
        local edge = self.socket.outputs[i]
        local id, port, time = edge[1], edge[2], edge[3]
        if self.output_conn[id][port] ~= nil then
            nerv.error('duplic