Пример #1
0
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()
Пример #2
0
    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()
Пример #3
0
    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]