Example #1
0
 def load_trained_network(self,sample):
     network_edition = self.parent.network_edition.get()
     network_name = self.network_version.get()
     network_root_path = self.root_path
     network_features = self.features
     self.network = net.NNClassifier(network_edition,netco.LOAD,network_name,network_root_path,network_features)
     window_settings = self.parent.model.get().split('_')
     del window_settings[0]
     self.network.inference(sample,window_settings)
Example #2
0
        def callback():
            self.controller_path = os.path.join(self.controllers_root_path,self.controller.get())
            self.model_path = os.path.join(self.trend_root_path,self.model_trend.get())

            networks = []
            for file in os.listdir(self.model_path):
                if os.path.isdir(os.path.join(self.model_path,file)):
                    networks.append(file)
            self.trend_network['values'] = sorted(networks)
            self.trend_classifier_path = os.path.join(self.model_path,self.trend_network.get())
            self.trend_classifier = net.NNClassifier(netco.TREND,netco.LOAD,self.trend_network.get(),self.model_path,netco.TREND_FEATURES)
            for cycle in range(netco.CYCLES_OUTPUTS):
                cycle_path = os.path.join(self.controller_path,netco.CYCLE+"_"+str(cycle))
                network_ice = net.NNRegressor(netco.ENGINE,netco.LOAD,netco.NN_ENG+'_1',cycle_path,netco.ENG_FEATURES)
                network_ice.layers_import(network_ice.version_path+"/network_structure.json")
                self.networks_ice.append(network_ice)

                network_emot = net.NNRegressor(netco.MOTOR,netco.LOAD,netco.NN_EMOT+'_1',cycle_path,netco.EMOT_FEATURES)
                network_emot.layers_import(network_emot.version_path+"/network_structure.json")
                self.networks_emot.append(network_emot)
Example #3
0
    def create_network(self):
        layers = int(self.layers.get())
        if self.parent.network_edition.get() == netco.TREND: 
            network_name = netco.NN_TREND
            features = netco.TREND_FEATURES

        if self.parent.network_edition.get() == netco.CYCLES: 
            network_name = netco.NN_CYCLES
            features = netco.CYCLES_FEATURES
        
        root_path = os.path.join(os.getcwd(),netco.CLASSIFIERS,self.parent.network_edition.get(),self.parent.model.get())

        self.network = net.NNClassifier(self.parent.network_edition.get(),netco.CREATE,network_name,root_path,features)

        structure_data = []
        for i in range(layers):
            structure_data.append([self.outValues[i].get(),self.inValues[i].get(),self.activationValues[i].get()])
        self.structure = np.array(structure_data)
        self.parent.structure = self.structure
        if not os.path.exists(self.network.version_path):
            os.makedirs(self.network.version_path)
        with open(self.network.version_path+"/info.txt","w") as file:
            file.write(30*"-"+"\n")
            file.write("Network Structure Information\n")
            file.write("Layer Format: [IN,OUT]\n")
            file.write(30*"#"+"\n")
            for layer_counter,layer in enumerate(self.structure,start=0):
                if layer_counter == 0:
                    file.write("First: ["+str(layer_counter)+"]: ")
                    file.write("["+str(layer[0])+", "+str(layer[1])+", "+layer[2]+"]\n")
                elif layer_counter == len(self.structure)-1:
                    file.write("Last:  ["+str(layer_counter)+"]: ")
                    file.write("["+str(layer[0])+", "+str(layer[1])+", "+layer[2]+"]\n")
                else:
                    file.write("Hidden ["+str(layer_counter)+"]: ")
                    file.write("["+str(layer[0])+", "+str(layer[1])+", "+layer[2]+"]\n")
                layer_counter+=1
            file.write(30*"-"+"\n")
        b = self.structure.tolist() # nested lists with same data, indices
        file_path = self.network.version_path+"/network_structure.json"
        json.dump({"network_structure":b}, codecs.open(file_path, 'w', encoding='utf-8'),indent=4)
Example #4
0
    def __init__(self,parent):
        tk.Toplevel.__init__(self)
        self.parent = parent
        self.settingsGUI("Training Setup")
        
        _label = tk.Label(self,text="Training Parameters",bg=self['bg'],fg = self.parent.parent.theme.bg)
        _label.grid(row=0,column=0,sticky="nsew")

        x_list_place_ice=151
        self.controllers_root_path = os.path.join(os.getcwd(),netco.CONTROLLERS)
        controller_l = tk.Label(self,text="Controller:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        controller_l.place(x=1,y=20)
        self.controller = ttk.Combobox(self,state="readonly",postcommand = self.callback_control)
        if not os.path.exists(self.controllers_root_path):
            self.controller['values'] = list([""])
        else:
            self.controller['values'] = list(os.listdir(self.controllers_root_path))
        self.controller.current(0)
        self.controller.place(x=x_list_place_ice,y=20)

        self.trend_root_path = os.path.join(os.getcwd(),netco.CLASSIFIERS,netco.TREND)
        model_trend_l = tk.Label(self,text="Trend Model:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        model_trend_l.place(x=1,y=40)
        self.model_trend = ttk.Combobox(self,state="readonly",postcommand = self.callback_trend)
        if not os.path.exists(self.trend_root_path):
            self.model_trend['values'] = list([""])
        else:
            self.model_trend['values'] = list(os.listdir(self.trend_root_path))
        self.model_trend.current(0)
        self.model_trend.place(x=x_list_place_ice,y=40)

        self.controller_path = os.path.join(self.controllers_root_path,self.controller.get())
        self.model_path = os.path.join(self.trend_root_path,self.model_trend.get())

        networks = []
        for file in os.listdir(self.model_path):
            if os.path.isdir(os.path.join(self.model_path,file)):
                networks.append(file)
        trend_network_l = tk.Label(self,text="Trend Network:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        trend_network_l.place(x=1,y=60)
        self.trend_network = ttk.Combobox(self,state="readonly")
        self.trend_network['values'] = sorted(networks)
        self.trend_network.current(0)
        self.trend_network.place(x=x_list_place_ice,y=60)

        self.networks_ice = []
        self.networks_emot = []
        self.trend_classifier = net.NNClassifier(netco.TREND,netco.LOAD,self.trend_network.get(),self.model_path,netco.TREND_FEATURES)
        self.trend_classifier_path = os.path.join(self.model_path,self.trend_network.get())
        for cycle in range(netco.CYCLES_OUTPUTS):
            cycle_path = os.path.join(self.controller_path,netco.CYCLE+"_"+str(cycle))
            network_ice = net.NNRegressor(netco.ENGINE,netco.LOAD,netco.NN_ENG+'_1',cycle_path,netco.ENG_FEATURES)
            network_ice.layers_import(network_ice.version_path+"/network_structure.json")
            self.networks_ice.append(network_ice)

            network_emot = net.NNRegressor(netco.MOTOR,netco.LOAD,netco.NN_EMOT+'_1',cycle_path,netco.EMOT_FEATURES)
            network_emot.layers_import(network_emot.version_path+"/network_structure.json")
            self.networks_emot.append(network_emot)

        def callback():
            self.controller_path = os.path.join(self.controllers_root_path,self.controller.get())
            self.model_path = os.path.join(self.trend_root_path,self.model_trend.get())

            networks = []
            for file in os.listdir(self.model_path):
                if os.path.isdir(os.path.join(self.model_path,file)):
                    networks.append(file)
            self.trend_network['values'] = sorted(networks)
            self.trend_classifier_path = os.path.join(self.model_path,self.trend_network.get())
            self.trend_classifier = net.NNClassifier(netco.TREND,netco.LOAD,self.trend_network.get(),self.model_path,netco.TREND_FEATURES)
            for cycle in range(netco.CYCLES_OUTPUTS):
                cycle_path = os.path.join(self.controller_path,netco.CYCLE+"_"+str(cycle))
                network_ice = net.NNRegressor(netco.ENGINE,netco.LOAD,netco.NN_ENG+'_1',cycle_path,netco.ENG_FEATURES)
                network_ice.layers_import(network_ice.version_path+"/network_structure.json")
                self.networks_ice.append(network_ice)

                network_emot = net.NNRegressor(netco.MOTOR,netco.LOAD,netco.NN_EMOT+'_1',cycle_path,netco.EMOT_FEATURES)
                network_emot.layers_import(network_emot.version_path+"/network_structure.json")
                self.networks_emot.append(network_emot)

        self.controller.bind("<<ComboboxSelected>>", lambda _ : callback())
        self.model_trend.bind("<<ComboboxSelected>>", lambda _ : callback())
        self.trend_network.bind("<<ComboboxSelected>>", lambda _ : callback())

        epochs_l = tk.Label(self,text="Epochs:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        epochs_l.place(x=1,y=80)
        epochs = ttk.Combobox(self,state="readonly")
        epochs['values'] = (1,5,10,20,50,80,100,200,500,1000,2000)
        epochs.current(0)
        epochs.place(x=x_list_place_ice,y=80)

        learning_rate_l = tk.Label(self,text="Learning Rate:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        learning_rate_l.place(x=1,y=100)
        learning_rate = ttk.Combobox(self,state="readonly")
        learning_rate['values'] = (0.0001,0.001,0.01,0.1,1,10)
        learning_rate.current(0)
        learning_rate.place(x=x_list_place_ice,y=100)    

        mini_batch_l = tk.Label(self,text="Minibatch Size:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        mini_batch_l.place(x=1,y=120)
        mini_batch = ttk.Combobox(self,state="readonly")
        mini_batch['values'] = (8,16,32,64,128,256)
        mini_batch.current(2)
        mini_batch.place(x=x_list_place_ice,y=120)

        shuffle_l = tk.Label(self,text="Shuffle Data:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        shuffle_l.place(x=1,y=140)
        shuffle = ttk.Combobox(self,state="readonly")
        shuffle['values'] = (True,False)
        shuffle.current(0)
        shuffle.place(x=x_list_place_ice,y=140)

        test_size_l = tk.Label(self,text="Train/Test Split %:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        test_size_l.place(x=1,y=160)
        test_size = ttk.Combobox(self,state="readonly")
        test_size['values'] = (0.3,0.25,0.2,0.15,0.1)
        test_size.current(0)
        test_size.place(x=x_list_place_ice,y=160)
        
        train_button = tk.Button(self,text="Train",command=lambda:self.training(int(epochs.get()),float(learning_rate.get()),int(mini_batch.get()),shuffle.get(),float(test_size.get())))
        train_button['bg'] = self.parent.parent.theme.bg
        train_button['fg'] = self.parent.parent.theme.fg
        train_button.place(x=x_list_place_ice,y=180)
        '''
        x_offset = 400
        network_l_emot = tk.Label(self,text="Motor Network:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        network_l_emot.place(x=1+x_offset,y=40)

        x_list_place_emot = x_list_place_ice + x_offset
        
        self.network_version_emot = ttk.Combobox(self,state="readonly")
        self.network_version_emot['values'] = sorted(networks_emot)      
        self.network_version_emot.current(0)
        self.network_version_emot.place(x=x_list_place_emot,y=40)
        self.network_emot = net.Network(netco.MOTOR,netco.LOAD,self.network_version_emot.get(),self.root_path_emot,netco.EMOT_FEATURES)
        self.network_emot.layers_import(self.network_emot.version_path+"/network_structure.json")

        def callback_emot():
            self.network_emot = net.Network(netco.MOTOR,netco.LOAD,self.network_version_emot.get(),self.root_path_emot,netco.EMOT_FEATURES)
            self.network_emot.layers_import(self.network_emot.version_path+"/network_structure.json")

        epochs_l_emot = tk.Label(self,text="Epochs:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        epochs_l_emot.place(x=1+x_offset,y=60)
        epochs_emot = ttk.Combobox(self,state="readonly")
        epochs_emot['values'] = (1,5,10,20,50,80,100,200,500,1000,2000)
        epochs_emot.current(0)
        epochs_emot.place(x=x_list_place_emot,y=60)

        learning_rate_l_emot = tk.Label(self,text="Learning Rate:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        learning_rate_l_emot.place(x=1+x_offset,y=80)
        learning_rate_emot = ttk.Combobox(self,state="readonly")
        learning_rate_emot['values'] = (0.0001,0.001,0.01,0.1,1,10)
        learning_rate_emot.current(0)
        learning_rate_emot.place(x=x_list_place_emot,y=80)    

        mini_batch_l_emot = tk.Label(self,text="Minibatch Size:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        mini_batch_l_emot.place(x=1+x_offset,y=100)
        mini_batch_emot = ttk.Combobox(self,state="readonly")
        mini_batch_emot['values'] = (8,16,32,64,128,256)
        mini_batch_emot.current(2)
        mini_batch_emot.place(x=x_list_place_emot,y=100)

        shuffle_l_emot = tk.Label(self,text="Shuffle Data:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        shuffle_l_emot.place(x=1+x_offset,y=120)
        shuffle_emot = ttk.Combobox(self,state="readonly")
        shuffle_emot['values'] = (True,False)
        shuffle_emot.current(0)
        shuffle_emot.place(x=x_list_place_emot,y=120)

        test_size_l_emot = tk.Label(self,text="Train/Test Split %:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        test_size_l_emot.place(x=1+x_offset,y=140)
        test_size_emot = ttk.Combobox(self,state="readonly")
        test_size_emot['values'] = (0.3,0.25,0.2,0.15,0.1)
        test_size_emot.current(0)
        test_size_emot.place(x=x_list_place_emot,y=140)
        

        train_button_emot = tk.Button(self,text="Train",command=lambda:self.network_emot.train(int(epochs_emot.get()),float(learning_rate_emot.get()),int(mini_batch_emot.get()),shuffle_emot.get(),float(test_size_emot.get())))
        train_button_emot['bg'] = self.parent.parent.theme.bg
        train_button_emot['fg'] = self.parent.parent.theme.fg
        train_button_emot.place(x=x_list_place_emot,y=180)
        '''
        self.mainloop()
Example #5
0
 def callback():
     self.network = net.NNClassifier(self.parent.network_edition.get(),netco.LOAD,self.network_version.get(),self.root_path,features)
     self.network.layers_import(self.network.version_path+"/network_structure.json")
Example #6
0
    def __init__(self,parent):
        tk.Toplevel.__init__(self)
        self.parent = parent
        self.settingsGUI("Training Setup")
        self.root_path = os.path.join(os.getcwd(),netco.CLASSIFIERS,self.parent.network_edition.get(),self.parent.model.get())

        _label = tk.Label(self,text="Training Parameters",bg=self['bg'],fg = self.parent.parent.theme.bg)
        _label.grid(row=0,column=0,sticky="nsew")

        network_l = tk.Label(self,text="Network:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        network_l.place(x=1,y=40)

        if self.parent.network_edition.get() == netco.CYCLES: features = netco.CYCLES_FEATURES
        if self.parent.network_edition.get() == netco.TREND: features = netco.TREND_FEATURES
        
        networks = []
        for file in os.listdir(self.root_path):
            if os.path.isdir(os.path.join(self.root_path,file)):
                networks.append(file)

        x_list_place = 151
        self.network_version = ttk.Combobox(self,state="readonly",postcommand = self.callback_network)
        self.network_version['values'] = sorted(networks)      
        self.network_version.current(0)
        self.network_version.place(x=x_list_place,y=40)
        self.network = net.NNClassifier(self.parent.network_edition.get(),netco.LOAD,self.network_version.get(),self.root_path,features)
        self.network.layers_import(self.network.version_path+"/network_structure.json")

        def callback():
            self.network = net.NNClassifier(self.parent.network_edition.get(),netco.LOAD,self.network_version.get(),self.root_path,features)
            self.network.layers_import(self.network.version_path+"/network_structure.json")

        self.network_version.bind("<<ComboboxSelected>>", lambda _ : callback())

        epochs_l = tk.Label(self,text="Epochs:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        epochs_l.place(x=1,y=60)
        epochs = ttk.Combobox(self,state="readonly")
        epochs['values'] = (1,10,100,150,200,500,1000,2000)
        epochs.current(0)
        epochs.place(x=x_list_place,y=60)

        learning_rate_l = tk.Label(self,text="Learning Rate:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        learning_rate_l.place(x=1,y=80)
        learning_rate = ttk.Combobox(self,state="readonly")
        learning_rate['values'] = (0.0001,0.001,0.01,0.1,1,10)
        learning_rate.current(0)
        learning_rate.place(x=x_list_place,y=80)    

        mini_batch_l = tk.Label(self,text="Minibatch Size:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        mini_batch_l.place(x=1,y=100)
        mini_batch = ttk.Combobox(self,state="readonly")
        mini_batch['values'] = (8,16,32,64,128,256)
        mini_batch.current(2)
        mini_batch.place(x=x_list_place,y=100)

        shuffle_l = tk.Label(self,text="Shuffle Data:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        shuffle_l.place(x=1,y=120)
        shuffle = ttk.Combobox(self,state="readonly")
        shuffle['values'] = (True,False)
        shuffle.current(0)
        shuffle.place(x=x_list_place,y=120)

        test_size_l = tk.Label(self,text="Train/Test Split %:",bg=self['bg'],fg = self.parent.parent.theme.bg)
        test_size_l.place(x=1,y=140)
        test_size = ttk.Combobox(self,state="readonly")
        test_size['values'] = (0.3,0.25,0.2,0.15,0.1)
        test_size.current(0)
        test_size.place(x=x_list_place,y=140)

        train_button = tk.Button(self,text="Train",command=lambda:self.training(int(epochs.get()),float(learning_rate.get()),int(mini_batch.get()),shuffle.get(),float(test_size.get())),height = 2, width = 20)
        train_button['bg'] = self.parent.parent.theme.bg
        train_button['fg'] = self.parent.parent.theme.fg
        train_button.place(x=x_list_place,y=180)
        self.bind('<Return>', lambda event:self.training(int(epochs.get()),float(learning_rate.get()),int(mini_batch.get()),shuffle.get(),float(test_size.get())))
        
        self.mainloop()