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')
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')
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')