Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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,
Пример #6
0
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
Пример #7
0
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