def main(): print("drawing function") data = dp('/home/shaowu/code/neural_network/dataset/2Ccircle1.txt') data.open_file() p = paper() p.draw_2d_point(data.get_data(),data.get_class_middle()) p.draw_2d_area(data.get_data()) p.draw() mc = MainClass(p.canvas) mc.window.connect("delete-event", Gtk.main_quit) mc.window.show_all() Gtk.main()
def __init__(self): self.nnetwork = None self.dimension = 2 self.train_mode = True #self.data = [] self.weights = [] self.class_table = {} self.find_best = False # self.class_num self.dataset = dp() self.training_set = [] self.testing_set = [] self.traning_trainsformed_data = [] self.testing_trainsformed_data = [] # log info self.nninfo = info() self.rbfn = None # wait for ui setup Gtk.Window.__init__(self, title="Neural Network") self.set_default_size(800, 700) # self.connect("key-press-event", self.on_window_key_press_event) action_group = Gtk.ActionGroup("my_actions") # menu item self.add_file_menu_actions(action_group) self.add_about_menu_actions(action_group) # create ui manager uimanager = self.create_ui_manager() uimanager.insert_action_group(action_group) menubar = uimanager.get_widget("/MenuBar") main_ui = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.add(main_ui) main_ui.pack_start(menubar, False, False, 0) toolbar = uimanager.get_widget("/ToolBar") main_ui.pack_start(toolbar, False, False, 0) # body pannel settings body_panel = Gtk.Table(2, 4, True) main_ui.pack_start(body_panel, True, True, 0) # for # Settings/*********************************************************/ settings_panel = Gtk.Box( orientation=Gtk.Orientation.VERTICAL, spacing=10) body_panel.attach(settings_panel, 0, 1, 0, 2, xpadding=8, ypadding=8) settings_lab = Gtk.Label("Settings", xalign=0) settings_panel.pack_start(settings_lab, False, False, 0) # data settings # *******************************************************/ data_settings_lab = Gtk.Label("Data Settings", xalign=0) settings_panel.pack_start(data_settings_lab, False, False, 0) # traning_testing_rate_group traning_testing_rate_group = Gtk.Table(1, 2, True) settings_panel.pack_start(traning_testing_rate_group, False, False, 0) traning_testing_rate_lab = Gtk.Label( "Traning & Tesgting\ndata rate(%):", xalign=0) traning_testing_rate_group.attach(traning_testing_rate_lab, 0, 1, 0, 1) traning_testing_rate_adj = Gtk.Adjustment(60, 0, 100, 5, 0, 0) self.traning_testing_rate_sb = Gtk.SpinButton() self.traning_testing_rate_sb.set_alignment(xalign=1) self.traning_testing_rate_sb.set_adjustment(traning_testing_rate_adj) traning_testing_rate_group.attach( self.traning_testing_rate_sb, 1, 2, 0, 1) self.traning_testing_rate_sb.set_value(66) # action buttom data_action_group = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) settings_panel.pack_start(data_action_group, False, False, 0) generate_button = Gtk.Button(label="generate") generate_button.connect("clicked", self.on_clicked_generate) data_action_group.pack_start(generate_button, False, False, 0) # test_button = Gtk.Button(label = "Test") # test_button.connect("clicked", self.on_clicked_test) # data_action_group.pack_start(test_button, False, False, 0) # network settings***************************************************** nn_settings_lab = Gtk.Label("Network Settings", xalign=0) settings_panel.pack_start(nn_settings_lab, False, False, 0) # Cross over crossover_rate_group = Gtk.Table(1, 2, True) settings_panel.pack_start(crossover_rate_group, False, False, 0) crossover_rate_lab = Gtk.Label("crossover rate(0.01):", xalign=0) crossover_rate_group.attach(crossover_rate_lab, 0, 1, 0, 1) crossover_rate_adj = Gtk.Adjustment(60, 0, 100, 1, 10, 0) self.crossover_rate_sb = Gtk.SpinButton() self.crossover_rate_sb.set_alignment(xalign=1) self.crossover_rate_sb.set_adjustment(crossover_rate_adj) crossover_rate_group.attach(self.crossover_rate_sb, 1, 2, 0, 1) self.crossover_rate_sb.set_value(60) # mutation rate mutation_rate_group = Gtk.Table(1, 2, True) settings_panel.pack_start(mutation_rate_group, False, False, 0) mutation_rate_lab = Gtk.Label("mutation rate(0.01):", xalign=0) mutation_rate_group.attach(mutation_rate_lab, 0, 1, 0, 1) mutation_rate_adj = Gtk.Adjustment(5, 0, 100, 1, 10, 0) self.mutation_rate_sb = Gtk.SpinButton() self.mutation_rate_sb.set_alignment(xalign=1) self.mutation_rate_sb.set_adjustment(mutation_rate_adj) mutation_rate_group.attach(self.mutation_rate_sb, 1, 2, 0, 1) self.mutation_rate_sb.set_value(5) population_rate_group = Gtk.Table(1, 2, True) settings_panel.pack_start(population_rate_group, False, False, 0) population_rate_lab = Gtk.Label("population:", xalign=0) population_rate_group.attach(population_rate_lab, 0, 1, 0, 1) population_rate_adj = Gtk.Adjustment(10, 0, 1000, 1, 50, 0) self.population_rate_sb = Gtk.SpinButton() self.population_rate_sb.set_alignment(xalign=1) self.population_rate_sb.set_adjustment(population_rate_adj) population_rate_group.attach(self.population_rate_sb, 1, 2, 0, 1) self.population_rate_sb.set_value(50) layer_size_rate_group = Gtk.Table(1, 2, True) settings_panel.pack_start(layer_size_rate_group, False, False, 0) layer_size_rate_lab = Gtk.Label("layer_size rate(0.1):", xalign=0) layer_size_rate_group.attach(layer_size_rate_lab, 0, 1, 0, 1) layer_size_rate_adj = Gtk.Adjustment(15, 0, 100, 1, 1, 0) self.layer_size_rate_sb = Gtk.SpinButton() self.layer_size_rate_sb.set_alignment(xalign=1) self.layer_size_rate_sb.set_adjustment(layer_size_rate_adj) layer_size_rate_group.attach(self.layer_size_rate_sb, 1, 2, 0, 1) self.layer_size_rate_sb.set_value(3) # traning times training_times_group = Gtk.Table(1, 2, True) settings_panel.pack_start(training_times_group, False, False, 0) training_times_lab = Gtk.Label("Traning times:", xalign=0) training_times_group.attach(training_times_lab, 0, 1, 0, 1) training_times_adj = Gtk.Adjustment(50, 0, 10000, 20, 0, 0) self.training_times_sb = Gtk.SpinButton() self.training_times_sb.set_alignment(xalign=1) self.training_times_sb.set_adjustment(training_times_adj) training_times_group.attach(self.training_times_sb, 1, 2, 0, 1) self.training_times_sb.set_value(50) # training_err_rate_group # training_err_rate_group = Gtk.Table(1, 2, True) # settings_panel.pack_start(training_err_rate_group, False, False, 0) # training_err_rate_lab = Gtk.Label("Traning error rate(%):", xalign=0) # training_err_rate_group.attach(training_err_rate_lab, 0, 1, 0, 1) # training_err_rate_adj = Gtk.Adjustment(10, 0, 100, 5, 0, 0) # self.training_err_rate_sb = Gtk.SpinButton() # self.training_err_rate_sb.set_alignment(xalign=1) # self.training_err_rate_sb.set_adjustment(training_err_rate_adj) # training_err_rate_group.attach(self.training_err_rate_sb, 1, 2, 0, 1) # self.training_err_rate_sb.set_value(5) # mlp structure # mlp_structure_group = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) # settings_panel.pack_start(mlp_structure_group, False, False, 0) # mlp_structure_lab = Gtk.Label( # "Specify mlp structure(3,5,1...)", xalign=0) # mlp_structure_group.pack_start(mlp_structure_lab, True, True, 0) # self.mlp_structure_ety = Gtk.Entry() # self.mlp_structure_ety.set_alignment(xalign=1) # self.mlp_structure_ety.set_text("2,1") # mlp_structure_group.pack_start(self.mlp_structure_ety, True, True, 0) # action buttom action_group = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) settings_panel.pack_start(action_group, False, False, 0) new_button = Gtk.Button(label="New") new_button.connect("clicked", self.on_clicked_new) action_group.pack_start(new_button, False, False, 0) tarin_button = Gtk.Button(label="Train") tarin_button.connect("clicked", self.on_clicked_train) action_group.pack_start(tarin_button, False, False, 0) test_button = Gtk.Button(label="Test") test_button.connect("clicked", self.on_clicked_test) action_group.pack_start(test_button, False, False, 0) drive_button = Gtk.Button(label="Drive") drive_button.connect("clicked", self.on_clicked_drive) action_group.pack_start(drive_button, False, False, 0) # draw_button = Gtk.Button(label = "Draw") # draw_button.connect("clicked", self.on_clicked_draw) # action_group.pack_start(draw_button, False, False, 0) # /*******************************************************************/ # info*****************************************************************/ info_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) body_panel.attach(info_panel, 1, 2, 0, 2) info_lab = Gtk.Label("Information", xalign=0) info_panel.pack_start(info_lab, False, False, 0) # data info dataset_info_lab = Gtk.Label("#Data Info", xalign=0) info_panel.pack_start(dataset_info_lab, False, False, 0) dataset_info_group = Gtk.Table(1, 2, False) info_panel.pack_start(dataset_info_group, False, False, 0) self.dataset_info_title_lab = Gtk.Label( "FileName:\nData set size:\nDimension:\nClassification number:", xalign=0, yalign=0) dataset_info_group.attach(self.dataset_info_title_lab, 0, 1, 0, 1) self.dataset_info_msg_lab = Gtk.Label("", xalign=0, yalign=0) dataset_info_group.attach(self.dataset_info_msg_lab, 1, 2, 0, 1) # taning log traning_log_lab = Gtk.Label("#Traning Log", xalign=0) info_panel.pack_start(traning_log_lab, False, False, 0) traning_log_group = Gtk.Table(1, 2, False) info_panel.pack_start(traning_log_group, False, False, 0) self.traning_log_title_lab = Gtk.Label( "MSE:", xalign=0, yalign=0) traning_log_group.attach(self.traning_log_title_lab, 0, 1, 0, 1) self.traning_log_msg_lab = Gtk.Label("0", xalign=0, yalign=0) traning_log_group.attach(self.traning_log_msg_lab, 1, 2, 0, 1) # testing log # testing_log_lab = Gtk.Label("#Testing Log", xalign=0, yalign=0) # info_panel.pack_start(testing_log_lab, False, False, 0) # testing_log_group = Gtk.Table(1, 2, False) # info_panel.pack_start(testing_log_group, False, False, 0) # self.testing_title_log_lab = Gtk.Label( # "Accuracy rate:\nTesting set size:", xalign=0, yalign=0) # testing_log_group.attach(self.testing_title_log_lab, 0, 1, 0, 1) # self.testing_log_msg_lab = Gtk.Label("", xalign=0, yalign=0) # testing_log_group.attach(self.testing_log_msg_lab, 1, 2, 0, 1) # ori_draw_panel = Gtk.Box(10, 2, True) # info_panel.pack_start(ori_draw_panel, True, True, 0) # # self.ori_paper = paper(title="After normalization(data set)") # ori_draw_panel.pack_start(self.ori_paper.canvas, True, True, 0) # *********************************************************************/ # drawing # traning_draw_draw_panel = Gtk.Box(10, 2, True) # body_panel.attach(traning_draw_draw_panel, 2, 3, 0, 1) # # self.traning_draw_paper = paper(title="Traning set") # traning_draw_draw_panel.pack_start( # self.traning_draw_paper.canvas, True, True, 0) # self.traning_draw_paper.resetpaper() # # testing_draw_draw_panel = Gtk.Box(10, 2, True) # body_panel.attach(testing_draw_draw_panel, 2, 3, 1, 2) # # self.testing_draw_paper = paper(title="Testing set") # testing_draw_draw_panel.pack_start( # self.testing_draw_paper.canvas, True, True, 0) # self.testing_draw_paper.resetpaper() # car drawing map_draw_panel = Gtk.Box(10, 2, True) body_panel.attach(map_draw_panel, 2, 4, 0, 2) self.map_draw_paper = racing_map(title="Car Map") map_draw_panel.pack_start(self.map_draw_paper.canvas, True, True, 0) self.map_draw_paper.resetpaper() # post init self.log_refresh()
def __init__(self): self.nnetwork = None self.dimension = 2 self.train_mode = True #self.data = [] self.weights = [] self.class_table = {} self.find_best = False #self.class_num self.dataset = dp() self.training_set = [] self.testing_set = [] self.traning_trainsformed_data = [] self.testing_trainsformed_data = [] #log info self.nninfo = info() #wait for ui setup Gtk.Window.__init__(self, title="Neural Network") self.set_default_size(1000, 700) action_group = Gtk.ActionGroup("my_actions") #menu item self.add_file_menu_actions(action_group) self.add_about_menu_actions(action_group) #create ui manager uimanager = self.create_ui_manager() uimanager.insert_action_group(action_group) menubar = uimanager.get_widget("/MenuBar") main_ui = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.add(main_ui) main_ui.pack_start(menubar, False, False, 0) toolbar = uimanager.get_widget("/ToolBar") main_ui.pack_start(toolbar, False, False, 0) # body pannel settings body_panel = Gtk.Table(2, 3, True) main_ui.pack_start(body_panel, True, True, 0) settings_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing = 10) body_panel.attach(settings_panel, 0, 1, 0, 2, xpadding=8, ypadding=8) settings_lab = Gtk.Label("Settings", xalign=0) settings_panel.pack_start(settings_lab, False, False, 0) # ********************************************************************* nn_settings_lab = Gtk.Label("Network Settings", xalign=0) settings_panel.pack_start(nn_settings_lab, False, False, 0) # net_size_x_group net_size_x_group = Gtk.Table(1, 2, True) settings_panel.pack_start(net_size_x_group, False, False, 0) net_size_x_lab = Gtk.Label("Net Size(x):", xalign=0) net_size_x_group.attach(net_size_x_lab, 0, 1, 0, 1) net_size_x_adj = Gtk.Adjustment(10, 0, 100, 5, 0, 0) self.net_size_x_sb = Gtk.SpinButton() self.net_size_x_sb.set_alignment(xalign=1) self.net_size_x_sb.set_adjustment(net_size_x_adj) net_size_x_group.attach(self.net_size_x_sb, 1, 2, 0, 1) self.net_size_x_sb.set_value(50) # net_size_y_group net_size_y_group = Gtk.Table(1, 2, True) settings_panel.pack_start(net_size_y_group, False, False, 0) net_size_y_lab = Gtk.Label("Net Size(y):", xalign=0) net_size_y_group.attach(net_size_y_lab, 0, 1, 0, 1) net_size_y_adj = Gtk.Adjustment(10, 0, 100, 5, 0, 0) self.net_size_y_sb = Gtk.SpinButton() self.net_size_y_sb.set_alignment(xalign=1) self.net_size_y_sb.set_adjustment(net_size_y_adj) net_size_y_group.attach(self.net_size_y_sb, 1, 2, 0, 1) self.net_size_y_sb.set_value(50) # learning rate learning_rate_group = Gtk.Table(1, 2, True) settings_panel.pack_start(learning_rate_group, False, False, 0) learning_rate_lab = Gtk.Label("Learning rate(0.1):", xalign=0) learning_rate_group.attach(learning_rate_lab, 0, 1, 0, 1) learning_rate_adj = Gtk.Adjustment(2, 0, 100, 1, 10, 0) self.learning_rate_sb = Gtk.SpinButton() self.learning_rate_sb.set_alignment(xalign=1) self.learning_rate_sb.set_adjustment(learning_rate_adj) learning_rate_group.attach(self.learning_rate_sb, 1, 2, 0, 1) self.learning_rate_sb.set_value(6) # traning times training_times_group = Gtk.Table(1, 2, True) settings_panel.pack_start(training_times_group, False, False, 0) training_times_lab = Gtk.Label("Traning times:", xalign=0) training_times_group.attach(training_times_lab, 0, 1, 0, 1) training_times_adj = Gtk.Adjustment(50, 0, 10000, 20, 0, 0) self.training_times_sb = Gtk.SpinButton() self.training_times_sb.set_alignment(xalign=1) self.training_times_sb.set_adjustment(training_times_adj) training_times_group.attach(self.training_times_sb, 1, 2, 0, 1) self.training_times_sb.set_value(2) # standar_diviison_group standar_diviison_group = Gtk.Table(1, 2, True) settings_panel.pack_start(standar_diviison_group, False, False, 0) standar_diviison_lab = Gtk.Label("Standar Division(0.01):", xalign=0) standar_diviison_group.attach(standar_diviison_lab, 0, 1, 0, 1) standar_diviison_adj = Gtk.Adjustment(10, 0, 100, 5, 0, 0) self.standar_diviison_sb = Gtk.SpinButton() self.standar_diviison_sb.set_alignment(xalign=1) self.standar_diviison_sb.set_adjustment(standar_diviison_adj) standar_diviison_group.attach(self.standar_diviison_sb, 1, 2, 0, 1) self.standar_diviison_sb.set_value(20) # action buttom action_group = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) settings_panel.pack_start(action_group, False, False, 0) tarin_button = Gtk.Button(label = "Train") tarin_button.connect("clicked", self.on_clicked_train) action_group.pack_start(tarin_button, False, False, 0) abort_button = Gtk.Button(label = "Abort") abort_button.connect("clicked", self.on_clicked_abort) action_group.pack_start(abort_button, False, False, 0) self.ori_draw_panel = Gtk.Box(10, 2, True) settings_panel.pack_start(self.ori_draw_panel, True, True, 0) self.ori_paper = paper(title="Data set") self.ori_draw_panel.pack_start(self.ori_paper.canvas, True, True, 0) # *********************************************************************/ #drawing self.traning_draw_panel = Gtk.Box(10, 2, True) body_panel.attach(self.traning_draw_panel, 1, 3, 0, 2) self.traning_draw_paper = paper(title="SOM") self.traning_draw_panel.pack_start(self.traning_draw_paper.canvas, True, True, 0) self.traning_draw_paper.resetpaper() self.training_set = None self.status_flag = [False]