def run_train_EARs(exps_dir): n_var = N_VAR cols = VARS for n in range(0, n_var): # load json configure file config_file = exps_dir + 'saved_models/ear/ear_' + cols[ n] + '_configs.json' configs, configs_dict = get_config_from_json(config_file) option_lags = configs.option_lags best_params = configs_dict # need grid-search args = {} args['look_back'] = best_params['lag'] # make model model = EAR(args).make_model() print(model.summary()) # training x, y = cons_ur_data(data_file=exps_dir + 'dataset/training.csv', col=cols[n], look_back=best_params['lag']) model.fit( x, y, batch_size=32, epochs=Max_Epoch, callbacks=[EarlyStopping(monitor='loss', patience=8, mode='min')], validation_split=0, verbose=2) # save model saved_models_file = exps_dir + 'saved_models/ear/ear_' + cols[ n] + '_weights' model.save_weights(saved_models_file) print('Model saved ... ', saved_models_file) return
def run_visual_SEPNets(exps_dir, pretrain, trainable): print('----pretrain: ', pretrain, '\t----trainable: ', trainable) n_var = N_VAR cols = VARS p_list = [] ear_weights_files = [] for n in range(n_var): # load json configure file config_file = exps_dir + 'saved_models/ear/ear_' + cols[ n] + '_configs.json' configs, configs_dict = get_config_from_json(config_file) p_list.append(configs.lag) ear_weights_files.append(exps_dir + 'saved_models/ear/ear_' + cols[n] + '_weights') args = {} args['look_back'] = Max_Window args['n_var'] = n_var args['p_list'] = p_list args['se_weights_files'] = ear_weights_files args['pretrain'] = pretrain args['trainable'] = trainable # make model model = SEPNets(args).make_model() print(model.summary()) print(model.get_weights()[-2:]) return
def run_train_SEPNets(exps_dir, pretrain, trainable): print('----pretrain: ', pretrain, '\t----trainable: ', trainable) n_var = N_VAR cols = VARS p_list = [] ear_weights_files = [] for n in range(n_var): # load json configure file config_file = exps_dir + 'saved_models/ear/ear_' + cols[ n] + '_configs.json' configs, configs_dict = get_config_from_json(config_file) p_list.append(configs.lag) ear_weights_files.append(exps_dir + 'saved_models/ear/ear_' + cols[n] + '_weights') args = {} args['look_back'] = Max_Window args['n_var'] = n_var args['p_list'] = p_list args['se_weights_files'] = ear_weights_files args['pretrain'] = pretrain args['trainable'] = trainable # make model model = SEPNets(args).make_model() model.summary() # training x, y = cons_mv_data(data_file=exps_dir + 'dataset/training.csv', cols=cols[:N_VAR], look_back=Max_Window) model.fit( x, y, batch_size=32, epochs=Max_Epoch, callbacks=[EarlyStopping(monitor='loss', patience=3, mode='min')], validation_split=0, verbose=2) # save model saved_models_file = exps_dir + 'saved_models/sepnets/model_weights_' + \ str(pretrain) + '_' + str(trainable) + '_' + str(N_VAR) model.save_weights(saved_models_file) print('Model saved ... ', saved_models_file) return
def run_visual_ARs(exps_dir): n_var = N_VAR cols = VARS p_list = [] ar_weights_files = [] for n in range(n_var): # load json configure file config_file = exps_dir + 'saved_models/ar/ar_' + cols[ n] + '_configs.json' configs, _ = get_config_from_json(config_file) p_list.append(configs.lag) ar_weights_files.append(exps_dir + 'saved_models/ar/ar_' + cols[n] + '_weights') # make model ar_models = [AR({'look_back': p}).make_model() for p in p_list] # load weights [ ar_models[idx].load_weights(ar_weights_files[idx]) for idx in range(n_var) ] # print print(ar_models[0].summary()) [print(ar_models[idx].get_weights()[-1]) for idx in range(n_var)] return
from models.lstnets import LSTNet_multi_inputs from data_loader.generator import cons_mv_data from sklearn.metrics import mean_absolute_error from utils.tools import mean_mae from bunch import Bunch from keras.callbacks import EarlyStopping EXP_DIRS = ['../../exp_ElectricityLoad/', '../../exp_210100063/', '../../exp_201812/', '../../exp_210100112/'] EXP_DIR = EXP_DIRS[3] exp_config, _exp_config = get_config_from_json(EXP_DIR + 'exp_config.json') N_VAR = exp_config.N_VAR VARS = exp_config.VARS Max_Window = exp_config.Max_Window Max_Epoch = exp_config.Max_Epoch Skip = exp_config.Skip Period = exp_config.Period MODE_LIST = ['train', 'test', 'visual'] MODE = MODE_LIST[1] ARGS = { "window": Max_Window, 'hidRNN': 16, 'hidCNN': 3,
def run_test_ARs(exps_dir): n_var = N_VAR cols = VARS p_list = [] ar_weights_files = [] for n in range(n_var): # load json configure file config_file = exps_dir + 'saved_models/ar/ar_' + cols[ n] + '_configs.json' configs, _ = get_config_from_json(config_file) p_list.append(configs.lag) ar_weights_files.append(exps_dir + 'saved_models/ar/ar_' + cols[n] + '_weights') # make model ar_models = [AR({'look_back': p}).make_model() for p in p_list] # load weights [ ar_models[idx].load_weights(ar_weights_files[idx]) for idx in range(n_var) ] # make forecast test_x, test_y = cons_mv_data(data_file=exps_dir + 'dataset/testing.csv', cols=cols, look_back=Max_Window) test_y_ar_pred = [ ar_models[idx].predict(test_x[:, -p_list[idx]:, idx]) for idx in range(n_var) ] # make auto-regression prediction with shape of (n_var, batch_size) test_y_ar_pred = np.concatenate(test_y_ar_pred, axis=-1) # (batch_size, n_var) test_y_point_pred = test_x[:, -1, :] # make forecast for training train_x, train_y = cons_mv_data(data_file=exps_dir + 'dataset/training.csv', cols=cols, look_back=Max_Window) train_y_ar_pred = [ ar_models[idx].predict(train_x[:, -p_list[idx]:, idx]) for idx in range(n_var) ] train_y_ar_pred = np.concatenate(train_y_ar_pred, axis=-1) train_y_point_pred = train_x[:, -1, :] # mean mae print('mean-overall-mae:\t', mean_mae(test_y).mean()) print('mean-mae:\n', mean_mae(test_y)) # pre-point mae print('point-overall-mae:\t', mean_absolute_error(test_y, test_y_point_pred)) print( 'point-mae:\n', mean_absolute_error(test_y, test_y_point_pred, multioutput='raw_values')) # ar model mae print('ar_model-overall-mae:\t', mean_absolute_error(test_y, test_y_ar_pred)) print( 'ar_model-mae:\n', mean_absolute_error(test_y, test_y_ar_pred, multioutput='raw_values')) np.savez_compressed(exps_dir + 'results/y_ar_pred', train_y_pred=train_y_ar_pred, test_y_pred=test_y_ar_pred) return
def run_test_SEPNets(exps_dir, pretrain, trainable): print('----pretrain: ', pretrain, '\t----trainable: ', trainable) n_var = N_VAR cols = VARS p_list = [] ear_weights_files = [] for n in range(n_var): # load json configure file config_file = exps_dir + 'saved_models/ear/ear_' + cols[ n] + '_configs.json' configs, _ = get_config_from_json(config_file) p_list.append(configs.lag) ear_weights_files.append(exps_dir + 'saved_models/ear/ear_' + cols[n] + '_weights') # make model args = {} args['look_back'] = Max_Window args['n_var'] = n_var args['p_list'] = p_list args['se_weights_files'] = ear_weights_files args['pretrain'] = pretrain args['trainable'] = trainable # make model model = SEPNets(args).make_model() print(model.summary()) # load weights saved_models_file = exps_dir + 'saved_models/sepnets/model_weights_' + \ str(pretrain) + '_' + str(trainable) + '_' + str(N_VAR) model.load_weights(saved_models_file) # make testing forecast test_x, test_y = cons_mv_data(data_file=exps_dir + 'dataset/testing.csv', cols=cols[:N_VAR], look_back=Max_Window) test_y_sepnets_pred = model.predict(test_x) test_y_point_pred = test_x[:, -1, :] # make training forecast train_x, train_y = cons_mv_data(data_file=exps_dir + 'dataset/training.csv', cols=cols[:N_VAR], look_back=Max_Window) train_y_sepnets_pred = model.predict(train_x) # mean mae print('mean-overall-mae:\t', mean_mae(test_y).mean()) print('mean-mae:\n', mean_mae(test_y)) # pre-point mae print('point-overall-mae:\t', mean_absolute_error(test_y, test_y_point_pred)) print( 'point-mae:\n', mean_absolute_error(test_y, test_y_point_pred, multioutput='raw_values')) # sepnets model mae print('sepnets_model-overall-mae:\t', mean_absolute_error(test_y, test_y_sepnets_pred)) print( 'sepnets_model-mae:\n', mean_absolute_error(test_y, test_y_sepnets_pred, multioutput='raw_values')) saved_results = exps_dir+'results/y_sepnets_pred_'+ \ str(pretrain) + '_' + str(trainable) np.savez_compressed(saved_results, train_y_pred=train_y_sepnets_pred, test_y_pred=test_y_sepnets_pred) return