Ejemplo n.º 1
0
def main(pickle_adr,model_adr,save_adr,verbose):

    # Pickles of unlabelled glitches have already saved in this address
    pickle_adr += '/'

    # the path where the trained is saved there
    model_adr += '/'

    # the path where the .csv files of the results are saved there
    save_adr += '/'

    if not os.path.exists(save_adr):
        if verbose:
            print ('making... ' + save_adr)
        os.makedirs(save_adr)

    np.random.seed(1986)  # for reproducibility

    img_rows, img_cols = 47, 57
    nb_classes = 20

    # load a model and weights
    if verbose:
        print ('Retrieving the trained ML classifier')
    load_folder = model_adr
    f = gzip.open(load_folder + '/model.pklz', 'rb')
    json_string = cPickle.load(f)
    f.close()
    final_model = model_from_json(json_string)
    final_model.load_weights(load_folder + '/model_weights.h5')

    final_model.compile(loss='categorical_crossentropy',
                        optimizer='adadelta',
                        metrics=['accuracy'])

    if verbose:
        print ('Scoring unlabelled glitches')

    # reading all 4 duration pickles
    unlabelled_pickles = ['img_1.0*', 'img_2.0*', 'img_4.0*', 'img_5.0*']  # adding option to do in in alphabetical order

    # read duration 1 second

    dataset_test_unlabelled_1 = load_dataset_unlabelled_glitches(glob.glob(pickle_adr + unlabelled_pickles[0])[0],verbose)
    [test_set_unlabelled_x_1, test_set_unlabelled_y_1, test_set_unlabelled_name_1] = dataset_test_unlabelled_1
    test_set_unlabelled_x_1 = test_set_unlabelled_x_1.reshape(-1, 1, img_rows, img_cols)

    dataset_test_unlabelled_2 = load_dataset_unlabelled_glitches(glob.glob(pickle_adr + unlabelled_pickles[1])[0],verbose)
    [test_set_unlabelled_x_2, test_set_unlabelled_y_2, test_set_unlabelled_name_2] = dataset_test_unlabelled_2
    test_set_unlabelled_x_2 = test_set_unlabelled_x_2.reshape(-1, 1, img_rows, img_cols)

    dataset_test_unlabelled_3 = load_dataset_unlabelled_glitches(glob.glob(pickle_adr + unlabelled_pickles[2])[0],verbose)
    [test_set_unlabelled_x_3, test_set_unlabelled_y_3, test_set_unlabelled_name_3] = dataset_test_unlabelled_3
    test_set_unlabelled_x_3 = test_set_unlabelled_x_3.reshape(-1, 1, img_rows, img_cols)

    dataset_test_unlabelled_4 = load_dataset_unlabelled_glitches(glob.glob(pickle_adr + unlabelled_pickles[3])[0],verbose)
    [test_set_unlabelled_x_4, test_set_unlabelled_y_4, test_set_unlabelled_name_4] = dataset_test_unlabelled_4
    test_set_unlabelled_x_4 = test_set_unlabelled_x_4.reshape(-1, 1, img_rows, img_cols)

    if verbose:
        print('The number of unlabelled glitches is: ', test_set_unlabelled_x_1.shape[0])


    concat_test_unlabelled = square_early_concatenate_feature(test_set_unlabelled_x_1, \
                            test_set_unlabelled_x_2, test_set_unlabelled_x_3, test_set_unlabelled_x_4,[img_rows, img_cols])

    score3_unlabelled = final_model.predict_proba(concat_test_unlabelled, verbose=0)

    name_array_unlabelled = np.array([test_set_unlabelled_name_1.tolist()])
    name_array_unlabelled = np.transpose(name_array_unlabelled)

    dw = np.concatenate((name_array_unlabelled, score3_unlabelled), axis=1)

    return dw[0],np.argmax(score3_unlabelled[0])