Exemple #1
0
    n_epochs = 10
    n_al_epochs = 10
    only_real = True
    y_columns = list(range(data_set.y.shape[1]))
    y_columns = [2, 11, 23]
    net.build_multi_reg_k(len(y_columns),
                          activation=tf.keras.layers.LeakyReLU())
    net1.build_multi_reg_k(len(y_columns),
                           activation=tf.keras.layers.LeakyReLU())
    data_set.split_dataset_random(train_perc=0.0,
                                  val_perc=0.1,
                                  notused_perc=0.9)
    data_set.make_dataset_tensors(y_columns=y_columns, only_real=only_real)
    val_sample_size = data_set.val_labels.shape[0]
    validation_steps = val_sample_size // n_batch
    val_gen = data_set.dataset_generator_multi(data_set.val_datas,
                                               data_set.val_labels, n_batch)

    for al in range(n_al_epochs):
        al_res = dataset_predict(net.pre_model, data_set, role=0)[:, 1]
        al_res = al_res.reshape((-1, len(y_columns)))
        al_res1 = dataset_predict(net1.pre_model, data_set, role=0)[:, 1]
        al_res1 = al_res1.reshape((-1, len(y_columns)))
        delta = np.abs(al_res - al_res1).mean(axis=1)
        al_as = delta.argsort()[::-1]
        new_train_num = min(np.sum(delta > 0.02), 200)
        idx = data_set.notused_indices[al_as[:new_train_num]]
        data_set.sample_prop.role[idx] = 1
        print("add %d new train samples." % new_train_num)
        data_set.make_dataset_tensors(y_columns=y_columns, only_real=only_real)

        train_sample_size = data_set.train_labels.shape[0]
Exemple #2
0
            dt_test_begin = datetime.datetime(2018, 8, 26)
            dt_test_end = datetime.datetime(2018, 9, 1) - datetime.timedelta(seconds=1)
            ids = data_set.split_dataset_dt(dt_train_begin=dt_train_begin,
                                            dt_train_end=dt_train_end,
                                            dt_test_begin=dt_test_begin,
                                            dt_test_end=dt_test_end,
                                            val_perc=0.1)
        assert (0 in ids) and (1 in ids)
        data_set.make_dataset_tensors(y_columns=y_columns, only_real=only_real)
        train_data, train_labels, _ = data_set.get_dataset(0)
        train_sample_size = train_labels.shape[0]
        steps_per_epoch = train_sample_size // n_batch
        val_data, val_labels, _ = data_set.get_dataset(1)
        val_sample_size = val_labels.shape[0]
        validation_steps = val_sample_size // n_batch
        train_gen = data_set.dataset_generator_multi(train_data, train_labels, n_batch)
        val_gen = data_set.dataset_generator_multi(val_data, val_labels, n_batch)
        dt_run_start = datetime.datetime.now()
        with timer("Timer training"):
            history = net.train_model.fit_generator(train_gen,
                                                    epochs=n_epochs,
                                                    steps_per_epoch=steps_per_epoch,
                                                    validation_data=val_gen,
                                                    validation_steps=validation_steps)
        test_labels, pre = dataset_predict(net.pre_model, data_set, role=2)
        save_model(res_path, args.res_type, net.pre_model, suffix='pb')
        # save_model(res_path, args.res_type, net.pre_model, suffix='json')
        write_input(data_set, res_path + "/input.txt")
        write_output(data_set.y.columns[y_columns], res_path + "/output.txt")
        sys.exit(0)