Exemple #1
0
def make_model(input_shape, nb_epochs=100, batch_size=128, lr=0.01, n_layers=1, n_hidden=16, rate_dropout=0.3):
    model_path = '/output/model.{}.{}c.{}l.{}'.format(input_shape[0], n_hidden, n_layers, nb_epochs)

    wp = WindPuller(input_shape=input_shape, lr=lr, n_layers=n_layers, n_hidden=n_hidden, rate_dropout=rate_dropout)

    train_set, test_set = read_ultimate("/dataset/", input_shape)
    wp.fit(train_set.images, train_set.labels, batch_size=batch_size,
           nb_epoch=nb_epochs, shuffle=False, verbose=1,
           # validation_split=0.02,
           validation_data=(test_set.images, test_set.labels),
           callbacks=[
               TensorBoard(log_dir='/output/logs', histogram_freq=100),
               ModelCheckpoint(filepath=model_path + '.best', save_best_only=True, mode='min')
           ])

    scores = wp.evaluate(test_set.images, test_set.labels, verbose=0)
    print('Test loss:', scores[0])
    print('Test accuracy:', scores[1])

    wp.model.save(model_path)
    saved_wp = wp.load_model(model_path)
    scores = saved_wp.evaluate(test_set.images, test_set.labels, verbose=0)
    print('Test loss:', scores[0])
    print('test accuracy:', scores[1])
    pred = saved_wp.predict(test_set.images, 1024)
    # print(pred)
    # print(test_set.labels)
    pred = numpy.reshape(pred, [-1])
    result = numpy.array([pred, test_set.labels]).transpose()
    with open('output.' + str(input_shape[0]), 'w') as fp:
        for i in range(result.shape[0]):
            for val in result[i]:
                fp.write(str(val) + "\t")
            fp.write('\n')
def load_model_type(model_path,
                    input_shape,
                    _modelTyp=0,
                    nb_epochs=100,
                    batch_size=128,
                    lr=0.01,
                    n_layers=1,
                    n_hidden=16,
                    rate_dropout=0.3):
    train_set, validation_set, test_set, numFeatures = ft.generateDataSetTXF(
        os.getcwd(), input_wind_size=input_shape[0], toDataSet=True)
    input_shape[1] = numFeatures
    wp = WindPuller(input_shape=input_shape,
                    modelType=1,
                    lr=lr,
                    n_layers=n_layers,
                    n_hidden=n_hidden,
                    rate_dropout=rate_dropout)
    saved_wp = wp.load_model(model_path)
    scores = saved_wp.evaluate(test_set.images, test_set.labels, verbose=0)
    print('Test loss:', scores[0])
    print('test accuracy:', scores[1])
    pred = saved_wp.predict(test_set.images, 1024)
    pred = np.reshape(pred, [-1])
    result = np.array([pred, test_set.labels]).transpose()
    with open('output.' + str(input_shape[0]), 'w') as fp:
        for i in range(result.shape[0]):
            for val in result[i]:
                fp.write(str(val) + "\t")
            fp.write('\n')
Exemple #3
0
def make_separate_model(nb_epochs=100,
                        batch_size=128,
                        lr=0.01,
                        n_layers=1,
                        n_hidden=14,
                        rate_dropout=0.3,
                        input_shape=[30, 73]):
    train_sets, test_sets = read_separate_feature("./ultimate_feature")

    wp = WindPuller(input_shape=input_shape,
                    lr=lr,
                    n_layers=n_layers,
                    n_hidden=n_hidden,
                    rate_dropout=rate_dropout)
    wp.build_model()
    for code, train_set in train_sets.items():
        test_set = test_sets[code]
        input_shape = [train_set.images.shape[1], train_set.images.shape[2]]
        print(input_shape)
        model_path = 'model.%s' % code

        print(train_set.images.shape)
        wp.fit(train_set.images,
               train_set.labels,
               batch_size=batch_size,
               nb_epoch=nb_epochs,
               shuffle=False,
               verbose=1,
               validation_data=(test_set.images, test_set.labels),
               callbacks=[
                   TensorBoard(histogram_freq=1000),
                   ModelCheckpoint(filepath=model_path + '.best.checkpoints',
                                   save_best_only=True,
                                   mode='min')
               ])
        scores = wp.evaluate(test_set.images, test_set.labels, verbose=0)
        print('Test loss:', scores[0])
        print('Test accuracy:', scores[1])

        wp.model.save(model_path)
        saved_wp = wp.load_model(model_path)
        scores = saved_wp.evaluate(test_set.images, test_set.labels, verbose=0)
        print('Test loss:', scores[0])
        print('test accuracy:', scores[1])
        pred = saved_wp.predict(test_set.images, 1024)
        # print(pred)
        # print(test_set.labels)
        pred = numpy.reshape(pred, [-1])
        result = numpy.array([pred, test_set.labels]).transpose()
        with open('output.' + str(input_shape[0]), 'w') as fp:
            for i in range(result.shape[0]):
                for val in result[i]:
                    fp.write(str(val) + "\t")
                fp.write('\n')
Exemple #4
0
def evaluate_model(model_path, code, input_shape=[30, 61]):
    extract_from_file("dataset/%s.csv" % code, code)
    train_set, test_set = read_feature("./%s_feature" % code)
    saved_wp = WindPuller.load_model(model_path)
    scores = saved_wp.evaluate(test_set.images, test_set.labels, verbose=0)
    print('Test loss:', scores[0])
    print('test accuracy:', scores[1])
    pred = saved_wp.predict(test_set.images, 1024)
    cr = calculate_cumulative_return(test_set.labels, pred)
    print("changeRate\tpositionAdvice\tprincipal\tcumulativeReturn")
    for i in range(len(test_set.labels)):
        print(
            str(test_set.labels[i]) + "\t" + str(pred[i]) + "\t" +
            str(cr[i] + 1.) + "\t" + str(cr[i]))
    print("turnover: %s " % turnover(pred))
def load_model_type3(input_shape):
    model_path = 'model.%s' % input_shape[0]
    wp = WindPuller(input_shape=input_shape,
                    modelType=2,
                    lr=lr,
                    n_layers=n_layers,
                    n_hidden=n_hidden,
                    rate_dropout=rate_dropout)
    saved_wp = wp.load_model(model_path)
    scores = saved_wp.evaluate(test_set.images, test_set.labels, verbose=0)
    print('Test loss:', scores[0])
    print('test accuracy:', scores[1])
    pred = saved_wp.predict(X_test, 1024)
    pred = numpy.reshape(pred, [-1])
    result = numpy.array([pred, y_test]).transpose()
    with open('output.' + str(input_shape[0]), 'w') as fp:
        for i in range(result.shape[0]):
            for val in result[i]:
                fp.write(str(val) + "\t")
            fp.write('\n')