diff --git a/.gitignore b/.gitignore index 223a358..ede67f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,33 +1,179 @@ +# dir +__pycache__/ +.vscode/ +checkpoints/ +datasets/raw_data +todo.md +gpu_task.py +cmd.sh + +# file *.npz *.npy *.csv *.pkl *.h5 *.pt -.VSCodeCounter/ -log/ -datasets -ret -log -checkpoints -checkpoints/* -datasets/* -log/* -output/ -.idea/ -.vscode/ -.ipynb_checkpoints/ -TSFormer_CKPT/ +core* +*.p *.pickle *.pyc -ret -log -checkpoints -log -datasets +*.txt -__pycache__/ -checkpoints/ -*.sh -*.out -*.err \ No newline at end of file +*.py[cod] +*$py.class + +# C extensions +# *.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. \ No newline at end of file diff --git a/.pylintrc b/.pylintrc index 3bc9607..4c72305 100644 --- a/.pylintrc +++ b/.pylintrc @@ -265,7 +265,7 @@ generated-members= [FORMAT] # Maximum number of characters on a single line. -max-line-length=150 +max-line-length=200 # TODO(https://github.com/PyCQA/pylint/issues/3352): Direct pylint to exempt # lines made too long by directives to pytype. diff --git a/README.md b/README.md index ec52641..a9199ec 100644 --- a/README.md +++ b/README.md @@ -1,135 +1,132 @@ -# Pre-training-Enhanced Spatial-Temporal Graph Neural Network For Multivariate Time Series Forecasting +#
Pre-training-Enhanced Spatial-Temporal Graph Neural Network For Multivariate Time Series Forecasting
+
+ +[![BasicTS](https://img.shields.io/badge/Developing%20with-BasicTS-blue)](https://github.com/zezhishao/BasicTS) [![EasyTorch](https://img.shields.io/badge/Developing%20with-EasyTorch-2077ff.svg)](https://github.com/cnstark/easytorch) [![LICENSE](https://img.shields.io/github/license/zezhishao/BasicTS.svg)](https://github.com/zezhishao/BasicTS/blob/master/LICENSE) Code for our SIGKDD'22 paper: "[Pre-training-Enhanced Spatial-Temporal Graph Neural Network For Multivariate Time Series Forecasting](https://arxiv.org/abs/2206.09113)". -The code is developed with [EasyTorch](https://github.com/cnstark/easytorch), an easy-to-use and powerful open source neural network training framework. +The code is developed with [BasicTS](https://github.com/zezhishao/BasicTS), a PyTorch-based benchmark and toolbox for time series forecasting. -TheTable +
-All the training logs of the pre-training stage and the forecasting stage can be found in `train_logs/`. + +TheTable > Multivariate Time Series (MTS) forecasting plays a vital role in a wide range of applications. Recently, Spatial-Temporal Graph Neural Networks (STGNNs) have become increasingly popular MTS forecasting methods. STGNNs jointly model the spatial and temporal patterns of MTS through graph neural networks and sequential models, significantly improving the prediction accuracy. But limited by model complexity, most STGNNs only consider short-term historical MTS data, such as data over the past one hour. However, the patterns of time series and the dependencies between them (i.e., the temporal and spatial patterns) need to be analyzed based on long-term historical MTS data. To address this issue, we propose a novel framework, in which STGNN is Enhanced by a scalable time series Pre-training model (STEP). Specifically, we design a pre-training model to efficiently learn temporal patterns from very long-term history time series (e.g., the past two weeks) and generate segment-level representations. These representations provide contextual information for short-term time series input to STGNNs and facilitate modeling dependencies between time series. Experiments on three public real-world datasets demonstrate that our framework is capable of significantly enhancing downstream STGNNs, and our pre-training model aptly captures temporal patterns. -## 1. Table of Contents +## ๐Ÿ“š Table of Contents ```text -config --> Training configs and model configs for each dataset -dataloader --> MTS dataset -easytorch --> EasyTorch -model --> Model architecture -checkpoints --> Saving the checkpoints according to md5 of the configuration file -datasets --> Raw datasets and preprocessed data -train_logs --> Our train logs. -TSFormer_CKPT --> Our checkpoints. -``` +basicts --> The BasicTS, which provides standard pipelines for training MTS forecasting models. Don't worry if you don't know it, because it doesn't prevent you from understanding STEP's code. -## 2. Requirements +datasets --> Raw datasets and preprocessed data -```bash -pip install -r requirements.txt -``` +figures --> Some figures used in README. -## 3. Data Preparation +scripts --> Data preprocessing scripts. -### 3.1 Download Data +step --> The implementation of STEP, including the architecture, dataloader, loss, and runner for STEP. -Download data from link [Google Drive](https://drive.google.com/drive/folders/1F7fEdXpnEQ75sxQval52jN4r3ZKoufGV?usp=sharing) or [BaiduYun](https://pan.baidu.com/s/1IWVhsvKpxHEb2CFLCR7P3A?pwd=w1wJ) to the code root directory. +tsformer_ckpt --> Pre-trained TSFormer for METR-LA, PEMS-BAY, and PEMS04 dataset. +``` -Then, unzip data by: +## ๐Ÿ’ฟ Requirements ```bash -unzip TSFormer_CKPT.zip -mkdir datasets -unzip raw_data.zip -d datasets -unzip sensor_graph.zip -d datasets -rm *.zip +pip install -r requirements.txt ``` -`TSFormer_CKPT/` contains the pre-trained model for each dataset. -You can also find all the training logs of the pre-training stage and forecasting stage in `training_logs/`. +## ๐Ÿ“ฆ Data Preparation -### 3.2 Preprocess Data +### **Download Raw Data** -```bash -python datasets/raw_data/$DATASET_NAME/generate_data.py -``` - -Replace `$DATASET_NAME` with one of `METR-LA`, `PEMS-BAY`, `PEMS04`. +You can download all the raw datasets at [Google Drive](https://drive.google.com/file/d/1PY7IZ3SchpyXfNIXs71A2GEV29W5QCv2/view?usp=sharing) or [Baidu Yun](https://pan.baidu.com/s/1CXLxeHxHIMWLy3IKGFUq8g?pwd=blf8), and unzip them to `datasets/raw_data/`. -The processed data is placed in `datasets/$DATASET_NAME`. +### **Pre-process Data** -## 4. Train STEP based on a Pre-trained TSFormer +You can pre-process all data via: ```bash -python main.py --cfg='config/$DATASET/forecasting.py' --gpu='0, 1' -# python main.py --cfg='config/METR-LA/forecasting.py' --gpu='0, 1' -# python main.py --cfg='config/PEMS-BAY/forecasting.py' --gpu='0, 1' -# python main.py --cfg='config/PEMS04/forecasting.py' --gpu='0, 1' +cd /path/to/your/project +bash scripts/data_preparation/all.sh ``` -Replace `$DATASET_NAME` with one of `METR-LA`, `PEMS-BAY`, `PEMS04` as shown in the code above. +Then the `dataset` directory will look like this: -Configuration file -`config/$DATASET_NAME/forecasting.py` describes the forecasting configurations. +```text +datasets + โ”œโ”€METR-LA + โ”œโ”€METR-BAY + โ”œโ”€PEMS04 + โ”œโ”€raw_data + | โ”œโ”€PEMS04 + | โ”œโ”€PEMS-BAY + | โ”œโ”€METR-LA + โ”œโ”€README.md +``` -We use 2 GPU for forecasting stage as default, edit `GPU_NUM` property in the configuration file and `--gpu` in the command line to run on your own hardware. +## ๐ŸŽฏ Train STEP based on a Pre-trained TSFormer -Note that different GPU numbers lead to different real batch sizes, affecting the learning rate setting and the forecasting accuracy. +```bash +python step/run.py --cfg='step/step_$DATASET.py' --gpus='0, 1' +# python step/run.py --cfg='step/step_METR-LA.py' --gpus='0' +# python step/run.py --cfg='step/step_PEMS-BAY.py' --gpus='0, 1' +# python step/run.py --cfg='step/step_PEMS04.py' --gpus='0, 1' +``` + +Replace `$DATASET_NAME` with one of `METR-LA`, `PEMS-BAY`, `PEMS04` as shown in the code above. +Configuration file `step/STEP_$DATASET.py` describes the forecasting configurations. +Edit `BATCH_SIZE` and `GPU_NUM` in the configuration file and `--gpu` in the command line to run on your own hardware. +Note that different GPU number leads to different real batch sizes, affecting the learning rate setting and the forecasting accuracy. Our training logs are shown in `train_logs/Backend_metr.log`, `train_logs/Backend_pems04.log`, and `train_logs/Backend_pemsbay.log`. -## 5. Train STEP from Scratch +## โš’ Train STEP from Scratch -### 5.1 Pre-training Stage +### **Pre-training Stage** ```bash -python main.py --cfg='config/$DATASET/pretraining.py' --gpu='0' -# python main.py --cfg='config/METR-LA/pretraining.py' --gpu='0' -# python main.py --cfg='config/PEMS-BAY/pretraining.py' --gpu='0, 1, 2, 3, 4, 5, 6, 7' -# python main.py --cfg='config/PEMS04/pretraining.py' --gpu='0, 1' +python step/run.py --cfg='step/TSFormer_$DATASET.py' --gpus '0' +# python step/run.py --cfg='step/TSFormer_METR-LA.py' --gpus='0' +# python step/run.py --cfg='step/TSFormer_PEMS-BAY.py' --gpus='0, 1' +# python step/run.py --cfg='step/TSFormer_PEMS04.py' --gpus='0' ``` Replace `$DATASET_NAME` with one of `METR-LA`, `PEMS-BAY`, `PEMS04` as shown in the code above. - -Configuration file `config/$DATASET_NAME/pretraining.py` describes the pre-training configurations. - +Configuration file `step/TSFormer_$DATASET.py` describes the pre-training configurations. Edit the `BATCH_SIZE` and `GPU_NUM` in the configuration file and `--gpu` in the command line to run on your own hardware. +All the training logs, including the config file, training log, and checkpoints, will be saved in `checkpoints/MODEL_EPOCH/MD5_of_config_file`. +For example, `checkpoints/TSFormer_100/5afe80b3e7a3dc055158bcfe99afbd7f`. -### 5.2 Forecasting Stage +### **Forecasting Stage** -Move your pre-trained model checkpoints to `TSFormer_CKPT/`. +After pre-training TSFormer, move your pre-trained best checkpoint to `tsformer_ckpt/`. For example: ```bash -cp checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_180.pt TSFormer_CKPT/TSFormer_PEMS-BAY.pt -``` - -```bash -cp checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_147.pt TSFormer_CKPT/TSFormer_PEMS04.pt +cp checkpoints/TSFormer_100/5afe80b3e7a3dc055158bcfe99afbd7f/TSFormer_best_val_MAE.pt tsformer_ckpt/TSFormer_$DATASET_NAME.pt ``` -```bash -cp checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_030.pt TSFormer_CKPT/TSFormer_METR-LA.pt -``` +Replace `$DATASET_NAME` with one of `METR-LA`, `PEMS-BAY`, `PEMS04`. Then train the downstream STGNN (Graph WaveNet) like in section 4. -## 6. Performance and Visualization +## ๐Ÿ“ˆ Performance and Visualization TheTable Visualization -## 7. More Related Works +## ๐Ÿ”— More Related Works - [D2STGNN: Decoupled Dynamic Spatial-Temporal Graph Neural Network for Traffic Forecasting. VLDB'22.](https://github.com/zezhishao/D2STGNN) - [BasicTS: An Open Source Standard Time Series Forecasting Benchmark.](https://github.com/zezhishao/BasicTS) -## 8. Citing +## Citing If you find this repository useful for your work, please consider citing it as follows: diff --git a/Runner_FullModel.py b/Runner_FullModel.py deleted file mode 100644 index d0f464e..0000000 --- a/Runner_FullModel.py +++ /dev/null @@ -1,367 +0,0 @@ -import time -import math - -import torch -from torch import nn -from sklearn.metrics import mean_absolute_error - -from easytorch import Runner -from easytorch.utils.dist import master_only - -from models.step import STEP -from dataloader.dataset import MTSDataset -from utils.log import load_pkl -from utils.log import TrainLogger -from utils.load_data import re_max_min_normalization, standard_re_transform -from losses.losses_torch import masked_mae, masked_rmse, masked_mape, metric - - -class FullModelRunner(Runner): - def __init__(self, cfg: dict, use_gpu: bool = True): - super().__init__(cfg, use_gpu=use_gpu) - self.clip = 3 - self._lambda = 1 - dataset_name = cfg['DATASET_NAME'] - # scaler - if dataset_name in ['PEMS04', 'PEMS08']: - _min = load_pkl("datasets/" + dataset_name + "/min.pkl") - _max = load_pkl("datasets/" + dataset_name + "/max.pkl") - self.scaler = re_max_min_normalization - self.scaler_args = {'min': _min, 'max':_max} - elif dataset_name in ['PEMS-BAY', 'METR-LA']: - mean = load_pkl("datasets/" + dataset_name + "/mean.pkl") - std = load_pkl("datasets/" + dataset_name + "/std.pkl") - self.scaler = standard_re_transform - self.scaler_args = {'mean': mean, 'std':std} - self.loss = masked_mae - - self.dataset_name = cfg['DATASET_NAME'] - self.output_seq_len = 12 - self.cl_len = self.output_seq_len - self.if_cl = True - - def init_training(self, cfg): - """Initialize training. - - Including loss, training meters, etc. - - Args: - cfg (dict): config - """ - self.register_epoch_meter("train_loss", 'train', '{:.4f}') - self.register_epoch_meter("train_MAPE", 'train', '{:.4f}') - self.register_epoch_meter("train_RMSE", 'train', '{:.4f}') - - super().init_training(cfg) - - def init_validation(self, cfg: dict): - """Initialize validation. - - Including validation meters, etc. - - Args: - cfg (dict): config - """ - - super().init_validation(cfg) - - self.register_epoch_meter("val_loss", 'val', '{:.4f}') - self.register_epoch_meter("val_MAPE", 'val', '{:.4f}') - self.register_epoch_meter("val_RMSE", 'val', '{:.4f}') - - def init_test(self, cfg: dict): - """Initialize test. - - Including test meters, etc. - - Args: - cfg (dict): config - """ - - super().init_test(cfg) - - self.register_epoch_meter("test_loss", 'test', '{:.4f}') - self.register_epoch_meter("test_MAPE", 'test', '{:.4f}') - self.register_epoch_meter("test_RMSE", 'test', '{:.4f}') - - @staticmethod - def define_model(cfg: dict) -> nn.Module: - """Define model. - - If you have multiple models, insert the name and class into the dict below, - and select it through ```config```. - - Args: - cfg (dict): config - - Returns: - model (nn.Module) - """ - return { - 'STEP': STEP - }[cfg['MODEL']['NAME']](cfg, **cfg.MODEL.PARAM) - - def build_train_dataset(self, cfg: dict): - """Build train dataset - - Args: - cfg (dict): config - - Returns: - train dataset (Dataset) - """ - raw_file_path = cfg["TRAIN"]["DATA"]["DIR"] + "/data.pkl" - index_file_path = cfg["TRAIN"]["DATA"]["DIR"] + "/train_index.pkl" - seq_len = cfg['TRAIN']['DATA']['SEQ_LEN'] - batch_size = cfg['TRAIN']['DATA']['BATCH_SIZE'] - dataset = MTSDataset(raw_file_path, index_file_path, seq_len, throw=False, pretrain=False) - - warmup_epoches = cfg['TRAIN']['WARMUP_EPOCHS'] - cl_epochs = cfg['TRAIN']['CL_EPOCHS'] - self.init_lr = cfg['TRAIN']['OPTIM']['PARAM']['lr'] - self.itera_per_epoch = math.ceil(len(dataset) / batch_size) - self.warmup_steps = self.itera_per_epoch * warmup_epoches - self.cl_steps = self.itera_per_epoch * cl_epochs - print("cl_steps:{0}".format(self.cl_steps)) - print("warmup_steps:{0}".format(self.warmup_steps)) - - return dataset - - @staticmethod - def build_val_dataset(cfg: dict): - """Build val dataset - - Args: - cfg (dict): config - - Returns: - train dataset (Dataset) - """ - raw_file_path = cfg["VAL"]["DATA"]["DIR"] + "/data.pkl" - index_file_path = cfg["VAL"]["DATA"]["DIR"] + "/valid_index.pkl" - seq_len = cfg['VAL']['DATA']['SEQ_LEN'] - dataset = MTSDataset(raw_file_path, index_file_path, seq_len, pretrain=False) - print("val len: {0}".format(len(dataset))) - return dataset - - @staticmethod - def build_test_dataset(cfg: dict): - """Build val dataset - - Args: - cfg (dict): config - - Returns: - train dataset (Dataset) - """ - raw_file_path = cfg["TEST"]["DATA"]["DIR"] + "/data.pkl" - index_file_path = cfg["TEST"]["DATA"]["DIR"] + "/test_index.pkl" - seq_len = cfg['TEST']['DATA']['SEQ_LEN'] - dataset = MTSDataset(raw_file_path, index_file_path, seq_len, pretrain=False) - print("test len: {0}".format(len(dataset))) - return dataset - - def train_iters(self, epoch, iter_index, data): - """Training details. - - Args: - epoch (int): current epoch. - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - - Returns: - loss (torch.Tensor) - """ - iter_num = (epoch-1) * self.itera_per_epoch + iter_index - - y, short_x, long_x = data - Y = self.to_running_device(y) - short_term_history = self.to_running_device(short_x) - long_term_history = self.to_running_device(long_x) - - output, theta, priori_adj = self.model(short_term_history, long_term_history=long_term_history) - output = output.transpose(1,2) - - # # reg - B, N, N = theta.shape - theta = theta.view(B, N*N) - tru = priori_adj.view(B, N*N) - BCE_loss = nn.BCELoss() - loss_g = BCE_loss(theta, tru) - - # curriculum learning - if iter_num < self.warmup_steps: # warm upping - self.cl_len = self.output_seq_len - elif iter_num == self.warmup_steps: - # init curriculum learning - self.cl_len = 1 - for param_group in self.optim.param_groups: - param_group["lr"] = self.init_lr - print("======== Start curriculum learning... reset the learning rate to {0}. ========".format(self.init_lr)) - else: - # begin curriculum learning - if (iter_num - self.warmup_steps) % self.cl_steps == 0 and self.cl_len <= self.output_seq_len: - self.cl_len += int(self.if_cl) - - # scale data and calculate loss - if "max" in self.scaler_args.keys(): # traffic flow - predict = self.scaler(output.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - real_val = self.scaler(Y.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - real_val = real_val[..., 0] - mae_loss = self.loss(predict[:, :self.cl_len, :], real_val[:, :self.cl_len, :]) - else: - ## inverse transform for both predict and real value. - predict = self.scaler(output, **self.scaler_args) - real_val = self.scaler(Y[:,:,:,0], **self.scaler_args) - mae_loss = self.loss(predict[:, :self.cl_len, :], real_val[:, :self.cl_len, :], 0) - - if iter_num == 50: - self._lambda = 1 - if iter_num == 100: - self._lambda == 0.1 - if iter_num == 1000: - self._lambda = 0.01 - self._lambda = 1 / (int(epoch/6)+1) - - loss = mae_loss + self._lambda * loss_g - # metrics - mape = masked_mape(predict,real_val,0.0) - rmse = masked_rmse(predict,real_val,0.0) - - self.update_epoch_meter('train_loss', loss.item()) - self.update_epoch_meter('train_MAPE', mape.item()) - self.update_epoch_meter('train_RMSE', rmse.item()) - - return loss - - def val_iters(self, iter_index, data): - """Validation details. - - Args: - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - """ - y, short_x, long_x = data - Y = self.to_running_device(y) - short_term_history = self.to_running_device(short_x) - long_term_history = self.to_running_device(long_x) - - output, _, _ = self.model(short_term_history, long_term_history=long_term_history) - output = output.transpose(1,2) - - # scale data and calculate loss - if "max" in self.scaler_args.keys(): # traffic flow - predict = self.scaler(output.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - real_val = self.scaler(Y.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - real_val = real_val[..., 0] - mae_loss = self.loss(predict[:, :self.cl_len, :], real_val[:, :self.cl_len, :]) - else: - ## inverse transform for both predict and real value. - predict = self.scaler(output, **self.scaler_args) - real_val = self.scaler(Y[:,:,:,0], **self.scaler_args) - - # metrics - loss = self.loss(predict, real_val, 0.0) - mape = masked_mape(predict,real_val,0.0) - rmse = masked_rmse(predict,real_val,0.0) - - self.update_epoch_meter('val_loss', loss.item()) - self.update_epoch_meter('val_MAPE', mape.item()) - self.update_epoch_meter('val_RMSE', rmse.item()) - - @torch.no_grad() - @master_only - def test(self, cfg: dict = None, train_epoch: int = None): - """test model. - - Args: - cfg (dict, optional): config - train_epoch (int, optional): current epoch if in training process. - """ - - # init test if not in training process - if train_epoch is None: - self.init_test(cfg) - - self.on_test_start() - - test_start_time = time.time() - self.model.eval() - - # test loop - outputs = [] - y_list = [] - for iter_index, data in enumerate(self.test_data_loader): - preds, testy = self.test_iters(iter_index, data) - outputs.append(preds) - y_list.append(testy) - yhat = torch.cat(outputs,dim=0) - y_list = torch.cat(y_list, dim=0) - - # scale data and calculate loss - if "max" in self.scaler_args.keys(): # traffic flow - real_val = self.scaler(y_list.squeeze(-1), **self.scaler_args).transpose(1, 2) - predict = self.scaler(yhat.unsqueeze(-1), **self.scaler_args).transpose(1, 2) - real_val = real_val[..., 0] - predict = predict[..., 0] - else: - ## inverse transform for both predict and real value. - real_val = self.scaler(y_list[:,:,:,0], **self.scaler_args).transpose(1, 2) - predict = self.scaler(yhat, **self.scaler_args).transpose(1, 2) - - # summarize the results. - amae = [] - amape = [] - armse = [] - - for i in range(12): - # For horizon i, only calculate the metrics **at that time** slice here. - pred = predict[:,:,i] - real = real_val[:,:,i] - dataset_name = self.dataset_name - if dataset_name == 'PEMS04' or dataset_name == 'PEMS08': # traffic flow dataset follows mae metric used in ASTGNN. - mae = mean_absolute_error(pred.cpu().numpy(), real.cpu().numpy()) - rmse = masked_rmse(pred, real, 0.0).item() - mape = masked_mape(pred, real, 0.0).item() - log = 'Evaluate best model on test data for horizon {:d}, Test MAE: {:.4f}, Test RMSE: {:.4f}, Test MAPE: {:.4f}' - log = log.format(i+1, mae, rmse, mape) - # print(log) - amae.append(mae) - amape.append(mape) - armse.append(rmse) - else: # traffic speed datasets follow the metrics released by GWNet and DCRNN. - metrics = metric(pred,real) - log = 'Evaluate best model on test data for horizon {:d}, Test MAE: {:.4f}, Test RMSE: {:.4f}, Test MAPE: {:.4f}' - log = log.format(i+1, metrics[0], metrics[2], metrics[1]) - # print(log) - amae.append(metrics[0]) # mae - amape.append(metrics[1]) # mape - armse.append(metrics[2]) # rmse - self.logger.info(log) - - # *** TODO: not test yet *** - import numpy as np - log = 'On average over 12 horizons, Test MAE: {:.4f}, Test MAPE: {:.4f}, Test RMSE: {:.4f}' - self.logger.info(log.format(np.mean(amae),np.mean(amape),np.mean(armse))) - # ************************** - - test_end_time = time.time() - self.update_epoch_meter('test_time', test_start_time - test_end_time) - # print val meters - self.print_epoch_meters('test') - if train_epoch is not None: - # tensorboard plt meters - self.plt_epoch_meters('test', train_epoch // self.test_interval) - - self.on_test_end() - - def test_iters(self, iter_index: int, data: torch.Tensor or tuple): - y, short_x, long_x = data - Y = self.to_running_device(y) - short_term_history = self.to_running_device(short_x) - long_term_history = self.to_running_device(long_x) - - output, _, _ = self.model(short_term_history, long_term_history=long_term_history) - output = output.transpose(1,2) - return output, Y - \ No newline at end of file diff --git a/Runner_TSFormer.py b/Runner_TSFormer.py deleted file mode 100644 index b04c0fa..0000000 --- a/Runner_TSFormer.py +++ /dev/null @@ -1,237 +0,0 @@ -from torch import nn - -from easytorch import Runner - -from dataloader.dataset import MTSDataset -from models.tsformer.model import TSFormer -from utils.log import TrainLogger, load_pkl -from utils.load_data import re_max_min_normalization, standard_re_transform -from losses.losses_torch import masked_mae, masked_rmse, masked_mape - - -class TSFormerRunner(Runner): - def __init__(self, cfg: dict, use_gpu: bool = True): - super().__init__(cfg, use_gpu=use_gpu) - self.clip = 5 - dataset_name = cfg['DATASET_NAME'] - # scaler - if dataset_name in ['PEMS04', 'PEMS08']: - _min = load_pkl("datasets/" + dataset_name + "/min.pkl") - _max = load_pkl("datasets/" + dataset_name + "/max.pkl") - self.scaler = re_max_min_normalization - self.scaler_args = {'min': _min, 'max':_max} - elif dataset_name in ['PEMS-BAY', 'METR-LA']: - mean = load_pkl("datasets/" + dataset_name + "/mean.pkl") - std = load_pkl("datasets/" + dataset_name + "/std.pkl") - self.scaler = standard_re_transform - self.scaler_args = {'mean': mean, 'std':std} - self.loss = masked_mae - - def init_training(self, cfg): - """Initialize training. - - Including loss, training meters, etc. - - Args: - cfg (dict): config - """ - super().init_training(cfg) - - self.register_epoch_meter("train_loss", 'train', '{:.4f}') - self.register_epoch_meter("train_MAPE", 'train', '{:.4f}') - self.register_epoch_meter("train_RMSE", 'train', '{:.4f}') - - def init_validation(self, cfg: dict): - """Initialize validation. - - Including validation meters, etc. - - Args: - cfg (dict): config - """ - - super().init_validation(cfg) - - self.register_epoch_meter("val_loss", 'val', '{:.4f}') - self.register_epoch_meter("val_MAPE", 'val', '{:.4f}') - self.register_epoch_meter("val_RMSE", 'val', '{:.4f}') - - def init_test(self, cfg: dict): - """Initialize test. - - Including test meters, etc. - - Args: - cfg (dict): config - """ - - super().init_test(cfg) - - self.register_epoch_meter("test_loss", 'test', '{:.4f}') - self.register_epoch_meter("test_MAPE", 'test', '{:.4f}') - self.register_epoch_meter("test_RMSE", 'test', '{:.4f}') - - @staticmethod - def define_model(cfg: dict) -> nn.Module: - """Define model. - - If you have multiple models, insert the name and class into the dict below, - and select it through ```config```. - - Args: - cfg (dict): config - - Returns: - model (nn.Module) - """ - - return { - 'TSFormer': TSFormer - }[cfg['MODEL']['NAME']](**cfg['MODEL'].get('PARAM', {})) - - @staticmethod - def build_train_dataset(cfg: dict): - """Build MNIST train dataset - - Args: - cfg (dict): config - - Returns: - train dataset (Dataset) - """ - raw_file_path = cfg["TRAIN"]["DATA"]["DIR"] + "/data.pkl" - index_file_path = cfg["TRAIN"]["DATA"]["DIR"] + "/train_index.pkl" - seq_len = cfg['TRAIN']['DATA']['SEQ_LEN'] - dataset = MTSDataset(raw_file_path, index_file_path, seq_len, throw=True, pretrain=True) - return dataset - - @staticmethod - def build_val_dataset(cfg: dict): - """Build MNIST val dataset - - Args: - cfg (dict): config - - Returns: - train dataset (Dataset) - """ - raw_file_path = cfg["VAL"]["DATA"]["DIR"] + "/data.pkl" - index_file_path = cfg["VAL"]["DATA"]["DIR"] + "/valid_index.pkl" - seq_len = cfg['VAL']['DATA']['SEQ_LEN'] - dataset = MTSDataset(raw_file_path, index_file_path, seq_len, throw=True, pretrain=True) - return dataset - - @staticmethod - def build_test_dataset(cfg: dict): - """Build MNIST val dataset - - Args: - cfg (dict): config - - Returns: - train dataset (Dataset) - """ - raw_file_path = cfg["TEST"]["DATA"]["DIR"] + "/data.pkl" - index_file_path = cfg["TEST"]["DATA"]["DIR"] + "/test_index.pkl" - seq_len = cfg['TEST']['DATA']['SEQ_LEN'] - dataset = MTSDataset(raw_file_path, index_file_path, seq_len, throw=True, pretrain=True) - return dataset - - def train_iters(self, epoch, iter_index, data): - """Training details. - - Args: - epoch (int): current epoch. - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - - Returns: - loss (torch.Tensor) - """ - input_data = self.to_running_device(data[0]) - # abs_idx = self.to_running_device(data[1]).long() - - output_masked_tokens, label_masked_tokens, plot_args = self.model(input_data) - - # scale data and calculate loss - if "max" in self.scaler_args.keys(): # traffic flow - predict = self.scaler(output_masked_tokens.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - real_val = self.scaler(label_masked_tokens.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - mae_loss = self.loss(predict, real_val) - else: - ## inverse transform for both predict and real value. - predict = self.scaler(output_masked_tokens, **self.scaler_args) - real_val = self.scaler(label_masked_tokens, **self.scaler_args) - mae_loss = self.loss(predict, real_val, 0) - - loss = mae_loss - # metrics - mape = masked_mape(predict,real_val,0.0) - rmse = masked_rmse(predict,real_val,0.0) - - self.update_epoch_meter('train_loss', loss.item()) - self.update_epoch_meter('train_MAPE', mape.item()) - self.update_epoch_meter('train_RMSE', rmse.item()) - return loss - - def val_iters(self, iter_index, data): - """Validation details. - - Args: - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - """ - input_data = self.to_running_device(data[0]) - # abs_idx = self.to_running_device(data[1]).long() - - output_masked_tokens, label_masked_tokens, plot_args = self.model(input_data) - - # scale data and calculate loss - if "max" in self.scaler_args.keys(): # traffic flow - predict = self.scaler(output_masked_tokens.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - real_val = self.scaler(label_masked_tokens.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - loss = self.loss(predict, real_val) - else: - ## inverse transform for both predict and real value. - predict = self.scaler(output_masked_tokens, **self.scaler_args) - real_val = self.scaler(label_masked_tokens, **self.scaler_args) - loss = self.loss(predict, real_val, 0.0) - - # metrics - mape = masked_mape(predict,real_val,0.0) - rmse = masked_rmse(predict,real_val,0.0) - - self.update_epoch_meter('val_loss', loss.item()) - self.update_epoch_meter('val_MAPE', mape.item()) - self.update_epoch_meter('val_RMSE', rmse.item()) - - def test_iters(self, iter_index, data): - """Validation details. - - Args: - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - """ - input_data = self.to_running_device(data[0]) - # abs_idx = self.to_running_device(data[1]).long() - - output_masked_tokens, label_masked_tokens, plot_args = self.model(input_data) - - # scale data and calculate loss - if "max" in self.scaler_args.keys(): # traffic flow - predict = self.scaler(output_masked_tokens.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - real_val = self.scaler(label_masked_tokens.transpose(1,2).unsqueeze(-1), **self.scaler_args).transpose(1, 2).squeeze(-1) - loss = self.loss(predict, real_val) - else: - ## inverse transform for both predict and real value. - predict = self.scaler(output_masked_tokens, **self.scaler_args) - real_val = self.scaler(label_masked_tokens, **self.scaler_args) - loss = self.loss(predict, real_val, 0.0) - - # metrics - mape = masked_mape(predict,real_val,0.0) - rmse = masked_rmse(predict,real_val,0.0) - - self.update_epoch_meter('test_loss', loss.item()) - self.update_epoch_meter('test_MAPE', mape.item()) - self.update_epoch_meter('test_RMSE', rmse.item()) diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..f95d115 --- /dev/null +++ b/TODO.md @@ -0,0 +1 @@ +- Update README.md and datasets/README.md \ No newline at end of file diff --git a/basicts/__init__.py b/basicts/__init__.py new file mode 100644 index 0000000..7cc0167 --- /dev/null +++ b/basicts/__init__.py @@ -0,0 +1,5 @@ +from .launcher import launch_training + +__version__ = "0.1.0" + +__all__ = ["__version__", "launch_training"] diff --git a/basicts/archs/__init__.py b/basicts/archs/__init__.py new file mode 100644 index 0000000..a06aab3 --- /dev/null +++ b/basicts/archs/__init__.py @@ -0,0 +1,25 @@ +from .arch_zoo.stid_arch import STID +from .arch_zoo.gwnet_arch import GraphWaveNet +from .arch_zoo.dcrnn_arch import DCRNN +from .arch_zoo.d2stgnn_arch import D2STGNN +from .arch_zoo.stgcn_arch import STGCN +from .arch_zoo.mtgnn_arch import MTGNN +from .arch_zoo.stnorm_arch import STNorm +from .arch_zoo.agcrn_arch import AGCRN +from .arch_zoo.stemgnn_arch import StemGNN +from .arch_zoo.gts_arch import GTS +from .arch_zoo.dgcrn_arch import DGCRN +from .arch_zoo.linear_arch import Linear, DLinear, NLinear +from .arch_zoo.autoformer_arch import Autoformer +from .arch_zoo.hi_arch import HINetwork +from .arch_zoo.fedformer_arch import FEDformer +from .arch_zoo.informer_arch import Informer, InformerStack +from .arch_zoo.pyraformer_arch import Pyraformer + +__all__ = ["STID", "GraphWaveNet", "DCRNN", + "D2STGNN", "STGCN", "MTGNN", + "STNorm", "AGCRN", "StemGNN", + "GTS", "DGCRN", "Linear", + "DLinear", "NLinear", "Autoformer", + "HINetwork", "FEDformer", "Informer", + "InformerStack", "Pyraformer"] diff --git a/basicts/archs/arch_zoo/agcrn_arch/__init__.py b/basicts/archs/arch_zoo/agcrn_arch/__init__.py new file mode 100644 index 0000000..01b4cc8 --- /dev/null +++ b/basicts/archs/arch_zoo/agcrn_arch/__init__.py @@ -0,0 +1,3 @@ +from .agcrn_arch import AGCRN + +__all__ = ["AGCRN"] diff --git a/basicts/archs/arch_zoo/agcrn_arch/agcn.py b/basicts/archs/arch_zoo/agcrn_arch/agcn.py new file mode 100644 index 0000000..1cea52e --- /dev/null +++ b/basicts/archs/arch_zoo/agcrn_arch/agcn.py @@ -0,0 +1,35 @@ +import torch +import torch.nn.functional as F +import torch.nn as nn + + +class AVWGCN(nn.Module): + def __init__(self, dim_in, dim_out, cheb_k, embed_dim): + super(AVWGCN, self).__init__() + self.cheb_k = cheb_k + self.weights_pool = nn.Parameter( + torch.FloatTensor(embed_dim, cheb_k, dim_in, dim_out)) + self.bias_pool = nn.Parameter(torch.FloatTensor(embed_dim, dim_out)) + + def forward(self, x, node_embeddings): + # x shaped[B, N, C], node_embeddings shaped [N, D] -> supports shaped [N, N] + # output shape [B, N, C] + node_num = node_embeddings.shape[0] + supports = F.softmax( + F.relu(torch.mm(node_embeddings, node_embeddings.transpose(0, 1))), dim=1) + support_set = [torch.eye(node_num).to(supports.device), supports] + # default cheb_k = 3 + for k in range(2, self.cheb_k): + support_set.append(torch.matmul( + 2 * supports, support_set[-1]) - support_set[-2]) + supports = torch.stack(support_set, dim=0) + # N, cheb_k, dim_in, dim_out + weights = torch.einsum( + 'nd,dkio->nkio', node_embeddings, self.weights_pool) + bias = torch.matmul(node_embeddings, self.bias_pool) # N, dim_out + x_g = torch.einsum("knm,bmc->bknc", supports, + x) # B, cheb_k, N, dim_in + x_g = x_g.permute(0, 2, 1, 3) # B, N, cheb_k, dim_in + x_gconv = torch.einsum('bnki,nkio->bno', x_g, + weights) + bias # b, N, dim_out + return x_gconv diff --git a/basicts/archs/arch_zoo/agcrn_arch/agcrn_arch.py b/basicts/archs/arch_zoo/agcrn_arch/agcrn_arch.py new file mode 100644 index 0000000..a64a1c8 --- /dev/null +++ b/basicts/archs/arch_zoo/agcrn_arch/agcrn_arch.py @@ -0,0 +1,108 @@ +import torch +import torch.nn as nn + +from .agcrn_cell import AGCRNCell + + +class AVWDCRNN(nn.Module): + def __init__(self, node_num, dim_in, dim_out, cheb_k, embed_dim, num_layers=1): + super(AVWDCRNN, self).__init__() + assert num_layers >= 1, 'At least one DCRNN layer in the Encoder.' + self.node_num = node_num + self.input_dim = dim_in + self.num_layers = num_layers + self.dcrnn_cells = nn.ModuleList() + self.dcrnn_cells.append( + AGCRNCell(node_num, dim_in, dim_out, cheb_k, embed_dim)) + for _ in range(1, num_layers): + self.dcrnn_cells.append( + AGCRNCell(node_num, dim_out, dim_out, cheb_k, embed_dim)) + + def forward(self, x, init_state, node_embeddings): + # shape of x: (B, T, N, D) + # shape of init_state: (num_layers, B, N, hidden_dim) + assert x.shape[2] == self.node_num and x.shape[3] == self.input_dim + seq_length = x.shape[1] + current_inputs = x + output_hidden = [] + for i in range(self.num_layers): + state = init_state[i] + inner_states = [] + for t in range(seq_length): + state = self.dcrnn_cells[i]( + current_inputs[:, t, :, :], state, node_embeddings) + inner_states.append(state) + output_hidden.append(state) + current_inputs = torch.stack(inner_states, dim=1) + # current_inputs: the outputs of last layer: (B, T, N, hidden_dim) + # output_hidden: the last state for each layer: (num_layers, B, N, hidden_dim) + #last_state: (B, N, hidden_dim) + return current_inputs, output_hidden + + def init_hidden(self, batch_size): + init_states = [] + for i in range(self.num_layers): + init_states.append( + self.dcrnn_cells[i].init_hidden_state(batch_size)) + # (num_layers, B, N, hidden_dim) + return torch.stack(init_states, dim=0) + + +class AGCRN(nn.Module): + """ + Paper: Adaptive Graph Convolutional Recurrent Network for Traf๏ฌc Forecasting + Official Code: https://github.com/LeiBAI/AGCRN + Link: https://arxiv.org/abs/2007.02842 + """ + + def __init__(self, num_nodes, input_dim, rnn_units, output_dim, horizon, num_layers, default_graph, embed_dim, cheb_k): + super(AGCRN, self).__init__() + self.num_node = num_nodes + self.input_dim = input_dim + self.hidden_dim = rnn_units + self.output_dim = output_dim + self.horizon = horizon + self.num_layers = num_layers + + self.default_graph = default_graph + self.node_embeddings = nn.Parameter(torch.randn( + self.num_node, embed_dim), requires_grad=True) + + self.encoder = AVWDCRNN(num_nodes, input_dim, rnn_units, cheb_k, + embed_dim, num_layers) + + # predictor + self.end_conv = nn.Conv2d( + 1, horizon * self.output_dim, kernel_size=(1, self.hidden_dim), bias=True) + + self.init_param() + + def init_param(self): + for p in self.parameters(): + if p.dim() > 1: + nn.init.xavier_uniform_(p) + else: + nn.init.uniform_(p) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feedforward function of AGCRN. + + Args: + history_data (torch.Tensor): inputs with shape [B, L, N, C]. + + Returns: + torch.Tensor: outputs with shape [B, L, N, C] + """ + + init_state = self.encoder.init_hidden(history_data.shape[0]) + output, _ = self.encoder( + history_data, init_state, self.node_embeddings) # B, T, N, hidden + output = output[:, -1:, :, :] # B, 1, N, hidden + + # CNN based predictor + output = self.end_conv((output)) # B, T*C, N, 1 + output = output.squeeze(-1).reshape(-1, self.horizon, + self.output_dim, self.num_node) + output = output.permute(0, 1, 3, 2) # B, T, N, C + + return output diff --git a/basicts/archs/arch_zoo/agcrn_arch/agcrn_cell.py b/basicts/archs/arch_zoo/agcrn_arch/agcrn_cell.py new file mode 100644 index 0000000..d11c6d5 --- /dev/null +++ b/basicts/archs/arch_zoo/agcrn_arch/agcrn_cell.py @@ -0,0 +1,30 @@ +import torch +import torch.nn as nn + +from .agcn import AVWGCN + + +class AGCRNCell(nn.Module): + def __init__(self, node_num, dim_in, dim_out, cheb_k, embed_dim): + super(AGCRNCell, self).__init__() + self.node_num = node_num + self.hidden_dim = dim_out + self.gate = AVWGCN(dim_in+self.hidden_dim, 2 * + dim_out, cheb_k, embed_dim) + self.update = AVWGCN(dim_in+self.hidden_dim, + dim_out, cheb_k, embed_dim) + + def forward(self, x, state, node_embeddings): + # x: B, num_nodes, input_dim + # state: B, num_nodes, hidden_dim + state = state.to(x.device) + input_and_state = torch.cat((x, state), dim=-1) + z_r = torch.sigmoid(self.gate(input_and_state, node_embeddings)) + z, r = torch.split(z_r, self.hidden_dim, dim=-1) + candidate = torch.cat((x, z*state), dim=-1) + hc = torch.tanh(self.update(candidate, node_embeddings)) + h = r*state + (1-r)*hc + return h + + def init_hidden_state(self, batch_size): + return torch.zeros(batch_size, self.node_num, self.hidden_dim) diff --git a/basicts/archs/arch_zoo/autoformer_arch/__init__.py b/basicts/archs/arch_zoo/autoformer_arch/__init__.py new file mode 100644 index 0000000..d9d867b --- /dev/null +++ b/basicts/archs/arch_zoo/autoformer_arch/__init__.py @@ -0,0 +1,3 @@ +from .autoformer_arch import Autoformer + +__all__ = ["Autoformer"] diff --git a/basicts/archs/arch_zoo/autoformer_arch/auto_correlation.py b/basicts/archs/arch_zoo/autoformer_arch/auto_correlation.py new file mode 100644 index 0000000..d62f93a --- /dev/null +++ b/basicts/archs/arch_zoo/autoformer_arch/auto_correlation.py @@ -0,0 +1,160 @@ +import math + +import torch +import torch.nn as nn + + +class AutoCorrelation(nn.Module): + """ + AutoCorrelation Mechanism with the following two phases: + (1) period-based dependencies discovery + (2) time delay aggregation + This block can replace the self-attention family mechanism seamlessly. + """ + def __init__(self, mask_flag=True, factor=1, scale=None, attention_dropout=0.1, output_attention=False): + super(AutoCorrelation, self).__init__() + self.factor = factor + self.scale = scale + self.mask_flag = mask_flag + self.output_attention = output_attention + self.dropout = nn.Dropout(attention_dropout) + + def time_delay_agg_training(self, values, corr): + """ + SpeedUp version of Autocorrelation (a batch-normalization style design) + This is for the training phase. + """ + head = values.shape[1] + channel = values.shape[2] + length = values.shape[3] + # find top k + top_k = int(self.factor * math.log(length)) + mean_value = torch.mean(torch.mean(corr, dim=1), dim=1) + index = torch.topk(torch.mean(mean_value, dim=0), top_k, dim=-1)[1] + weights = torch.stack([mean_value[:, index[i]] for i in range(top_k)], dim=-1) + # update corr + tmp_corr = torch.softmax(weights, dim=-1) + # aggregation + tmp_values = values + delays_agg = torch.zeros_like(values).float() + for i in range(top_k): + pattern = torch.roll(tmp_values, -int(index[i]), -1) + delays_agg = delays_agg + pattern * \ + (tmp_corr[:, i].unsqueeze(1).unsqueeze(1).unsqueeze(1).repeat(1, head, channel, length)) + return delays_agg + + def time_delay_agg_inference(self, values, corr): + """ + SpeedUp version of Autocorrelation (a batch-normalization style design) + This is for the inference phase. + """ + batch = values.shape[0] + head = values.shape[1] + channel = values.shape[2] + length = values.shape[3] + # index init + init_index = torch.arange(length).unsqueeze(0).unsqueeze(0).unsqueeze(0)\ + .repeat(batch, head, channel, 1).to(values.device) + # find top k + top_k = int(self.factor * math.log(length)) + mean_value = torch.mean(torch.mean(corr, dim=1), dim=1) + weights, delay = torch.topk(mean_value, top_k, dim=-1) + # update corr + tmp_corr = torch.softmax(weights, dim=-1) + # aggregation + tmp_values = values.repeat(1, 1, 1, 2) + delays_agg = torch.zeros_like(values).float() + for i in range(top_k): + tmp_delay = init_index + delay[:, i].unsqueeze(1).unsqueeze(1).unsqueeze(1).repeat(1, head, channel, length) + pattern = torch.gather(tmp_values, dim=-1, index=tmp_delay) + delays_agg = delays_agg + pattern * \ + (tmp_corr[:, i].unsqueeze(1).unsqueeze(1).unsqueeze(1).repeat(1, head, channel, length)) + return delays_agg + + def time_delay_agg_full(self, values, corr): + """ + Standard version of Autocorrelation + """ + batch = values.shape[0] + head = values.shape[1] + channel = values.shape[2] + length = values.shape[3] + # index init + init_index = torch.arange(length).unsqueeze(0).unsqueeze(0).unsqueeze(0)\ + .repeat(batch, head, channel, 1).to(values.device) + # find top k + top_k = int(self.factor * math.log(length)) + weights, delay = torch.topk(corr, top_k, dim=-1) + # update corr + tmp_corr = torch.softmax(weights, dim=-1) + # aggregation + tmp_values = values.repeat(1, 1, 1, 2) + delays_agg = torch.zeros_like(values).float() + for i in range(top_k): + tmp_delay = init_index + delay[..., i].unsqueeze(-1) + pattern = torch.gather(tmp_values, dim=-1, index=tmp_delay) + delays_agg = delays_agg + pattern * (tmp_corr[..., i].unsqueeze(-1)) + return delays_agg + + def forward(self, queries, keys, values, attn_mask): + B, L, H, E = queries.shape + _, S, _, D = values.shape + if L > S: + zeros = torch.zeros_like(queries[:, :(L - S), :]).float() + values = torch.cat([values, zeros], dim=1) + keys = torch.cat([keys, zeros], dim=1) + else: + values = values[:, :L, :, :] + keys = keys[:, :L, :, :] + + # period-based dependencies + q_fft = torch.fft.rfft(queries.permute(0, 2, 3, 1).contiguous(), dim=-1) + k_fft = torch.fft.rfft(keys.permute(0, 2, 3, 1).contiguous(), dim=-1) + res = q_fft * torch.conj(k_fft) + corr = torch.fft.irfft(res, dim=-1) + + # time delay agg + if self.training: + V = self.time_delay_agg_training(values.permute(0, 2, 3, 1).contiguous(), corr).permute(0, 3, 1, 2) + else: + V = self.time_delay_agg_inference(values.permute(0, 2, 3, 1).contiguous(), corr).permute(0, 3, 1, 2) + + if self.output_attention: + return (V.contiguous(), corr.permute(0, 3, 1, 2)) + else: + return (V.contiguous(), None) + + +class AutoCorrelationLayer(nn.Module): + def __init__(self, correlation, d_model, n_heads, d_keys=None, + d_values=None): + super(AutoCorrelationLayer, self).__init__() + + d_keys = d_keys or (d_model // n_heads) + d_values = d_values or (d_model // n_heads) + + self.inner_correlation = correlation + self.query_projection = nn.Linear(d_model, d_keys * n_heads) + self.key_projection = nn.Linear(d_model, d_keys * n_heads) + self.value_projection = nn.Linear(d_model, d_values * n_heads) + self.out_projection = nn.Linear(d_values * n_heads, d_model) + self.n_heads = n_heads + + def forward(self, queries, keys, values, attn_mask): + B, L, _ = queries.shape + _, S, _ = keys.shape + H = self.n_heads + + queries = self.query_projection(queries).view(B, L, H, -1) + keys = self.key_projection(keys).view(B, S, H, -1) + values = self.value_projection(values).view(B, S, H, -1) + + out, attn = self.inner_correlation( + queries, + keys, + values, + attn_mask + ) + out = out.view(B, L, -1) + + return self.out_projection(out), attn diff --git a/basicts/archs/arch_zoo/autoformer_arch/autoformer_arch.py b/basicts/archs/arch_zoo/autoformer_arch/autoformer_arch.py new file mode 100644 index 0000000..ec3e249 --- /dev/null +++ b/basicts/archs/arch_zoo/autoformer_arch/autoformer_arch.py @@ -0,0 +1,135 @@ +import torch +import torch.nn as nn + +from .embed import DataEmbedding_wo_pos, DataEmbedding +from .auto_correlation import AutoCorrelation, AutoCorrelationLayer +from .enc_dec import Encoder, Decoder, EncoderLayer, DecoderLayer, my_Layernorm, series_decomp +from ..utils import data_transformation_4_xformer + + +class Autoformer(nn.Module): + """ + Paper: Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting + Link: https://arxiv.org/abs/2206.09112 + Ref Official Code: https://github.com/thuml/Autoformer + """ + + def __init__(self, **model_args): + super(Autoformer, self).__init__() + self.seq_len = int(model_args["seq_len"]) + self.label_len = int(model_args["label_len"]) + self.pred_len = int(model_args["pred_len"]) + self.output_attention = model_args["output_attention"] + self.embedding_type = model_args["embedding_type"] + + # Decomp + kernel_size = model_args["moving_avg"] + self.decomp = series_decomp(kernel_size) + + # Embedding + # The series-wise connection inherently contains the sequential information. + # Thus, we can discard the position embedding of transformers. + if self.embedding_type == "DataEmbedding_wo_pos": + self.enc_embedding = DataEmbedding_wo_pos(model_args["enc_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + self.dec_embedding = DataEmbedding_wo_pos(model_args["dec_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + elif self.embedding_type == "DataEmbedding": + self.enc_embedding = DataEmbedding(model_args["enc_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + self.dec_embedding = DataEmbedding(model_args["dec_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + else: + raise Exception("Unknown embedding type.") + + # Encoder + self.encoder = Encoder( + [ + EncoderLayer( + AutoCorrelationLayer( + AutoCorrelation(False, model_args["factor"], attention_dropout=model_args["dropout"], + output_attention=model_args["output_attention"]), + model_args["d_model"], model_args["n_heads"]), + model_args["d_model"], + model_args["d_ff"], + moving_avg=model_args["moving_avg"], + dropout=model_args["dropout"], + activation=model_args["activation"] + ) for l in range(model_args["e_layers"]) + ], + norm_layer=my_Layernorm(model_args["d_model"]) + ) + # Decoder + self.decoder = Decoder( + [ + DecoderLayer( + AutoCorrelationLayer( + AutoCorrelation(True, model_args["factor"], attention_dropout=model_args["dropout"], + output_attention=False), + model_args["d_model"], model_args["n_heads"]), + AutoCorrelationLayer( + AutoCorrelation(False, model_args["factor"], attention_dropout=model_args["dropout"], + output_attention=False), + model_args["d_model"], model_args["n_heads"]), + model_args["d_model"], + model_args["c_out"], + model_args["d_ff"], + moving_avg=model_args["moving_avg"], + dropout=model_args["dropout"], + activation=model_args["activation"], + ) + for l in range(model_args["d_layers"]) + ], + norm_layer=my_Layernorm(model_args["d_model"]), + projection=nn.Linear(model_args["d_model"], model_args["c_out"], bias=True) + ) + + def forward_xformer(self, x_enc: torch.Tensor, x_mark_enc: torch.Tensor, x_dec: torch.Tensor, x_mark_dec: torch.Tensor, + enc_self_mask: torch.Tensor=None, dec_self_mask: torch.Tensor=None, dec_enc_mask: torch.Tensor=None) -> torch.Tensor: + """Feed forward of AutoFormer. Kindly note that `enc_self_mask`, `dec_self_mask`, and `dec_enc_mask` are not actually used in AutoFormer. + See: + - https://github.com/thuml/Autoformer/blob/e116bbcf41f537f4ab53d172d9babfc0a026330f/layers/AutoCorrelation.py#L103 + - https://github.com/thuml/Autoformer/blob/e116bbcf41f537f4ab53d172d9babfc0a026330f/exp/exp_main.py#L136 + + Args: + x_enc (torch.Tensor): input data of encoder (without the time features). Shape: [B, L1, N] + x_mark_enc (torch.Tensor): time features input of encoder w.r.t. x_enc. Shape: [B, L1, C-1] + x_dec (torch.Tensor): input data of decoder. Shape: [B, start_token_length + L2, N] + x_mark_dec (torch.Tensor): time features input to decoder w.r.t. x_dec. Shape: [B, start_token_length + L2, C-1] + enc_self_mask (torch.Tensor, optional): encoder self attention masks. Defaults to None. + dec_self_mask (torch.Tensor, optional): decoder self attention masks. Defaults to None. + dec_enc_mask (torch.Tensor, optional): decoder encoder self attention masks. Defaults to None. + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + # decomp init + mean = torch.mean(x_enc, dim=1).unsqueeze(1).repeat(1, self.pred_len, 1) + zeros = torch.zeros([x_dec.shape[0], self.pred_len, x_dec.shape[2]], device=x_enc.device) + seasonal_init, trend_init = self.decomp(x_enc) + # decoder input + trend_init = torch.cat([trend_init[:, -self.label_len:, :], mean], dim=1) + seasonal_init = torch.cat([seasonal_init[:, -self.label_len:, :], zeros], dim=1) + # enc + enc_out = self.enc_embedding(x_enc, x_mark_enc) + enc_out, attns = self.encoder(enc_out, attn_mask=enc_self_mask) + # dec + dec_out = self.dec_embedding(seasonal_init, x_mark_dec) + seasonal_part, trend_part = self.decoder(dec_out, enc_out, x_mask=dec_self_mask, cross_mask=dec_enc_mask, + trend=trend_init) + # final + dec_out = trend_part + seasonal_part + + return dec_out[:, -self.pred_len:, :].unsqueeze(-1) # [B, L, N, C] + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """ + + Args: + history_data (Tensor): Input data with shape: [B, L1, N, C] + future_data (Tensor): Future data with shape: [B, L2, N, C] + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + x_enc, x_mark_enc, x_dec, x_mark_dec = data_transformation_4_xformer(history_data=history_data, future_data=future_data, start_token_len=self.label_len) + prediction = self.forward_xformer(x_enc=x_enc, x_mark_enc=x_mark_enc, x_dec=x_dec, x_mark_dec=x_mark_dec) + return prediction diff --git a/basicts/archs/arch_zoo/autoformer_arch/embed.py b/basicts/archs/arch_zoo/autoformer_arch/embed.py new file mode 100644 index 0000000..c5ccb01 --- /dev/null +++ b/basicts/archs/arch_zoo/autoformer_arch/embed.py @@ -0,0 +1,98 @@ +import math + +import torch +import torch.nn as nn + + +class PositionalEmbedding(nn.Module): + def __init__(self, d_model, max_len=5000): + super(PositionalEmbedding, self).__init__() + # Compute the positional encodings once in log space. + pe = torch.zeros(max_len, d_model).float() + pe.require_grad = False + + position = torch.arange(0, max_len).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() * -(math.log(10000.0) / d_model)).exp() + + pe[:, 0::2] = torch.sin(position * div_term) + pe[:, 1::2] = torch.cos(position * div_term) + + pe = pe.unsqueeze(0) + self.register_buffer('pe', pe) + + def forward(self, x): + return self.pe[:, :x.size(1)] + + +class TokenEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(TokenEmbedding, self).__init__() + padding = 1 if torch.__version__ >= '1.5.0' else 2 + self.tokenConv = nn.Conv1d(in_channels=c_in, out_channels=d_model, + kernel_size=3, padding=padding, padding_mode='circular') + for m in self.modules(): + if isinstance(m, nn.Conv1d): + nn.init.kaiming_normal_(m.weight, mode='fan_in', nonlinearity='leaky_relu') + + def forward(self, x): + x = self.tokenConv(x.permute(0, 2, 1)).transpose(1, 2) + return x + + +class FixedEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(FixedEmbedding, self).__init__() + + w = torch.zeros(c_in, d_model).float() + w.require_grad = False + + position = torch.arange(0, c_in).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() * -(math.log(10000.0) / d_model)).exp() + + w[:, 0::2] = torch.sin(position * div_term) + w[:, 1::2] = torch.cos(position * div_term) + + self.emb = nn.Embedding(c_in, d_model) + self.emb.weight = nn.Parameter(w, requires_grad=False) + + def forward(self, x): + return self.emb(x).detach() + + +class TimeFeatureEmbedding(nn.Module): + def __init__(self, d_model, num_time_features): + super(TimeFeatureEmbedding, self).__init__() + # freq_map = {'h': 2} + # NOTE: this is different from official autoformer, since METR-LA, PEMS-BAY, and PEMS0X datasets only contain two kind of temporal features (time in day, day in week) + self.embed = nn.Linear(num_time_features, d_model, bias=False) + + def forward(self, x): + return self.embed(x) + + +class DataEmbedding(nn.Module): + def __init__(self, c_in, d_model, num_time_features, dropout=0.1): + super(DataEmbedding, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.temporal_embedding = TimeFeatureEmbedding(d_model=d_model, num_time_features=num_time_features) + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding(x) + self.position_embedding(x) + self.temporal_embedding(x_mark) + return self.dropout(x) + + +class DataEmbedding_wo_pos(nn.Module): + def __init__(self, c_in, d_model, num_time_features, dropout=0.1): + super(DataEmbedding_wo_pos, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.temporal_embedding = TimeFeatureEmbedding(d_model=d_model, num_time_features=num_time_features) + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding(x) + self.temporal_embedding(x_mark) + return self.dropout(x) diff --git a/basicts/archs/arch_zoo/autoformer_arch/enc_dec.py b/basicts/archs/arch_zoo/autoformer_arch/enc_dec.py new file mode 100644 index 0000000..00b3a7a --- /dev/null +++ b/basicts/archs/arch_zoo/autoformer_arch/enc_dec.py @@ -0,0 +1,173 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class my_Layernorm(nn.Module): + """ + Special designed layernorm for the seasonal part + """ + def __init__(self, channels): + super(my_Layernorm, self).__init__() + self.layernorm = nn.LayerNorm(channels) + + def forward(self, x): + x_hat = self.layernorm(x) + bias = torch.mean(x_hat, dim=1).unsqueeze(1).repeat(1, x.shape[1], 1) + return x_hat - bias + + +class moving_avg(nn.Module): + """ + Moving average block to highlight the trend of time series + """ + def __init__(self, kernel_size, stride): + super(moving_avg, self).__init__() + self.kernel_size = kernel_size + self.avg = nn.AvgPool1d(kernel_size=kernel_size, stride=stride, padding=0) + + def forward(self, x): + # padding on the both ends of time series + front = x[:, 0:1, :].repeat(1, (self.kernel_size - 1) // 2, 1) + end = x[:, -1:, :].repeat(1, (self.kernel_size - 1) // 2, 1) + x = torch.cat([front, x, end], dim=1) + x = self.avg(x.permute(0, 2, 1)) + x = x.permute(0, 2, 1) + return x + + +class series_decomp(nn.Module): + """ + Series decomposition block + """ + def __init__(self, kernel_size): + super(series_decomp, self).__init__() + self.moving_avg = moving_avg(kernel_size, stride=1) + + def forward(self, x): + moving_mean = self.moving_avg(x) + res = x - moving_mean + return res, moving_mean + + +class EncoderLayer(nn.Module): + """ + Autoformer encoder layer with the progressive decomposition architecture + """ + def __init__(self, attention, d_model, d_ff=None, moving_avg=25, dropout=0.1, activation="relu"): + super(EncoderLayer, self).__init__() + d_ff = d_ff or 4 * d_model + self.attention = attention + self.conv1 = nn.Conv1d(in_channels=d_model, out_channels=d_ff, kernel_size=1, bias=False) + self.conv2 = nn.Conv1d(in_channels=d_ff, out_channels=d_model, kernel_size=1, bias=False) + self.decomp1 = series_decomp(moving_avg) + self.decomp2 = series_decomp(moving_avg) + self.dropout = nn.Dropout(dropout) + self.activation = F.relu if activation == "relu" else F.gelu + + def forward(self, x, attn_mask=None): + new_x, attn = self.attention( + x, x, x, + attn_mask=attn_mask + ) + x = x + self.dropout(new_x) + x, _ = self.decomp1(x) + y = x + y = self.dropout(self.activation(self.conv1(y.transpose(-1, 1)))) + y = self.dropout(self.conv2(y).transpose(-1, 1)) + res, _ = self.decomp2(x + y) + return res, attn + + +class Encoder(nn.Module): + """ + Autoformer encoder + """ + def __init__(self, attn_layers, conv_layers=None, norm_layer=None): + super(Encoder, self).__init__() + self.attn_layers = nn.ModuleList(attn_layers) + self.conv_layers = nn.ModuleList(conv_layers) if conv_layers is not None else None + self.norm = norm_layer + + def forward(self, x, attn_mask=None): + attns = [] + if self.conv_layers is not None: + for attn_layer, conv_layer in zip(self.attn_layers, self.conv_layers): + x, attn = attn_layer(x, attn_mask=attn_mask) + x = conv_layer(x) + attns.append(attn) + x, attn = self.attn_layers[-1](x) + attns.append(attn) + else: + for attn_layer in self.attn_layers: + x, attn = attn_layer(x, attn_mask=attn_mask) + attns.append(attn) + + if self.norm is not None: + x = self.norm(x) + + return x, attns + + +class DecoderLayer(nn.Module): + """ + Autoformer decoder layer with the progressive decomposition architecture + """ + def __init__(self, self_attention, cross_attention, d_model, c_out, d_ff=None, + moving_avg=25, dropout=0.1, activation="relu"): + super(DecoderLayer, self).__init__() + d_ff = d_ff or 4 * d_model + self.self_attention = self_attention + self.cross_attention = cross_attention + self.conv1 = nn.Conv1d(in_channels=d_model, out_channels=d_ff, kernel_size=1, bias=False) + self.conv2 = nn.Conv1d(in_channels=d_ff, out_channels=d_model, kernel_size=1, bias=False) + self.decomp1 = series_decomp(moving_avg) + self.decomp2 = series_decomp(moving_avg) + self.decomp3 = series_decomp(moving_avg) + self.dropout = nn.Dropout(dropout) + self.projection = nn.Conv1d(in_channels=d_model, out_channels=c_out, kernel_size=3, stride=1, padding=1, + padding_mode='circular', bias=False) + self.activation = F.relu if activation == "relu" else F.gelu + + def forward(self, x, cross, x_mask=None, cross_mask=None): + x = x + self.dropout(self.self_attention( + x, x, x, + attn_mask=x_mask + )[0]) + x, trend1 = self.decomp1(x) + x = x + self.dropout(self.cross_attention( + x, cross, cross, + attn_mask=cross_mask + )[0]) + x, trend2 = self.decomp2(x) + y = x + y = self.dropout(self.activation(self.conv1(y.transpose(-1, 1)))) + y = self.dropout(self.conv2(y).transpose(-1, 1)) + x, trend3 = self.decomp3(x + y) + + residual_trend = trend1 + trend2 + trend3 + residual_trend = self.projection(residual_trend.permute(0, 2, 1)).transpose(1, 2) + return x, residual_trend + + +class Decoder(nn.Module): + """ + Autoformer encoder + """ + def __init__(self, layers, norm_layer=None, projection=None): + super(Decoder, self).__init__() + self.layers = nn.ModuleList(layers) + self.norm = norm_layer + self.projection = projection + + def forward(self, x, cross, x_mask=None, cross_mask=None, trend=None): + for layer in self.layers: + x, residual_trend = layer(x, cross, x_mask=x_mask, cross_mask=cross_mask) + trend = trend + residual_trend + + if self.norm is not None: + x = self.norm(x) + + if self.projection is not None: + x = self.projection(x) + return x, trend diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/__init__.py b/basicts/archs/arch_zoo/d2stgnn_arch/__init__.py new file mode 100644 index 0000000..50fbf7f --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/__init__.py @@ -0,0 +1,3 @@ +from .d2stgnn_arch import D2STGNN + +__all__ = ["D2STGNN"] diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/d2stgnn_arch.py b/basicts/archs/arch_zoo/d2stgnn_arch/d2stgnn_arch.py new file mode 100644 index 0000000..91a4633 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/d2stgnn_arch.py @@ -0,0 +1,184 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + +from .difusion_block import DifBlock +from .inherent_block import InhBlock +from .dynamic_graph_conv.dy_graph_conv import DynamicGraphConstructor +from .decouple.estimation_gate import EstimationGate + + +class DecoupleLayer(nn.Module): + def __init__(self, hidden_dim, fk_dim=256, first=False, **model_args): + super().__init__() + self.spatial_gate = EstimationGate( + model_args['node_hidden'], model_args['time_emb_dim'], 64, model_args['seq_length']) + self.dif_layer = DifBlock(hidden_dim, fk_dim=fk_dim, **model_args) + self.inh_layer = InhBlock( + hidden_dim, fk_dim=fk_dim, first=first, **model_args) + + def forward(self, X: torch.Tensor, dynamic_graph: torch.Tensor, static_graph, E_u, E_d, T_D, D_W): + """decouple layer + + Args: + X (torch.Tensor): input data with shape (B, L, N, D) + dynamic_graph (list of torch.Tensor): dynamic graph adjacency matrix with shape (B, N, k_t * N) + static_graph (ist of torch.Tensor): the self-adaptive transition matrix with shape (N, N) + E_u (torch.Parameter): node embedding E_u + E_d (torch.Parameter): node embedding E_d + T_D (torch.Parameter): time embedding T_D + D_W (torch.Parameter): time embedding D_W + + Returns: + torch.Tensor: the undecoupled signal in this layer, i.e., the X^{l+1}, which should be feeded to the next layer. shape [B, L', N, D]. + torch.Tensor: the output of the forecast branch of Diffusion Block with shape (B, L'', N, D), where L''=output_seq_len / model_args['gap'] to avoid error accumulation in auto-regression. + torch.Tensor: the output of the forecast branch of Inherent Block with shape (B, L'', N, D), where L''=output_seq_len / model_args['gap'] to avoid error accumulation in auto-regression. + """ + X_spa = self.spatial_gate(E_u, E_d, T_D, D_W, X) + dif_backcast_seq_res, dif_forecast_hidden = self.dif_layer( + X=X, X_spa=X_spa, dynamic_graph=dynamic_graph, static_graph=static_graph) + inh_backcast_seq_res, inh_forecast_hidden = self.inh_layer( + dif_backcast_seq_res) + return inh_backcast_seq_res, dif_forecast_hidden, inh_forecast_hidden + + +class D2STGNN(nn.Module): + """ + Paper: Decoupled Dynamic Spatial-Temporal Graph Neural Network for Traffic Forecasting + Link: https://arxiv.org/abs/2206.09112 + Official Code: https://github.com/zezhishao/D2STGNN + """ + def __init__(self, **model_args): + super().__init__() + # attributes + self._in_feat = model_args['num_feat'] + self._hidden_dim = model_args['num_hidden'] + self._node_dim = model_args['node_hidden'] + self._forecast_dim = 256 + self._output_hidden = 512 + self._output_dim = model_args['seq_length'] + + self._num_nodes = model_args['num_nodes'] + self._k_s = model_args['k_s'] + self._k_t = model_args['k_t'] + self._num_layers = 5 + + model_args['use_pre'] = False + model_args['dy_graph'] = True + model_args['sta_graph'] = True + + self._model_args = model_args + + # start embedding layer + self.embedding = nn.Linear(self._in_feat, self._hidden_dim) + + # time embedding + self.T_i_D_emb = nn.Parameter( + torch.empty(288, model_args['time_emb_dim'])) + self.D_i_W_emb = nn.Parameter( + torch.empty(7, model_args['time_emb_dim'])) + + # Decoupled Spatial Temporal Layer + self.layers = nn.ModuleList([DecoupleLayer( + self._hidden_dim, fk_dim=self._forecast_dim, first=True, **model_args)]) + for _ in range(self._num_layers - 1): + self.layers.append(DecoupleLayer( + self._hidden_dim, fk_dim=self._forecast_dim, **model_args)) + + # dynamic and static hidden graph constructor + if model_args['dy_graph']: + self.dynamic_graph_constructor = DynamicGraphConstructor( + **model_args) + + # node embeddings + self.node_emb_u = nn.Parameter( + torch.empty(self._num_nodes, self._node_dim)) + self.node_emb_d = nn.Parameter( + torch.empty(self._num_nodes, self._node_dim)) + + # output layer + self.out_fc_1 = nn.Linear(self._forecast_dim, self._output_hidden) + self.out_fc_2 = nn.Linear(self._output_hidden, model_args['gap']) + + self.reset_parameter() + + def reset_parameter(self): + nn.init.xavier_uniform_(self.node_emb_u) + nn.init.xavier_uniform_(self.node_emb_d) + nn.init.xavier_uniform_(self.T_i_D_emb) + nn.init.xavier_uniform_(self.D_i_W_emb) + + def _graph_constructor(self, **inputs): + E_d = inputs['E_d'] + E_u = inputs['E_u'] + if self._model_args['sta_graph']: + static_graph = [F.softmax(F.relu(torch.mm(E_d, E_u.T)), dim=1)] + else: + static_graph = [] + if self._model_args['dy_graph']: + dynamic_graph = self.dynamic_graph_constructor(**inputs) + else: + dynamic_graph = [] + return static_graph, dynamic_graph + + def _prepare_inputs(self, X): + num_feat = self._model_args['num_feat'] + # node embeddings + node_emb_u = self.node_emb_u # [N, d] + node_emb_d = self.node_emb_d # [N, d] + # time slot embedding + # [B, L, N, d] + T_i_D = self.T_i_D_emb[(X[:, :, :, num_feat] * + 288).type(torch.LongTensor)] + # [B, L, N, d] + D_i_W = self.D_i_W_emb[(X[:, :, :, num_feat+1]).type(torch.LongTensor)] + # traffic signals + X = X[:, :, :, :num_feat] + + return X, node_emb_u, node_emb_d, T_i_D, D_i_W + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """ + + Args: + history_data (Tensor): Input data with shape: [B, L, N, C] + + Returns: + torch.Tensor: outputs with shape [B, L, N, C] + """ + + X = history_data + # ==================== Prepare Input Data ==================== # + X, E_u, E_d, T_D, D_W = self._prepare_inputs(X) + + # ========================= Construct Graphs ========================== # + static_graph, dynamic_graph = self._graph_constructor( + E_u=E_u, E_d=E_d, X=X, T_D=T_D, D_W=D_W) + + # Start embedding layer + X = self.embedding(X) + + spa_forecast_hidden_list = [] + tem_forecast_hidden_list = [] + + tem_backcast_seq_res = X + for index, layer in enumerate(self.layers): + tem_backcast_seq_res, spa_forecast_hidden, tem_forecast_hidden = layer( + tem_backcast_seq_res, dynamic_graph, static_graph, E_u, E_d, T_D, D_W) + spa_forecast_hidden_list.append(spa_forecast_hidden) + tem_forecast_hidden_list.append(tem_forecast_hidden) + + # Output Layer + spa_forecast_hidden = sum(spa_forecast_hidden_list) + tem_forecast_hidden = sum(tem_forecast_hidden_list) + forecast_hidden = spa_forecast_hidden + tem_forecast_hidden + + # regression layer + forecast = self.out_fc_2( + F.relu(self.out_fc_1(F.relu(forecast_hidden)))) + forecast = forecast.transpose(1, 2).contiguous().view( + forecast.shape[0], forecast.shape[2], -1) + + # reshape + forecast = forecast.transpose(1, 2).unsqueeze(-1) + return forecast diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/decouple/estimation_gate.py b/basicts/archs/arch_zoo/d2stgnn_arch/decouple/estimation_gate.py new file mode 100644 index 0000000..0789386 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/decouple/estimation_gate.py @@ -0,0 +1,22 @@ +import torch +import torch.nn as nn + +class EstimationGate(nn.Module): + r""" + The spatial gate module. + """ + def __init__(self, node_emb_dim, time_emb_dim, hidden_dim, input_seq_len): + super().__init__() + self.FC1 = nn.Linear(2 * node_emb_dim + time_emb_dim * 2, hidden_dim) + self.act = nn.ReLU() + self.FC2 = nn.Linear(hidden_dim, 1) + + def forward(self, node_embedding1, node_embedding2, T_D, D_W, X): + B, L, N, D = T_D.shape + spatial_gate_feat = torch.cat([T_D, D_W, node_embedding1.unsqueeze(0).unsqueeze(0).expand(B, L, -1, -1), node_embedding2.unsqueeze(0).unsqueeze(0).expand(B, L, -1, -1)], dim=-1) + hidden = self.FC1(spatial_gate_feat) + hidden = self.act(hidden) + # activation + spatial_gate = torch.sigmoid(self.FC2(hidden))[:, -X.shape[1]:, :, :] + X = X * spatial_gate + return X diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/decouple/residual_decomp.py b/basicts/archs/arch_zoo/d2stgnn_arch/decouple/residual_decomp.py new file mode 100644 index 0000000..186c4ff --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/decouple/residual_decomp.py @@ -0,0 +1,15 @@ +import torch.nn as nn + +class ResidualDecomp(nn.Module): + r""" + Residual decomposition. + """ + def __init__(self, input_shape): + super().__init__() + self.ln = nn.LayerNorm(input_shape[-1]) + self.ac = nn.ReLU() + + def forward(self, x, y): + u = x - self.ac(y) + u = self.ln(u) + return u diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/__init__.py b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/__init__.py new file mode 100644 index 0000000..9400012 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/__init__.py @@ -0,0 +1 @@ +from ..difusion_block.dif_block import DifBlock diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/dif_block.py b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/dif_block.py new file mode 100644 index 0000000..c360f3c --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/dif_block.py @@ -0,0 +1,34 @@ +import torch.nn as nn + +from ..decouple.residual_decomp import ResidualDecomp +from .forecast import Forecast +from .dif_model import STLocalizedConv + + +class DifBlock(nn.Module): + def __init__(self, hidden_dim, fk_dim=256, use_pre=None, dy_graph=None, sta_graph=None, **model_args): + super().__init__() + self.pre_defined_graph = model_args['adjs'] + self.localized_st_conv = STLocalizedConv(hidden_dim, pre_defined_graph=self.pre_defined_graph, \ + use_pre=use_pre, dy_graph=dy_graph, sta_graph=sta_graph, **model_args) + # sub and norm + self.residual_decompose = ResidualDecomp([-1, -1, -1, hidden_dim]) + # forecast + self.forecast_branch = Forecast( + hidden_dim, fk_dim=fk_dim, **model_args) + # backcast + self.backcast_branch = nn.Linear(hidden_dim, hidden_dim) + + def forward(self, X, X_spa, dynamic_graph, static_graph): + Z = self.localized_st_conv(X_spa, dynamic_graph, static_graph) + # forecast branch + forecast_hidden = self.forecast_branch( + X_spa, Z, self.localized_st_conv, dynamic_graph, static_graph) + # backcast branch + backcast_seq = self.backcast_branch(Z) + # Residual Decomposition + backcast_seq = backcast_seq + X = X[:, -backcast_seq.shape[1]:, :, :] + backcast_seq_res = self.residual_decompose(X, backcast_seq) + + return backcast_seq_res, forecast_hidden diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/dif_model.py b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/dif_model.py new file mode 100644 index 0000000..dff8b70 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/dif_model.py @@ -0,0 +1,103 @@ +import torch +import torch.nn as nn + + +class STLocalizedConv(nn.Module): + def __init__(self, hidden_dim, pre_defined_graph=None, use_pre=None, dy_graph=None, sta_graph=None, **model_args): + super().__init__() + # gated temporal conv + self.k_s = model_args['k_s'] + self.k_t = model_args['k_t'] + self.hidden_dim = hidden_dim + + # graph conv + self.pre_defined_graph = pre_defined_graph + self.use_predefined_graph = use_pre + self.use_dynamic_hidden_graph = dy_graph + self.use_static__hidden_graph = sta_graph + + self.support_len = len(self.pre_defined_graph) + \ + int(dy_graph) + int(sta_graph) + self.num_matric = (int(use_pre) * len(self.pre_defined_graph) + len( + self.pre_defined_graph) * int(dy_graph) + int(sta_graph)) * self.k_s + 1 + self.dropout = nn.Dropout(model_args['dropout']) + self.pre_defined_graph = self.get_graph(self.pre_defined_graph) + + self.fc_list_updt = nn.Linear( + self.k_t * hidden_dim, self.k_t * hidden_dim, bias=False) + self.gcn_updt = nn.Linear( + self.hidden_dim*self.num_matric, self.hidden_dim) + + # others + self.bn = nn.BatchNorm2d(self.hidden_dim) + self.activation = nn.ReLU() + + def gconv(self, support, X_k, X_0): + out = [X_0] + for graph in support: + if len(graph.shape) == 2: # staitic or predefined graph + pass + else: + graph = graph.unsqueeze(1) + H_k = torch.matmul(graph, X_k) + out.append(H_k) + out = torch.cat(out, dim=-1) + out = self.gcn_updt(out) + out = self.dropout(out) + return out + + def get_graph(self, support): + # Only used in static including static hidden graph and predefined graph, but not used for dynamic graph. + graph_ordered = [] + mask = 1 - torch.eye(support[0].shape[0]).to(support[0].device) + for graph in support: + k_1_order = graph # 1 order + graph_ordered.append(k_1_order * mask) + # e.g., order = 3, k=[2, 3]; order = 2, k=[2] + for k in range(2, self.k_s+1): + k_1_order = torch.matmul(graph, k_1_order) + graph_ordered.append(k_1_order * mask) + # get st localed graph + st_local_graph = [] + for graph in graph_ordered: + graph = graph.unsqueeze(-2).expand(-1, self.k_t, -1) + graph = graph.reshape( + graph.shape[0], graph.shape[1] * graph.shape[2]) + # [num_nodes, kernel_size x num_nodes] + st_local_graph.append(graph) + # [order, num_nodes, kernel_size x num_nodes] + return st_local_graph + + def forward(self, X, dynamic_graph, static_graph): + # X: [bs, seq, nodes, feat] + # [bs, seq, num_nodes, ks, num_feat] + X = X.unfold(1, self.k_t, 1).permute(0, 1, 2, 4, 3) + # seq_len is changing + batch_size, seq_len, num_nodes, kernel_size, num_feat = X.shape + + # support + support = [] + # predefined graph + if self.use_predefined_graph: + support = support + self.pre_defined_graph + # dynamic graph + if self.use_dynamic_hidden_graph: + # k_order is caled in dynamic_graph_constructor component + support = support + dynamic_graph + # predefined graphs and static hidden graphs + if self.use_static__hidden_graph: + support = support + self.get_graph(static_graph) + + # parallelize + X = X.reshape(batch_size, seq_len, num_nodes, kernel_size * num_feat) + # batch_size, seq_len, num_nodes, kernel_size * hidden_dim + out = self.fc_list_updt(X) + out = self.activation(out) + out = out.view(batch_size, seq_len, num_nodes, kernel_size, num_feat) + X_0 = torch.mean(out, dim=-2) + # batch_size, seq_len, kernel_size x num_nodes, hidden_dim + X_k = out.transpose(-3, -2).reshape(batch_size, + seq_len, kernel_size*num_nodes, num_feat) + # Nx3N 3NxD -> NxD: batch_size, seq_len, num_nodes, hidden_dim + hidden = self.gconv(support, X_k, X_0) + return hidden diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/forecast.py b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/forecast.py new file mode 100644 index 0000000..fa05190 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/difusion_block/forecast.py @@ -0,0 +1,31 @@ +import torch +import torch.nn as nn + + +class Forecast(nn.Module): + def __init__(self, hidden_dim, fk_dim=None, **model_args): + super().__init__() + self.k_t = model_args['k_t'] + self.output_seq_len = model_args['seq_length'] + self.forecast_fc = nn.Linear(hidden_dim, fk_dim) + self.model_args = model_args + + def forward(self, X, H, st_l_conv, dynamic_graph, static_graph): + [B, seq_len_remain, B, D] = H.shape + [B, seq_len_input, B, D] = X.shape + + predict = [] + history = X + predict.append(H[:, -1, :, :].unsqueeze(1)) + for _ in range(int(self.output_seq_len / self.model_args['gap'])-1): + _1 = predict[-self.k_t:] + if len(_1) < self.k_t: + sub = self.k_t - len(_1) + _2 = history[:, -sub:, :, :] + _1 = torch.cat([_2] + _1, dim=1) + else: + _1 = torch.cat(_1, dim=1) + predict.append(st_l_conv(_1, dynamic_graph, static_graph)) + predict = torch.cat(predict, dim=1) + predict = self.forecast_fc(predict) + return predict diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/dy_graph_conv.py b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/dy_graph_conv.py new file mode 100644 index 0000000..fe7c585 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/dy_graph_conv.py @@ -0,0 +1,50 @@ +import torch.nn as nn + +from .utils import * + + +class DynamicGraphConstructor(nn.Module): + def __init__(self, **model_args): + super().__init__() + # model args + self.k_s = model_args['k_s'] # spatial order + self.k_t = model_args['k_t'] # temporal kernel size + # hidden dimension of + self.hidden_dim = model_args['num_hidden'] + # trainable node embedding dimension + self.node_dim = model_args['node_hidden'] + + self.distance_function = DistanceFunction(**model_args) + self.mask = Mask(**model_args) + self.normalizer = Normalizer() + self.multi_order = MultiOrder(order=self.k_s) + + def st_localization(self, graph_ordered): + st_local_graph = [] + for modality_i in graph_ordered: + for k_order_graph in modality_i: + k_order_graph = k_order_graph.unsqueeze( + -2).expand(-1, -1, self.k_t, -1) + k_order_graph = k_order_graph.reshape( + k_order_graph.shape[0], k_order_graph.shape[1], k_order_graph.shape[2] * k_order_graph.shape[3]) + st_local_graph.append(k_order_graph) + return st_local_graph + + def forward(self, **inputs): + X = inputs['X'] + E_d = inputs['E_d'] + E_u = inputs['E_u'] + T_D = inputs['T_D'] + D_W = inputs['D_W'] + # distance calculation + dist_mx = self.distance_function(X, E_d, E_u, T_D, D_W) + # mask + dist_mx = self.mask(dist_mx) + # normalization + dist_mx = self.normalizer(dist_mx) + # multi order + mul_mx = self.multi_order(dist_mx) + # spatial temporal localization + dynamic_graphs = self.st_localization(mul_mx) + + return dynamic_graphs diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/__init__.py b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/__init__.py new file mode 100644 index 0000000..f3c9349 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/__init__.py @@ -0,0 +1,3 @@ +from .mask import * +from .normalizer import * +from .distance import * diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/distance.py b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/distance.py new file mode 100644 index 0000000..ce1e642 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/distance.py @@ -0,0 +1,57 @@ +import math +import torch +import torch.nn as nn +import torch.nn.functional as F + +class DistanceFunction(nn.Module): + def __init__(self, **model_args): + super().__init__() + # attributes + self.hidden_dim = model_args['num_hidden'] + self.node_dim = model_args['node_hidden'] + self.time_slot_emb_dim = self.hidden_dim + self.input_seq_len = model_args['seq_length'] + # Time Series Feature Extraction + self.dropout = nn.Dropout(model_args['dropout']) + self.fc_ts_emb1 = nn.Linear(self.input_seq_len, self.hidden_dim * 2) + self.fc_ts_emb2 = nn.Linear(self.hidden_dim * 2, self.hidden_dim) + self.ts_feat_dim= self.hidden_dim + # Time Slot Embedding Extraction + self.time_slot_embedding = nn.Linear(model_args['time_emb_dim'], self.time_slot_emb_dim) + # Distance Score + self.all_feat_dim = self.ts_feat_dim + self.node_dim + model_args['time_emb_dim']*2 + self.WQ = nn.Linear(self.all_feat_dim, self.hidden_dim, bias=False) + self.WK = nn.Linear(self.all_feat_dim, self.hidden_dim, bias=False) + self.bn = nn.BatchNorm1d(self.hidden_dim*2) + + def reset_parameters(self): + for q_vec in self.q_vecs: + nn.init.xavier_normal_(q_vec.data) + for bias in self.biases: + nn.init.zeros_(bias.data) + + def forward(self, X, E_d, E_u, T_D, D_W): + # last pooling + T_D = T_D[:, -1, :, :] + D_W = D_W[:, -1, :, :] + # dynamic information + X = X[:, :, :, 0].transpose(1, 2).contiguous() # X->[batch_size, seq_len, num_nodes]->[batch_size, num_nodes, seq_len] + [batch_size, num_nodes, seq_len] = X.shape + X = X.view(batch_size * num_nodes, seq_len) + dy_feat = self.fc_ts_emb2(self.dropout(self.bn(F.relu(self.fc_ts_emb1(X))))) # [batchsize, num_nodes, hidden_dim] + dy_feat = dy_feat.view(batch_size, num_nodes, -1) + # node embedding + emb1 = E_d.unsqueeze(0).expand(batch_size, -1, -1) + emb2 = E_u.unsqueeze(0).expand(batch_size, -1, -1) + # distance calculation + X1 = torch.cat([dy_feat, T_D, D_W, emb1], dim=-1) # hidden state for calculating distance + X2 = torch.cat([dy_feat, T_D, D_W, emb2], dim=-1) # hidden state for calculating distance + X = [X1, X2] + adjacent_list = [] + for _ in X: + Q = self.WQ(_) + K = self.WK(_) + QKT = torch.bmm(Q, K.transpose(-1, -2)) / math.sqrt(self.hidden_dim) + W = torch.softmax(QKT, dim=-1) + adjacent_list.append(W) + return adjacent_list diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/mask.py b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/mask.py new file mode 100644 index 0000000..1f3b6ec --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/mask.py @@ -0,0 +1,17 @@ +import torch +import torch.nn as nn + +class Mask(nn.Module): + def __init__(self, **model_args): + super().__init__() + self.mask = model_args['adjs'] + + def _mask(self, index, adj): + mask = self.mask[index] + torch.ones_like(self.mask[index]) * 1e-7 + return mask.to(adj.device) * adj + + def forward(self, adj): + result = [] + for index, _ in enumerate(adj): + result.append(self._mask(index, _)) + return result diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/normalizer.py b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/normalizer.py new file mode 100644 index 0000000..efab418 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/dynamic_graph_conv/utils/normalizer.py @@ -0,0 +1,36 @@ +import torch +import torch.nn as nn +from basicts.utils.misc import remove_nan_inf + +class Normalizer(nn.Module): + def __init__(self): + super().__init__() + + def _norm(self, graph): + degree = torch.sum(graph, dim=2) + degree = remove_nan_inf(1 / degree) + degree = torch.diag_embed(degree) + P = torch.bmm(degree, graph) + return P + + def forward(self, adj): + return [self._norm(_) for _ in adj] + +class MultiOrder(nn.Module): + def __init__(self, order=2): + super().__init__() + self.order = order + + def _multi_order(self, graph): + graph_ordered = [] + k_1_order = graph # 1 order + mask = torch.eye(graph.shape[1]).to(graph.device) + mask = 1 - mask + graph_ordered.append(k_1_order * mask) + for k in range(2, self.order+1): # e.g., order = 3, k=[2, 3]; order = 2, k=[2] + k_1_order = torch.matmul(k_1_order, graph) + graph_ordered.append(k_1_order * mask) + return graph_ordered + + def forward(self, adj): + return [self._multi_order(_) for _ in adj] diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/__init__.py b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/__init__.py new file mode 100644 index 0000000..521c8c9 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/__init__.py @@ -0,0 +1 @@ +from .inh_block import InhBlock diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/forecast.py b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/forecast.py new file mode 100644 index 0000000..e9224a4 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/forecast.py @@ -0,0 +1,34 @@ +import torch +import torch.nn as nn + + +class Forecast(nn.Module): + def __init__(self, hidden_dim, fk_dim, **model_args): + super().__init__() + self.output_seq_len = model_args['seq_length'] + self.model_args = model_args + + self.forecast_fc = nn.Linear(hidden_dim, fk_dim) + + def forward(self, X, RNN_H, Z, transformer_layer, rnn_layer, pe): + [B, L, N, D] = X.shape + [L, B_N, D] = RNN_H.shape + [L, B_N, D] = Z.shape + + predict = [Z[-1, :, :].unsqueeze(0)] + for _ in range(int(self.output_seq_len / self.model_args['gap'])-1): + # RNN + _gru = rnn_layer.gru_cell(predict[-1][0], RNN_H[-1]).unsqueeze(0) + RNN_H = torch.cat([RNN_H, _gru], dim=0) + # Positional Encoding + if pe is not None: + RNN_H = pe(RNN_H) + # Transformer + _Z = transformer_layer(_gru, K=RNN_H, V=RNN_H) + predict.append(_Z) + + predict = torch.cat(predict, dim=0) + predict = predict.reshape(-1, B, N, D) + predict = predict.transpose(0, 1) + predict = self.forecast_fc(predict) + return predict diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/inh_block.py b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/inh_block.py new file mode 100644 index 0000000..431e1e2 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/inh_block.py @@ -0,0 +1,72 @@ +import math +import torch +import torch.nn as nn + +from ..decouple.residual_decomp import ResidualDecomp +from .inh_model import RNNLayer, TransformerLayer +from .forecast import Forecast + + +class PositionalEncoding(nn.Module): + def __init__(self, d_model, dropout=None, max_len: int = 5000): + super().__init__() + self.dropout = nn.Dropout(p=dropout) + position = torch.arange(max_len).unsqueeze(1) + div_term = torch.exp(torch.arange(0, d_model, 2) + * (-math.log(10000.0) / d_model)) + pe = torch.zeros(max_len, 1, d_model) + pe[:, 0, 0::2] = torch.sin(position * div_term) + pe[:, 0, 1::2] = torch.cos(position * div_term) + self.register_buffer('pe', pe) + + def forward(self, X): + X = X + self.pe[:X.size(0)] + X = self.dropout(X) + return X + + +class InhBlock(nn.Module): + def __init__(self, hidden_dim, num_heads=4, bias=True, fk_dim=256, first=None, **model_args): + super().__init__() + self.num_feat = hidden_dim + self.hidden_dim = hidden_dim + + if first: + self.pos_encoder = PositionalEncoding( + hidden_dim, model_args['dropout']) + else: + self.pos_encoder = None + self.rnn_layer = RNNLayer(hidden_dim, model_args['dropout']) + self.transformer_layer = TransformerLayer( + hidden_dim, num_heads, model_args['dropout'], bias) + # forecast + self.forecast_block = Forecast(hidden_dim, fk_dim, **model_args) + # backcast + self.backcast_fc = nn.Linear(hidden_dim, hidden_dim) + # sub residual + self.sub_and_norm = ResidualDecomp([-1, -1, -1, hidden_dim]) + + def forward(self, X): + [batch_size, seq_len, num_nodes, num_feat] = X.shape + # Temporal Model + # RNN + RNN_H_raw = self.rnn_layer(X) + # Positional Encoding + if self.pos_encoder is not None: + RNN_H = self.pos_encoder(RNN_H_raw) + else: + RNN_H = RNN_H_raw + # MultiHead Self Attention + Z = self.transformer_layer(RNN_H, RNN_H, RNN_H) + + # forecast branch + forecast_hidden = self.forecast_block( + X, RNN_H_raw, Z, self.transformer_layer, self.rnn_layer, self.pos_encoder) + + # backcast branch + Z = Z.reshape(seq_len, batch_size, num_nodes, num_feat) + Z = Z.transpose(0, 1) + backcast_seq = self.backcast_fc(Z) + backcast_seq_res = self.sub_and_norm(X, backcast_seq) + + return backcast_seq_res, forecast_hidden diff --git a/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/inh_model.py b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/inh_model.py new file mode 100644 index 0000000..ce8e279 --- /dev/null +++ b/basicts/archs/arch_zoo/d2stgnn_arch/inherent_block/inh_model.py @@ -0,0 +1,37 @@ +import torch as th +import torch.nn as nn +from torch.nn import MultiheadAttention + + +class RNNLayer(nn.Module): + def __init__(self, hidden_dim, dropout=None): + super().__init__() + self.hidden_dim = hidden_dim + self.gru_cell = nn.GRUCell(hidden_dim, hidden_dim) + self.dropout = nn.Dropout(dropout) + + def forward(self, X): + [batch_size, seq_len, num_nodes, hidden_dim] = X.shape + X = X.transpose(1, 2).reshape( + batch_size * num_nodes, seq_len, hidden_dim) + hx = th.zeros_like(X[:, 0, :]) + output = [] + for _ in range(X.shape[1]): + hx = self.gru_cell(X[:, _, :], hx) + output.append(hx) + output = th.stack(output, dim=0) + output = self.dropout(output) + return output + + +class TransformerLayer(nn.Module): + def __init__(self, hidden_dim, num_heads=4, dropout=None, bias=True): + super().__init__() + self.multi_head_self_attention = MultiheadAttention( + hidden_dim, num_heads, dropout=dropout, bias=bias) + self.dropout = nn.Dropout(dropout) + + def forward(self, X, K, V): + Z = self.multi_head_self_attention(X, K, V)[0] + Z = self.dropout(Z) + return Z diff --git a/basicts/archs/arch_zoo/dcrnn_arch/__init__.py b/basicts/archs/arch_zoo/dcrnn_arch/__init__.py new file mode 100644 index 0000000..0307d9f --- /dev/null +++ b/basicts/archs/arch_zoo/dcrnn_arch/__init__.py @@ -0,0 +1,3 @@ +from .dcrnn_arch import DCRNN + +__all__ = ['DCRNN'] diff --git a/basicts/archs/arch_zoo/dcrnn_arch/dcrnn_arch.py b/basicts/archs/arch_zoo/dcrnn_arch/dcrnn_arch.py new file mode 100644 index 0000000..759be73 --- /dev/null +++ b/basicts/archs/arch_zoo/dcrnn_arch/dcrnn_arch.py @@ -0,0 +1,168 @@ +import torch +from torch import nn +import numpy as np + +from .dcrnn_cell import DCGRUCell + + +def count_parameters(model): + return sum(p.numel() for p in model.parameters() if p.requires_grad) + + +class Seq2SeqAttrs: + def __init__(self, adj_mx, **model_kwargs): + self.adj_mx = adj_mx + self.max_diffusion_step = int( + model_kwargs.get("max_diffusion_step", 2)) + self.cl_decay_steps = int(model_kwargs.get("cl_decay_steps", 1000)) + self.filter_type = model_kwargs.get("filter_type", "laplacian") + self.num_nodes = int(model_kwargs.get("num_nodes", 1)) + self.num_rnn_layers = int(model_kwargs.get("num_rnn_layers", 1)) + self.rnn_units = int(model_kwargs.get("rnn_units")) + self.hidden_state_size = self.num_nodes * self.rnn_units + + +class EncoderModel(nn.Module, Seq2SeqAttrs): + def __init__(self, adj_mx, **model_kwargs): + nn.Module.__init__(self) + Seq2SeqAttrs.__init__(self, adj_mx, **model_kwargs) + self.input_dim = int(model_kwargs.get("input_dim", 1)) + self.seq_len = int(model_kwargs.get("seq_len")) # for the encoder + self.dcgru_layers = nn.ModuleList( + [DCGRUCell(self.rnn_units, adj_mx, self.max_diffusion_step, self.num_nodes) for _ in range(self.num_rnn_layers)]) + + def forward(self, inputs, hidden_state=None): + batch_size, _ = inputs.size() + if hidden_state is None: + hidden_state = torch.zeros( + (self.num_rnn_layers, batch_size, self.hidden_state_size)).to(inputs.device) + hidden_states = [] + output = inputs + for layer_num, dcgru_layer in enumerate(self.dcgru_layers): + next_hidden_state = dcgru_layer(output, hidden_state[layer_num]) + hidden_states.append(next_hidden_state) + output = next_hidden_state + + # runs in O(num_layers) so not too slow + return output, torch.stack(hidden_states) + + +class DecoderModel(nn.Module, Seq2SeqAttrs): + def __init__(self, adj_mx, **model_kwargs): + # super().__init__(is_training, adj_mx, **model_kwargs) + nn.Module.__init__(self) + Seq2SeqAttrs.__init__(self, adj_mx, **model_kwargs) + self.output_dim = int(model_kwargs.get("output_dim", 1)) + self.horizon = int(model_kwargs.get("horizon", 1)) # for the decoder + self.projection_layer = nn.Linear(self.rnn_units, self.output_dim) + self.dcgru_layers = nn.ModuleList( + [DCGRUCell(self.rnn_units, adj_mx, self.max_diffusion_step, self.num_nodes) for _ in range(self.num_rnn_layers)]) + + def forward(self, inputs, hidden_state=None): + hidden_states = [] + output = inputs + for layer_num, dcgru_layer in enumerate(self.dcgru_layers): + next_hidden_state = dcgru_layer(output, hidden_state[layer_num]) + hidden_states.append(next_hidden_state) + output = next_hidden_state + + projected = self.projection_layer(output.view(-1, self.rnn_units)) + output = projected.view(-1, self.num_nodes * self.output_dim) + + return output, torch.stack(hidden_states) + + +class DCRNN(nn.Module, Seq2SeqAttrs): + """ + Paper: Diffusion Convolutional Recurrent Neural Network: Data-Driven Traffic Forecasting + Link: https://arxiv.org/abs/1707.01926 + Codes are modified from the official repo: + https://github.com/chnsh/DCRNN_PyTorch/blob/pytorch_scratch/model/pytorch/dcrnn_cell.py, + https://github.com/chnsh/DCRNN_PyTorch/blob/pytorch_scratch/model/pytorch/dcrnn_model.py + """ + + def __init__(self, adj_mx, **model_kwargs): + super().__init__() + Seq2SeqAttrs.__init__(self, adj_mx, **model_kwargs) + self.encoder_model = EncoderModel(adj_mx, **model_kwargs) + self.decoder_model = DecoderModel(adj_mx, **model_kwargs) + self.cl_decay_steps = int(model_kwargs.get("cl_decay_steps", 2000)) + self.use_curriculum_learning = bool( + model_kwargs.get("use_curriculum_learning", False)) + + def _compute_sampling_threshold(self, batches_seen): + return self.cl_decay_steps / ( + self.cl_decay_steps + np.exp(batches_seen / self.cl_decay_steps)) + + def encoder(self, inputs): + encoder_hidden_state = None + for t in range(self.encoder_model.seq_len): + _, encoder_hidden_state = self.encoder_model( + inputs[t], encoder_hidden_state) + + return encoder_hidden_state + + def decoder(self, encoder_hidden_state, labels=None, batches_seen=None): + batch_size = encoder_hidden_state.size(1) + go_symbol = torch.zeros( + (batch_size, self.num_nodes * self.decoder_model.output_dim)).to(encoder_hidden_state.device) + decoder_hidden_state = encoder_hidden_state + decoder_input = go_symbol + + outputs = [] + + for t in range(self.decoder_model.horizon): + decoder_output, decoder_hidden_state = self.decoder_model( + decoder_input, decoder_hidden_state) + decoder_input = decoder_output + outputs.append(decoder_output) + if self.training and self.use_curriculum_learning: + c = np.random.uniform(0, 1) + if c < self._compute_sampling_threshold(batches_seen): + decoder_input = labels[t] + outputs = torch.stack(outputs) + return outputs + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor = None, batch_seen: int = None, **kwargs) -> torch.Tensor: + """Feedforward function of DCRNN. + + Args: + history_data (torch.Tensor): history data with shape [L, B, N*C] + future_data (torch.Tensor, optional): future data with shape [L, B, N*C_out] + batch_seen (int, optional): batches seen till now, used for curriculum learning. Defaults to None. + + Returns: + torch.Tensor: prediction wit shape [L, B, N*C_out] + """ + + # reshape data + batch_size, length, num_nodes, channels = history_data.shape + history_data = history_data.reshape(batch_size, length, num_nodes * channels) # [B, L, N*C] + history_data = history_data.transpose(0, 1) # [L, B, N*C] + + if future_data is not None: + batch_size, length, num_nodes, channels = future_data.shape + future_data = future_data.reshape(batch_size, length, num_nodes * channels) # [B, L, N*C] + future_data = future_data.transpose(0, 1) # [L, B, N*C] + + # DCRNN + encoder_hidden_state = self.encoder(history_data) + outputs = self.decoder(encoder_hidden_state, future_data, + batches_seen=batch_seen) # [L, B, N*C_out] + + # reshape to B, L, N, C + L, B, _ = outputs.shape + outputs = outputs.transpose(0, 1) # [B, L, N*C_out] + outputs = outputs.view(B, L, self.num_nodes, + self.decoder_model.output_dim) + + if not self.training: + assert future_data == None, "Future data should not be visible when validating/testing." + else: + pass + + if batch_seen == 0: + print("Warning: decoder only takes the first dimension as groundtruth.") + print("Parameter Number: ".format(count_parameters(self))) + print(count_parameters(self)) + return outputs diff --git a/basicts/archs/arch_zoo/dcrnn_arch/dcrnn_cell.py b/basicts/archs/arch_zoo/dcrnn_arch/dcrnn_cell.py new file mode 100644 index 0000000..4453fb1 --- /dev/null +++ b/basicts/archs/arch_zoo/dcrnn_arch/dcrnn_cell.py @@ -0,0 +1,140 @@ +import torch + + +class LayerParams: + """Layer parameters.""" + + def __init__(self, rnn_network: torch.nn.Module, layer_type: str): + self._rnn_network = rnn_network + self._params_dict = {} + self._biases_dict = {} + self._type = layer_type + + def get_weights(self, shape): + if shape not in self._params_dict: + nn_param = torch.nn.Parameter(torch.empty(*shape)) + torch.nn.init.xavier_normal_(nn_param) + self._params_dict[shape] = nn_param + self._rnn_network.register_parameter( + '{}_weight_{}'.format(self._type, str(shape)), + nn_param) + return self._params_dict[shape] + + def get_biases(self, length, bias_start=0.0): + if length not in self._biases_dict: + biases = torch.nn.Parameter(torch.empty(length)) + torch.nn.init.constant_(biases, bias_start) + self._biases_dict[length] = biases + self._rnn_network.register_parameter( + '{}_biases_{}'.format(self._type, str(length)), biases) + + return self._biases_dict[length] + + +class DCGRUCell(torch.nn.Module): + """ + Paper: Diffusion Convolutional Recurrent Neural Network: Data-Driven Traffic Forecasting + Link: https://arxiv.org/abs/1707.01926 + Codes are modified from the official repo: + https://github.com/chnsh/DCRNN_PyTorch/blob/pytorch_scratch/model/pytorch/dcrnn_cell.py, + https://github.com/chnsh/DCRNN_PyTorch/blob/pytorch_scratch/model/pytorch/dcrnn_model.py + Watch out the input groundtruth of decoder, which may cause bugs when you try to extend this code. + In order to train the model on multi-GPU, we send the parameter to different gpus in the feedforward process, which might hurt the efficiency. + """ + + def __init__(self, num_units, adj_mx, max_diffusion_step, num_nodes, nonlinearity='tanh', use_gc_for_ru=True): + super().__init__() + self._activation = torch.tanh if nonlinearity == 'tanh' else torch.relu + # support other nonlinearities up here? + self._num_nodes = num_nodes + self._num_units = num_units + self._max_diffusion_step = max_diffusion_step + self._use_gc_for_ru = use_gc_for_ru + # for support in supports: + # self._supports.append(self._build_sparse_matrix(support)) + self._supports = adj_mx + + self._fc_params = LayerParams(self, 'fc') + self._gconv_params = LayerParams(self, 'gconv') + + def forward(self, inputs, hx): + output_size = 2 * self._num_units + if self._use_gc_for_ru: + fn = self._gconv + else: + fn = self._fc + value = torch.sigmoid(fn(inputs, hx, output_size, bias_start=1.0)) + value = torch.reshape(value, (-1, self._num_nodes, output_size)) + r, u = torch.split( + tensor=value, split_size_or_sections=self._num_units, dim=-1) + r = torch.reshape(r, (-1, self._num_nodes * self._num_units)) + u = torch.reshape(u, (-1, self._num_nodes * self._num_units)) + + c = self._gconv(inputs, r * hx, self._num_units) + if self._activation is not None: + c = self._activation(c) + + new_state = u * hx + (1.0 - u) * c + return new_state + + @staticmethod + def _concat(x, x_): + x_ = x_.unsqueeze(0) + return torch.cat([x, x_], dim=0) + + def _fc(self, inputs, state, output_size, bias_start=0.0): + batch_size = inputs.shape[0] + inputs = torch.reshape(inputs, (batch_size * self._num_nodes, -1)) + state = torch.reshape(state, (batch_size * self._num_nodes, -1)) + inputs_and_state = torch.cat([inputs, state], dim=-1) + input_size = inputs_and_state.shape[-1] + weights = self._fc_params.get_weights( + (input_size, output_size)).to(inputs_and_state.device) + value = torch.sigmoid(torch.matmul(inputs_and_state, weights)) + biases = self._fc_params.get_biases(output_size, bias_start) + value += biases.to(inputs_and_state.device) + return value + + def _gconv(self, inputs, state, output_size, bias_start=0.0): + # Reshape input and state to (batch_size, num_nodes, input_dim/state_dim) + batch_size = inputs.shape[0] + inputs = torch.reshape(inputs, (batch_size, self._num_nodes, -1)) + state = torch.reshape(state, (batch_size, self._num_nodes, -1)) + inputs_and_state = torch.cat([inputs, state], dim=2) + input_size = inputs_and_state.size(2) + + x = inputs_and_state + x0 = x.permute(1, 2, 0) # (num_nodes, total_arg_size, batch_size) + x0 = torch.reshape( + x0, shape=[self._num_nodes, input_size * batch_size]) + x = torch.unsqueeze(x0, 0) + + if self._max_diffusion_step == 0: + pass + else: + for support in self._supports: + x1 = torch.mm(support, x0) + x = self._concat(x, x1) + + for k in range(2, self._max_diffusion_step + 1): + x2 = 2 * torch.mm(support, x1) - x0 + x = self._concat(x, x2) + x1, x0 = x2, x1 + + # Adds for x itself. + num_matrices = len(self._supports) * self._max_diffusion_step + 1 + x = torch.reshape( + x, shape=[num_matrices, self._num_nodes, input_size, batch_size]) + x = x.permute(3, 1, 2, 0) # (batch_size, num_nodes, input_size, order) + x = torch.reshape( + x, shape=[batch_size * self._num_nodes, input_size * num_matrices]) + weights = self._gconv_params.get_weights( + (input_size * num_matrices, output_size)).to(x.device) + # (batch_size * self._num_nodes, output_size) + x = torch.matmul(x, weights) + + biases = self._gconv_params.get_biases( + output_size, bias_start).to(x.device) + x += biases + # Reshape res back to 2D: (batch_size, num_node, state_dim) -> (batch_size, num_node * state_dim) + return torch.reshape(x, [batch_size, self._num_nodes * output_size]) diff --git a/basicts/archs/arch_zoo/dgcrn_arch/__init__.py b/basicts/archs/arch_zoo/dgcrn_arch/__init__.py new file mode 100644 index 0000000..8303eb4 --- /dev/null +++ b/basicts/archs/arch_zoo/dgcrn_arch/__init__.py @@ -0,0 +1,3 @@ +from .dgcrn_arch import DGCRN + +__all__ = ["DGCRN"] diff --git a/basicts/archs/arch_zoo/dgcrn_arch/dgcrn_arch.py b/basicts/archs/arch_zoo/dgcrn_arch/dgcrn_arch.py new file mode 100644 index 0000000..34ae93f --- /dev/null +++ b/basicts/archs/arch_zoo/dgcrn_arch/dgcrn_arch.py @@ -0,0 +1,247 @@ +import sys + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.autograd import Variable + +from .dgcrn_layer import * + + +class DGCRN(nn.Module): + def __init__(self, gcn_depth, num_nodes, predefined_A=None, dropout=0.3, subgraph_size=20, node_dim=40, middle_dim=2, seq_length=12, in_dim=2, list_weight=[0.05, 0.95, 0.95], tanhalpha=3, cl_decay_steps=4000, rnn_size=64, hyperGNN_dim=16): + super(DGCRN, self).__init__() + self.output_dim = 1 + + self.num_nodes = num_nodes + self.dropout = dropout + self.predefined_A = predefined_A + + self.seq_length = seq_length + + self.emb1 = nn.Embedding(self.num_nodes, node_dim) + self.emb2 = nn.Embedding(self.num_nodes, node_dim) + self.lin1 = nn.Linear(node_dim, node_dim) + self.lin2 = nn.Linear(node_dim, node_dim) + + self.idx = torch.arange(self.num_nodes) + + self.rnn_size = rnn_size + self.in_dim = in_dim + + self.hidden_size = self.rnn_size + + dims_hyper = [self.hidden_size + in_dim, + hyperGNN_dim, middle_dim, node_dim] + + self.GCN1_tg = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.GCN2_tg = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.GCN1_tg_de = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.GCN2_tg_de = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.GCN1_tg_1 = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.GCN2_tg_1 = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.GCN1_tg_de_1 = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.GCN2_tg_de_1 = gcn(dims_hyper, gcn_depth, + dropout, *list_weight, 'hyper') + + self.fc_final = nn.Linear(self.hidden_size, self.output_dim) + + self.alpha = tanhalpha + self.k = subgraph_size + dims = [in_dim + self.hidden_size, self.hidden_size] + + self.gz1 = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gz2 = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gr1 = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gr2 = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gc1 = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gc2 = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + + self.gz1_de = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gz2_de = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gr1_de = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gr2_de = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gc1_de = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + self.gc2_de = gcn(dims, gcn_depth, dropout, *list_weight, 'RNN') + + self.use_curriculum_learning = True + self.cl_decay_steps = cl_decay_steps + self.gcn_depth = gcn_depth + + def preprocessing(self, adj, predefined_A): + adj = adj + torch.eye(self.num_nodes).to(adj.device) + adj = adj / torch.unsqueeze(adj.sum(-1), -1) + return [adj, predefined_A] + + def step(self, input, Hidden_State, Cell_State, predefined_A, type='encoder', i=None): + x = input + x = x.transpose(1, 2).contiguous() + + nodevec1 = self.emb1(self.idx) + nodevec2 = self.emb2(self.idx) + + hyper_input = torch.cat( + (x, Hidden_State.view(-1, self.num_nodes, self.hidden_size)), 2) + + if type == 'encoder': + filter1 = self.GCN1_tg( + hyper_input, predefined_A[0]) + self.GCN1_tg_1(hyper_input, predefined_A[1]) + filter2 = self.GCN2_tg( + hyper_input, predefined_A[0]) + self.GCN2_tg_1(hyper_input, predefined_A[1]) + + if type == 'decoder': + filter1 = self.GCN1_tg_de( + hyper_input, predefined_A[0]) + self.GCN1_tg_de_1(hyper_input, predefined_A[1]) + filter2 = self.GCN2_tg_de( + hyper_input, predefined_A[0]) + self.GCN2_tg_de_1(hyper_input, predefined_A[1]) + + nodevec1 = torch.tanh(self.alpha * torch.mul(nodevec1, filter1)) + nodevec2 = torch.tanh(self.alpha * torch.mul(nodevec2, filter2)) + + a = torch.matmul(nodevec1, nodevec2.transpose(2, 1)) - \ + torch.matmul(nodevec2, nodevec1.transpose(2, 1)) + + adj = F.relu(torch.tanh(self.alpha * a)) + + adp = self.preprocessing(adj, predefined_A[0]) + adpT = self.preprocessing(adj.transpose(1, 2), predefined_A[1]) + + Hidden_State = Hidden_State.view(-1, self.num_nodes, self.hidden_size) + Cell_State = Cell_State.view(-1, self.num_nodes, self.hidden_size) + + combined = torch.cat((x, Hidden_State), -1) + + if type == 'encoder': + z = torch.sigmoid(self.gz1(combined, adp) + + self.gz2(combined, adpT)) + r = torch.sigmoid(self.gr1(combined, adp) + + self.gr2(combined, adpT)) + + temp = torch.cat((x, torch.mul(r, Hidden_State)), -1) + Cell_State = torch.tanh(self.gc1(temp, adp) + self.gc2(temp, adpT)) + elif type == 'decoder': + z = torch.sigmoid(self.gz1_de(combined, adp) + + self.gz2_de(combined, adpT)) + r = torch.sigmoid(self.gr1_de(combined, adp) + + self.gr2_de(combined, adpT)) + + temp = torch.cat((x, torch.mul(r, Hidden_State)), -1) + Cell_State = torch.tanh(self.gc1_de( + temp, adp) + self.gc2_de(temp, adpT)) + + Hidden_State = torch.mul(z, Hidden_State) + \ + torch.mul(1 - z, Cell_State) + + return Hidden_State.view(-1, self.hidden_size), Cell_State.view(-1, self.hidden_size) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool,**kwargs) -> torch.Tensor: + """Feedforward function of DGCRN. + + Args: + history_data (torch.Tensor): historical data with shape [B, L, N, C]. + future_data (torch.Tensor, optional): ground truth. Defaults to None. + batch_seen (int, optional): batch num. Defaults to None. + task_level (int, optional): curriculum learning level. Defaults to 12. + + Returns: + torch.Tensor: prediction with shape [B, L, N, 1] + """ + task_level = kwargs["task_level"] + input = history_data.transpose(1, 3) + ycl = future_data.transpose(1, 3) + + self.idx = self.idx.to(input.device) + + predefined_A = self.predefined_A + x = input + + batch_size = x.size(0) + Hidden_State, Cell_State = self.initHidden( + batch_size * self.num_nodes, self.hidden_size) + Hidden_State = Hidden_State.to(input.device) + Cell_State = Cell_State.to(input.device) + + outputs = None + for i in range(self.seq_length): + Hidden_State, Cell_State = self.step( + x[..., i].squeeze(-1), Hidden_State, Cell_State, predefined_A, 'encoder', i) + + if outputs is None: + outputs = Hidden_State.unsqueeze(1) + else: + outputs = torch.cat((outputs, Hidden_State.unsqueeze(1)), 1) + + go_symbol = torch.zeros( + (batch_size, self.output_dim, self.num_nodes)).to(input.device) + timeofday = ycl[:, [1], :, :] + + decoder_input = go_symbol + + outputs_final = [] + + for i in range(task_level): + try: + decoder_input = torch.cat( + [decoder_input, timeofday[..., i]], dim=1) + except: + print(decoder_input.shape, timeofday.shape) + sys.exit(0) + Hidden_State, Cell_State = self.step( + decoder_input, Hidden_State, Cell_State, predefined_A, 'decoder', None) + + decoder_output = self.fc_final(Hidden_State) + + decoder_input = decoder_output.view( + batch_size, self.num_nodes, self.output_dim).transpose(1, 2) + outputs_final.append(decoder_output) + if self.training and self.use_curriculum_learning: + c = np.random.uniform(0, 1) + if c < self._compute_sampling_threshold(batch_seen): + decoder_input = ycl[:, :1, :, i] + + outputs_final = torch.stack(outputs_final, dim=1) + + outputs_final = outputs_final.view( + batch_size, self.num_nodes, task_level, self.output_dim).transpose(1, 2) + + ramdom_predict = torch.zeros(batch_size, self.seq_length - task_level, + self.num_nodes, self.output_dim).to(outputs_final.device) + outputs_final = torch.cat([outputs_final, ramdom_predict], dim=1) + + return outputs_final + + def initHidden(self, batch_size, hidden_size): + use_gpu = torch.cuda.is_available() + if use_gpu: + Hidden_State = Variable( + torch.zeros(batch_size, hidden_size)) + Cell_State = Variable( + torch.zeros(batch_size, hidden_size)) + + nn.init.orthogonal_(Hidden_State) + nn.init.orthogonal_(Cell_State) + + return Hidden_State, Cell_State + else: + Hidden_State = Variable(torch.zeros(batch_size, hidden_size)) + Cell_State = Variable(torch.zeros(batch_size, hidden_size)) + return Hidden_State, Cell_State + + def _compute_sampling_threshold(self, batches_seen): + return self.cl_decay_steps / ( + self.cl_decay_steps + np.exp(batches_seen / self.cl_decay_steps)) diff --git a/basicts/archs/arch_zoo/dgcrn_arch/dgcrn_layer.py b/basicts/archs/arch_zoo/dgcrn_arch/dgcrn_layer.py new file mode 100644 index 0000000..29ecb31 --- /dev/null +++ b/basicts/archs/arch_zoo/dgcrn_arch/dgcrn_layer.py @@ -0,0 +1,68 @@ +from collections import OrderedDict + +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class gconv_RNN(nn.Module): + def __init__(self): + super(gconv_RNN, self).__init__() + + def forward(self, x, A): + + x = torch.einsum('nvc,nvw->nwc', (x, A)) + return x.contiguous() + + +class gconv_hyper(nn.Module): + def __init__(self): + super(gconv_hyper, self).__init__() + + def forward(self, x, A): + A = A.to(x.device) + x = torch.einsum('nvc,vw->nwc', (x, A)) + return x.contiguous() + + +class gcn(nn.Module): + def __init__(self, dims, gdep, dropout, alpha, beta, gamma, type=None): + super(gcn, self).__init__() + if type == 'RNN': + self.gconv = gconv_RNN() + self.gconv_preA = gconv_hyper() + self.mlp = nn.Linear((gdep + 1) * dims[0], dims[1]) + + elif type == 'hyper': + self.gconv = gconv_hyper() + self.mlp = nn.Sequential( + OrderedDict([('fc1', nn.Linear((gdep + 1) * dims[0], dims[1])), + ('sigmoid1', nn.Sigmoid()), + ('fc2', nn.Linear(dims[1], dims[2])), + ('sigmoid2', nn.Sigmoid()), + ('fc3', nn.Linear(dims[2], dims[3]))])) + + self.gdep = gdep + self.alpha = alpha + self.beta = beta + self.gamma = gamma + self.type_GNN = type + + def forward(self, x, adj): + + h = x + out = [h] + if self.type_GNN == 'RNN': + for _ in range(self.gdep): + h = self.alpha * x + self.beta * self.gconv( + h, adj[0]) + self.gamma * self.gconv_preA(h, adj[1]) + out.append(h) + else: + for _ in range(self.gdep): + h = self.alpha * x + self.gamma * self.gconv(h, adj) + out.append(h) + ho = torch.cat(out, dim=-1) + + ho = self.mlp(ho) + + return ho diff --git a/basicts/archs/arch_zoo/fedformer_arch/__init__.py b/basicts/archs/arch_zoo/fedformer_arch/__init__.py new file mode 100644 index 0000000..66615d0 --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/__init__.py @@ -0,0 +1,3 @@ +from .fedformer_arch import FEDformer + +__all__ = ["FEDformer"] diff --git a/basicts/archs/arch_zoo/fedformer_arch/auto_correlation.py b/basicts/archs/arch_zoo/fedformer_arch/auto_correlation.py new file mode 100644 index 0000000..a051191 --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/auto_correlation.py @@ -0,0 +1,245 @@ +import time +import math + +import torch +import torch.nn as nn +from torch.nn.functional import interpolate + + +def decor_time(func): + def func2(*args, **kw): + now = time.time() + y = func(*args, **kw) + t = time.time() - now + print('call <{}>, time={}'.format(func.__name__, t)) + return y + return func2 + + +class AutoCorrelation(nn.Module): + """ + AutoCorrelation Mechanism with the following two phases: + (1) period-based dependencies discovery + (2) time delay aggregation + This block can replace the self-attention family mechanism seamlessly. + """ + + def __init__(self, mask_flag=True, factor=1, scale=None, attention_dropout=0.1, output_attention=False, configs=None): + super(AutoCorrelation, self).__init__() + print('Autocorrelation used !') + self.factor = factor + self.scale = scale + self.mask_flag = mask_flag + self.output_attention = output_attention + self.dropout = nn.Dropout(attention_dropout) + self.agg = None + self.use_wavelet = configs.wavelet + + # @decor_time + def time_delay_agg_training(self, values, corr): + """ + SpeedUp version of Autocorrelation (a batch-normalization style design) + This is for the training phase. + """ + head = values.shape[1] + channel = values.shape[2] + length = values.shape[3] + # find top k + top_k = int(self.factor * math.log(length)) + mean_value = torch.mean(torch.mean(corr, dim=1), dim=1) + index = torch.topk(torch.mean(mean_value, dim=0), top_k, dim=-1)[1] + weights = torch.stack([mean_value[:, index[i]] + for i in range(top_k)], dim=-1) + # update corr + tmp_corr = torch.softmax(weights, dim=-1) + # aggregation + tmp_values = values + delays_agg = torch.zeros_like(values).float() + for i in range(top_k): + pattern = torch.roll(tmp_values, -int(index[i]), -1) + delays_agg = delays_agg + pattern * \ + (tmp_corr[:, i].unsqueeze(1).unsqueeze(1).unsqueeze( + 1).repeat(1, head, channel, length)) + return delays_agg # size=[B, H, d, S] + + def time_delay_agg_inference(self, values, corr): + """ + SpeedUp version of Autocorrelation (a batch-normalization style design) + This is for the inference phase. + """ + batch = values.shape[0] + head = values.shape[1] + channel = values.shape[2] + length = values.shape[3] + # index init + init_index = torch.arange(length).unsqueeze(0).unsqueeze( + 0).unsqueeze(0).repeat(batch, head, channel, 1).cuda() + # find top k + top_k = int(self.factor * math.log(length)) + mean_value = torch.mean(torch.mean(corr, dim=1), dim=1) + weights = torch.topk(mean_value, top_k, dim=-1)[0] + delay = torch.topk(mean_value, top_k, dim=-1)[1] + # update corr + tmp_corr = torch.softmax(weights, dim=-1) + # aggregation + tmp_values = values.repeat(1, 1, 1, 2) + delays_agg = torch.zeros_like(values).float() + for i in range(top_k): + tmp_delay = init_index + \ + delay[:, i].unsqueeze(1).unsqueeze(1).unsqueeze( + 1).repeat(1, head, channel, length) + pattern = torch.gather(tmp_values, dim=-1, index=tmp_delay) + delays_agg = delays_agg + pattern * \ + (tmp_corr[:, i].unsqueeze(1).unsqueeze(1).unsqueeze( + 1).repeat(1, head, channel, length)) + return delays_agg + + def time_delay_agg_full(self, values, corr): + """ + Standard version of Autocorrelation + """ + batch = values.shape[0] + head = values.shape[1] + channel = values.shape[2] + length = values.shape[3] + # index init + init_index = torch.arange(length).unsqueeze(0).unsqueeze( + 0).unsqueeze(0).repeat(batch, head, channel, 1).cuda() + # find top k + top_k = int(self.factor * math.log(length)) + weights = torch.topk(corr, top_k, dim=-1)[0] + delay = torch.topk(corr, top_k, dim=-1)[1] + # update corr + tmp_corr = torch.softmax(weights, dim=-1) + # aggregation + tmp_values = values.repeat(1, 1, 1, 2) + delays_agg = torch.zeros_like(values).float() + for i in range(top_k): + tmp_delay = init_index + delay[..., i].unsqueeze(-1) + pattern = torch.gather(tmp_values, dim=-1, index=tmp_delay) + delays_agg = delays_agg + pattern * \ + (tmp_corr[..., i].unsqueeze(-1)) + return delays_agg + + def forward(self, queries, keys, values, attn_mask): + B, L, H, E = queries.shape + _, S, _, D = values.shape + if L > S: + zeros = torch.zeros_like(queries[:, :(L - S), :]).float() + values = torch.cat([values, zeros], dim=1) + keys = torch.cat([keys, zeros], dim=1) + else: + values = values[:, :L, :, :] + keys = keys[:, :L, :, :] + + # period-based dependencies + if self.use_wavelet != 2: + if self.use_wavelet == 1: + j_list = self.j_list + queries = queries.reshape([B, L, -1]) + keys = keys.reshape([B, L, -1]) + Ql, Qh_list = self.dwt1d( + queries.transpose(1, 2)) # [B, H*D, L] + Kl, Kh_list = self.dwt1d(keys.transpose(1, 2)) + qs = [queries.transpose(1, 2)] + Qh_list + [Ql] # [B, H*D, L] + ks = [keys.transpose(1, 2)] + Kh_list + [Kl] + q_list = [] + k_list = [] + for q, k, j in zip(qs, ks, j_list): + q_list += [interpolate(q, scale_factor=j, + mode='linear')[:, :, -L:]] + k_list += [interpolate(k, scale_factor=j, + mode='linear')[:, :, -L:]] + queries = torch.stack([i.reshape([B, H, E, L]) for i in q_list], dim=3).reshape( + [B, H, -1, L]).permute(0, 3, 1, 2) + keys = torch.stack([i.reshape([B, H, E, L]) for i in k_list], dim=3).reshape( + [B, H, -1, L]).permute(0, 3, 1, 2) + else: + pass + q_fft = torch.fft.rfft(queries.permute( + 0, 2, 3, 1).contiguous(), dim=-1) # size=[B, H, E, L] + k_fft = torch.fft.rfft(keys.permute( + 0, 2, 3, 1).contiguous(), dim=-1) + res = q_fft * torch.conj(k_fft) + corr = torch.fft.irfft(res, dim=-1) # size=[B, H, E, L] + + # time delay agg + if self.training: + V = self.time_delay_agg_training(values.permute(0, 2, 3, 1).contiguous( + ), corr).permute(0, 3, 1, 2) # [B, L, H, E], [B, H, E, L] -> [B, L, H, E] + else: + V = self.time_delay_agg_inference(values.permute( + 0, 2, 3, 1).contiguous(), corr).permute(0, 3, 1, 2) + else: + V_list = [] + queries = queries.reshape([B, L, -1]) + keys = keys.reshape([B, L, -1]) + values = values.reshape([B, L, -1]) + Ql, Qh_list = self.dwt1d(queries.transpose(1, 2)) # [B, H*D, L] + Kl, Kh_list = self.dwt1d(keys.transpose(1, 2)) + Vl, Vh_list = self.dwt1d(values.transpose(1, 2)) + qs = Qh_list + [Ql] # [B, H*D, L] + ks = Kh_list + [Kl] + vs = Vh_list + [Vl] + for q, k, v in zip(qs, ks, vs): + q = q.reshape([B, H, E, -1]) + k = k.reshape([B, H, E, -1]) + v = v.reshape([B, H, E, -1]).permute(0, 3, 1, 2) + q_fft = torch.fft.rfft(q.contiguous(), dim=-1) + k_fft = torch.fft.rfft(k.contiguous(), dim=-1) + res = q_fft * torch.conj(k_fft) + corr = torch.fft.irfft(res, dim=-1) # [B, H, E, L] + if self.training: + V = self.time_delay_agg_training( + v.permute(0, 2, 3, 1).contiguous(), corr).permute(0, 3, 1, 2) + else: + V = self.time_delay_agg_inference( + v.permute(0, 2, 3, 1).contiguous(), corr).permute(0, 3, 1, 2) + V_list += [V] + Vl = V_list[-1].reshape([B, -1, H*E]).transpose(1, 2) + Vh_list = [i.reshape([B, -1, H*E]).transpose(1, 2) + for i in V_list[:-1]] + V = self.dwt1div((Vl, Vh_list)).reshape( + [B, H, E, -1]).permute(0, 3, 1, 2) + # corr = self.dwt1div((V_list[-1], V_list[:-1])) + + if self.output_attention: + # size = [B, L, H, E] + return (V.contiguous(), corr.permute(0, 3, 1, 2)) + else: + return (V.contiguous(), None) + + +class AutoCorrelationLayer(nn.Module): + def __init__(self, correlation, d_model, n_heads, d_keys=None, + d_values=None): + super(AutoCorrelationLayer, self).__init__() + + d_keys = d_keys or (d_model // n_heads) + d_values = d_values or (d_model // n_heads) + + self.inner_correlation = correlation + self.query_projection = nn.Linear(d_model, d_keys * n_heads) + self.key_projection = nn.Linear(d_model, d_keys * n_heads) + self.value_projection = nn.Linear(d_model, d_values * n_heads) + self.out_projection = nn.Linear(d_values * n_heads, d_model) + self.n_heads = n_heads + + def forward(self, queries, keys, values, attn_mask): + B, L, _ = queries.shape + _, S, _ = keys.shape + H = self.n_heads + + queries = self.query_projection(queries).view(B, L, H, -1) + keys = self.key_projection(keys).view(B, S, H, -1) + values = self.value_projection(values).view(B, S, H, -1) + + out, attn = self.inner_correlation( + queries, + keys, + values, + attn_mask + ) + + out = out.view(B, L, -1) + return self.out_projection(out), attn diff --git a/basicts/archs/arch_zoo/fedformer_arch/embed.py b/basicts/archs/arch_zoo/fedformer_arch/embed.py new file mode 100644 index 0000000..b08f259 --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/embed.py @@ -0,0 +1,115 @@ +import math + +import torch +import torch.nn as nn + + +class PositionalEmbedding(nn.Module): + def __init__(self, d_model, max_len=5000): + super(PositionalEmbedding, self).__init__() + # Compute the positional encodings once in log space. + pe = torch.zeros(max_len, d_model).float() + pe.require_grad = False + + position = torch.arange(0, max_len).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() + * -(math.log(10000.0) / d_model)).exp() + + pe[:, 0::2] = torch.sin(position * div_term) + pe[:, 1::2] = torch.cos(position * div_term) + + pe = pe.unsqueeze(0) + self.register_buffer('pe', pe) + + def forward(self, x): + return self.pe[:, :x.size(1)] + + +class TokenEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(TokenEmbedding, self).__init__() + padding = 1 if torch.__version__ >= '1.5.0' else 2 + self.tokenConv = nn.Conv1d(in_channels=c_in, out_channels=d_model, + kernel_size=3, padding=padding, padding_mode='circular', bias=False) + for m in self.modules(): + if isinstance(m, nn.Conv1d): + nn.init.kaiming_normal_( + m.weight, mode='fan_in', nonlinearity='leaky_relu') + + def forward(self, x): + x = self.tokenConv(x.permute(0, 2, 1)).transpose(1, 2) + return x + + +class FixedEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(FixedEmbedding, self).__init__() + + w = torch.zeros(c_in, d_model).float() + w.require_grad = False + + position = torch.arange(0, c_in).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() + * -(math.log(10000.0) / d_model)).exp() + + w[:, 0::2] = torch.sin(position * div_term) + w[:, 1::2] = torch.cos(position * div_term) + + self.emb = nn.Embedding(c_in, d_model) + self.emb.weight = nn.Parameter(w, requires_grad=False) + + def forward(self, x): + return self.emb(x).detach() + + +class TimeFeatureEmbedding(nn.Module): + def __init__(self, d_model, num_time_features): + super(TimeFeatureEmbedding, self).__init__() + # freq_map = {'h': 2} + # NOTE: this is different from official autoformer, since METR-LA, PEMS-BAY, and PEMS0X datasets only contain two kind of temporal features (time in day, day in week) + self.embed = nn.Linear(num_time_features, d_model, bias=False) + + def forward(self, x): + return self.embed(x) + + +class DataEmbedding(nn.Module): + def __init__(self, c_in, d_model, num_time_features, dropout=0.1): + super(DataEmbedding, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.temporal_embedding = TimeFeatureEmbedding(d_model=d_model, num_time_features=num_time_features) + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding( + x) + self.temporal_embedding(x_mark) + self.position_embedding(x) + return self.dropout(x) + + +class DataEmbedding_onlypos(nn.Module): + def __init__(self, c_in, d_model, embed_type='fixed', freq='h', dropout=0.1): + super(DataEmbedding_onlypos, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding(x) + self.position_embedding(x) + return self.dropout(x) + + +class DataEmbedding_wo_pos(nn.Module): + def __init__(self, c_in, d_model, num_time_features, dropout=0.1): + super(DataEmbedding_wo_pos, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.temporal_embedding = TimeFeatureEmbedding(d_model=d_model, num_time_features=num_time_features) + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding(x) + self.temporal_embedding(x_mark) + return self.dropout(x) diff --git a/basicts/archs/arch_zoo/fedformer_arch/fedformer_arch.py b/basicts/archs/arch_zoo/fedformer_arch/fedformer_arch.py new file mode 100644 index 0000000..c124a3e --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/fedformer_arch.py @@ -0,0 +1,183 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + +from .embed import DataEmbedding_wo_pos, DataEmbedding +from .auto_correlation import AutoCorrelationLayer +from .fourier_correlation import FourierBlock, FourierCrossAttention +from .multi_wavelet_correlation import MultiWaveletCross, MultiWaveletTransform +from .fedformer_enc_dec import Encoder, Decoder, EncoderLayer, DecoderLayer, my_Layernorm, series_decomp, series_decomp_multi +from ..utils import data_transformation_4_xformer + + +class FEDformer(nn.Module): + """ + Paper: FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting + Link: https://arxiv.org/abs/2201.12740v3 + Ref Official Code: https://github.com/MAZiqing/FEDformer + """ + + def __init__(self, **model_args): + super(FEDformer, self).__init__() + self.version = model_args["version"] + self.mode_select = model_args["mode_select"] + self.modes = model_args["modes"] + self.seq_len = int(model_args["seq_len"]) + self.label_len = int(model_args["label_len"]) + self.pred_len = int(model_args["pred_len"]) + self.output_attention = model_args["output_attention"] + self.embedding_type = model_args["embedding_type"] + + # Decomp + kernel_size = model_args["moving_avg"] + self.decomp = series_decomp(kernel_size) + + # Decomp + kernel_size = model_args["moving_avg"] + if isinstance(kernel_size, list): + self.decomp = series_decomp_multi(kernel_size) + else: + self.decomp = series_decomp(kernel_size) + + # Embedding + # The series-wise connection inherently contains the sequential information. + # Thus, we can discard the position embedding of transformers. + if self.embedding_type == "DataEmbedding_wo_pos": + self.enc_embedding = DataEmbedding_wo_pos(model_args["enc_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + self.dec_embedding = DataEmbedding_wo_pos(model_args["dec_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + elif self.embedding_type == "DataEmbedding": + self.enc_embedding = DataEmbedding(model_args["enc_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + self.dec_embedding = DataEmbedding(model_args["dec_in"], model_args["d_model"], model_args["num_time_features"], model_args["dropout"]) + else: + raise Exception("Unknown embedding type.") + + if model_args["version"] == 'Wavelets': + encoder_self_att = MultiWaveletTransform( + ich=model_args["d_model"], L=model_args["L"], base=model_args["base"]) + decoder_self_att = MultiWaveletTransform( + ich=model_args["d_model"], L=model_args["L"], base=model_args["base"]) + decoder_cross_att = MultiWaveletCross(in_channels=model_args["d_model"], + out_channels=model_args["d_model"], + seq_len_q=self.seq_len // 2 + self.pred_len, + seq_len_kv=self.seq_len, + modes=model_args["modes"], + ich=model_args["d_model"], + base=model_args["base"], + activation=model_args["cross_activation"]) + else: + encoder_self_att = FourierBlock(in_channels=model_args["d_model"], + out_channels=model_args["d_model"], + seq_len=self.seq_len, + modes=model_args["modes"], + mode_select_method=model_args["mode_select"]) + decoder_self_att = FourierBlock(in_channels=model_args["d_model"], + out_channels=model_args["d_model"], + seq_len=self.seq_len//2+self.pred_len, + modes=model_args["modes"], + mode_select_method=model_args["mode_select"]) + decoder_cross_att = FourierCrossAttention(in_channels=model_args["d_model"], + out_channels=model_args["d_model"], + seq_len_q=self.seq_len//2+self.pred_len, + seq_len_kv=self.seq_len, + modes=model_args["modes"], + mode_select_method=model_args["mode_select"]) + # Encoder + enc_modes = int(min(model_args["modes"], model_args["seq_len"]//2)) + dec_modes = int( + min(model_args["modes"], (model_args["seq_len"]//2+model_args["pred_len"])//2)) + print('enc_modes: {}, dec_modes: {}'.format(enc_modes, dec_modes)) + + self.encoder = Encoder( + [ + EncoderLayer( + AutoCorrelationLayer( + encoder_self_att, + model_args["d_model"], model_args["n_heads"]), + + model_args["d_model"], + model_args["d_ff"], + moving_avg=model_args["moving_avg"], + dropout=model_args["dropout"], + activation=model_args["activation"] + ) for l in range(model_args["e_layers"]) + ], + norm_layer=my_Layernorm(model_args["d_model"]) + ) + # Decoder + self.decoder = Decoder( + [ + DecoderLayer( + AutoCorrelationLayer( + decoder_self_att, + model_args["d_model"], model_args["n_heads"]), + AutoCorrelationLayer( + decoder_cross_att, + model_args["d_model"], model_args["n_heads"]), + model_args["d_model"], + model_args["c_out"], + model_args["d_ff"], + moving_avg=model_args["moving_avg"], + dropout=model_args["dropout"], + activation=model_args["activation"], + ) + for l in range(model_args["d_layers"]) + ], + norm_layer=my_Layernorm(model_args["d_model"]), + projection=nn.Linear(model_args["d_model"], model_args["c_out"], bias=True) + ) + + def forward_xformer(self, x_enc: torch.Tensor, x_mark_enc: torch.Tensor, x_dec: torch.Tensor, x_mark_dec: torch.Tensor, + enc_self_mask: torch.Tensor=None, dec_self_mask: torch.Tensor=None, dec_enc_mask: torch.Tensor=None) -> torch.Tensor: + """Feed forward of FEDformer. Kindly note that `enc_self_mask`, `dec_self_mask`, and `dec_enc_mask` are not actually used in FEDFormer. + + Args: + x_enc (torch.Tensor): input data of encoder (without the time features). Shape: [B, L1, N] + x_mark_enc (torch.Tensor): time features input of encoder w.r.t. x_enc. Shape: [B, L1, C-1] + x_dec (torch.Tensor): input data of decoder. Shape: [B, start_token_length + L2, N] + x_mark_dec (torch.Tensor): time features input to decoder w.r.t. x_dec. Shape: [B, start_token_length + L2, C-1] + enc_self_mask (torch.Tensor, optional): encoder self attention masks. Defaults to None. + dec_self_mask (torch.Tensor, optional): decoder self attention masks. Defaults to None. + dec_enc_mask (torch.Tensor, optional): decoder encoder self attention masks. Defaults to None. + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + # decomp init + mean = torch.mean(x_enc, dim=1).unsqueeze( + 1).repeat(1, self.pred_len, 1) + zeros = torch.zeros([x_dec.shape[0], self.pred_len, + x_dec.shape[2]]).to(mean.device) + seasonal_init, trend_init = self.decomp(x_enc) + # decoder input + trend_init = torch.cat( + [trend_init[:, -self.label_len:, :], mean], dim=1) + seasonal_init = F.pad( + seasonal_init[:, -self.label_len:, :], (0, 0, 0, self.pred_len)) + # enc + enc_out = self.enc_embedding(x_enc, x_mark_enc) + enc_out, attns = self.encoder(enc_out, attn_mask=enc_self_mask) + # dec + dec_out = self.dec_embedding(seasonal_init, x_mark_dec) + seasonal_part, trend_part = self.decoder(dec_out, enc_out, x_mask=dec_self_mask, cross_mask=dec_enc_mask, + trend=trend_init) + # final + dec_out = trend_part + seasonal_part + + return dec_out[:, -self.pred_len:, :].unsqueeze(-1) # [B, L, N, C] + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """ + + Args: + history_data (Tensor): Input data with shape: [B, L1, N, C] + future_data (Tensor): Future data with shape: [B, L2, N, C] + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + x_enc, x_mark_enc, x_dec, x_mark_dec = data_transformation_4_xformer(history_data=history_data, future_data=future_data, start_token_len=self.label_len) + prediction = self.forward_xformer(x_enc=x_enc, x_mark_enc=x_mark_enc, x_dec=x_dec, x_mark_dec=x_mark_dec) + return prediction + diff --git a/basicts/archs/arch_zoo/fedformer_arch/fedformer_enc_dec.py b/basicts/archs/arch_zoo/fedformer_arch/fedformer_enc_dec.py new file mode 100644 index 0000000..13b5921 --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/fedformer_enc_dec.py @@ -0,0 +1,219 @@ +import math + +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class my_Layernorm(nn.Module): + """ + Special designed layernorm for the seasonal part + """ + def __init__(self, channels): + super(my_Layernorm, self).__init__() + self.layernorm = nn.LayerNorm(channels) + + def forward(self, x): + x_hat = self.layernorm(x) + bias = torch.mean(x_hat, dim=1).unsqueeze(1).repeat(1, x.shape[1], 1) + return x_hat - bias + + +class moving_avg(nn.Module): + """ + Moving average block to highlight the trend of time series + """ + def __init__(self, kernel_size, stride): + super(moving_avg, self).__init__() + self.kernel_size = kernel_size + self.avg = nn.AvgPool1d(kernel_size=kernel_size, stride=stride, padding=0) + + def forward(self, x): + # padding on the both ends of time series + front = x[:, 0:1, :].repeat(1, self.kernel_size - 1-math.floor((self.kernel_size - 1) // 2), 1) + end = x[:, -1:, :].repeat(1, math.floor((self.kernel_size - 1) // 2), 1) + x = torch.cat([front, x, end], dim=1) + x = self.avg(x.permute(0, 2, 1)) + x = x.permute(0, 2, 1) + return x + + +class series_decomp(nn.Module): + """ + Series decomposition block + """ + def __init__(self, kernel_size): + super(series_decomp, self).__init__() + self.moving_avg = moving_avg(kernel_size, stride=1) + + def forward(self, x): + moving_mean = self.moving_avg(x) + res = x - moving_mean + return res, moving_mean + + +class series_decomp_multi(nn.Module): + """ + Series decomposition block + """ + def __init__(self, kernel_size): + super(series_decomp_multi, self).__init__() + self.moving_avg = [moving_avg(kernel, stride=1) for kernel in kernel_size] + self.layer = torch.nn.Linear(1, len(kernel_size)) + + def forward(self, x): + moving_mean=[] + for func in self.moving_avg: + moving_avg = func(x) + moving_mean.append(moving_avg.unsqueeze(-1)) + moving_mean=torch.cat(moving_mean,dim=-1) + moving_mean = torch.sum(moving_mean*nn.Softmax(-1)(self.layer(x.unsqueeze(-1))),dim=-1) + res = x - moving_mean + return res, moving_mean + + +class FourierDecomp(nn.Module): + def __init__(self): + super(FourierDecomp, self).__init__() + pass + + def forward(self, x): + x_ft = torch.fft.rfft(x, dim=-1) + + +class EncoderLayer(nn.Module): + """ + Autoformer encoder layer with the progressive decomposition architecture + """ + def __init__(self, attention, d_model, d_ff=None, moving_avg=25, dropout=0.1, activation="relu"): + super(EncoderLayer, self).__init__() + d_ff = d_ff or 4 * d_model + self.attention = attention + self.conv1 = nn.Conv1d(in_channels=d_model, out_channels=d_ff, kernel_size=1, bias=False) + self.conv2 = nn.Conv1d(in_channels=d_ff, out_channels=d_model, kernel_size=1, bias=False) + + if isinstance(moving_avg, list): + self.decomp1 = series_decomp_multi(moving_avg) + self.decomp2 = series_decomp_multi(moving_avg) + else: + self.decomp1 = series_decomp(moving_avg) + self.decomp2 = series_decomp(moving_avg) + + self.dropout = nn.Dropout(dropout) + self.activation = F.relu if activation == "relu" else F.gelu + + def forward(self, x, attn_mask=None): + new_x, attn = self.attention( + x, x, x, + attn_mask=attn_mask + ) + x = x + self.dropout(new_x) + x, _ = self.decomp1(x) + y = x + y = self.dropout(self.activation(self.conv1(y.transpose(-1, 1)))) + y = self.dropout(self.conv2(y).transpose(-1, 1)) + res, _ = self.decomp2(x + y) + return res, attn + + +class Encoder(nn.Module): + """ + Autoformer encoder + """ + def __init__(self, attn_layers, conv_layers=None, norm_layer=None): + super(Encoder, self).__init__() + self.attn_layers = nn.ModuleList(attn_layers) + self.conv_layers = nn.ModuleList(conv_layers) if conv_layers is not None else None + self.norm = norm_layer + + def forward(self, x, attn_mask=None): + attns = [] + if self.conv_layers is not None: + for attn_layer, conv_layer in zip(self.attn_layers, self.conv_layers): + x, attn = attn_layer(x, attn_mask=attn_mask) + x = conv_layer(x) + attns.append(attn) + x, attn = self.attn_layers[-1](x) + attns.append(attn) + else: + for attn_layer in self.attn_layers: + x, attn = attn_layer(x, attn_mask=attn_mask) + attns.append(attn) + + if self.norm is not None: + x = self.norm(x) + + return x, attns + + +class DecoderLayer(nn.Module): + """ + Autoformer decoder layer with the progressive decomposition architecture + """ + def __init__(self, self_attention, cross_attention, d_model, c_out, d_ff=None, + moving_avg=25, dropout=0.1, activation="relu"): + super(DecoderLayer, self).__init__() + d_ff = d_ff or 4 * d_model + self.self_attention = self_attention + self.cross_attention = cross_attention + self.conv1 = nn.Conv1d(in_channels=d_model, out_channels=d_ff, kernel_size=1, bias=False) + self.conv2 = nn.Conv1d(in_channels=d_ff, out_channels=d_model, kernel_size=1, bias=False) + + if isinstance(moving_avg, list): + self.decomp1 = series_decomp_multi(moving_avg) + self.decomp2 = series_decomp_multi(moving_avg) + self.decomp3 = series_decomp_multi(moving_avg) + else: + self.decomp1 = series_decomp(moving_avg) + self.decomp2 = series_decomp(moving_avg) + self.decomp3 = series_decomp(moving_avg) + + self.dropout = nn.Dropout(dropout) + self.projection = nn.Conv1d(in_channels=d_model, out_channels=c_out, kernel_size=3, stride=1, padding=1, + padding_mode='circular', bias=False) + self.activation = F.relu if activation == "relu" else F.gelu + + def forward(self, x, cross, x_mask=None, cross_mask=None): + x = x + self.dropout(self.self_attention( + x, x, x, + attn_mask=x_mask + )[0]) + + x, trend1 = self.decomp1(x) + x = x + self.dropout(self.cross_attention( + x, cross, cross, + attn_mask=cross_mask + )[0]) + + x, trend2 = self.decomp2(x) + y = x + y = self.dropout(self.activation(self.conv1(y.transpose(-1, 1)))) + y = self.dropout(self.conv2(y).transpose(-1, 1)) + x, trend3 = self.decomp3(x + y) + + residual_trend = trend1 + trend2 + trend3 + residual_trend = self.projection(residual_trend.permute(0, 2, 1)).transpose(1, 2) + return x, residual_trend + + +class Decoder(nn.Module): + """ + Autoformer encoder + """ + def __init__(self, layers, norm_layer=None, projection=None): + super(Decoder, self).__init__() + self.layers = nn.ModuleList(layers) + self.norm = norm_layer + self.projection = projection + + def forward(self, x, cross, x_mask=None, cross_mask=None, trend=None): + for layer in self.layers: + x, residual_trend = layer(x, cross, x_mask=x_mask, cross_mask=cross_mask) + trend = trend + residual_trend + + if self.norm is not None: + x = self.norm(x) + + if self.projection is not None: + x = self.projection(x) + return x, trend diff --git a/basicts/archs/arch_zoo/fedformer_arch/fourier_correlation.py b/basicts/archs/arch_zoo/fedformer_arch/fourier_correlation.py new file mode 100644 index 0000000..5e19d97 --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/fourier_correlation.py @@ -0,0 +1,136 @@ +# coding=utf-8 +# author=maziqing +# email=maziqing.mzq@alibaba-inc.com + +import numpy as np +import torch +import torch.nn as nn + + +def get_frequency_modes(seq_len, modes=64, mode_select_method='random'): + """ + get modes on frequency domain: + 'random' means sampling randomly; + 'else' means sampling the lowest modes; + """ + modes = min(modes, seq_len//2) + if mode_select_method == 'random': + index = list(range(0, seq_len // 2)) + np.random.shuffle(index) + index = index[:modes] + else: + index = list(range(0, modes)) + index.sort() + return index + + +# ########## fourier layer ############# +class FourierBlock(nn.Module): + def __init__(self, in_channels, out_channels, seq_len, modes=0, mode_select_method='random'): + super(FourierBlock, self).__init__() + print('fourier enhanced block used!') + """ + 1D Fourier block. It performs representation learning on frequency domain, + it does FFT, linear transform, and Inverse FFT. + """ + # get modes on frequency domain + self.index = get_frequency_modes( + seq_len, modes=modes, mode_select_method=mode_select_method) + print('modes={}, index={}'.format(modes, self.index)) + + self.scale = (1 / (in_channels * out_channels)) + self.weights1 = nn.Parameter( + self.scale * torch.rand(8, in_channels // 8, out_channels // 8, len(self.index), dtype=torch.cfloat)) + + # Complex multiplication + def compl_mul1d(self, input, weights): + # (batch, in_channel, x ), (in_channel, out_channel, x) -> (batch, out_channel, x) + return torch.einsum("bhi,hio->bho", input, weights) + + def forward(self, q, k, v, mask): + # size = [B, L, H, E] + B, L, H, E = q.shape + x = q.permute(0, 2, 3, 1) + # Compute Fourier coefficients + x_ft = torch.fft.rfft(x, dim=-1) + # Perform Fourier neural operations + out_ft = torch.zeros(B, H, E, L // 2 + 1, + device=x.device, dtype=torch.cfloat) + for wi, i in enumerate(self.index): + out_ft[:, :, :, wi] = self.compl_mul1d( + x_ft[:, :, :, i], self.weights1[:, :, :, wi]) + # Return to time domain + x = torch.fft.irfft(out_ft, n=x.size(-1)) + return (x, None) + + +# ########## Fourier Cross Former #################### +class FourierCrossAttention(nn.Module): + def __init__(self, in_channels, out_channels, seq_len_q, seq_len_kv, modes=64, mode_select_method='random', + activation='tanh', policy=0): + super(FourierCrossAttention, self).__init__() + print(' fourier enhanced cross attention used!') + """ + 1D Fourier Cross Attention layer. It does FFT, linear transform, attention mechanism and Inverse FFT. + """ + self.activation = activation + self.in_channels = in_channels + self.out_channels = out_channels + # get modes for queries and keys (& values) on frequency domain + self.index_q = get_frequency_modes( + seq_len_q, modes=modes, mode_select_method=mode_select_method) + self.index_kv = get_frequency_modes( + seq_len_kv, modes=modes, mode_select_method=mode_select_method) + + print('modes_q={}, index_q={}'.format(len(self.index_q), self.index_q)) + print('modes_kv={}, index_kv={}'.format( + len(self.index_kv), self.index_kv)) + + self.scale = (1 / (in_channels * out_channels)) + self.weights1 = nn.Parameter( + self.scale * torch.rand(8, in_channels // 8, out_channels // 8, len(self.index_q), dtype=torch.cfloat)) + + # Complex multiplication + def compl_mul1d(self, input, weights): + # (batch, in_channel, x ), (in_channel, out_channel, x) -> (batch, out_channel, x) + return torch.einsum("bhi,hio->bho", input, weights) + + def forward(self, q, k, v, mask): + # size = [B, L, H, E] + B, L, H, E = q.shape + xq = q.permute(0, 2, 3, 1) # size = [B, H, E, L] + xk = k.permute(0, 2, 3, 1) + xv = v.permute(0, 2, 3, 1) + + # Compute Fourier coefficients + xq_ft_ = torch.zeros(B, H, E, len(self.index_q), + device=xq.device, dtype=torch.cfloat) + xq_ft = torch.fft.rfft(xq, dim=-1) + for i, j in enumerate(self.index_q): + xq_ft_[:, :, :, i] = xq_ft[:, :, :, j] + xk_ft_ = torch.zeros(B, H, E, len(self.index_kv), + device=xq.device, dtype=torch.cfloat) + xk_ft = torch.fft.rfft(xk, dim=-1) + for i, j in enumerate(self.index_kv): + xk_ft_[:, :, :, i] = xk_ft[:, :, :, j] + + # perform attention mechanism on frequency domain + xqk_ft = (torch.einsum("bhex,bhey->bhxy", xq_ft_, xk_ft_)) + if self.activation == 'tanh': + xqk_ft = xqk_ft.tanh() + elif self.activation == 'softmax': + xqk_ft = torch.softmax(abs(xqk_ft), dim=-1) + xqk_ft = torch.complex(xqk_ft, torch.zeros_like(xqk_ft)) + else: + raise Exception( + '{} actiation function is not implemented'.format(self.activation)) + xqkv_ft = torch.einsum("bhxy,bhey->bhex", xqk_ft, xk_ft_) + xqkvw = torch.einsum("bhex,heox->bhox", xqkv_ft, self.weights1) + out_ft = torch.zeros(B, H, E, L // 2 + 1, + device=xq.device, dtype=torch.cfloat) + for i, j in enumerate(self.index_q): + out_ft[:, :, :, j] = xqkvw[:, :, :, i] + # Return to time domain + out = torch.fft.irfft(out_ft / self.in_channels / + self.out_channels, n=xq.size(-1)) + return (out, None) diff --git a/basicts/archs/arch_zoo/fedformer_arch/masking.py b/basicts/archs/arch_zoo/fedformer_arch/masking.py new file mode 100644 index 0000000..49b4efc --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/masking.py @@ -0,0 +1,47 @@ +import math + +import torch +import numpy as np + + +class TriangularCausalMask(): + def __init__(self, B, L, device="cpu"): + mask_shape = [B, 1, L, L] + with torch.no_grad(): + self._mask = torch.triu(torch.ones( + mask_shape, dtype=torch.bool), diagonal=1).to(device) + + @property + def mask(self): + return self._mask + + +class ProbMask(): + def __init__(self, B, H, L, index, scores, device="cpu"): + _mask = torch.ones( + L, scores.shape[-1], dtype=torch.bool).to(device).triu(1) + _mask_ex = _mask[None, None, :].expand(B, H, L, scores.shape[-1]) + indicator = _mask_ex[torch.arange(B)[:, None, None], + torch.arange(H)[None, :, None], + index, :].to(device) + self._mask = indicator.view(scores.shape).to(device) + + @property + def mask(self): + return self._mask + + +class LocalMask(): + def __init__(self, B, L, S, device="cpu"): + mask_shape = [B, 1, L, S] + with torch.no_grad(): + self.len = math.ceil(np.log2(L)) + self._mask1 = torch.triu(torch.ones( + mask_shape, dtype=torch.bool), diagonal=1).to(device) + self._mask2 = ~torch.triu(torch.ones( + mask_shape, dtype=torch.bool), diagonal=-self.len).to(device) + self._mask = self._mask1+self._mask2 + + @property + def mask(self): + return self._mask diff --git a/basicts/archs/arch_zoo/fedformer_arch/multi_wavelet_correlation.py b/basicts/archs/arch_zoo/fedformer_arch/multi_wavelet_correlation.py new file mode 100644 index 0000000..7e1e51f --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/multi_wavelet_correlation.py @@ -0,0 +1,385 @@ +import math +from typing import List, Tuple + +import torch +import numpy as np +import torch.nn as nn +import torch.nn.functional as F +from torch import Tensor + +from .utils import get_filter + + +class MultiWaveletTransform(nn.Module): + """ + 1D multiwavelet block. + """ + + def __init__(self, ich=1, k=8, alpha=16, c=128, + nCZ=1, L=0, base='legendre', attention_dropout=0.1): + super(MultiWaveletTransform, self).__init__() + print('base', base) + self.k = k + self.c = c + self.L = L + self.nCZ = nCZ + self.Lk0 = nn.Linear(ich, c * k) + self.Lk1 = nn.Linear(c * k, ich) + self.ich = ich + self.MWT_CZ = nn.ModuleList( + MWT_CZ1d(k, alpha, L, c, base) for i in range(nCZ)) + + def forward(self, queries, keys, values, attn_mask): + B, L, H, E = queries.shape + _, S, _, D = values.shape + if L > S: + zeros = torch.zeros_like(queries[:, :(L - S), :]).float() + values = torch.cat([values, zeros], dim=1) + keys = torch.cat([keys, zeros], dim=1) + else: + values = values[:, :L, :, :] + keys = keys[:, :L, :, :] + values = values.view(B, L, -1) + + V = self.Lk0(values).view(B, L, self.c, -1) + for i in range(self.nCZ): + V = self.MWT_CZ[i](V) + if i < self.nCZ - 1: + V = F.relu(V) + + V = self.Lk1(V.view(B, L, -1)) + V = V.view(B, L, -1, D) + return (V.contiguous(), None) + + +class MultiWaveletCross(nn.Module): + """ + 1D Multiwavelet Cross Attention layer. + """ + + def __init__(self, in_channels, out_channels, seq_len_q, seq_len_kv, modes, c=64, + k=8, ich=512, + L=0, + base='legendre', + mode_select_method='random', + initializer=None, activation='tanh', + **kwargs): + super(MultiWaveletCross, self).__init__() + print('base', base) + + self.c = c + self.k = k + self.L = L + H0, H1, G0, G1, PHI0, PHI1 = get_filter(base, k) + H0r = H0 @ PHI0 + G0r = G0 @ PHI0 + H1r = H1 @ PHI1 + G1r = G1 @ PHI1 + + H0r[np.abs(H0r) < 1e-8] = 0 + H1r[np.abs(H1r) < 1e-8] = 0 + G0r[np.abs(G0r) < 1e-8] = 0 + G1r[np.abs(G1r) < 1e-8] = 0 + self.max_item = 3 + + self.attn1 = FourierCrossAttentionW(in_channels=in_channels, out_channels=out_channels, seq_len_q=seq_len_q, + seq_len_kv=seq_len_kv, modes=modes, activation=activation, + mode_select_method=mode_select_method) + self.attn2 = FourierCrossAttentionW(in_channels=in_channels, out_channels=out_channels, seq_len_q=seq_len_q, + seq_len_kv=seq_len_kv, modes=modes, activation=activation, + mode_select_method=mode_select_method) + self.attn3 = FourierCrossAttentionW(in_channels=in_channels, out_channels=out_channels, seq_len_q=seq_len_q, + seq_len_kv=seq_len_kv, modes=modes, activation=activation, + mode_select_method=mode_select_method) + self.attn4 = FourierCrossAttentionW(in_channels=in_channels, out_channels=out_channels, seq_len_q=seq_len_q, + seq_len_kv=seq_len_kv, modes=modes, activation=activation, + mode_select_method=mode_select_method) + self.T0 = nn.Linear(k, k) + self.register_buffer('ec_s', torch.Tensor( + np.concatenate((H0.T, H1.T), axis=0))) + self.register_buffer('ec_d', torch.Tensor( + np.concatenate((G0.T, G1.T), axis=0))) + + self.register_buffer('rc_e', torch.Tensor( + np.concatenate((H0r, G0r), axis=0))) + self.register_buffer('rc_o', torch.Tensor( + np.concatenate((H1r, G1r), axis=0))) + + self.Lk = nn.Linear(ich, c * k) + self.Lq = nn.Linear(ich, c * k) + self.Lv = nn.Linear(ich, c * k) + self.out = nn.Linear(c * k, ich) + self.modes1 = modes + + def forward(self, q, k, v, mask=None): + B, N, H, E = q.shape # (B, N, H, E) torch.Size([3, 768, 8, 2]) + _, S, _, _ = k.shape # (B, S, H, E) torch.Size([3, 96, 8, 2]) + + q = q.view(q.shape[0], q.shape[1], -1) + k = k.view(k.shape[0], k.shape[1], -1) + v = v.view(v.shape[0], v.shape[1], -1) + q = self.Lq(q) + q = q.view(q.shape[0], q.shape[1], self.c, self.k) + k = self.Lk(k) + k = k.view(k.shape[0], k.shape[1], self.c, self.k) + v = self.Lv(v) + v = v.view(v.shape[0], v.shape[1], self.c, self.k) + + if N > S: + zeros = torch.zeros_like(q[:, :(N - S), :]).float() + v = torch.cat([v, zeros], dim=1) + k = torch.cat([k, zeros], dim=1) + else: + v = v[:, :N, :, :] + k = k[:, :N, :, :] + + ns = math.floor(np.log2(N)) + nl = pow(2, math.ceil(np.log2(N))) + extra_q = q[:, 0:nl - N, :, :] + extra_k = k[:, 0:nl - N, :, :] + extra_v = v[:, 0:nl - N, :, :] + q = torch.cat([q, extra_q], 1) + k = torch.cat([k, extra_k], 1) + v = torch.cat([v, extra_v], 1) + + Ud_q = torch.jit.annotate(List[Tuple[Tensor]], []) + Ud_k = torch.jit.annotate(List[Tuple[Tensor]], []) + Ud_v = torch.jit.annotate(List[Tuple[Tensor]], []) + + Us_q = torch.jit.annotate(List[Tensor], []) + Us_k = torch.jit.annotate(List[Tensor], []) + Us_v = torch.jit.annotate(List[Tensor], []) + + Ud = torch.jit.annotate(List[Tensor], []) + Us = torch.jit.annotate(List[Tensor], []) + + # decompose + for i in range(ns - self.L): + # print('q shape',q.shape) + d, q = self.wavelet_transform(q) + Ud_q += [tuple([d, q])] + Us_q += [d] + for i in range(ns - self.L): + d, k = self.wavelet_transform(k) + Ud_k += [tuple([d, k])] + Us_k += [d] + for i in range(ns - self.L): + d, v = self.wavelet_transform(v) + Ud_v += [tuple([d, v])] + Us_v += [d] + for i in range(ns - self.L): + dk, sk = Ud_k[i], Us_k[i] + dq, sq = Ud_q[i], Us_q[i] + dv, sv = Ud_v[i], Us_v[i] + Ud += [self.attn1(dq[0], dk[0], dv[0], mask)[0] + + self.attn2(dq[1], dk[1], dv[1], mask)[0]] + Us += [self.attn3(sq, sk, sv, mask)[0]] + v = self.attn4(q, k, v, mask)[0] + + # reconstruct + for i in range(ns - 1 - self.L, -1, -1): + v = v + Us[i] + v = torch.cat((v, Ud[i]), -1) + v = self.evenOdd(v) + v = self.out(v[:, :N, :, :].contiguous().view(B, N, -1)) + return (v.contiguous(), None) + + def wavelet_transform(self, x): + xa = torch.cat([x[:, ::2, :, :], + x[:, 1::2, :, :], + ], -1) + d = torch.matmul(xa, self.ec_d) + s = torch.matmul(xa, self.ec_s) + return d, s + + def evenOdd(self, x): + B, N, c, ich = x.shape # (B, N, c, k) + assert ich == 2 * self.k + x_e = torch.matmul(x, self.rc_e) + x_o = torch.matmul(x, self.rc_o) + + x = torch.zeros(B, N * 2, c, self.k, + device=x.device) + x[..., ::2, :, :] = x_e + x[..., 1::2, :, :] = x_o + return x + + +class FourierCrossAttentionW(nn.Module): + def __init__(self, in_channels, out_channels, seq_len_q, seq_len_kv, modes=16, activation='tanh', + mode_select_method='random'): + super(FourierCrossAttentionW, self).__init__() + print('corss fourier correlation used!') + self.in_channels = in_channels + self.out_channels = out_channels + self.modes1 = modes + self.activation = activation + + def forward(self, q, k, v, mask): + B, L, E, H = q.shape + + # size = [B, H, E, L] torch.Size([3, 8, 64, 512]) + xq = q.permute(0, 3, 2, 1) + xk = k.permute(0, 3, 2, 1) + xv = v.permute(0, 3, 2, 1) + self.index_q = list(range(0, min(int(L // 2), self.modes1))) + self.index_k_v = list( + range(0, min(int(xv.shape[3] // 2), self.modes1))) + + # Compute Fourier coefficients + xq_ft_ = torch.zeros(B, H, E, len(self.index_q), + device=xq.device, dtype=torch.cfloat) + xq_ft = torch.fft.rfft(xq, dim=-1) + for i, j in enumerate(self.index_q): + xq_ft_[:, :, :, i] = xq_ft[:, :, :, j] + + xk_ft_ = torch.zeros(B, H, E, len(self.index_k_v), + device=xq.device, dtype=torch.cfloat) + xk_ft = torch.fft.rfft(xk, dim=-1) + for i, j in enumerate(self.index_k_v): + xk_ft_[:, :, :, i] = xk_ft[:, :, :, j] + xqk_ft = (torch.einsum("bhex,bhey->bhxy", xq_ft_, xk_ft_)) + if self.activation == 'tanh': + xqk_ft = xqk_ft.tanh() + elif self.activation == 'softmax': + xqk_ft = torch.softmax(abs(xqk_ft), dim=-1) + xqk_ft = torch.complex(xqk_ft, torch.zeros_like(xqk_ft)) + else: + raise Exception( + '{} actiation function is not implemented'.format(self.activation)) + xqkv_ft = torch.einsum("bhxy,bhey->bhex", xqk_ft, xk_ft_) + + xqkvw = xqkv_ft + out_ft = torch.zeros(B, H, E, L // 2 + 1, + device=xq.device, dtype=torch.cfloat) + for i, j in enumerate(self.index_q): + out_ft[:, :, :, j] = xqkvw[:, :, :, i] + + out = torch.fft.irfft(out_ft / self.in_channels / + self.out_channels, n=xq.size(-1)).permute(0, 3, 2, 1) + # size = [B, L, H, E] + return (out, None) + + +class sparseKernelFT1d(nn.Module): + def __init__(self, + k, alpha, c=1, + nl=1, + initializer=None, + **kwargs): + super(sparseKernelFT1d, self).__init__() + + self.modes1 = alpha + self.scale = (1 / (c * k * c * k)) + self.weights1 = nn.Parameter( + self.scale * torch.rand(c * k, c * k, self.modes1, dtype=torch.cfloat)) + self.weights1.requires_grad = True + self.k = k + + def compl_mul1d(self, x, weights): + # (batch, in_channel, x ), (in_channel, out_channel, x) -> (batch, out_channel, x) + return torch.einsum("bix,iox->box", x, weights) + + def forward(self, x): + B, N, c, k = x.shape # (B, N, c, k) + + x = x.view(B, N, -1) + x = x.permute(0, 2, 1) + x_fft = torch.fft.rfft(x) + # Multiply relevant Fourier modes + l = min(self.modes1, N // 2 + 1) + # l = N//2+1 + out_ft = torch.zeros(B, c * k, N // 2 + 1, + device=x.device, dtype=torch.cfloat) + out_ft[:, :, :l] = self.compl_mul1d( + x_fft[:, :, :l], self.weights1[:, :, :l]) + x = torch.fft.irfft(out_ft, n=N) + x = x.permute(0, 2, 1).view(B, N, c, k) + return x + + +# ## +class MWT_CZ1d(nn.Module): + def __init__(self, + k=3, alpha=64, + L=0, c=1, + base='legendre', + initializer=None, + **kwargs): + super(MWT_CZ1d, self).__init__() + + self.k = k + self.L = L + H0, H1, G0, G1, PHI0, PHI1 = get_filter(base, k) + H0r = H0 @ PHI0 + G0r = G0 @ PHI0 + H1r = H1 @ PHI1 + G1r = G1 @ PHI1 + + H0r[np.abs(H0r) < 1e-8] = 0 + H1r[np.abs(H1r) < 1e-8] = 0 + G0r[np.abs(G0r) < 1e-8] = 0 + G1r[np.abs(G1r) < 1e-8] = 0 + self.max_item = 3 + + self.A = sparseKernelFT1d(k, alpha, c) + self.B = sparseKernelFT1d(k, alpha, c) + self.C = sparseKernelFT1d(k, alpha, c) + + self.T0 = nn.Linear(k, k) + + self.register_buffer('ec_s', torch.Tensor( + np.concatenate((H0.T, H1.T), axis=0))) + self.register_buffer('ec_d', torch.Tensor( + np.concatenate((G0.T, G1.T), axis=0))) + + self.register_buffer('rc_e', torch.Tensor( + np.concatenate((H0r, G0r), axis=0))) + self.register_buffer('rc_o', torch.Tensor( + np.concatenate((H1r, G1r), axis=0))) + + def forward(self, x): + B, N, c, k = x.shape # (B, N, k) + ns = math.floor(np.log2(N)) + nl = pow(2, math.ceil(np.log2(N))) + extra_x = x[:, 0:nl - N, :, :] + x = torch.cat([x, extra_x], 1) + Ud = torch.jit.annotate(List[Tensor], []) + Us = torch.jit.annotate(List[Tensor], []) + # decompose + for i in range(ns - self.L): + # print('x shape',x.shape) + d, x = self.wavelet_transform(x) + Ud += [self.A(d) + self.B(x)] + Us += [self.C(d)] + x = self.T0(x) # coarsest scale transform + + # reconstruct + for i in range(ns - 1 - self.L, -1, -1): + x = x + Us[i] + x = torch.cat((x, Ud[i]), -1) + x = self.evenOdd(x) + x = x[:, :N, :, :] + + return x + + def wavelet_transform(self, x): + xa = torch.cat([x[:, ::2, :, :], + x[:, 1::2, :, :], + ], -1) + d = torch.matmul(xa, self.ec_d) + s = torch.matmul(xa, self.ec_s) + return d, s + + def evenOdd(self, x): + + B, N, c, ich = x.shape # (B, N, c, k) + assert ich == 2 * self.k + x_e = torch.matmul(x, self.rc_e) + x_o = torch.matmul(x, self.rc_o) + + x = torch.zeros(B, N * 2, c, self.k, + device=x.device) + x[..., ::2, :, :] = x_e + x[..., 1::2, :, :] = x_o + return x diff --git a/basicts/archs/arch_zoo/fedformer_arch/self_attention_family.py b/basicts/archs/arch_zoo/fedformer_arch/self_attention_family.py new file mode 100644 index 0000000..ea960bf --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/self_attention_family.py @@ -0,0 +1,173 @@ +from math import sqrt + +import torch +import torch.nn as nn +import numpy as np + +from .masking import TriangularCausalMask, ProbMask + + +class FullAttention(nn.Module): + def __init__(self, mask_flag=True, factor=5, scale=None, attention_dropout=0.1, output_attention=False): + super(FullAttention, self).__init__() + self.scale = scale + self.mask_flag = mask_flag + self.output_attention = output_attention + self.dropout = nn.Dropout(attention_dropout) + + def forward(self, queries, keys, values, attn_mask): + B, L, H, E = queries.shape + _, S, _, D = values.shape + scale = self.scale or 1. / sqrt(E) + + scores = torch.einsum("blhe,bshe->bhls", queries, keys) + + if self.mask_flag: + if attn_mask is None: + attn_mask = TriangularCausalMask(B, L, device=queries.device) + + scores.masked_fill_(attn_mask.mask, -np.inf) + + A = self.dropout(torch.softmax(scale * scores, dim=-1)) + V = torch.einsum("bhls,bshd->blhd", A, values) + + if self.output_attention: + return (V.contiguous(), A) + else: + return (V.contiguous(), None) + + +class ProbAttention(nn.Module): + def __init__(self, mask_flag=True, factor=5, scale=None, attention_dropout=0.1, output_attention=False): + super(ProbAttention, self).__init__() + self.factor = factor + self.scale = scale + self.mask_flag = mask_flag + self.output_attention = output_attention + self.dropout = nn.Dropout(attention_dropout) + + def _prob_QK(self, Q, K, sample_k, n_top): # n_top: c*ln(L_q) + # Q [B, H, L, D] + B, H, L_K, E = K.shape + _, _, L_Q, _ = Q.shape + + # calculate the sampled Q_K + K_expand = K.unsqueeze(-3).expand(B, H, L_Q, L_K, E) + # real U = U_part(factor*ln(L_k))*L_q + index_sample = torch.randint(L_K, (L_Q, sample_k)) + K_sample = K_expand[:, :, torch.arange( + L_Q).unsqueeze(1), index_sample, :] + Q_K_sample = torch.matmul( + Q.unsqueeze(-2), K_sample.transpose(-2, -1)).squeeze() + + # find the Top_k query with sparisty measurement + M = Q_K_sample.max(-1)[0] - torch.div(Q_K_sample.sum(-1), L_K) + M_top = M.topk(n_top, sorted=False)[1] + + # use the reduced Q to calculate Q_K + Q_reduce = Q[torch.arange(B)[:, None, None], + torch.arange(H)[None, :, None], + M_top, :] # factor*ln(L_q) + Q_K = torch.matmul(Q_reduce, K.transpose(-2, -1)) # factor*ln(L_q)*L_k + + return Q_K, M_top + + def _get_initial_context(self, V, L_Q): + B, H, L_V, D = V.shape + if not self.mask_flag: + # V_sum = V.sum(dim=-2) + V_sum = V.mean(dim=-2) + contex = V_sum.unsqueeze(-2).expand(B, H, + L_Q, V_sum.shape[-1]).clone() + else: # use mask + # requires that L_Q == L_V, i.e. for self-attention only + assert (L_Q == L_V) + contex = V.cumsum(dim=-2) + return contex + + def _update_context(self, context_in, V, scores, index, L_Q, attn_mask): + B, H, L_V, D = V.shape + + if self.mask_flag: + attn_mask = ProbMask(B, H, L_Q, index, scores, device=V.device) + scores.masked_fill_(attn_mask.mask, -np.inf) + + attn = torch.softmax(scores, dim=-1) # nn.Softmax(dim=-1)(scores) + + context_in[torch.arange(B)[:, None, None], + torch.arange(H)[None, :, None], + index, :] = torch.matmul(attn, V).type_as(context_in) + if self.output_attention: + attns = (torch.ones([B, H, L_V, L_V]) / + L_V).type_as(attn).to(attn.device) + attns[torch.arange(B)[:, None, None], torch.arange(H)[ + None, :, None], index, :] = attn + return (context_in, attns) + else: + return (context_in, None) + + def forward(self, queries, keys, values, attn_mask): + B, L_Q, H, D = queries.shape + _, L_K, _, _ = keys.shape + + queries = queries.transpose(2, 1) + keys = keys.transpose(2, 1) + values = values.transpose(2, 1) + + U_part = self.factor * \ + np.ceil(np.log(L_K)).astype('int').item() # c*ln(L_k) + u = self.factor * \ + np.ceil(np.log(L_Q)).astype('int').item() # c*ln(L_q) + + U_part = U_part if U_part < L_K else L_K + u = u if u < L_Q else L_Q + + scores_top, index = self._prob_QK( + queries, keys, sample_k=U_part, n_top=u) + + # add scale factor + scale = self.scale or 1. / sqrt(D) + if scale is not None: + scores_top = scores_top * scale + # get the context + context = self._get_initial_context(values, L_Q) + # update the context with selected top_k queries + context, attn = self._update_context( + context, values, scores_top, index, L_Q, attn_mask) + + return context.contiguous(), attn + + +class AttentionLayer(nn.Module): + def __init__(self, attention, d_model, n_heads, d_keys=None, + d_values=None): + super(AttentionLayer, self).__init__() + + d_keys = d_keys or (d_model // n_heads) + d_values = d_values or (d_model // n_heads) + + self.inner_attention = attention + self.query_projection = nn.Linear(d_model, d_keys * n_heads) + self.key_projection = nn.Linear(d_model, d_keys * n_heads) + self.value_projection = nn.Linear(d_model, d_values * n_heads) + self.out_projection = nn.Linear(d_values * n_heads, d_model) + self.n_heads = n_heads + + def forward(self, queries, keys, values, attn_mask): + B, L, _ = queries.shape + _, S, _ = keys.shape + H = self.n_heads + + queries = self.query_projection(queries).view(B, L, H, -1) + keys = self.key_projection(keys).view(B, S, H, -1) + values = self.value_projection(values).view(B, S, H, -1) + + out, attn = self.inner_attention( + queries, + keys, + values, + attn_mask + ) + out = out.view(B, L, -1) + + return self.out_projection(out), attn diff --git a/basicts/archs/arch_zoo/fedformer_arch/utils.py b/basicts/archs/arch_zoo/fedformer_arch/utils.py new file mode 100644 index 0000000..abad383 --- /dev/null +++ b/basicts/archs/arch_zoo/fedformer_arch/utils.py @@ -0,0 +1,393 @@ +import torch +import torch.nn as nn + +import numpy as np +from functools import partial + +from scipy.special import eval_legendre +from sympy import Poly, legendre, Symbol, chebyshevt + + +def legendreDer(k, x): + def _legendre(k, x): + return (2*k+1) * eval_legendre(k, x) + out = 0 + for i in np.arange(k-1,-1,-2): + out += _legendre(i, x) + return out + + +def phi_(phi_c, x, lb = 0, ub = 1): + mask = np.logical_or(xub) * 1.0 + return np.polynomial.polynomial.Polynomial(phi_c)(x) * (1-mask) + + +def get_phi_psi(k, base): + + x = Symbol('x') + phi_coeff = np.zeros((k,k)) + phi_2x_coeff = np.zeros((k,k)) + if base == 'legendre': + for ki in range(k): + coeff_ = Poly(legendre(ki, 2*x-1), x).all_coeffs() + phi_coeff[ki,:ki+1] = np.flip(np.sqrt(2*ki+1) * np.array(coeff_).astype(np.float64)) + coeff_ = Poly(legendre(ki, 4*x-1), x).all_coeffs() + phi_2x_coeff[ki,:ki+1] = np.flip(np.sqrt(2) * np.sqrt(2*ki+1) * np.array(coeff_).astype(np.float64)) + + psi1_coeff = np.zeros((k, k)) + psi2_coeff = np.zeros((k, k)) + for ki in range(k): + psi1_coeff[ki,:] = phi_2x_coeff[ki,:] + for i in range(k): + a = phi_2x_coeff[ki,:ki+1] + b = phi_coeff[i, :i+1] + prod_ = np.convolve(a, b) + prod_[np.abs(prod_)<1e-8] = 0 + proj_ = (prod_ * 1/(np.arange(len(prod_))+1) * np.power(0.5, 1+np.arange(len(prod_)))).sum() + psi1_coeff[ki,:] -= proj_ * phi_coeff[i,:] + psi2_coeff[ki,:] -= proj_ * phi_coeff[i,:] + for j in range(ki): + a = phi_2x_coeff[ki,:ki+1] + b = psi1_coeff[j, :] + prod_ = np.convolve(a, b) + prod_[np.abs(prod_)<1e-8] = 0 + proj_ = (prod_ * 1/(np.arange(len(prod_))+1) * np.power(0.5, 1+np.arange(len(prod_)))).sum() + psi1_coeff[ki,:] -= proj_ * psi1_coeff[j,:] + psi2_coeff[ki,:] -= proj_ * psi2_coeff[j,:] + + a = psi1_coeff[ki,:] + prod_ = np.convolve(a, a) + prod_[np.abs(prod_)<1e-8] = 0 + norm1 = (prod_ * 1/(np.arange(len(prod_))+1) * np.power(0.5, 1+np.arange(len(prod_)))).sum() + + a = psi2_coeff[ki,:] + prod_ = np.convolve(a, a) + prod_[np.abs(prod_)<1e-8] = 0 + norm2 = (prod_ * 1/(np.arange(len(prod_))+1) * (1-np.power(0.5, 1+np.arange(len(prod_))))).sum() + norm_ = np.sqrt(norm1 + norm2) + psi1_coeff[ki,:] /= norm_ + psi2_coeff[ki,:] /= norm_ + psi1_coeff[np.abs(psi1_coeff)<1e-8] = 0 + psi2_coeff[np.abs(psi2_coeff)<1e-8] = 0 + + phi = [np.poly1d(np.flip(phi_coeff[i,:])) for i in range(k)] + psi1 = [np.poly1d(np.flip(psi1_coeff[i,:])) for i in range(k)] + psi2 = [np.poly1d(np.flip(psi2_coeff[i,:])) for i in range(k)] + + elif base == 'chebyshev': + for ki in range(k): + if ki == 0: + phi_coeff[ki,:ki+1] = np.sqrt(2/np.pi) + phi_2x_coeff[ki,:ki+1] = np.sqrt(2/np.pi) * np.sqrt(2) + else: + coeff_ = Poly(chebyshevt(ki, 2*x-1), x).all_coeffs() + phi_coeff[ki,:ki+1] = np.flip(2/np.sqrt(np.pi) * np.array(coeff_).astype(np.float64)) + coeff_ = Poly(chebyshevt(ki, 4*x-1), x).all_coeffs() + phi_2x_coeff[ki,:ki+1] = np.flip(np.sqrt(2) * 2 / np.sqrt(np.pi) * np.array(coeff_).astype(np.float64)) + + phi = [partial(phi_, phi_coeff[i,:]) for i in range(k)] + + x = Symbol('x') + kUse = 2*k + roots = Poly(chebyshevt(kUse, 2*x-1)).all_roots() + x_m = np.array([rt.evalf(20) for rt in roots]).astype(np.float64) + # x_m[x_m==0.5] = 0.5 + 1e-8 # add small noise to avoid the case of 0.5 belonging to both phi(2x) and phi(2x-1) + # not needed for our purpose here, we use even k always to avoid + wm = np.pi / kUse / 2 + + psi1_coeff = np.zeros((k, k)) + psi2_coeff = np.zeros((k, k)) + + psi1 = [[] for _ in range(k)] + psi2 = [[] for _ in range(k)] + + for ki in range(k): + psi1_coeff[ki,:] = phi_2x_coeff[ki,:] + for i in range(k): + proj_ = (wm * phi[i](x_m) * np.sqrt(2)* phi[ki](2*x_m)).sum() + psi1_coeff[ki,:] -= proj_ * phi_coeff[i,:] + psi2_coeff[ki,:] -= proj_ * phi_coeff[i,:] + + for j in range(ki): + proj_ = (wm * psi1[j](x_m) * np.sqrt(2) * phi[ki](2*x_m)).sum() + psi1_coeff[ki,:] -= proj_ * psi1_coeff[j,:] + psi2_coeff[ki,:] -= proj_ * psi2_coeff[j,:] + + psi1[ki] = partial(phi_, psi1_coeff[ki,:], lb = 0, ub = 0.5) + psi2[ki] = partial(phi_, psi2_coeff[ki,:], lb = 0.5, ub = 1) + + norm1 = (wm * psi1[ki](x_m) * psi1[ki](x_m)).sum() + norm2 = (wm * psi2[ki](x_m) * psi2[ki](x_m)).sum() + + norm_ = np.sqrt(norm1 + norm2) + psi1_coeff[ki,:] /= norm_ + psi2_coeff[ki,:] /= norm_ + psi1_coeff[np.abs(psi1_coeff)<1e-8] = 0 + psi2_coeff[np.abs(psi2_coeff)<1e-8] = 0 + + psi1[ki] = partial(phi_, psi1_coeff[ki,:], lb = 0, ub = 0.5+1e-16) + psi2[ki] = partial(phi_, psi2_coeff[ki,:], lb = 0.5+1e-16, ub = 1) + + return phi, psi1, psi2 + + +def get_filter(base, k): + + def psi(psi1, psi2, i, inp): + mask = (inp<=0.5) * 1.0 + return psi1[i](inp) * mask + psi2[i](inp) * (1-mask) + + if base not in ['legendre', 'chebyshev']: + raise Exception('Base not supported') + + x = Symbol('x') + H0 = np.zeros((k,k)) + H1 = np.zeros((k,k)) + G0 = np.zeros((k,k)) + G1 = np.zeros((k,k)) + PHI0 = np.zeros((k,k)) + PHI1 = np.zeros((k,k)) + phi, psi1, psi2 = get_phi_psi(k, base) + if base == 'legendre': + roots = Poly(legendre(k, 2*x-1)).all_roots() + x_m = np.array([rt.evalf(20) for rt in roots]).astype(np.float64) + wm = 1/k/legendreDer(k,2*x_m-1)/eval_legendre(k-1,2*x_m-1) + + for ki in range(k): + for kpi in range(k): + H0[ki, kpi] = 1/np.sqrt(2) * (wm * phi[ki](x_m/2) * phi[kpi](x_m)).sum() + G0[ki, kpi] = 1/np.sqrt(2) * (wm * psi(psi1, psi2, ki, x_m/2) * phi[kpi](x_m)).sum() + H1[ki, kpi] = 1/np.sqrt(2) * (wm * phi[ki]((x_m+1)/2) * phi[kpi](x_m)).sum() + G1[ki, kpi] = 1/np.sqrt(2) * (wm * psi(psi1, psi2, ki, (x_m+1)/2) * phi[kpi](x_m)).sum() + + PHI0 = np.eye(k) + PHI1 = np.eye(k) + + elif base == 'chebyshev': + x = Symbol('x') + kUse = 2*k + roots = Poly(chebyshevt(kUse, 2*x-1)).all_roots() + x_m = np.array([rt.evalf(20) for rt in roots]).astype(np.float64) + # x_m[x_m==0.5] = 0.5 + 1e-8 # add small noise to avoid the case of 0.5 belonging to both phi(2x) and phi(2x-1) + # not needed for our purpose here, we use even k always to avoid + wm = np.pi / kUse / 2 + + for ki in range(k): + for kpi in range(k): + H0[ki, kpi] = 1/np.sqrt(2) * (wm * phi[ki](x_m/2) * phi[kpi](x_m)).sum() + G0[ki, kpi] = 1/np.sqrt(2) * (wm * psi(psi1, psi2, ki, x_m/2) * phi[kpi](x_m)).sum() + H1[ki, kpi] = 1/np.sqrt(2) * (wm * phi[ki]((x_m+1)/2) * phi[kpi](x_m)).sum() + G1[ki, kpi] = 1/np.sqrt(2) * (wm * psi(psi1, psi2, ki, (x_m+1)/2) * phi[kpi](x_m)).sum() + + PHI0[ki, kpi] = (wm * phi[ki](2*x_m) * phi[kpi](2*x_m)).sum() * 2 + PHI1[ki, kpi] = (wm * phi[ki](2*x_m-1) * phi[kpi](2*x_m-1)).sum() * 2 + + PHI0[np.abs(PHI0)<1e-8] = 0 + PHI1[np.abs(PHI1)<1e-8] = 0 + + H0[np.abs(H0)<1e-8] = 0 + H1[np.abs(H1)<1e-8] = 0 + G0[np.abs(G0)<1e-8] = 0 + G1[np.abs(G1)<1e-8] = 0 + + return H0, H1, G0, G1, PHI0, PHI1 + + +def train(model, train_loader, optimizer, epoch, device, verbose = 0, + lossFn = None, lr_schedule=None, + post_proc = lambda args: args): + + if lossFn is None: + lossFn = nn.MSELoss() + + model.train() + + total_loss = 0. + + for batch_idx, (data, target) in enumerate(train_loader): + + bs = len(data) + data, target = data.to(device), target.to(device) + optimizer.zero_grad() + + output = model(data) + + target = post_proc(target) + output = post_proc(output) + loss = lossFn(output.view(bs, -1), target.view(bs, -1)) + + loss.backward() + optimizer.step() + total_loss += loss.sum().item() + if lr_schedule is not None: lr_schedule.step() + + if verbose>0: + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( + epoch, batch_idx * len(data), len(train_loader.dataset), + 100. * batch_idx / len(train_loader), loss.item())) + + return total_loss/len(train_loader.dataset) + + +def test(model, test_loader, device, verbose=0, lossFn=None, + post_proc = lambda args: args): + + model.eval() + if lossFn is None: + lossFn = nn.MSELoss() + + + total_loss = 0. + predictions = [] + + with torch.no_grad(): + for data, target in test_loader: + bs = len(data) + + data, target = data.to(device), target.to(device) + output = model(data) + output = post_proc(output) + + loss = lossFn(output.view(bs, -1), target.view(bs, -1)) + total_loss += loss.sum().item() + + return total_loss/len(test_loader.dataset) + + +# Till EoF +# taken from FNO paper: +# https://github.com/zongyi-li/fourier_neural_operator + +# normalization, pointwise gaussian +class UnitGaussianNormalizer(object): + def __init__(self, x, eps=0.00001): + super(UnitGaussianNormalizer, self).__init__() + + # x could be in shape of ntrain*n or ntrain*T*n or ntrain*n*T + self.mean = torch.mean(x, 0) + self.std = torch.std(x, 0) + self.eps = eps + + def encode(self, x): + x = (x - self.mean) / (self.std + self.eps) + return x + + def decode(self, x, sample_idx=None): + if sample_idx is None: + std = self.std + self.eps # n + mean = self.mean + else: + if len(self.mean.shape) == len(sample_idx[0].shape): + std = self.std[sample_idx] + self.eps # batch*n + mean = self.mean[sample_idx] + if len(self.mean.shape) > len(sample_idx[0].shape): + std = self.std[:,sample_idx]+ self.eps # T*batch*n + mean = self.mean[:,sample_idx] + + # x is in shape of batch*n or T*batch*n + x = (x * std) + mean + return x + + def cuda(self): + self.mean = self.mean.cuda() + self.std = self.std.cuda() + + def cpu(self): + self.mean = self.mean.cpu() + self.std = self.std.cpu() + + +# normalization, Gaussian +class GaussianNormalizer(object): + def __init__(self, x, eps=0.00001): + super(GaussianNormalizer, self).__init__() + + self.mean = torch.mean(x) + self.std = torch.std(x) + self.eps = eps + + def encode(self, x): + x = (x - self.mean) / (self.std + self.eps) + return x + + def decode(self, x, sample_idx=None): + x = (x * (self.std + self.eps)) + self.mean + return x + + def cuda(self): + self.mean = self.mean.cuda() + self.std = self.std.cuda() + + def cpu(self): + self.mean = self.mean.cpu() + self.std = self.std.cpu() + + +# normalization, scaling by range +class RangeNormalizer(object): + def __init__(self, x, low=0.0, high=1.0): + super(RangeNormalizer, self).__init__() + mymin = torch.min(x, 0)[0].view(-1) + mymax = torch.max(x, 0)[0].view(-1) + + self.a = (high - low)/(mymax - mymin) + self.b = -self.a*mymax + high + + def encode(self, x): + s = x.size() + x = x.view(s[0], -1) + x = self.a*x + self.b + x = x.view(s) + return x + + def decode(self, x): + s = x.size() + x = x.view(s[0], -1) + x = (x - self.b)/self.a + x = x.view(s) + return x + +class LpLoss(object): + def __init__(self, d=2, p=2, size_average=True, reduction=True): + super(LpLoss, self).__init__() + + #Dimension and Lp-norm type are postive + assert d > 0 and p > 0 + + self.d = d + self.p = p + self.reduction = reduction + self.size_average = size_average + + def abs(self, x, y): + num_examples = x.size()[0] + + # Assume uniform mesh + h = 1.0 / (x.size()[1] - 1.0) + + all_norms = (h**(self.d/self.p))*torch.norm(x.view(num_examples,-1) - y.view(num_examples,-1), self.p, 1) + + if self.reduction: + if self.size_average: + return torch.mean(all_norms) + else: + return torch.sum(all_norms) + + return all_norms + + def rel(self, x, y): + num_examples = x.size()[0] + + diff_norms = torch.norm(x.reshape(num_examples,-1) - y.reshape(num_examples,-1), self.p, 1) + y_norms = torch.norm(y.reshape(num_examples,-1), self.p, 1) + + if self.reduction: + if self.size_average: + return torch.mean(diff_norms/y_norms) + else: + return torch.sum(diff_norms/y_norms) + + return diff_norms/y_norms + + def __call__(self, x, y): + return self.rel(x, y) \ No newline at end of file diff --git a/basicts/archs/arch_zoo/gts_arch/__init__.py b/basicts/archs/arch_zoo/gts_arch/__init__.py new file mode 100644 index 0000000..8c79b7d --- /dev/null +++ b/basicts/archs/arch_zoo/gts_arch/__init__.py @@ -0,0 +1,3 @@ +from .gts_arch import GTS + +__all__ = ["GTS"] diff --git a/basicts/archs/arch_zoo/gts_arch/gts_arch.py b/basicts/archs/arch_zoo/gts_arch/gts_arch.py new file mode 100644 index 0000000..f255526 --- /dev/null +++ b/basicts/archs/arch_zoo/gts_arch/gts_arch.py @@ -0,0 +1,290 @@ +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F + +from .gts_cell import DCGRUCell + + +def count_parameters(model): + return sum(p.numel() for p in model.parameters() if p.requires_grad) + +def cosine_similarity_torch(x1, x2=None, eps=1e-8): + x2 = x1 if x2 is None else x2 + w1 = x1.norm(p=2, dim=1, keepdim=True) + w2 = w1 if x2 is x1 else x2.norm(p=2, dim=1, keepdim=True) + return torch.mm(x1, x2.t()) / (w1 * w2.t()).clamp(min=eps) + +def sample_gumbel(shape, eps=1e-20, device=None): + U = torch.rand(shape).to(device) + return -torch.autograd.Variable(torch.log(-torch.log(U + eps) + eps)) + +def gumbel_softmax_sample(logits, temperature, eps=1e-10): + sample = sample_gumbel(logits.size(), eps=eps, device=logits.device) + y = logits + sample + return F.softmax(y / temperature, dim=-1) + +def gumbel_softmax(logits, temperature, hard=False, eps=1e-10): + """Sample from the Gumbel-Softmax distribution and optionally discretize. + Args: + logits: [batch_size, n_class] unnormalized log-probs + temperature: non-negative scalar + hard: if True, take argmax, but differentiate w.r.t. soft sample y + Returns: + [batch_size, n_class] sample from the Gumbel-Softmax distribution. + If hard=True, then the returned sample will be one-hot, otherwise it will + be a probabilitiy distribution that sums to 1 across classes + """ + y_soft = gumbel_softmax_sample(logits, temperature=temperature, eps=eps) + if hard: + shape = logits.size() + _, k = y_soft.data.max(-1) + y_hard = torch.zeros(*shape).to(logits.device) + y_hard = y_hard.zero_().scatter_(-1, k.view(shape[:-1] + (1,)), 1.0) + y = torch.autograd.Variable(y_hard - y_soft.data) + y_soft + else: + y = y_soft + return y + +class Seq2SeqAttrs: + def __init__(self, **model_kwargs): + #self.adj_mx = adj_mx + self.max_diffusion_step = int(model_kwargs.get('max_diffusion_step', 2)) + self.cl_decay_steps = int(model_kwargs.get('cl_decay_steps', 1000)) + self.filter_type = model_kwargs.get('filter_type', 'laplacian') + self.num_nodes = int(model_kwargs.get('num_nodes', 1)) + self.num_rnn_layers = int(model_kwargs.get('num_rnn_layers', 1)) + self.rnn_units = int(model_kwargs.get('rnn_units')) + self.hidden_state_size = self.num_nodes * self.rnn_units + +class EncoderModel(nn.Module, Seq2SeqAttrs): + def __init__(self, **model_kwargs): + nn.Module.__init__(self) + Seq2SeqAttrs.__init__(self, **model_kwargs) + self.input_dim = int(model_kwargs.get('input_dim', 1)) + self.seq_len = int(model_kwargs.get('seq_len')) # for the encoder + self.dcgru_layers = nn.ModuleList( + [DCGRUCell(self.rnn_units, self.max_diffusion_step, self.num_nodes, filter_type=self.filter_type) for _ in range(self.num_rnn_layers)]) + + def forward(self, inputs, adj, hidden_state=None): + """ + Encoder forward pass. + :param inputs: shape (batch_size, self.num_nodes * self.input_dim) + :param hidden_state: (num_layers, batch_size, self.hidden_state_size) optional, zeros if not provided + :return: output: # shape (batch_size, self.hidden_state_size) hidden_state # shape (num_layers, batch_size, self.hidden_state_size) (lower indices mean lower layers) + """ + batch_size, _ = inputs.size() + if hidden_state is None: + hidden_state = torch.zeros((self.num_rnn_layers, batch_size, self.hidden_state_size)).to(inputs.device) + hidden_states = [] + output = inputs + for layer_num, dcgru_layer in enumerate(self.dcgru_layers): + next_hidden_state = dcgru_layer(output, hidden_state[layer_num], adj) + hidden_states.append(next_hidden_state) + output = next_hidden_state + + return output, torch.stack(hidden_states) # runs in O(num_layers) so not too slow + + +class DecoderModel(nn.Module, Seq2SeqAttrs): + def __init__(self, **model_kwargs): + # super().__init__(is_training, adj_mx, **model_kwargs) + nn.Module.__init__(self) + Seq2SeqAttrs.__init__(self, **model_kwargs) + self.output_dim = int(model_kwargs.get('output_dim', 1)) + self.horizon = int(model_kwargs.get('horizon', 1)) # for the decoder + self.projection_layer = nn.Linear(self.rnn_units, self.output_dim) + self.dcgru_layers = nn.ModuleList( + [DCGRUCell(self.rnn_units, self.max_diffusion_step, self.num_nodes, filter_type=self.filter_type) for _ in range(self.num_rnn_layers)]) + + def forward(self, inputs, adj, hidden_state=None): + """ + :param inputs: shape (batch_size, self.num_nodes * self.output_dim) + :param hidden_state: (num_layers, batch_size, self.hidden_state_size) optional, zeros if not provided + :return: output: # shape (batch_size, self.num_nodes * self.output_dim) hidden_state # shape (num_layers, batch_size, self.hidden_state_size) (lower indices mean lower layers) + """ + hidden_states = [] + output = inputs + for layer_num, dcgru_layer in enumerate(self.dcgru_layers): + next_hidden_state = dcgru_layer(output, hidden_state[layer_num], adj) + hidden_states.append(next_hidden_state) + output = next_hidden_state + + projected = self.projection_layer(output.view(-1, self.rnn_units)) + output = projected.view(-1, self.num_nodes * self.output_dim) + + return output, torch.stack(hidden_states) + + +class GTS(nn.Module, Seq2SeqAttrs): + """ + Paper: + Discrete Graph Structure Learning for Forecasting Multiple Time Series, ICLR 2021. + Link: https://arxiv.org/abs/2101.06861 + Ref Official Code: + https://github.com/chaoshangcs/GTS + Note: + Kindly note that the results of GTS may have some gaps with the original paper, + because it calculates the evaluation metrics in a slightly different manner. + Some details can be found in the appendix in the original paper and + similar issues in its official repository: https://github.com/chaoshangcs/GTS/issues + """ + + def __init__(self, **model_kwargs): + """init GTS + + Args: + model_kwargs (dict): + keys: + cl_decay_steps + filter_type + horizon + input_dim + l1_decay + max_diffusion_step + num_nodes + num_rnn_layers + output_dim + rnn_units + seq_len + use_curriculum_learning + dim_fc + + node_feats + temp + + Returns: + _type_: _description_ + """ + super().__init__() + Seq2SeqAttrs.__init__(self, **model_kwargs) + self.encoder_model = EncoderModel(**model_kwargs) + self.decoder_model = DecoderModel(**model_kwargs) + self.cl_decay_steps = int(model_kwargs.get('cl_decay_steps', 1000)) + self.use_curriculum_learning = bool(model_kwargs.get('use_curriculum_learning', False)) + self.dim_fc = int(model_kwargs.get('dim_fc', False)) + self.embedding_dim = 100 + self.conv1 = torch.nn.Conv1d(1, 8, 10, stride=1) # .to(device) + self.conv2 = torch.nn.Conv1d(8, 16, 10, stride=1) # .to(device) + self.hidden_drop = torch.nn.Dropout(0.2) + self.fc = torch.nn.Linear(self.dim_fc, self.embedding_dim) + self.bn1 = torch.nn.BatchNorm1d(8) + self.bn2 = torch.nn.BatchNorm1d(16) + self.bn3 = torch.nn.BatchNorm1d(self.embedding_dim) + self.fc_out = nn.Linear(self.embedding_dim * 2, self.embedding_dim) + self.fc_cat = nn.Linear(self.embedding_dim, 2) + def encode_onehot(labels): + classes = set(labels) + classes_dict = {c: np.identity(len(classes))[i, :] for i, c in enumerate(classes)} + labels_onehot = np.array(list(map(classes_dict.get, labels)), dtype=np.int32) + return labels_onehot + # Generate off-diagonal interaction graph + off_diag = np.ones([self.num_nodes, self.num_nodes]) + rel_rec = np.array(encode_onehot(np.where(off_diag)[0]), dtype=np.float32) + rel_send = np.array(encode_onehot(np.where(off_diag)[1]), dtype=np.float32) + self.rel_rec = torch.FloatTensor(rel_rec) + self.rel_send = torch.FloatTensor(rel_send) + + self.node_feats = torch.Tensor(model_kwargs['node_feats']) + self.temp = model_kwargs['temp'] + from sklearn.neighbors import kneighbors_graph + g = kneighbors_graph(self.node_feats.T, model_kwargs['k'], metric='cosine') + g = np.array(g.todense(), dtype=np.float32) + self.prior_adj = torch.Tensor(g) + + def _compute_sampling_threshold(self, batches_seen): + return self.cl_decay_steps / ( + self.cl_decay_steps + np.exp(batches_seen / self.cl_decay_steps)) + + def encoder(self, inputs, adj): + """ + Encoder forward pass + :param inputs: shape (seq_len, batch_size, num_sensor * input_dim) + :return: encoder_hidden_state: (num_layers, batch_size, self.hidden_state_size) + """ + + encoder_hidden_state = None + for t in range(self.encoder_model.seq_len): + _, encoder_hidden_state = self.encoder_model(inputs[t], adj, encoder_hidden_state) + + return encoder_hidden_state + + def decoder(self, encoder_hidden_state, adj, labels=None, batches_seen=None): + """ + Decoder forward pass + :param encoder_hidden_state: (num_layers, batch_size, self.hidden_state_size) + :param labels: (self.horizon, batch_size, self.num_nodes * self.output_dim) [optional, not exist for inference] + :param batches_seen: global step [optional, not exist for inference] + :return: output: (self.horizon, batch_size, self.num_nodes * self.output_dim) + """ + + batch_size = encoder_hidden_state.size(1) + go_symbol = torch.zeros((batch_size, self.num_nodes * self.decoder_model.output_dim)).to(encoder_hidden_state.device) + decoder_hidden_state = encoder_hidden_state + decoder_input = go_symbol + + outputs = [] + + for t in range(self.decoder_model.horizon): + decoder_output, decoder_hidden_state = self.decoder_model(decoder_input, adj, decoder_hidden_state) + decoder_input = decoder_output + outputs.append(decoder_output) + if self.training and self.use_curriculum_learning: + c = np.random.uniform(0, 1) + if c < self._compute_sampling_threshold(batches_seen): + decoder_input = labels[t] + outputs = torch.stack(outputs) + return outputs + + def forward(self, history_data, future_data=None, batch_seen=None, epoch=None, **kwargs): + """ + :param history_data: shape (seq_len, batch_size, num_sensor * input_dim) + :param future_data: shape (horizon, batch_size, num_sensor * output) + :param batch_seen: batches seen till now + :return: output: (self.horizon, batch_size, self.num_nodes * self.output_dim) + """ + + # reshape data + batch_size, length, num_nodes, channels = history_data.shape + history_data = history_data.reshape(batch_size, length, num_nodes * channels) # [B, L, N*C] + history_data = history_data.transpose(0, 1) # [L, B, N*C] + + if future_data is not None: + batch_size, length, num_nodes, channels = future_data.shape + future_data = future_data.reshape(batch_size, length, num_nodes * channels) # [B, L, N*C] + future_data = future_data.transpose(0, 1) # [L, B, N*C] + + # GTS + inputs = history_data + labels = future_data + + x = self.node_feats.transpose(1, 0).view(self.num_nodes, 1, -1).to(history_data.device) + x = self.conv1(x) + x = F.relu(x) + x = self.bn1(x) + # x = self.hidden_drop(x) + x = self.conv2(x) + x = F.relu(x) + x = self.bn2(x) + x = x.view(self.num_nodes, -1) + x = self.fc(x) + x = F.relu(x) + x = self.bn3(x) + + receivers = torch.matmul(self.rel_rec.to(x.device), x) + senders = torch.matmul(self.rel_send.to(x.device), x) + x = torch.cat([senders, receivers], dim=1) + x = torch.relu(self.fc_out(x)) + x = self.fc_cat(x) + + adj = gumbel_softmax(x, temperature=self.temp, hard=True) + adj = adj[:, 0].clone().reshape(self.num_nodes, -1) + mask = torch.eye(self.num_nodes, self.num_nodes).bool().to(adj.device) + adj.masked_fill_(mask, 0) + + encoder_hidden_state = self.encoder(inputs, adj) + outputs = self.decoder(encoder_hidden_state, adj, labels, batches_seen=batch_seen) + if batch_seen == 0: + print("Total trainable parameters {}".format(count_parameters(self))) + + return outputs.transpose(1, 0).unsqueeze(-1), x.softmax(-1)[:, 0].clone().reshape(self.num_nodes, -1), self.prior_adj diff --git a/basicts/archs/arch_zoo/gts_arch/gts_cell.py b/basicts/archs/arch_zoo/gts_arch/gts_cell.py new file mode 100644 index 0000000..528dee0 --- /dev/null +++ b/basicts/archs/arch_zoo/gts_arch/gts_cell.py @@ -0,0 +1,153 @@ +import torch +import numpy as np + + +class LayerParams: + def __init__(self, rnn_network: torch.nn.Module, layer_type: str): + self._rnn_network = rnn_network + self._params_dict = {} + self._biases_dict = {} + self._type = layer_type + + def get_weights(self, shape): + if shape not in self._params_dict: + nn_param = torch.nn.Parameter(torch.empty(*shape)) + torch.nn.init.xavier_normal_(nn_param) + self._params_dict[shape] = nn_param + self._rnn_network.register_parameter( + '{}_weight_{}'.format(self._type, str(shape)), nn_param) + return self._params_dict[shape] + + def get_biases(self, length, bias_start=0.0): + if length not in self._biases_dict: + biases = torch.nn.Parameter(torch.empty(length)) + torch.nn.init.constant_(biases, bias_start) + self._biases_dict[length] = biases + self._rnn_network.register_parameter( + '{}_biases_{}'.format(self._type, str(length)), biases) + + return self._biases_dict[length] + + +class DCGRUCell(torch.nn.Module): + def __init__(self, num_units, max_diffusion_step, num_nodes, nonlinearity='tanh', filter_type="laplacian", use_gc_for_ru=True): + super().__init__() + self._activation = torch.tanh if nonlinearity == 'tanh' else torch.relu + # support other nonlinearities up here? + self._num_nodes = num_nodes + self._num_units = num_units + self._max_diffusion_step = max_diffusion_step + self._supports = [] + self._use_gc_for_ru = use_gc_for_ru + self._fc_params = LayerParams(self, 'fc') + self._gconv_params = LayerParams(self, 'gconv') + + @staticmethod + def _build_sparse_matrix(L): + L = L.tocoo() + indices = np.column_stack((L.row, L.col)) + # this is to ensure row-major ordering to equal torch.sparse.sparse_reorder(L) + indices = indices[np.lexsort((indices[:, 0], indices[:, 1]))] + L = torch.sparse_coo_tensor(indices.T, L.data, L.shape) + return L + + def _calculate_random_walk_matrix(self, adj_mx): + + # tf.Print(adj_mx, [adj_mx], message="This is adj: ") + + adj_mx = adj_mx + torch.eye(int(adj_mx.shape[0])).to(adj_mx.device) + d = torch.sum(adj_mx, 1) + d_inv = 1. / d + d_inv = torch.where(torch.isinf(d_inv), torch.zeros( + d_inv.shape).to(d_inv.device), d_inv) + d_mat_inv = torch.diag(d_inv) + random_walk_mx = torch.mm(d_mat_inv, adj_mx) + return random_walk_mx + + def forward(self, inputs, hx, adj): + """Gated recurrent unit (GRU) with Graph Convolution. + :param inputs: (B, num_nodes * input_dim) + :param hx: (B, num_nodes * rnn_units) + + :return + - Output: A `2-D` tensor with shape `(B, num_nodes * rnn_units)`. + """ + adj_mx = self._calculate_random_walk_matrix(adj).t() + output_size = 2 * self._num_units + if self._use_gc_for_ru: + fn = self._gconv + else: + fn = self._fc + value = torch.sigmoid( + fn(inputs, adj_mx, hx, output_size, bias_start=1.0)) + value = torch.reshape(value, (-1, self._num_nodes, output_size)) + r, u = torch.split( + tensor=value, split_size_or_sections=self._num_units, dim=-1) + r = torch.reshape(r, (-1, self._num_nodes * self._num_units)) + u = torch.reshape(u, (-1, self._num_nodes * self._num_units)) + + c = self._gconv(inputs, adj_mx, r * hx, self._num_units) + if self._activation is not None: + c = self._activation(c) + + new_state = u * hx + (1.0 - u) * c + return new_state + + @staticmethod + def _concat(x, x_): + x_ = x_.unsqueeze(0) + return torch.cat([x, x_], dim=0) + + def _fc(self, inputs, state, output_size, bias_start=0.0): + batch_size = inputs.shape[0] + inputs = torch.reshape(inputs, (batch_size * self._num_nodes, -1)) + state = torch.reshape(state, (batch_size * self._num_nodes, -1)) + inputs_and_state = torch.cat([inputs, state], dim=-1) + input_size = inputs_and_state.shape[-1] + weights = self._fc_params.get_weights((input_size, output_size)) + value = torch.sigmoid(torch.matmul(inputs_and_state, weights)) + biases = self._fc_params.get_biases(output_size, bias_start) + value += biases + return value + + def _gconv(self, inputs, adj_mx, state, output_size, bias_start=0.0): + # Reshape input and state to (batch_size, num_nodes, input_dim/state_dim) + batch_size = inputs.shape[0] + inputs = torch.reshape(inputs, (batch_size, self._num_nodes, -1)) + state = torch.reshape(state, (batch_size, self._num_nodes, -1)) + inputs_and_state = torch.cat([inputs, state], dim=2) + input_size = inputs_and_state.size(2) + + x = inputs_and_state + x0 = x.permute(1, 2, 0) # (num_nodes, total_arg_size, batch_size) + x0 = torch.reshape( + x0, shape=[self._num_nodes, input_size * batch_size]) + x = torch.unsqueeze(x0, 0) + + if self._max_diffusion_step == 0: + pass + else: + x1 = torch.mm(adj_mx, x0) + x = self._concat(x, x1) + + for k in range(2, self._max_diffusion_step + 1): + x2 = 2 * torch.mm(adj_mx, x1) - x0 + x = self._concat(x, x2) + x1, x0 = x2, x1 + num_matrices = self._max_diffusion_step + 1 # Adds for x itself. + x = torch.reshape( + x, shape=[num_matrices, self._num_nodes, input_size, batch_size]) + x = x.permute(3, 1, 2, 0) # (batch_size, num_nodes, input_size, order) + x = torch.reshape( + x, shape=[batch_size * self._num_nodes, input_size * num_matrices]) + + weights = self._gconv_params.get_weights( + (input_size * num_matrices, output_size)).to(x.device) + # (batch_size * self._num_nodes, output_size) + x = torch.matmul(x, weights) + + biases = self._gconv_params.get_biases( + output_size, bias_start).to(x.device) + x += biases + # Reshape res back to 2D: (batch_size, num_node, state_dim) -> (batch_size, num_node * state_dim) + return torch.reshape(x, [batch_size, self._num_nodes * output_size]) diff --git a/basicts/archs/arch_zoo/gwnet_arch/__init__.py b/basicts/archs/arch_zoo/gwnet_arch/__init__.py new file mode 100644 index 0000000..505bf98 --- /dev/null +++ b/basicts/archs/arch_zoo/gwnet_arch/__init__.py @@ -0,0 +1,3 @@ +from .gwnet_arch import GraphWaveNet + +__all__ = ["GraphWaveNet"] diff --git a/basicts/archs/arch_zoo/gwnet_arch/gwnet_arch.py b/basicts/archs/arch_zoo/gwnet_arch/gwnet_arch.py new file mode 100644 index 0000000..0665ad8 --- /dev/null +++ b/basicts/archs/arch_zoo/gwnet_arch/gwnet_arch.py @@ -0,0 +1,229 @@ +import torch +from torch import nn +import torch.nn.functional as F + + +class nconv(nn.Module): + """Graph conv operation.""" + + def __init__(self): + super(nconv, self).__init__() + + def forward(self, x, A): + x = torch.einsum('ncvl,vw->ncwl', (x, A)) + return x.contiguous() + + +class linear(nn.Module): + """Linear layer.""" + + def __init__(self, c_in, c_out): + super(linear, self).__init__() + self.mlp = torch.nn.Conv2d(c_in, c_out, kernel_size=( + 1, 1), padding=(0, 0), stride=(1, 1), bias=True) + + def forward(self, x): + return self.mlp(x) + + +class gcn(nn.Module): + """Graph convolution network.""" + + def __init__(self, c_in, c_out, dropout, support_len=3, order=2): + super(gcn, self).__init__() + self.nconv = nconv() + c_in = (order*support_len+1)*c_in + self.mlp = linear(c_in, c_out) + self.dropout = dropout + self.order = order + + def forward(self, x, support): + out = [x] + for a in support: + x1 = self.nconv(x, a.to(x.device)) + out.append(x1) + for k in range(2, self.order + 1): + x2 = self.nconv(x1, a.to(x.device)) + out.append(x2) + x1 = x2 + + h = torch.cat(out, dim=1) + h = self.mlp(h) + h = F.dropout(h, self.dropout, training=self.training) + return h + + +class GraphWaveNet(nn.Module): + """ + Paper: Graph WaveNet for Deep Spatial-Temporal Graph Modeling + Link: https://arxiv.org/abs/1906.00121 + Ref Official Code: https://github.com/nnzhan/Graph-WaveNet/blob/master/model.py + """ + + def __init__(self, num_nodes, dropout=0.3, supports=None, + gcn_bool=True, addaptadj=True, aptinit=None, + in_dim=2, out_dim=12, residual_channels=32, + dilation_channels=32, skip_channels=256, end_channels=512, + kernel_size=2, blocks=4, layers=2): + super(GraphWaveNet, self).__init__() + self.dropout = dropout + self.blocks = blocks + self.layers = layers + self.gcn_bool = gcn_bool + self.addaptadj = addaptadj + + self.filter_convs = nn.ModuleList() + self.gate_convs = nn.ModuleList() + self.residual_convs = nn.ModuleList() + self.skip_convs = nn.ModuleList() + self.bn = nn.ModuleList() + self.gconv = nn.ModuleList() + + self.start_conv = nn.Conv2d(in_channels=in_dim, + out_channels=residual_channels, + kernel_size=(1, 1)) + self.supports = supports + + receptive_field = 1 + + self.supports_len = 0 + if supports is not None: + self.supports_len += len(supports) + + if gcn_bool and addaptadj: + if aptinit is None: + if supports is None: + self.supports = [] + self.nodevec1 = nn.Parameter( + torch.randn(num_nodes, 10), requires_grad=True) + self.nodevec2 = nn.Parameter( + torch.randn(10, num_nodes), requires_grad=True) + self.supports_len += 1 + else: + if supports is None: + self.supports = [] + m, p, n = torch.svd(aptinit) + initemb1 = torch.mm(m[:, :10], torch.diag(p[:10] ** 0.5)) + initemb2 = torch.mm(torch.diag(p[:10] ** 0.5), n[:, :10].t()) + self.nodevec1 = nn.Parameter(initemb1, requires_grad=True) + self.nodevec2 = nn.Parameter(initemb2, requires_grad=True) + self.supports_len += 1 + + for b in range(blocks): + additional_scope = kernel_size - 1 + new_dilation = 1 + for i in range(layers): + # dilated convolutions + self.filter_convs.append(nn.Conv2d(in_channels=residual_channels, + out_channels=dilation_channels, + kernel_size=(1, kernel_size), dilation=new_dilation)) + + self.gate_convs.append(nn.Conv1d(in_channels=residual_channels, + out_channels=dilation_channels, + kernel_size=(1, kernel_size), dilation=new_dilation)) + + # 1x1 convolution for residual connection + self.residual_convs.append(nn.Conv1d(in_channels=dilation_channels, + out_channels=residual_channels, + kernel_size=(1, 1))) + + # 1x1 convolution for skip connection + self.skip_convs.append(nn.Conv1d(in_channels=dilation_channels, + out_channels=skip_channels, + kernel_size=(1, 1))) + self.bn.append(nn.BatchNorm2d(residual_channels)) + new_dilation *= 2 + receptive_field += additional_scope + additional_scope *= 2 + if self.gcn_bool: + self.gconv.append( + gcn(dilation_channels, residual_channels, dropout, support_len=self.supports_len)) + + self.end_conv_1 = nn.Conv2d(in_channels=skip_channels, + out_channels=end_channels, + kernel_size=(1, 1), + bias=True) + + self.end_conv_2 = nn.Conv2d(in_channels=end_channels, + out_channels=out_dim, + kernel_size=(1, 1), + bias=True) + + self.receptive_field = receptive_field + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feedforward function of Graph WaveNet. + + Args: + history_data (torch.Tensor): shape [B, L, N, C] + + Returns: + torch.Tensor: [B, L, N, 1] + """ + + input = history_data.transpose(1, 3).contiguous() + in_len = input.size(3) + if in_len < self.receptive_field: + x = nn.functional.pad( + input, (self.receptive_field-in_len, 0, 0, 0)) + else: + x = input + x = self.start_conv(x) + skip = 0 + + # calculate the current adaptive adj matrix once per iteration + new_supports = None + if self.gcn_bool and self.addaptadj and self.supports is not None: + adp = F.softmax( + F.relu(torch.mm(self.nodevec1, self.nodevec2)), dim=1) + new_supports = self.supports + [adp] + + # WaveNet layers + for i in range(self.blocks * self.layers): + + # |----------------------------------------| *residual* + # | | + # | |-- conv -- tanh --| | + # -> dilate -|----| * ----|-- 1x1 -- + --> *input* + # |-- conv -- sigm --| | + # 1x1 + # | + # ---------------------------------------> + -------------> *skip* + + #(dilation, init_dilation) = self.dilations[i] + + #residual = dilation_func(x, dilation, init_dilation, i) + residual = x + # dilated convolution + filter = self.filter_convs[i](residual) + filter = torch.tanh(filter) + gate = self.gate_convs[i](residual) + gate = torch.sigmoid(gate) + x = filter * gate + + # parametrized skip connection + + s = x + s = self.skip_convs[i](s) + try: + skip = skip[:, :, :, -s.size(3):] + except: + skip = 0 + skip = s + skip + + if self.gcn_bool and self.supports is not None: + if self.addaptadj: + x = self.gconv[i](x, new_supports) + else: + x = self.gconv[i](x, self.supports) + else: + x = self.residual_convs[i](x) + + x = x + residual[:, :, :, -x.size(3):] + + x = self.bn[i](x) + + x = F.relu(skip) + x = F.relu(self.end_conv_1(x)) + x = self.end_conv_2(x) + return x diff --git a/basicts/archs/arch_zoo/hi_arch/__init__.py b/basicts/archs/arch_zoo/hi_arch/__init__.py new file mode 100644 index 0000000..3c6f527 --- /dev/null +++ b/basicts/archs/arch_zoo/hi_arch/__init__.py @@ -0,0 +1,3 @@ +from .hi_arch import HINetwork + +__all__ = ["HINetwork"] diff --git a/basicts/archs/arch_zoo/hi_arch/hi_arch.py b/basicts/archs/arch_zoo/hi_arch/hi_arch.py new file mode 100644 index 0000000..cfc240e --- /dev/null +++ b/basicts/archs/arch_zoo/hi_arch/hi_arch.py @@ -0,0 +1,53 @@ + + +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class HINetwork(nn.Module): + """ + Paper: Historical Inertia: A Neglected but Powerful Baseline for Long Sequence Time-series Forecasting + Link: https://arxiv.org/abs/2103.16349 + """ + + def __init__(self, input_length: int, output_length: int, channel=None, reverse=False): + """ + Init HI. + + Args: + input_length (int): input time series length + output_length (int): prediction time series length + channel (list, optional): selected channels. Defaults to None. + reverse (bool, optional): if reverse the prediction of HI. Defaults to False. + """ + + super(HINetwork, self).__init__() + assert input_length >= output_length, "HI model requires input length > output length" + self.input_length = input_length + self.output_length = output_length + self.channel = channel + self.reverse = reverse + self.fake_param = nn.Linear(1, 1) + + def forward(self, history_data: torch.Tensor, **kwargs) -> torch.Tensor: + """Forward function of HI. + + Args: + history_data (torch.Tensor): shape = [B, L_in, N, C] + + Returns: + torch.Tensor: model prediction [B, L_out, N, C]. + """ + + B, L_in, N, C = history_data.shape + assert self.input_length == L_in, 'error input length' + if self.channel is not None: + history_data = history_data[..., self.channel] + # historical inertia + prediction = history_data[:, -self.output_length:, :, :] + # last point + # prediction = history_data[:, [-1], :, :].expand(-1, self.output_length, -1, -1) + if self.reverse: + prediction = prediction.flip(dims=[1]) + return prediction diff --git a/basicts/archs/arch_zoo/informer_arch/__init__.py b/basicts/archs/arch_zoo/informer_arch/__init__.py new file mode 100644 index 0000000..8b770c3 --- /dev/null +++ b/basicts/archs/arch_zoo/informer_arch/__init__.py @@ -0,0 +1,3 @@ +from .informer_arch import Informer, InformerStack + +__all__ = ["Informer", "InformerStack"] diff --git a/basicts/archs/arch_zoo/informer_arch/attn.py b/basicts/archs/arch_zoo/informer_arch/attn.py new file mode 100644 index 0000000..b4f8a33 --- /dev/null +++ b/basicts/archs/arch_zoo/informer_arch/attn.py @@ -0,0 +1,176 @@ +from math import sqrt + +import torch +import torch.nn as nn +import numpy as np + + +from .masking import TriangularCausalMask, ProbMask + + +class FullAttention(nn.Module): + def __init__(self, mask_flag=True, factor=5, scale=None, attention_dropout=0.1, output_attention=False): + super(FullAttention, self).__init__() + self.scale = scale + self.mask_flag = mask_flag + self.output_attention = output_attention + self.dropout = nn.Dropout(attention_dropout) + + def forward(self, queries, keys, values, attn_mask): + B, L, H, E = queries.shape + _, S, _, D = values.shape + scale = self.scale or 1./sqrt(E) + + scores = torch.einsum("blhe,bshe->bhls", queries, keys) + if self.mask_flag: + if attn_mask is None: + attn_mask = TriangularCausalMask(B, L, device=queries.device) + + scores.masked_fill_(attn_mask.mask, -np.inf) + + A = self.dropout(torch.softmax(scale * scores, dim=-1)) + V = torch.einsum("bhls,bshd->blhd", A, values) + + if self.output_attention: + return (V.contiguous(), A) + else: + return (V.contiguous(), None) + + +class ProbAttention(nn.Module): + def __init__(self, mask_flag=True, factor=5, scale=None, attention_dropout=0.1, output_attention=False): + super(ProbAttention, self).__init__() + self.factor = factor + self.scale = scale + self.mask_flag = mask_flag + self.output_attention = output_attention + self.dropout = nn.Dropout(attention_dropout) + + def _prob_QK(self, Q, K, sample_k, n_top): # n_top: c*ln(L_q) + # Q [B, H, L, D] + B, H, L_K, E = K.shape + _, _, L_Q, _ = Q.shape + + # calculate the sampled Q_K + K_expand = K.unsqueeze(-3).expand(B, H, L_Q, L_K, E) + # real U = U_part(factor*ln(L_k))*L_q + index_sample = torch.randint(L_K, (L_Q, sample_k)) + K_sample = K_expand[:, :, torch.arange( + L_Q).unsqueeze(1), index_sample, :] + Q_K_sample = torch.matmul( + Q.unsqueeze(-2), K_sample.transpose(-2, -1)).squeeze(-2) + + # find the Top_k query with sparisty measurement + M = Q_K_sample.max(-1)[0] - torch.div(Q_K_sample.sum(-1), L_K) + M_top = M.topk(n_top, sorted=False)[1] + + # use the reduced Q to calculate Q_K + Q_reduce = Q[torch.arange(B)[:, None, None], + torch.arange(H)[None, :, None], + M_top, :] # factor*ln(L_q) + Q_K = torch.matmul(Q_reduce, K.transpose(-2, -1)) # factor*ln(L_q)*L_k + + return Q_K, M_top + + def _get_initial_context(self, V, L_Q): + B, H, L_V, D = V.shape + if not self.mask_flag: + # V_sum = V.sum(dim=-2) + V_sum = V.mean(dim=-2) + contex = V_sum.unsqueeze(-2).expand(B, H, + L_Q, V_sum.shape[-1]).clone() + else: # use mask + # requires that L_Q == L_V, i.e. for self-attention only + assert(L_Q == L_V) + contex = V.cumsum(dim=-2) + return contex + + def _update_context(self, context_in, V, scores, index, L_Q, attn_mask): + B, H, L_V, D = V.shape + + if self.mask_flag: + attn_mask = ProbMask(B, H, L_Q, index, scores, device=V.device) + scores.masked_fill_(attn_mask.mask, -np.inf) + + attn = torch.softmax(scores, dim=-1) # nn.Softmax(dim=-1)(scores) + + context_in[torch.arange(B)[:, None, None], + torch.arange(H)[None, :, None], + index, :] = torch.matmul(attn, V).type_as(context_in) + if self.output_attention: + attns = (torch.ones([B, H, L_V, L_V]) / + L_V).type_as(attn).to(attn.device) + attns[torch.arange(B)[:, None, None], torch.arange(H)[ + None, :, None], index, :] = attn + return (context_in, attns) + else: + return (context_in, None) + + def forward(self, queries, keys, values, attn_mask): + B, L_Q, H, D = queries.shape + _, L_K, _, _ = keys.shape + + queries = queries.transpose(2, 1) + keys = keys.transpose(2, 1) + values = values.transpose(2, 1) + + U_part = self.factor * \ + np.ceil(np.log(L_K)).astype('int').item() # c*ln(L_k) + u = self.factor * \ + np.ceil(np.log(L_Q)).astype('int').item() # c*ln(L_q) + + U_part = U_part if U_part < L_K else L_K + u = u if u < L_Q else L_Q + + scores_top, index = self._prob_QK( + queries, keys, sample_k=U_part, n_top=u) + + # add scale factor + scale = self.scale or 1./sqrt(D) + if scale is not None: + scores_top = scores_top * scale + # get the context + context = self._get_initial_context(values, L_Q) + # update the context with selected top_k queries + context, attn = self._update_context( + context, values, scores_top, index, L_Q, attn_mask) + + return context.transpose(2, 1).contiguous(), attn + + +class AttentionLayer(nn.Module): + def __init__(self, attention, d_model, n_heads, + d_keys=None, d_values=None, mix=False): + super(AttentionLayer, self).__init__() + + d_keys = d_keys or (d_model//n_heads) + d_values = d_values or (d_model//n_heads) + + self.inner_attention = attention + self.query_projection = nn.Linear(d_model, d_keys * n_heads) + self.key_projection = nn.Linear(d_model, d_keys * n_heads) + self.value_projection = nn.Linear(d_model, d_values * n_heads) + self.out_projection = nn.Linear(d_values * n_heads, d_model) + self.n_heads = n_heads + self.mix = mix + + def forward(self, queries, keys, values, attn_mask): + B, L, _ = queries.shape + _, S, _ = keys.shape + H = self.n_heads + + queries = self.query_projection(queries).view(B, L, H, -1) + keys = self.key_projection(keys).view(B, S, H, -1) + values = self.value_projection(values).view(B, S, H, -1) + + out, attn = self.inner_attention( + queries, + keys, + values, + attn_mask + ) + if self.mix: + out = out.transpose(2, 1).contiguous() + out = out.view(B, L, -1) + + return self.out_projection(out), attn diff --git a/basicts/archs/arch_zoo/informer_arch/decoder.py b/basicts/archs/arch_zoo/informer_arch/decoder.py new file mode 100644 index 0000000..6caadb7 --- /dev/null +++ b/basicts/archs/arch_zoo/informer_arch/decoder.py @@ -0,0 +1,54 @@ +import torch.nn as nn +import torch.nn.functional as F + + +class DecoderLayer(nn.Module): + def __init__(self, self_attention, cross_attention, d_model, d_ff=None, + dropout=0.1, activation="relu"): + super(DecoderLayer, self).__init__() + d_ff = d_ff or 4*d_model + self.self_attention = self_attention + self.cross_attention = cross_attention + self.conv1 = nn.Conv1d(in_channels=d_model, + out_channels=d_ff, kernel_size=1) + self.conv2 = nn.Conv1d( + in_channels=d_ff, out_channels=d_model, kernel_size=1) + self.norm1 = nn.LayerNorm(d_model) + self.norm2 = nn.LayerNorm(d_model) + self.norm3 = nn.LayerNorm(d_model) + self.dropout = nn.Dropout(dropout) + self.activation = F.relu if activation == "relu" else F.gelu + + def forward(self, x, cross, x_mask=None, cross_mask=None): + x = x + self.dropout(self.self_attention( + x, x, x, + attn_mask=x_mask + )[0]) + x = self.norm1(x) + + x = x + self.dropout(self.cross_attention( + x, cross, cross, + attn_mask=cross_mask + )[0]) + + y = x = self.norm2(x) + y = self.dropout(self.activation(self.conv1(y.transpose(-1, 1)))) + y = self.dropout(self.conv2(y).transpose(-1, 1)) + + return self.norm3(x+y) + + +class Decoder(nn.Module): + def __init__(self, layers, norm_layer=None): + super(Decoder, self).__init__() + self.layers = nn.ModuleList(layers) + self.norm = norm_layer + + def forward(self, x, cross, x_mask=None, cross_mask=None): + for layer in self.layers: + x = layer(x, cross, x_mask=x_mask, cross_mask=cross_mask) + + if self.norm is not None: + x = self.norm(x) + + return x diff --git a/basicts/archs/arch_zoo/informer_arch/embed.py b/basicts/archs/arch_zoo/informer_arch/embed.py new file mode 100644 index 0000000..49093e4 --- /dev/null +++ b/basicts/archs/arch_zoo/informer_arch/embed.py @@ -0,0 +1,88 @@ +import math + +import torch +import torch.nn as nn + + +class PositionalEmbedding(nn.Module): + def __init__(self, d_model, max_len=5000): + super(PositionalEmbedding, self).__init__() + # Compute the positional encodings once in log space. + pe = torch.zeros(max_len, d_model).float() + pe.require_grad = False + + position = torch.arange(0, max_len).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() + * -(math.log(10000.0) / d_model)).exp() + + pe[:, 0::2] = torch.sin(position * div_term) + pe[:, 1::2] = torch.cos(position * div_term) + + pe = pe.unsqueeze(0) + self.register_buffer('pe', pe) + + def forward(self, x): + return self.pe[:, :x.size(1)] + + +class TokenEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(TokenEmbedding, self).__init__() + padding = 1 if torch.__version__ >= '1.5.0' else 2 + self.tokenConv = nn.Conv1d(in_channels=c_in, out_channels=d_model, + kernel_size=3, padding=padding, padding_mode='circular') + for m in self.modules(): + if isinstance(m, nn.Conv1d): + nn.init.kaiming_normal_( + m.weight, mode='fan_in', nonlinearity='leaky_relu') + + def forward(self, x): + x = self.tokenConv(x.permute(0, 2, 1)).transpose(1, 2) + return x + + +class FixedEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(FixedEmbedding, self).__init__() + + w = torch.zeros(c_in, d_model).float() + w.require_grad = False + + position = torch.arange(0, c_in).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() + * -(math.log(10000.0) / d_model)).exp() + + w[:, 0::2] = torch.sin(position * div_term) + w[:, 1::2] = torch.cos(position * div_term) + + self.emb = nn.Embedding(c_in, d_model) + self.emb.weight = nn.Parameter(w, requires_grad=False) + + def forward(self, x): + return self.emb(x).detach() + + +class TimeFeatureEmbedding(nn.Module): + def __init__(self, d_model, num_time_features): + super(TimeFeatureEmbedding, self).__init__() + # freq_map = {'h': 2} + # NOTE: this is different from official autoformer, since METR-LA, PEMS-BAY, and PEMS0X datasets only contain two kind of temporal features (time in day, day in week) + self.embed = nn.Linear(num_time_features, d_model, bias=False) + + def forward(self, x): + return self.embed(x) + + +class DataEmbedding(nn.Module): + def __init__(self, c_in, d_model, num_time_features, dropout=0.1): + super(DataEmbedding, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.temporal_embedding = TimeFeatureEmbedding(d_model=d_model, num_time_features=num_time_features) + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding(x) + self.position_embedding(x) + self.temporal_embedding(x_mark) + + return self.dropout(x) diff --git a/basicts/archs/arch_zoo/informer_arch/encoder.py b/basicts/archs/arch_zoo/informer_arch/encoder.py new file mode 100644 index 0000000..469f45f --- /dev/null +++ b/basicts/archs/arch_zoo/informer_arch/encoder.py @@ -0,0 +1,107 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class ConvLayer(nn.Module): + def __init__(self, c_in): + super(ConvLayer, self).__init__() + padding = 1 if torch.__version__ >= '1.5.0' else 2 + self.downConv = nn.Conv1d(in_channels=c_in, + out_channels=c_in, + kernel_size=3, + padding=padding, + padding_mode='circular') + self.norm = nn.BatchNorm1d(c_in) + self.activation = nn.ELU() + self.maxPool = nn.MaxPool1d(kernel_size=3, stride=2, padding=1) + + def forward(self, x): + x = self.downConv(x.permute(0, 2, 1)) + x = self.norm(x) + x = self.activation(x) + x = self.maxPool(x) + x = x.transpose(1, 2) + return x + + +class EncoderLayer(nn.Module): + def __init__(self, attention, d_model, d_ff=None, dropout=0.1, activation="relu"): + super(EncoderLayer, self).__init__() + d_ff = d_ff or 4*d_model + self.attention = attention + self.conv1 = nn.Conv1d(in_channels=d_model, + out_channels=d_ff, kernel_size=1) + self.conv2 = nn.Conv1d( + in_channels=d_ff, out_channels=d_model, kernel_size=1) + self.norm1 = nn.LayerNorm(d_model) + self.norm2 = nn.LayerNorm(d_model) + self.dropout = nn.Dropout(dropout) + self.activation = F.relu if activation == "relu" else F.gelu + + def forward(self, x, attn_mask=None): + # x [B, L, D] + # x = x + self.dropout(self.attention( + # x, x, x, + # attn_mask = attn_mask + # )) + new_x, attn = self.attention( + x, x, x, + attn_mask=attn_mask + ) + x = x + self.dropout(new_x) + + y = x = self.norm1(x) + y = self.dropout(self.activation(self.conv1(y.transpose(-1, 1)))) + y = self.dropout(self.conv2(y).transpose(-1, 1)) + + return self.norm2(x+y), attn + + +class Encoder(nn.Module): + def __init__(self, attn_layers, conv_layers=None, norm_layer=None): + super(Encoder, self).__init__() + self.attn_layers = nn.ModuleList(attn_layers) + self.conv_layers = nn.ModuleList( + conv_layers) if conv_layers is not None else None + self.norm = norm_layer + + def forward(self, x, attn_mask=None): + # x [B, L, D] + attns = [] + if self.conv_layers is not None: + for attn_layer, conv_layer in zip(self.attn_layers, self.conv_layers): + x, attn = attn_layer(x, attn_mask=attn_mask) + x = conv_layer(x) + attns.append(attn) + x, attn = self.attn_layers[-1](x, attn_mask=attn_mask) + attns.append(attn) + else: + for attn_layer in self.attn_layers: + x, attn = attn_layer(x, attn_mask=attn_mask) + attns.append(attn) + + if self.norm is not None: + x = self.norm(x) + + return x, attns + + +class EncoderStack(nn.Module): + def __init__(self, encoders, inp_lens): + super(EncoderStack, self).__init__() + self.encoders = nn.ModuleList(encoders) + self.inp_lens = inp_lens + + def forward(self, x, attn_mask=None): + # x [B, L, D] + x_stack = [] + attns = [] + for i_len, encoder in zip(self.inp_lens, self.encoders): + inp_len = x.shape[1]//(2**i_len) + x_s, attn = encoder(x[:, -inp_len:, :]) + x_stack.append(x_s) + attns.append(attn) + x_stack = torch.cat(x_stack, -2) + + return x_stack, attns diff --git a/basicts/archs/arch_zoo/informer_arch/informer_arch.py b/basicts/archs/arch_zoo/informer_arch/informer_arch.py new file mode 100644 index 0000000..662d8da --- /dev/null +++ b/basicts/archs/arch_zoo/informer_arch/informer_arch.py @@ -0,0 +1,214 @@ +import torch +import torch.nn as nn + +from .embed import DataEmbedding +from .decoder import Decoder, DecoderLayer +from .attn import FullAttention, ProbAttention, AttentionLayer +from .encoder import Encoder, EncoderLayer, ConvLayer, EncoderStack +from ..utils import data_transformation_4_xformer + + +class Informer(nn.Module): + """ + Paper: Informer: Beyond Ef๏ฌcient Transformer for Long Sequence Time-Series Forecasting + Link: https://arxiv.org/abs/2012.07436 + Ref Official Code: https://github.com/zhouhaoyi/Informer2020 + """ + + def __init__(self, enc_in, dec_in, c_out, seq_len, label_len, out_len, + factor=5, d_model=512, n_heads=8, e_layers=3, d_layers=2, d_ff=512, + dropout=0.0, attn='prob', embed='fixed', freq='h', activation='gelu', + output_attention = False, distil=True, mix=True, num_time_features=-1): + super(Informer, self).__init__() + self.pred_len = out_len + self.label_len = int(label_len) + self.attn = attn + self.output_attention = output_attention + + # Encoding + self.enc_embedding = DataEmbedding(enc_in, d_model, num_time_features, dropout) + self.dec_embedding = DataEmbedding(dec_in, d_model, num_time_features, dropout) + # Attention + Attn = ProbAttention if attn=='prob' else FullAttention + # Encoder + self.encoder = Encoder( + [ + EncoderLayer( + AttentionLayer(Attn(False, factor, attention_dropout=dropout, output_attention=output_attention), + d_model, n_heads, mix=False), + d_model, + d_ff, + dropout=dropout, + activation=activation + ) for l in range(e_layers) + ], + [ + ConvLayer( + d_model + ) for l in range(e_layers-1) + ] if distil else None, + norm_layer=torch.nn.LayerNorm(d_model) + ) + # Decoder + self.decoder = Decoder( + [ + DecoderLayer( + AttentionLayer(Attn(True, factor, attention_dropout=dropout, output_attention=False), + d_model, n_heads, mix=mix), + AttentionLayer(FullAttention(False, factor, attention_dropout=dropout, output_attention=False), + d_model, n_heads, mix=False), + d_model, + d_ff, + dropout=dropout, + activation=activation, + ) + for l in range(d_layers) + ], + norm_layer=torch.nn.LayerNorm(d_model) + ) + # self.end_conv1 = nn.Conv1d(in_channels=label_len+out_len, out_channels=out_len, kernel_size=1, bias=True) + # self.end_conv2 = nn.Conv1d(in_channels=d_model, out_channels=c_out, kernel_size=1, bias=True) + self.projection = nn.Linear(d_model, c_out, bias=True) + + def forward_xformer(self, x_enc: torch.Tensor, x_mark_enc: torch.Tensor, x_dec: torch.Tensor, x_mark_dec: torch.Tensor, + enc_self_mask: torch.Tensor=None, dec_self_mask: torch.Tensor=None, dec_enc_mask: torch.Tensor=None) -> torch.Tensor: + """Feed forward of Informer. Kindly note that `enc_self_mask`, `dec_self_mask`, and `dec_enc_mask` are not actually used in Informer. + + Args: + x_enc (torch.Tensor): input data of encoder (without the time features). Shape: [B, L1, N] + x_mark_enc (torch.Tensor): time features input of encoder w.r.t. x_enc. Shape: [B, L1, C-1] + x_dec (torch.Tensor): input data of decoder. Shape: [B, start_token_length + L2, N] + x_mark_dec (torch.Tensor): time features input to decoder w.r.t. x_dec. Shape: [B, start_token_length + L2, C-1] + enc_self_mask (torch.Tensor, optional): encoder self attention masks. Defaults to None. + dec_self_mask (torch.Tensor, optional): decoder self attention masks. Defaults to None. + dec_enc_mask (torch.Tensor, optional): decoder encoder self attention masks. Defaults to None. + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + enc_out = self.enc_embedding(x_enc, x_mark_enc) + enc_out, attns = self.encoder(enc_out, attn_mask=enc_self_mask) + + dec_out = self.dec_embedding(x_dec, x_mark_dec) + dec_out = self.decoder(dec_out, enc_out, x_mask=dec_self_mask, cross_mask=dec_enc_mask) + dec_out = self.projection(dec_out) + + return dec_out[:, -self.pred_len:, :].unsqueeze(-1) # [B, L, N, C] + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """ + + Args: + history_data (Tensor): Input data with shape: [B, L1, N, C] + future_data (Tensor): Future data with shape: [B, L2, N, C] + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + x_enc, x_mark_enc, x_dec, x_mark_dec = data_transformation_4_xformer(history_data=history_data, future_data=future_data, start_token_len=self.label_len) + prediction = self.forward_xformer(x_enc=x_enc, x_mark_enc=x_mark_enc, x_dec=x_dec, x_mark_dec=x_mark_dec) + return prediction + + +class InformerStack(nn.Module): + def __init__(self, enc_in, dec_in, c_out, seq_len, label_len, out_len, + factor=5, d_model=512, n_heads=8, e_layers=[3,2,1], d_layers=2, d_ff=512, + dropout=0.0, attn='prob', embed='fixed', freq='h', activation='gelu', + output_attention = False, distil=True, mix=True, num_time_features=-1): + super(InformerStack, self).__init__() + self.pred_len = out_len + self.label_len = int(label_len) + self.attn = attn + self.output_attention = output_attention + + # Encoding + self.enc_embedding = DataEmbedding(enc_in, d_model, num_time_features, dropout) + self.dec_embedding = DataEmbedding(dec_in, d_model, num_time_features, dropout) + # Attention + Attn = ProbAttention if attn=='prob' else FullAttention + # Encoder + + inp_lens = list(range(len(e_layers))) # [0,1,2,...] you can customize here + encoders = [ + Encoder( + [ + EncoderLayer( + AttentionLayer(Attn(False, factor, attention_dropout=dropout, output_attention=output_attention), + d_model, n_heads, mix=False), + d_model, + d_ff, + dropout=dropout, + activation=activation + ) for l in range(el) + ], + [ + ConvLayer( + d_model + ) for l in range(el-1) + ] if distil else None, + norm_layer=torch.nn.LayerNorm(d_model) + ) for el in e_layers] + self.encoder = EncoderStack(encoders, inp_lens) + # Decoder + self.decoder = Decoder( + [ + DecoderLayer( + AttentionLayer(Attn(True, factor, attention_dropout=dropout, output_attention=False), + d_model, n_heads, mix=mix), + AttentionLayer(FullAttention(False, factor, attention_dropout=dropout, output_attention=False), + d_model, n_heads, mix=False), + d_model, + d_ff, + dropout=dropout, + activation=activation, + ) + for l in range(d_layers) + ], + norm_layer=torch.nn.LayerNorm(d_model) + ) + # self.end_conv1 = nn.Conv1d(in_channels=label_len+out_len, out_channels=out_len, kernel_size=1, bias=True) + # self.end_conv2 = nn.Conv1d(in_channels=d_model, out_channels=c_out, kernel_size=1, bias=True) + self.projection = nn.Linear(d_model, c_out, bias=True) + + def forward_xformer(self, x_enc: torch.Tensor, x_mark_enc: torch.Tensor, x_dec: torch.Tensor, x_mark_dec: torch.Tensor, + enc_self_mask: torch.Tensor=None, dec_self_mask: torch.Tensor=None, dec_enc_mask: torch.Tensor=None) -> torch.Tensor: + """Feed forward of Informer. Kindly note that `enc_self_mask`, `dec_self_mask`, and `dec_enc_mask` are not actually used in Informer. + + Args: + x_enc (torch.Tensor): input data of encoder (without the time features). Shape: [B, L1, N] + x_mark_enc (torch.Tensor): time features input of encoder w.r.t. x_enc. Shape: [B, L1, C-1] + x_dec (torch.Tensor): input data of decoder. Shape: [B, start_token_length + L2, N] + x_mark_dec (torch.Tensor): time features input to decoder w.r.t. x_dec. Shape: [B, start_token_length + L2, C-1] + enc_self_mask (torch.Tensor, optional): encoder self attention masks. Defaults to None. + dec_self_mask (torch.Tensor, optional): decoder self attention masks. Defaults to None. + dec_enc_mask (torch.Tensor, optional): decoder encoder self attention masks. Defaults to None. + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + enc_out = self.enc_embedding(x_enc, x_mark_enc) + enc_out, attns = self.encoder(enc_out, attn_mask=enc_self_mask) + + dec_out = self.dec_embedding(x_dec, x_mark_dec) + dec_out = self.decoder(dec_out, enc_out, x_mask=dec_self_mask, cross_mask=dec_enc_mask) + dec_out = self.projection(dec_out) + + return dec_out[:, -self.pred_len:, :].unsqueeze(-1) # [B, L, N, C] + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """ + + Args: + history_data (Tensor): Input data with shape: [B, L1, N, C] + future_data (Tensor): Future data with shape: [B, L2, N, C] + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + x_enc, x_mark_enc, x_dec, x_mark_dec = data_transformation_4_xformer(history_data=history_data, future_data=future_data, start_token_len=self.label_len) + prediction = self.forward_xformer(x_enc=x_enc, x_mark_enc=x_mark_enc, x_dec=x_dec, x_mark_dec=x_mark_dec) + return prediction diff --git a/basicts/archs/arch_zoo/informer_arch/masking.py b/basicts/archs/arch_zoo/informer_arch/masking.py new file mode 100644 index 0000000..7fd479e --- /dev/null +++ b/basicts/archs/arch_zoo/informer_arch/masking.py @@ -0,0 +1,24 @@ +import torch + +class TriangularCausalMask(): + def __init__(self, B, L, device="cpu"): + mask_shape = [B, 1, L, L] + with torch.no_grad(): + self._mask = torch.triu(torch.ones(mask_shape, dtype=torch.bool), diagonal=1).to(device) + + @property + def mask(self): + return self._mask + +class ProbMask(): + def __init__(self, B, H, L, index, scores, device="cpu"): + _mask = torch.ones(L, scores.shape[-1], dtype=torch.bool).to(device).triu(1) + _mask_ex = _mask[None, None, :].expand(B, H, L, scores.shape[-1]) + indicator = _mask_ex[torch.arange(B)[:, None, None], + torch.arange(H)[None, :, None], + index, :].to(device) + self._mask = indicator.view(scores.shape).to(device) + + @property + def mask(self): + return self._mask \ No newline at end of file diff --git a/basicts/archs/arch_zoo/linear_arch/__init__.py b/basicts/archs/arch_zoo/linear_arch/__init__.py new file mode 100644 index 0000000..923f2f7 --- /dev/null +++ b/basicts/archs/arch_zoo/linear_arch/__init__.py @@ -0,0 +1,5 @@ +from .linear import Linear +from .dlinear import DLinear +from .nlinear import NLinear + +__all__ = ["Linear", "DLinear", "NLinear"] diff --git a/basicts/archs/arch_zoo/linear_arch/dlinear.py b/basicts/archs/arch_zoo/linear_arch/dlinear.py new file mode 100644 index 0000000..ca3135b --- /dev/null +++ b/basicts/archs/arch_zoo/linear_arch/dlinear.py @@ -0,0 +1,98 @@ +import torch +import torch.nn as nn + + +class moving_avg(nn.Module): + """Moving average block to highlight the trend of time series""" + + def __init__(self, kernel_size, stride): + super(moving_avg, self).__init__() + self.kernel_size = kernel_size + self.avg = nn.AvgPool1d(kernel_size=kernel_size, + stride=stride, padding=0) + + def forward(self, x): + # padding on the both ends of time series + front = x[:, 0:1, :].repeat(1, (self.kernel_size - 1) // 2, 1) + end = x[:, -1:, :].repeat(1, (self.kernel_size - 1) // 2, 1) + x = torch.cat([front, x, end], dim=1) + x = self.avg(x.permute(0, 2, 1)) + x = x.permute(0, 2, 1) + return x + + +class series_decomp(nn.Module): + """Series decomposition block""" + + def __init__(self, kernel_size): + super(series_decomp, self).__init__() + self.moving_avg = moving_avg(kernel_size, stride=1) + + def forward(self, x): + moving_mean = self.moving_avg(x) + res = x - moving_mean + return res, moving_mean + + +class DLinear(nn.Module): + """ + The implementation of the decomposition-linear model in Paper "Are Transformers Effective for Time Series Forecasting?" + Link: https://arxiv.org/abs/2205.13504 + """ + + def __init__(self, **model_args): + super(DLinear, self).__init__() + self.seq_len = model_args["seq_len"] + self.pred_len = model_args["pred_len"] + + # Decompsition Kernel Size + kernel_size = 25 + self.decompsition = series_decomp(kernel_size) + self.individual = model_args["individual"] + self.channels = model_args["enc_in"] + + if self.individual: + self.Linear_Seasonal = nn.ModuleList() + self.Linear_Trend = nn.ModuleList() + + for i in range(self.channels): + self.Linear_Seasonal.append( + nn.Linear(self.seq_len, self.pred_len)) + self.Linear_Trend.append( + nn.Linear(self.seq_len, self.pred_len)) + + else: + self.Linear_Seasonal = nn.Linear(self.seq_len, self.pred_len) + self.Linear_Trend = nn.Linear(self.seq_len, self.pred_len) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feed forward of STID. + + Args: + history_data (torch.Tensor): history data with shape [B, L, N, C] + + Returns: + torch.Tensor: prediction wit shape [B, L, N, C] + """ + + assert history_data.shape[-1] == 1 # only use the target feature + x = history_data[..., 0] # B, L, N + seasonal_init, trend_init = self.decompsition(x) + seasonal_init, trend_init = seasonal_init.permute( + 0, 2, 1), trend_init.permute(0, 2, 1) + if self.individual: + seasonal_output = torch.zeros([seasonal_init.size(0), seasonal_init.size( + 1), self.pred_len], dtype=seasonal_init.dtype).to(seasonal_init.device) + trend_output = torch.zeros([trend_init.size(0), trend_init.size( + 1), self.pred_len], dtype=trend_init.dtype).to(trend_init.device) + for i in range(self.channels): + seasonal_output[:, i, :] = self.Linear_Seasonal[i]( + seasonal_init[:, i, :]) + trend_output[:, i, :] = self.Linear_Trend[i]( + trend_init[:, i, :]) + else: + seasonal_output = self.Linear_Seasonal(seasonal_init) + trend_output = self.Linear_Trend(trend_init) + + prediction = seasonal_output + trend_output + return prediction.permute(0, 2, 1).unsqueeze(-1) # [B, L, N, 1] diff --git a/basicts/archs/arch_zoo/linear_arch/linear.py b/basicts/archs/arch_zoo/linear_arch/linear.py new file mode 100644 index 0000000..ff4387f --- /dev/null +++ b/basicts/archs/arch_zoo/linear_arch/linear.py @@ -0,0 +1,29 @@ +import torch +import torch.nn as nn + +class Linear(nn.Module): + """ + The implementation of the linear model in Paper "Are Transformers Effective for Time Series Forecasting?" + Link: https://arxiv.org/abs/2205.13504 + """ + + def __init__(self, **model_args): + super(Linear, self).__init__() + self.seq_len = model_args["seq_len"] + self.pred_len = model_args["pred_len"] + self.Linear = nn.Linear(self.seq_len, self.pred_len) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feed forward of STID. + + Args: + history_data (torch.Tensor): history data with shape [B, L, N, C] + + Returns: + torch.Tensor: prediction wit shape [B, L, N, C] + """ + + assert history_data.shape[-1] == 1 # only use the target feature + history_data = history_data[..., 0] # B, L, N + prediction = self.Linear(history_data.permute(0, 2, 1)).permute(0, 2, 1).unsqueeze(-1) # B, L, N, 1 + return prediction diff --git a/basicts/archs/arch_zoo/linear_arch/nlinear.py b/basicts/archs/arch_zoo/linear_arch/nlinear.py new file mode 100644 index 0000000..53834c8 --- /dev/null +++ b/basicts/archs/arch_zoo/linear_arch/nlinear.py @@ -0,0 +1,32 @@ +import torch +import torch.nn as nn + +class NLinear(nn.Module): + """ + The implementation of the normalization-linear model in Paper "Are Transformers Effective for Time Series Forecasting?" + Link: https://arxiv.org/abs/2205.13504 + """ + + def __init__(self, **model_args): + super(NLinear, self).__init__() + self.seq_len = model_args["seq_len"] + self.pred_len = model_args["pred_len"] + self.Linear = nn.Linear(self.seq_len, self.pred_len) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feed forward of STID. + + Args: + history_data (torch.Tensor): history data with shape [B, L, N, C] + + Returns: + torch.Tensor: prediction wit shape [B, L, N, C] + """ + assert history_data.shape[-1] == 1 # only use the target feature + x = history_data[..., 0] # B, L, N + # x: [Batch, Input length, Channel] + seq_last = x[:,-1:,:].detach() + x = x - seq_last + x = self.Linear(x.permute(0,2,1)).permute(0,2,1) + prediction = x + seq_last + return prediction.unsqueeze(-1) diff --git a/basicts/archs/arch_zoo/mtgnn_arch/__init__.py b/basicts/archs/arch_zoo/mtgnn_arch/__init__.py new file mode 100644 index 0000000..3d2c7d9 --- /dev/null +++ b/basicts/archs/arch_zoo/mtgnn_arch/__init__.py @@ -0,0 +1,3 @@ +from .mtgnn_arch import MTGNN + +__all__ = ["MTGNN"] diff --git a/basicts/archs/arch_zoo/mtgnn_arch/mtgnn_arch.py b/basicts/archs/arch_zoo/mtgnn_arch/mtgnn_arch.py new file mode 100644 index 0000000..23b714b --- /dev/null +++ b/basicts/archs/arch_zoo/mtgnn_arch/mtgnn_arch.py @@ -0,0 +1,165 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + +from .mtgnn_layers import graph_constructor, dilated_inception, mixprop, LayerNorm + + +class MTGNN(nn.Module): + """ + Paper: Connecting the Dots: Multivariate Time Series Forecasting with Graph Neural Networks + Ref Official Code: https://github.com/nnzhan/MTGNN + Link: https://arxiv.org/abs/2005.11650 + """ + + def __init__(self, gcn_true, buildA_true, gcn_depth, num_nodes, predefined_A=None, static_feat=None, dropout=0.3, subgraph_size=20, node_dim=40, dilation_exponential=1, conv_channels=32, residual_channels=32, skip_channels=64, end_channels=128, seq_length=12, in_dim=2, out_dim=12, layers=3, propalpha=0.05, tanhalpha=3, layer_norm_affline=True): + super(MTGNN, self).__init__() + self.gcn_true = gcn_true + self.buildA_true = buildA_true + self.num_nodes = num_nodes + self.dropout = dropout + self.predefined_A = predefined_A + self.filter_convs = nn.ModuleList() + self.gate_convs = nn.ModuleList() + self.residual_convs = nn.ModuleList() + self.skip_convs = nn.ModuleList() + self.gconv1 = nn.ModuleList() + self.gconv2 = nn.ModuleList() + self.norm = nn.ModuleList() + self.start_conv = nn.Conv2d( + in_channels=in_dim, out_channels=residual_channels, kernel_size=(1, 1)) + self.gc = graph_constructor( + num_nodes, subgraph_size, node_dim, alpha=tanhalpha, static_feat=static_feat) + + self.seq_length = seq_length + kernel_size = 7 + if dilation_exponential > 1: + self.receptive_field = int( + 1+(kernel_size-1)*(dilation_exponential**layers-1)/(dilation_exponential-1)) + else: + self.receptive_field = layers*(kernel_size-1) + 1 + + for i in range(1): + if dilation_exponential > 1: + rf_size_i = int( + 1 + i*(kernel_size-1)*(dilation_exponential**layers-1)/(dilation_exponential-1)) + else: + rf_size_i = i*layers*(kernel_size-1)+1 + new_dilation = 1 + for j in range(1, layers+1): + if dilation_exponential > 1: + rf_size_j = int( + rf_size_i + (kernel_size-1)*(dilation_exponential**j-1)/(dilation_exponential-1)) + else: + rf_size_j = rf_size_i+j*(kernel_size-1) + + self.filter_convs.append(dilated_inception( + residual_channels, conv_channels, dilation_factor=new_dilation)) + self.gate_convs.append(dilated_inception( + residual_channels, conv_channels, dilation_factor=new_dilation)) + self.residual_convs.append(nn.Conv2d( + in_channels=conv_channels, out_channels=residual_channels, kernel_size=(1, 1))) + if self.seq_length > self.receptive_field: + self.skip_convs.append(nn.Conv2d( + in_channels=conv_channels, out_channels=skip_channels, kernel_size=(1, self.seq_length-rf_size_j+1))) + else: + self.skip_convs.append(nn.Conv2d(in_channels=conv_channels, out_channels=skip_channels, kernel_size=( + 1, self.receptive_field-rf_size_j+1))) + + if self.gcn_true: + self.gconv1.append( + mixprop(conv_channels, residual_channels, gcn_depth, dropout, propalpha)) + self.gconv2.append( + mixprop(conv_channels, residual_channels, gcn_depth, dropout, propalpha)) + + if self.seq_length > self.receptive_field: + self.norm.append(LayerNorm( + (residual_channels, num_nodes, self.seq_length - rf_size_j + 1), elementwise_affine=layer_norm_affline)) + else: + self.norm.append(LayerNorm( + (residual_channels, num_nodes, self.receptive_field - rf_size_j + 1), elementwise_affine=layer_norm_affline)) + + new_dilation *= dilation_exponential + + self.layers = layers + self.end_conv_1 = nn.Conv2d( + in_channels=skip_channels, out_channels=end_channels, kernel_size=(1, 1), bias=True) + self.end_conv_2 = nn.Conv2d( + in_channels=end_channels, out_channels=out_dim, kernel_size=(1, 1), bias=True) + if self.seq_length > self.receptive_field: + self.skip0 = nn.Conv2d(in_channels=in_dim, out_channels=skip_channels, kernel_size=( + 1, self.seq_length), bias=True) + self.skipE = nn.Conv2d(in_channels=residual_channels, out_channels=skip_channels, kernel_size=( + 1, self.seq_length-self.receptive_field+1), bias=True) + + else: + self.skip0 = nn.Conv2d(in_channels=in_dim, out_channels=skip_channels, kernel_size=( + 1, self.receptive_field), bias=True) + self.skipE = nn.Conv2d(in_channels=residual_channels, + out_channels=skip_channels, kernel_size=(1, 1), bias=True) + + self.idx = torch.arange(self.num_nodes) + + def forward(self, history_data: torch.Tensor, idx: int = None, **kwargs) -> torch.Tensor: + """feedforward function of MTGNN. + + Args: + history_data (torch.Tensor): history data with shape [B, L, N, C] + idx (int, optional): Graph Learning Hyperparameter. Defaults to None. + + Returns: + torch.Tensor: prediction + """ + # select feature + history_data = history_data.transpose(1, 3).contiguous() + seq_len = history_data.size(3) + assert seq_len == self.seq_length, 'input sequence length not equal to preset sequence length' + + if self.seq_length < self.receptive_field: + history_data = nn.functional.pad( + history_data, (self.receptive_field-self.seq_length, 0, 0, 0)) + + if self.gcn_true: + if self.buildA_true: + if idx is None: + adp = self.gc(self.idx) + else: + adp = self.gc(idx) + else: + adp = self.predefined_A + + x = self.start_conv(history_data) + skip = self.skip0( + F.dropout(history_data, self.dropout, training=self.training)) + for i in range(self.layers): + residual = x + filter = self.filter_convs[i](x) + filter = torch.tanh(filter) + gate = self.gate_convs[i](x) + gate = torch.sigmoid(gate) + x = filter * gate + x = F.dropout(x, self.dropout, training=self.training) + s = x + s = self.skip_convs[i](s) + skip = s + skip + if self.gcn_true: + x = self.gconv1[i](x, adp)+self.gconv2[i](x, + adp.transpose(1, 0)) + else: + x = self.residual_convs[i](x) + + x = x + residual[:, :, :, -x.size(3):] + if idx is None: + x = self.norm[i](x, self.idx) + else: + x = self.norm[i](x, idx) + # print(x.shape) + skip = self.skipE(x) + skip + # print(skip.shape) + x = F.relu(skip) + x = F.relu(self.end_conv_1(x)) + # print(x.shape) + x = self.end_conv_2(x) + # print(x.shape) + + return x diff --git a/basicts/archs/arch_zoo/mtgnn_arch/mtgnn_layers.py b/basicts/archs/arch_zoo/mtgnn_arch/mtgnn_layers.py new file mode 100644 index 0000000..93efea8 --- /dev/null +++ b/basicts/archs/arch_zoo/mtgnn_arch/mtgnn_layers.py @@ -0,0 +1,333 @@ +import numbers + +import torch +import torch.nn as nn +from torch.nn import init +import torch.nn.functional as F + + +class nconv(nn.Module): + def __init__(self): + super(nconv, self).__init__() + + def forward(self, x, A): + x = torch.einsum('ncvl,vw->ncwl', (x, A)) + return x.contiguous() + + +class dy_nconv(nn.Module): + def __init__(self): + super(dy_nconv, self).__init__() + + def forward(self, x, A): + x = torch.einsum('ncvl,nvwl->ncwl', (x, A)) + return x.contiguous() + + +class linear(nn.Module): + def __init__(self, c_in, c_out, bias=True): + super(linear, self).__init__() + self.mlp = torch.nn.Conv2d(c_in, c_out, kernel_size=( + 1, 1), padding=(0, 0), stride=(1, 1), bias=bias) + + def forward(self, x): + return self.mlp(x) + + +class prop(nn.Module): + def __init__(self, c_in, c_out, gdep, dropout, alpha): + super(prop, self).__init__() + self.nconv = nconv() + self.mlp = linear(c_in, c_out) + self.gdep = gdep + self.dropout = dropout + self.alpha = alpha + + def forward(self, x, adj): + adj = adj + torch.eye(adj.size(0)).to(x.device) + d = adj.sum(1) + h = x + dv = d + a = adj / dv.view(-1, 1) + for i in range(self.gdep): + h = self.alpha*x + (1-self.alpha)*self.nconv(h, a) + ho = self.mlp(h) + return ho + + +class mixprop(nn.Module): + def __init__(self, c_in, c_out, gdep, dropout, alpha): + super(mixprop, self).__init__() + self.nconv = nconv() + self.mlp = linear((gdep+1)*c_in, c_out) + self.gdep = gdep + self.dropout = dropout + self.alpha = alpha + + def forward(self, x, adj): + adj = adj + torch.eye(adj.size(0)).to(x.device) + d = adj.sum(1) + h = x + out = [h] + a = adj / d.view(-1, 1) + for i in range(self.gdep): + h = self.alpha*x + (1-self.alpha)*self.nconv(h, a) + out.append(h) + ho = torch.cat(out, dim=1) + ho = self.mlp(ho) + return ho + + +class dy_mixprop(nn.Module): + def __init__(self, c_in, c_out, gdep, dropout, alpha): + super(dy_mixprop, self).__init__() + self.nconv = dy_nconv() + self.mlp1 = linear((gdep+1)*c_in, c_out) + self.mlp2 = linear((gdep+1)*c_in, c_out) + + self.gdep = gdep + self.dropout = dropout + self.alpha = alpha + self.lin1 = linear(c_in, c_in) + self.lin2 = linear(c_in, c_in) + + def forward(self, x): + #adj = adj + torch.eye(adj.size(0)).to(x.device) + #d = adj.sum(1) + x1 = torch.tanh(self.lin1(x)) + x2 = torch.tanh(self.lin2(x)) + adj = self.nconv(x1.transpose(2, 1), x2) + adj0 = torch.softmax(adj, dim=2) + adj1 = torch.softmax(adj.transpose(2, 1), dim=2) + + h = x + out = [h] + for i in range(self.gdep): + h = self.alpha*x + (1-self.alpha)*self.nconv(h, adj0) + out.append(h) + ho = torch.cat(out, dim=1) + ho1 = self.mlp1(ho) + + h = x + out = [h] + for i in range(self.gdep): + h = self.alpha * x + (1 - self.alpha) * self.nconv(h, adj1) + out.append(h) + ho = torch.cat(out, dim=1) + ho2 = self.mlp2(ho) + + return ho1+ho2 + + +class dilated_1D(nn.Module): + def __init__(self, cin, cout, dilation_factor=2): + super(dilated_1D, self).__init__() + self.tconv = nn.ModuleList() + self.kernel_set = [2, 3, 6, 7] + self.tconv = nn.Conv2d( + cin, cout, (1, 7), dilation=(1, dilation_factor)) + + def forward(self, input): + x = self.tconv(input) + return x + + +class dilated_inception(nn.Module): + def __init__(self, cin, cout, dilation_factor=2): + super(dilated_inception, self).__init__() + self.tconv = nn.ModuleList() + self.kernel_set = [2, 3, 6, 7] + cout = int(cout/len(self.kernel_set)) + for kern in self.kernel_set: + self.tconv.append(nn.Conv2d(cin, cout, (1, kern), + dilation=(1, dilation_factor))) + + def forward(self, input): + x = [] + for i in range(len(self.kernel_set)): + x.append(self.tconv[i](input)) + for i in range(len(self.kernel_set)): + x[i] = x[i][..., -x[-1].size(3):] + x = torch.cat(x, dim=1) + return x + + +class graph_constructor(nn.Module): + def __init__(self, nnodes, k, dim, alpha=3, static_feat=None): + super(graph_constructor, self).__init__() + self.nnodes = nnodes + if static_feat is not None: + xd = static_feat.shape[1] + self.lin1 = nn.Linear(xd, dim) + self.lin2 = nn.Linear(xd, dim) + else: + self.emb1 = nn.Embedding(nnodes, dim) + self.emb2 = nn.Embedding(nnodes, dim) + self.lin1 = nn.Linear(dim, dim) + self.lin2 = nn.Linear(dim, dim) + + self.k = k + self.dim = dim + self.alpha = alpha + self.static_feat = static_feat + + def forward(self, idx): + if self.static_feat is None: + idx = idx.to(self.emb1.weight.device) + nodevec1 = self.emb1(idx) + nodevec2 = self.emb2(idx) + else: + idx = idx.to(self.static_feat.device) + nodevec1 = self.static_feat[idx, :] + nodevec2 = nodevec1 + + nodevec1 = torch.tanh(self.alpha*self.lin1(nodevec1)) + nodevec2 = torch.tanh(self.alpha*self.lin2(nodevec2)) + + a = torch.mm(nodevec1, nodevec2.transpose(1, 0)) - \ + torch.mm(nodevec2, nodevec1.transpose(1, 0)) + adj = F.relu(torch.tanh(self.alpha*a)) + mask = torch.zeros(idx.size(0), idx.size(0)).to(adj.device) + mask.fill_(float('0')) + s1, t1 = adj.topk(self.k, 1) + mask.scatter_(1, t1, s1.fill_(1)) + adj = adj*mask + return adj + + def fullA(self, idx): + if self.static_feat is None: + nodevec1 = self.emb1(idx) + nodevec2 = self.emb2(idx) + else: + nodevec1 = self.static_feat[idx, :] + nodevec2 = nodevec1 + + nodevec1 = torch.tanh(self.alpha*self.lin1(nodevec1)) + nodevec2 = torch.tanh(self.alpha*self.lin2(nodevec2)) + + a = torch.mm(nodevec1, nodevec2.transpose(1, 0)) - \ + torch.mm(nodevec2, nodevec1.transpose(1, 0)) + adj = F.relu(torch.tanh(self.alpha*a)) + return adj + + +class graph_global(nn.Module): + def __init__(self, nnodes, k, dim, alpha=3, static_feat=None): + super(graph_global, self).__init__() + self.nnodes = nnodes + self.A = nn.Parameter(torch.randn(nnodes, nnodes), requires_grad=True) + + def forward(self, idx): + return F.relu(self.A) + + +class graph_undirected(nn.Module): + def __init__(self, nnodes, k, dim, alpha=3, static_feat=None): + super(graph_undirected, self).__init__() + self.nnodes = nnodes + if static_feat is not None: + xd = static_feat.shape[1] + self.lin1 = nn.Linear(xd, dim) + else: + self.emb1 = nn.Embedding(nnodes, dim) + self.lin1 = nn.Linear(dim, dim) + + self.k = k + self.dim = dim + self.alpha = alpha + self.static_feat = static_feat + + def forward(self, idx): + if self.static_feat is None: + nodevec1 = self.emb1(idx) + nodevec2 = self.emb1(idx) + else: + nodevec1 = self.static_feat[idx, :] + nodevec2 = nodevec1 + + nodevec1 = torch.tanh(self.alpha*self.lin1(nodevec1)) + nodevec2 = torch.tanh(self.alpha*self.lin1(nodevec2)) + + a = torch.mm(nodevec1, nodevec2.transpose(1, 0)) + adj = F.relu(torch.tanh(self.alpha*a)) + mask = torch.zeros(idx.size(0), idx.size(0)) + mask.fill_(float('0')) + s1, t1 = adj.topk(self.k, 1) + mask.scatter_(1, t1, s1.fill_(1)) + adj = adj*mask + return adj + + +class graph_directed(nn.Module): + def __init__(self, nnodes, k, dim, alpha=3, static_feat=None): + super(graph_directed, self).__init__() + self.nnodes = nnodes + if static_feat is not None: + xd = static_feat.shape[1] + self.lin1 = nn.Linear(xd, dim) + self.lin2 = nn.Linear(xd, dim) + else: + self.emb1 = nn.Embedding(nnodes, dim) + self.emb2 = nn.Embedding(nnodes, dim) + self.lin1 = nn.Linear(dim, dim) + self.lin2 = nn.Linear(dim, dim) + + self.k = k + self.dim = dim + self.alpha = alpha + self.static_feat = static_feat + + def forward(self, idx): + if self.static_feat is None: + nodevec1 = self.emb1(idx) + nodevec2 = self.emb2(idx) + else: + nodevec1 = self.static_feat[idx, :] + nodevec2 = nodevec1 + + nodevec1 = torch.tanh(self.alpha*self.lin1(nodevec1)) + nodevec2 = torch.tanh(self.alpha*self.lin2(nodevec2)) + + a = torch.mm(nodevec1, nodevec2.transpose(1, 0)) + adj = F.relu(torch.tanh(self.alpha*a)) + mask = torch.zeros(idx.size(0), idx.size(0)) + mask.fill_(float('0')) + s1, t1 = adj.topk(self.k, 1) + mask.scatter_(1, t1, s1.fill_(1)) + adj = adj*mask + return adj + + +class LayerNorm(nn.Module): + __constants__ = ['normalized_shape', 'weight', + 'bias', 'eps', 'elementwise_affine'] + + def __init__(self, normalized_shape, eps=1e-5, elementwise_affine=True): + super(LayerNorm, self).__init__() + if isinstance(normalized_shape, numbers.Integral): + normalized_shape = (normalized_shape,) + self.normalized_shape = tuple(normalized_shape) + self.eps = eps + self.elementwise_affine = elementwise_affine + if self.elementwise_affine: + self.weight = nn.Parameter(torch.Tensor(*normalized_shape)) + self.bias = nn.Parameter(torch.Tensor(*normalized_shape)) + else: + self.register_parameter('weight', None) + self.register_parameter('bias', None) + self.reset_parameters() + + def reset_parameters(self): + if self.elementwise_affine: + init.ones_(self.weight) + init.zeros_(self.bias) + + def forward(self, input, idx): + if self.elementwise_affine: + return F.layer_norm(input, tuple(input.shape[1:]), self.weight[:, idx, :], self.bias[:, idx, :], self.eps) + else: + return F.layer_norm(input, tuple(input.shape[1:]), self.weight, self.bias, self.eps) + + def extra_repr(self): + return '{normalized_shape}, eps={eps}, ' \ + 'elementwise_affine={elementwise_affine}'.format(**self.__dict__) diff --git a/basicts/archs/arch_zoo/pyraformer_arch/__init__.py b/basicts/archs/arch_zoo/pyraformer_arch/__init__.py new file mode 100644 index 0000000..5b7215c --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/__init__.py @@ -0,0 +1,3 @@ +from .pyraformer_arch import Pyraformer + +__all__ = ["Pyraformer"] diff --git a/basicts/archs/arch_zoo/pyraformer_arch/embed.py b/basicts/archs/arch_zoo/pyraformer_arch/embed.py new file mode 100644 index 0000000..4beb686 --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/embed.py @@ -0,0 +1,107 @@ +import math + +import torch +import torch.nn as nn + + +class PositionalEmbedding(nn.Module): + def __init__(self, d_model, max_len=5000): + super(PositionalEmbedding, self).__init__() + # Compute the positional encodings once in log space. + pe = torch.zeros(max_len, d_model).float() + pe.require_grad = False + + position = torch.arange(0, max_len).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() + * -(math.log(10000.0) / d_model)).exp() + + pe[:, 0::2] = torch.sin(position * div_term) + pe[:, 1::2] = torch.cos(position * div_term) + + pe = pe.unsqueeze(0) + self.register_buffer('pe', pe) + + def forward(self, x): + return self.pe[:, :x.size(1)] + + +class TokenEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(TokenEmbedding, self).__init__() + padding = 1 if torch.__version__ >= '1.5.0' else 2 + self.tokenConv = nn.Conv1d(in_channels=c_in, out_channels=d_model, + kernel_size=3, padding=padding, padding_mode='circular') + for m in self.modules(): + if isinstance(m, nn.Conv1d): + nn.init.kaiming_normal_( + m.weight, mode='fan_in', nonlinearity='leaky_relu') + + def forward(self, x): + x = self.tokenConv(x.permute(0, 2, 1)).transpose(1, 2) + return x + + +class FixedEmbedding(nn.Module): + def __init__(self, c_in, d_model): + super(FixedEmbedding, self).__init__() + + w = torch.zeros(c_in, d_model).float() + w.require_grad = False + + position = torch.arange(0, c_in).float().unsqueeze(1) + div_term = (torch.arange(0, d_model, 2).float() + * -(math.log(10000.0) / d_model)).exp() + + w[:, 0::2] = torch.sin(position * div_term) + w[:, 1::2] = torch.cos(position * div_term) + + self.emb = nn.Embedding(c_in, d_model) + self.emb.weight = nn.Parameter(w, requires_grad=False) + + def forward(self, x): + return self.emb(x).detach() + + +class TimeFeatureEmbedding(nn.Module): + def __init__(self, d_model, num_time_features): + super(TimeFeatureEmbedding, self).__init__() + self.embed = nn.Linear(num_time_features, d_model, bias=False) + + def forward(self, x): + return self.embed(x) + + +class DataEmbedding(nn.Module): + def __init__(self, c_in, d_model, num_time_features, dropout=0.1): + super(DataEmbedding, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.temporal_embedding = TimeFeatureEmbedding( + d_model=d_model, num_time_features=num_time_features) + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding( + x) + self.position_embedding(x) + self.temporal_embedding(x_mark) + return self.dropout(x) + + +class CustomEmbedding(nn.Module): + def __init__(self, c_in, d_model, temporal_size, seq_num, dropout=0.1): + super(CustomEmbedding, self).__init__() + + self.value_embedding = TokenEmbedding(c_in=c_in, d_model=d_model) + self.position_embedding = PositionalEmbedding(d_model=d_model) + self.temporal_embedding = nn.Linear(temporal_size, d_model) + self.seqid_embedding = nn.Embedding(seq_num, d_model) + + self.dropout = nn.Dropout(p=dropout) + + def forward(self, x, x_mark): + x = self.value_embedding(x) + self.position_embedding(x) + self.temporal_embedding(x_mark[:, :, :-1])\ + + self.seqid_embedding(x_mark[:, :, -1].long()) + + return self.dropout(x) + +# NOTE: single step forecasting is removed diff --git a/basicts/archs/arch_zoo/pyraformer_arch/hierarchical_mm_tvm.py b/basicts/archs/arch_zoo/pyraformer_arch/hierarchical_mm_tvm.py new file mode 100644 index 0000000..6a6af00 --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/hierarchical_mm_tvm.py @@ -0,0 +1,282 @@ +""" +Modified based on Longformer. +@article{Beltagy2020Longformer, + title={Longformer: The Long-Document Transformer}, + author={Iz Beltagy and Matthew E. Peters and Arman Cohan}, + journal={arXiv:2004.05150}, + year={2020}, +} +""" + +from typing import Union +from functools import lru_cache + +import torch +import os.path +import sys +sys.path.append('.tvm/python') + +class GraphMM(torch.autograd.Function): + '''Class to encapsulate tvm code for compiling a diagonal_mm function, in addition to calling + this function from PyTorch + ''' + + function_dict = {} # save a list of functions, each has a different set of parameters + + @staticmethod + def _compile_function(dtype: str, device: str, b0: int = 4, b1: int = 8, b2: int = 8): + '''Compiles a tvm function that computes diagonal_mm + args: + dtype: str in ['float64', 'float32', 'float16'] + device: str in ['cpu' or 'cuda'] + b0, b1, b2: size of tensor tiles. Very important for good performance + ''' + import tvm # import the full tvm library here for compilation. Don't import at the top of the file in case we don't need to compile + from tvm.contrib import nvcc + @tvm.register_func + def tvm_callback_cuda_compile(code): + """Use nvcc compiler for better perf.""" + ptx = nvcc.compile_cuda(code, target="ptx", arch='sm_52') # use old arch for this to work on old GPUs + return ptx + + assert dtype in ['float16', 'float32', 'float64'] + assert device in ['cpu', 'cuda'] + device = None if device == 'cpu' else device + tgt_host="llvm" + + b = tvm.te.var('b') # batch size + n = tvm.te.var('n') # sequence length + h = tvm.te.var('h') # number of heads + m = tvm.te.var('m') # hidden dimension + w = tvm.te.var('w') # window size + padding = tvm.te.var('padding') # padding + transpose_t1 = tvm.te.var('transpose_t1') # t1 should be transposed + t1d3 = tvm.te.var('t1d3') # last dimension of t1 + t3d3 = tvm.te.var('t3d3') # last dimension of t3 (the result tensor) + max_attn = tvm.te.var('max_attn') + X = tvm.te.placeholder((b, n, h, t1d3), name='X', dtype=dtype) # first tensor + Y = tvm.te.placeholder((b, n, h, m), name='Y', dtype=dtype) # second tensor + k = tvm.te.reduce_axis((0, t1d3), name='k') # dimension to sum over + q_k_mask = tvm.te.placeholder((n, max_attn), name='q_k', dtype='int') # dilation per head + k_q_mask = tvm.te.placeholder((n, max_attn), name='k_q', dtype='int') # + output_shape = (b, n, h, t3d3) # shape of the result tensor + + algorithm = lambda l, i, q, j: tvm.te.sum( + tvm.te.if_then_else( + t3d3 == m, # if output dimension == m, then t1 is diagonaled (FIXME: This breaks if t3d3 == m == t1d3) + tvm.te.if_then_else( + transpose_t1 == 0, + tvm.te.if_then_else( + q_k_mask[i, k]>=0, + X[l, i, q, k] * Y[l, q_k_mask[i, k], q, j], # t1 is diagonaled + padding + ), + tvm.te.if_then_else( + q_k_mask[i, k]>=0, + X[l, q_k_mask[i, k], q, k_q_mask[i, k]] * Y[l, q_k_mask[i, k], q, j], # # t1 is diagonaled and should be transposed + padding + ), + ), + tvm.te.if_then_else( + q_k_mask[i, j]>=0, + X[l, i, q, k] * Y[l, q_k_mask[i, j], q, k], # t1 is not diagonaled, but the output tensor is going to be + padding + ) + ), axis=k) + + Z = tvm.te.compute(output_shape, algorithm, name='Z') # automatically generate cuda code + s = tvm.te.create_schedule(Z.op) + + print('Lowering: \n ===================== \n{}'.format(tvm.lower(s, [X, Y, q_k_mask, k_q_mask], simple_mode=True))) + + # split long axis into smaller chunks and assing each one to a separate GPU thread/block + ko, ki = s[Z].split(Z.op.reduce_axis[0], factor=b0) + ZF = s.rfactor(Z, ki) + + j_outer, j_inner = s[Z].split(s[Z].op.axis[-1], factor=b1) + i_outer, i_inner = s[Z].split(s[Z].op.axis[1], factor=b2) + + s[Z].bind(j_outer, tvm.te.thread_axis("blockIdx.x")) + s[Z].bind(j_inner, tvm.te.thread_axis("threadIdx.y")) + + s[Z].bind(i_outer, tvm.te.thread_axis("blockIdx.y")) + s[Z].bind(i_inner, tvm.te.thread_axis("threadIdx.z")) + + tx = tvm.te.thread_axis("threadIdx.x") + s[Z].bind(s[Z].op.reduce_axis[0], tx) + s[ZF].compute_at(s[Z], s[Z].op.reduce_axis[0]) + s[Z].set_store_predicate(tx.var.equal(0)) + + print('Lowering with GPU splits: \n ===================== \n{}'.format(tvm.lower(s, [X, Y, q_k_mask, k_q_mask], simple_mode=True))) + + # compiling the automatically generated cuda code + graph_mm = tvm.build(s, [X, Y, Z, q_k_mask, k_q_mask, max_attn, padding, transpose_t1, t3d3], target=device, target_host=tgt_host, name='graph_mm') + return graph_mm + + @staticmethod + def _get_lib_filename(dtype: str, device: str): + base_filename = 'lib/lib_hierarchical_mm' + return '{}_{}_{}.so'.format(base_filename, dtype, device) + + @staticmethod + def _save_compiled_function(f, dtype: str, device: str): + if not os.path.exists('lib/'): + os.makedirs('lib/') + f.export_library(GraphMM._get_lib_filename(dtype, device)) + + @staticmethod + def _load_compiled_function(dtype: str, device: str): + # from tvm.module import load # this can be the small runtime python library, and doesn't need to be the whole thing + from tvm.runtime.module import load_module as load + + filename = GraphMM._get_lib_filename(dtype, device) + current_dir = os.path.dirname(os.path.abspath(__file__)) + potential_dirs = ['../../', '../', './', f'{current_dir}/', f'{current_dir}/../'] + for potential_dir in potential_dirs: + filepath = '{}{}'.format(potential_dir, filename) + if os.path.isfile(filepath): + print('Loading tvm binary from: {}'.format(filepath)) + return load(filepath) + return None + + @staticmethod + def _get_function(dtype: str, device: str): + '''Loads the function from the disk or compile it''' + # A list of arguments that define the function + args = (dtype, device) + if args not in GraphMM.function_dict: + graph_mm = GraphMM._load_compiled_function(dtype, device) # try to load from disk + if not graph_mm: + print('Tvm binary not found. Compiling ...') + graph_mm = GraphMM._compile_function(dtype, device) # compile + GraphMM._save_compiled_function(graph_mm, dtype, device) # save to disk + # convert the tvm function into a pytorch function + from tvm.contrib import dlpack + graph_mm_pytorch = dlpack.to_pytorch_func(graph_mm) # wrap it as a pytorch function + # save the function into a dictionary to be reused + GraphMM.function_dict[args] = graph_mm_pytorch # save it in a dictionary for next time + return GraphMM.function_dict[args] + + @staticmethod + def _graph_mm(t1: torch.Tensor, t2: torch.Tensor, q_k_mask: torch.Tensor, k_q_mask: torch.Tensor, + is_t1_diagonaled: bool = False, transpose_t1: bool = False, padding: int = 0, + autoregressive: bool = False): + '''Calls the compiled function after checking the input format. This function is called in three different modes. + t1 x t2 = r ==> t1 and t2 are not diagonaled, but r is. Useful for query x key = attention_scores + t1 x t2 = r ==> t1 is diagonaled, but t2 and r are not. Useful to compuate attantion_scores x value = context + t1 x t2 = r ==> t1 is diagonaled and it should be transposed, but t2 and r are not diagonaled. Useful in some of + the calculations in the backward pass. + ''' + dtype = str(t1.dtype).split('.')[1] + device = t1.device.type + assert len(t1.shape) == 4 + assert len(t1.shape) == len(t2.shape) + assert t1.shape[:3] == t2.shape[:3] + + b = t1.shape[0] # batch size + n = t1.shape[1] # sequence length + h = t1.shape[2] # number of heads + m = t2.shape[3] # hidden dimension + max_attn = q_k_mask.size(1) + if is_t1_diagonaled: + assert t1.shape[3] == max_attn + r = t1.new_empty(b, n, h, m) # allocate spase for the result tensor + else: + assert not transpose_t1 + assert t1.shape[3] == m + r = t1.new_empty(b, n, h, max_attn) # allocate spase for the result tensor + + # gets function from memory, from disk or compiles it from scratch + _graph_mm_function = GraphMM._get_function(dtype=dtype, device=device) + + # The last argument to this function is a little hacky. It is the size of the last dimension of the result tensor + # We use it as a proxy to tell if t1_is_diagonaled or not (if t1 is diagonaled, result is not, and vice versa). + # The second reason is that the lambda expression in `_compile_function` is easier to express when the shape + # of the output is known + # This functions computes diagonal_mm then saves the result in `r` + if m == max_attn: + # FIXME + print('Error: the hidden dimension {m} shouldn\'t match number of diagonals {c}') + assert False + _graph_mm_function(t1, t2, r, q_k_mask, k_q_mask, max_attn, padding, transpose_t1, m if is_t1_diagonaled else max_attn) + return r + + @staticmethod + def _prepare_tensors(t): + '''Fix `stride()` information of input tensor. This addresses some inconsistency in stride information in PyTorch. + For a tensor t, if t.size(0) == 1, then the value of t.stride()[0] doesn't matter. + TVM expects this value to be the `product(t.size()[1:])` but PyTorch some times sets it to `t.stride()[1]`. + Here's an example to reporduce this issue: + import torch + print(torch.randn(1, 10).stride()) + > (10, 1) + print(torch.randn(10, 1).t().contiguous().stride()) + > (1, 1) # expected it to be (10, 1) as above + print(torch.randn(10, 2).t().contiguous().stride()) + > (10, 1) # but gets the expected stride if the first dimension is > 1 + ''' + assert t.is_contiguous() + t_stride = list(t.stride()) + t_size = list(t.size()) + # Fix wrong stride information for the first dimension. This occures when batch_size=1 + if t_size[0] == 1 and t_stride[0] == t_stride[1]: + # In this case, the stride of the first dimension should be the product + # of the sizes of all other dimensions + t_stride[0] = t_size[1] * t_size[2] * t_size[3] + t = t.as_strided(size=t_size, stride=t_stride) + return t + + min_seq_len = 16 # unexpected output if seq_len < 16 + + @staticmethod + def forward(ctx, t1: torch.Tensor, t2: torch.Tensor, q_k_mask, k_q_mask, is_t1_diagonaled: bool = False, padding: int = 0) -> torch.Tensor: + '''Compuates diagonal_mm of t1 and t2. + args: + t1: torch.Tensor = (batch_size, seq_len, num_attention_heads, hidden_size|number_of_diagonals). + t1 can be a regular tensor (e.g. `query_layer`) or a diagonaled one (e.g. `attention_scores`) + t2: torch.Tensor = (batch_size, seq_len, num_attention_heads, hidden_size). This is always a non-diagonaled + tensor, e.g. `key_layer` or `value_layer` + w: int = window size; number of attentions on each side of the word + d: torch.Tensor or int = dilation of attentions per attention head. If int, the same dilation value will be used for all + heads. If torch.Tensor, it should be 1D of lenth=number of attention heads + is_t1_diagonaled: is t1 a diagonaled or a regular tensor + padding: the padding value to use when accessing invalid locations. This is mainly useful when the padding + needs to be a very large negative value (to compute softmax of attentions). For other usecases, + please use zero padding. + autoregressive: if true, return only the lower triangle + returns: torch.Tensor = (batch_size, seq_len, num_attention_heads, hidden_size|number_of_diagonals) + if t1 is diagonaed, result is non-diagonaled, and vice versa + ''' + seq_len = t1.size(1) + assert seq_len >= GraphMM.min_seq_len, 'avoid splitting errors by using seq_len >= {}'.format(GraphMM.min_seq_len) # FIXME + + t1 = GraphMM._prepare_tensors(t1) + t2 = GraphMM._prepare_tensors(t2) + q_k_mask = GraphMM._prepare_tensors(q_k_mask) + k_q_mask = GraphMM._prepare_tensors(k_q_mask) + ctx.save_for_backward(t1, t2, q_k_mask, k_q_mask) + ctx.is_t1_diagonaled = is_t1_diagonaled + # output = t1.mm(t2) # what would have been called if this was a regular matmul + output = GraphMM._graph_mm(t1, t2, q_k_mask, k_q_mask, is_t1_diagonaled=is_t1_diagonaled, padding=padding) + return output + + @staticmethod + def backward(ctx, grad_output): + t1, t2, q_k_mask, k_q_mask = ctx.saved_tensors + is_t1_diagonaled = ctx.is_t1_diagonaled + if not grad_output.is_contiguous(): + grad_output = grad_output.contiguous() # tvm requires all input tensors to be contiguous + grad_output = GraphMM._prepare_tensors(grad_output) + # http://cs231n.github.io/optimization-2/ + # https://pytorch.org/docs/master/notes/extending.html + # grad_t1 = grad_output.mm(t2) # what would have been called if this was a regular matmul + grad_t1 = GraphMM._graph_mm(grad_output, t2, q_k_mask, k_q_mask, is_t1_diagonaled=not is_t1_diagonaled) + # grad_t2 = grad_output.t().mm(t1) # or `grad_t2 = t1.t().mm(grad_output).t()` because `(AB)^T = B^TA^T` + if is_t1_diagonaled: + grad_t2 = GraphMM._graph_mm(t1, grad_output, q_k_mask, k_q_mask, is_t1_diagonaled=True, transpose_t1=True) + else: + grad_t2 = GraphMM._graph_mm(grad_output, t1, q_k_mask, k_q_mask, is_t1_diagonaled=True, transpose_t1=True) + return grad_t1, grad_t2, None, None, None, None, None + + +graph_mm = GraphMM.apply diff --git a/basicts/archs/arch_zoo/pyraformer_arch/layers.py b/basicts/archs/arch_zoo/pyraformer_arch/layers.py new file mode 100644 index 0000000..92e36f8 --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/layers.py @@ -0,0 +1,433 @@ +import math + +import torch +import torch.nn as nn +from torch.nn.modules.linear import Linear + +from .sub_layers import MultiHeadAttention, PositionwiseFeedForward +from .embed import DataEmbedding, CustomEmbedding +from .pam_tvm import PyramidalAttention + + +def get_mask(input_size, window_size, inner_size, device): + """Get the attention mask of PAM-Naive""" + # Get the size of all layers + all_size = [] + all_size.append(input_size) + for i in range(len(window_size)): + layer_size = math.floor(all_size[i] / window_size[i]) + all_size.append(layer_size) + + seq_length = sum(all_size) + mask = torch.zeros(seq_length, seq_length, device=device) + + # get intra-scale mask + inner_window = inner_size // 2 + for layer_idx in range(len(all_size)): + start = sum(all_size[:layer_idx]) + for i in range(start, start + all_size[layer_idx]): + left_side = max(i - inner_window, start) + right_side = min(i + inner_window + 1, start + all_size[layer_idx]) + mask[i, left_side:right_side] = 1 + + # get inter-scale mask + for layer_idx in range(1, len(all_size)): + start = sum(all_size[:layer_idx]) + for i in range(start, start + all_size[layer_idx]): + left_side = (start - all_size[layer_idx - 1]) + \ + (i - start) * window_size[layer_idx - 1] + if i == (start + all_size[layer_idx] - 1): + right_side = start + else: + right_side = ( + start - all_size[layer_idx - 1]) + (i - start + 1) * window_size[layer_idx - 1] + mask[i, left_side:right_side] = 1 + mask[left_side:right_side, i] = 1 + + mask = (1 - mask).bool() + + return mask, all_size + + +def refer_points(all_sizes, window_size, device): + """Gather features from PAM's pyramid sequences""" + input_size = all_sizes[0] + indexes = torch.zeros(input_size, len(all_sizes), device=device) + + for i in range(input_size): + indexes[i][0] = i + former_index = i + for j in range(1, len(all_sizes)): + start = sum(all_sizes[:j]) + inner_layer_idx = former_index - (start - all_sizes[j - 1]) + former_index = start + \ + min(inner_layer_idx // window_size[j - 1], all_sizes[j] - 1) + indexes[i][j] = former_index + + indexes = indexes.unsqueeze(0).unsqueeze(3) + + return indexes.long() + + +def get_subsequent_mask(input_size, window_size, predict_step, truncate): + """Get causal attention mask for decoder.""" + if truncate: + mask = torch.zeros(predict_step, input_size + predict_step) + for i in range(predict_step): + mask[i][:input_size+i+1] = 1 + mask = (1 - mask).bool().unsqueeze(0) + else: + all_size = [] + all_size.append(input_size) + for i in range(len(window_size)): + layer_size = math.floor(all_size[i] / window_size[i]) + all_size.append(layer_size) + all_size = sum(all_size) + mask = torch.zeros(predict_step, all_size + predict_step) + for i in range(predict_step): + mask[i][:all_size+i+1] = 1 + mask = (1 - mask).bool().unsqueeze(0) + + return mask + + +def get_q_k(input_size, window_size, stride, device): + """ + Get the index of the key that a given query needs to attend to. + """ + second_length = input_size // stride + second_last = input_size - (second_length - 1) * stride + third_start = input_size + second_length + third_length = second_length // stride + third_last = second_length - (third_length - 1) * stride + max_attn = max(second_last, third_last) + fourth_start = third_start + third_length + fourth_length = third_length // stride + full_length = fourth_start + fourth_length + fourth_last = third_length - (fourth_length - 1) * stride + max_attn = max(third_last, fourth_last) + + max_attn += window_size + 1 + mask = torch.zeros(full_length, max_attn, + dtype=torch.int32, device=device) - 1 + + for i in range(input_size): + mask[i, 0:window_size] = i + \ + torch.arange(window_size) - window_size // 2 + mask[i, mask[i] > input_size - 1] = -1 + + mask[i, -1] = i // stride + input_size + mask[i][mask[i] > third_start - 1] = third_start - 1 + for i in range(second_length): + mask[input_size+i, 0:window_size] = input_size + \ + i + torch.arange(window_size) - window_size // 2 + mask[input_size+i, mask[input_size+i] < input_size] = -1 + mask[input_size+i, mask[input_size+i] > third_start - 1] = -1 + + if i < second_length - 1: + mask[input_size+i, window_size:(window_size+stride) + ] = torch.arange(stride) + i * stride + else: + mask[input_size+i, window_size:(window_size+second_last) + ] = torch.arange(second_last) + i * stride + + mask[input_size+i, -1] = i // stride + third_start + mask[input_size+i, mask[input_size+i] > + fourth_start - 1] = fourth_start - 1 + for i in range(third_length): + mask[third_start+i, 0:window_size] = third_start + \ + i + torch.arange(window_size) - window_size // 2 + mask[third_start+i, mask[third_start+i] < third_start] = -1 + mask[third_start+i, mask[third_start+i] > fourth_start - 1] = -1 + + if i < third_length - 1: + mask[third_start+i, window_size:(window_size+stride) + ] = input_size + torch.arange(stride) + i * stride + else: + mask[third_start+i, window_size:(window_size+third_last) + ] = input_size + torch.arange(third_last) + i * stride + + mask[third_start+i, -1] = i // stride + fourth_start + mask[third_start+i, mask[third_start+i] + > full_length - 1] = full_length - 1 + for i in range(fourth_length): + mask[fourth_start+i, 0:window_size] = fourth_start + \ + i + torch.arange(window_size) - window_size // 2 + mask[fourth_start+i, mask[fourth_start+i] < fourth_start] = -1 + mask[fourth_start+i, mask[fourth_start+i] > full_length - 1] = -1 + + if i < fourth_length - 1: + mask[fourth_start+i, window_size:(window_size+stride) + ] = third_start + torch.arange(stride) + i * stride + else: + mask[fourth_start+i, window_size:(window_size+fourth_last) + ] = third_start + torch.arange(fourth_last) + i * stride + + return mask + + +def get_k_q(q_k_mask): + """ + Get the index of the query that can attend to the given key. + """ + k_q_mask = q_k_mask.clone() + for i in range(len(q_k_mask)): + for j in range(len(q_k_mask[0])): + if q_k_mask[i, j] >= 0: + k_q_mask[i, j] = torch.where(q_k_mask[q_k_mask[i, j]] == i)[0] + + return k_q_mask + + +class EncoderLayer(nn.Module): + """ Compose with two layers """ + + def __init__(self, d_model, d_inner, n_head, d_k, d_v, dropout=0.1, normalize_before=True, use_tvm=False, q_k_mask=None, k_q_mask=None): + super(EncoderLayer, self).__init__() + self.use_tvm = use_tvm + if use_tvm: + self.slf_attn = PyramidalAttention( + n_head, d_model, d_k, d_v, dropout=dropout, normalize_before=normalize_before, q_k_mask=q_k_mask, k_q_mask=k_q_mask) + else: + self.slf_attn = MultiHeadAttention( + n_head, d_model, d_k, d_v, dropout=dropout, normalize_before=normalize_before) + + self.pos_ffn = PositionwiseFeedForward( + d_model, d_inner, dropout=dropout, normalize_before=normalize_before) + + def forward(self, enc_input, slf_attn_mask=None): + if self.use_tvm: + enc_output = self.slf_attn(enc_input) + enc_slf_attn = None + else: + enc_output, enc_slf_attn = self.slf_attn( + enc_input, enc_input, enc_input, mask=slf_attn_mask) + + enc_output = self.pos_ffn(enc_output) + + return enc_output, enc_slf_attn + + +class DecoderLayer(nn.Module): + """ Compose with two layers """ + + def __init__(self, d_model, d_inner, n_head, d_k, d_v, dropout=0.1, normalize_before=True): + super(DecoderLayer, self).__init__() + self.slf_attn = MultiHeadAttention( + n_head, d_model, d_k, d_v, dropout=dropout, normalize_before=normalize_before) + self.pos_ffn = PositionwiseFeedForward( + d_model, d_inner, dropout=dropout, normalize_before=normalize_before) + + def forward(self, Q, K, V, slf_attn_mask=None): + enc_output, enc_slf_attn = self.slf_attn( + Q, K, V, mask=slf_attn_mask) + + enc_output = self.pos_ffn(enc_output) + + return enc_output, enc_slf_attn + + +class ConvLayer(nn.Module): + def __init__(self, c_in, window_size): + super(ConvLayer, self).__init__() + self.downConv = nn.Conv1d(in_channels=c_in, + out_channels=c_in, + kernel_size=window_size, + stride=window_size) + self.norm = nn.BatchNorm1d(c_in) + self.activation = nn.ELU() + + def forward(self, x): + x = self.downConv(x) + x = self.norm(x) + x = self.activation(x) + return x + + +class Conv_Construct(nn.Module): + """Convolution CSCM""" + + def __init__(self, d_model, window_size, d_inner): + super(Conv_Construct, self).__init__() + if not isinstance(window_size, list): + self.conv_layers = nn.ModuleList([ + ConvLayer(d_model, window_size), + ConvLayer(d_model, window_size), + ConvLayer(d_model, window_size) + ]) + else: + self.conv_layers = nn.ModuleList([ + ConvLayer(d_model, window_size[0]), + ConvLayer(d_model, window_size[1]), + ConvLayer(d_model, window_size[2]) + ]) + self.norm = nn.LayerNorm(d_model) + + def forward(self, enc_input): + all_inputs = [] + enc_input = enc_input.permute(0, 2, 1) + all_inputs.append(enc_input) + + for i in range(len(self.conv_layers)): + enc_input = self.conv_layers[i](enc_input) + all_inputs.append(enc_input) + + all_inputs = torch.cat(all_inputs, dim=2).transpose(1, 2) + all_inputs = self.norm(all_inputs) + + return all_inputs + + +class Bottleneck_Construct(nn.Module): + """Bottleneck convolution CSCM""" + + def __init__(self, d_model, window_size, d_inner): + super(Bottleneck_Construct, self).__init__() + if not isinstance(window_size, list): + self.conv_layers = nn.ModuleList([ + ConvLayer(d_inner, window_size), + ConvLayer(d_inner, window_size), + ConvLayer(d_inner, window_size) + ]) + else: + self.conv_layers = [] + for i in range(len(window_size)): + self.conv_layers.append(ConvLayer(d_inner, window_size[i])) + self.conv_layers = nn.ModuleList(self.conv_layers) + self.up = Linear(d_inner, d_model) + self.down = Linear(d_model, d_inner) + self.norm = nn.LayerNorm(d_model) + + def forward(self, enc_input): + + temp_input = self.down(enc_input).permute(0, 2, 1) + all_inputs = [] + for i in range(len(self.conv_layers)): + temp_input = self.conv_layers[i](temp_input) + all_inputs.append(temp_input) + + all_inputs = torch.cat(all_inputs, dim=2).transpose(1, 2) + all_inputs = self.up(all_inputs) + all_inputs = torch.cat([enc_input, all_inputs], dim=1) + + all_inputs = self.norm(all_inputs) + + return all_inputs + + +class MaxPooling_Construct(nn.Module): + """Max pooling CSCM""" + + def __init__(self, d_model, window_size, d_inner): + super(MaxPooling_Construct, self).__init__() + if not isinstance(window_size, list): + self.pooling_layers = nn.ModuleList([ + nn.MaxPool1d(kernel_size=window_size), + nn.MaxPool1d(kernel_size=window_size), + nn.MaxPool1d(kernel_size=window_size) + ]) + else: + self.pooling_layers = nn.ModuleList([ + nn.MaxPool1d(kernel_size=window_size[0]), + nn.MaxPool1d(kernel_size=window_size[1]), + nn.MaxPool1d(kernel_size=window_size[2]) + ]) + self.norm = nn.LayerNorm(d_model) + + def forward(self, enc_input): + all_inputs = [] + enc_input = enc_input.transpose(1, 2).contiguous() + all_inputs.append(enc_input) + + for layer in self.pooling_layers: + enc_input = layer(enc_input) + all_inputs.append(enc_input) + + all_inputs = torch.cat(all_inputs, dim=2).transpose(1, 2) + all_inputs = self.norm(all_inputs) + + return all_inputs + + +class AvgPooling_Construct(nn.Module): + """Average pooling CSCM""" + + def __init__(self, d_model, window_size, d_inner): + super(AvgPooling_Construct, self).__init__() + if not isinstance(window_size, list): + self.pooling_layers = nn.ModuleList([ + nn.AvgPool1d(kernel_size=window_size), + nn.AvgPool1d(kernel_size=window_size), + nn.AvgPool1d(kernel_size=window_size) + ]) + else: + self.pooling_layers = nn.ModuleList([ + nn.AvgPool1d(kernel_size=window_size[0]), + nn.AvgPool1d(kernel_size=window_size[1]), + nn.AvgPool1d(kernel_size=window_size[2]) + ]) + self.norm = nn.LayerNorm(d_model) + + def forward(self, enc_input): + all_inputs = [] + enc_input = enc_input.transpose(1, 2).contiguous() + all_inputs.append(enc_input) + + for layer in self.pooling_layers: + enc_input = layer(enc_input) + all_inputs.append(enc_input) + + all_inputs = torch.cat(all_inputs, dim=2).transpose(1, 2) + all_inputs = self.norm(all_inputs) + + return all_inputs + + +class Predictor(nn.Module): + + def __init__(self, dim, num_types): + super().__init__() + + self.linear = nn.Linear(dim, num_types, bias=False) + nn.init.xavier_normal_(self.linear.weight) + + def forward(self, data): + out = self.linear(data) + out = out + return out + + +class Decoder(nn.Module): + """ A encoder model with self attention mechanism. """ + + def __init__(self, opt, mask): + super().__init__() + + self.model_type = opt.model + self.mask = mask + + self.layers = nn.ModuleList([ + DecoderLayer(opt.d_model, opt.d_inner_hid, opt.n_head, opt.d_k, opt.d_v, dropout=opt.dropout, + normalize_before=False), + DecoderLayer(opt.d_model, opt.d_inner_hid, opt.n_head, opt.d_k, opt.d_v, dropout=opt.dropout, + normalize_before=False) + ]) + + if opt.embed_type == 'CustomEmbedding': + self.dec_embedding = DataEmbedding( + opt.enc_in, opt.d_model, opt.num_time_features, opt.dropout) + # self.dec_embedding = CustomEmbedding(opt.enc_in, opt.d_model, opt.covariate_size, opt.seq_num, opt.dropout) + else: + self.dec_embedding = DataEmbedding( + opt.enc_in, opt.d_model, opt.num_time_features, opt.dropout) + + def forward(self, x_dec, x_mark_dec, refer): + dec_enc = self.dec_embedding(x_dec, x_mark_dec) + + dec_enc, _ = self.layers[0](dec_enc, refer, refer) + refer_enc = torch.cat([refer, dec_enc], dim=1) + mask = self.mask.repeat(len(dec_enc), 1, 1).to(dec_enc.device) + dec_enc, _ = self.layers[1]( + dec_enc, refer_enc, refer_enc, slf_attn_mask=mask) + + return dec_enc diff --git a/basicts/archs/arch_zoo/pyraformer_arch/modules.py b/basicts/archs/arch_zoo/pyraformer_arch/modules.py new file mode 100644 index 0000000..d652901 --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/modules.py @@ -0,0 +1,24 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class ScaledDotProductAttention(nn.Module): + """ Scaled Dot-Product Attention """ + + def __init__(self, temperature, attn_dropout=0.2): + super().__init__() + + self.temperature = temperature + self.dropout = nn.Dropout(attn_dropout) + + def forward(self, q, k, v, mask=None): + attn = torch.matmul(q / self.temperature, k.transpose(2, 3)) + + if mask is not None: + attn = attn.masked_fill(mask, -1e9) + + attn = self.dropout(F.softmax(attn, dim=-1)) + output = torch.matmul(attn, v) + + return output, attn diff --git a/basicts/archs/arch_zoo/pyraformer_arch/pam_tvm.py b/basicts/archs/arch_zoo/pyraformer_arch/pam_tvm.py new file mode 100644 index 0000000..48e2e05 --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/pam_tvm.py @@ -0,0 +1,67 @@ +import math + +import torch.nn as nn +import torch.nn.functional as F + +from .hierarchical_mm_tvm import graph_mm as graph_mm_tvm + + +class PyramidalAttention(nn.Module): + def __init__(self, n_head, d_model, d_k, d_v, dropout, normalize_before, q_k_mask, k_q_mask): + super(PyramidalAttention, self).__init__() + self.normalize_before = normalize_before + self.n_head = n_head + self.d_k = d_k + + self.w_qs = nn.Linear(d_model, n_head * d_k, bias=False) + self.w_ks = nn.Linear(d_model, n_head * d_k, bias=False) + self.w_vs = nn.Linear(d_model, n_head * d_k, bias=False) + nn.init.xavier_uniform_(self.w_qs.weight) + nn.init.xavier_uniform_(self.w_ks.weight) + nn.init.xavier_uniform_(self.w_vs.weight) + + self.fc = nn.Linear(d_k * n_head, d_model) + nn.init.xavier_uniform_(self.fc.weight) + + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.dropout_attn = nn.Dropout(dropout) + self.dropout_fc = nn.Dropout(dropout) + self.q_k_mask = q_k_mask + self.k_q_mask = k_q_mask + + def forward(self, hidden_states): + residual = hidden_states + + hidden_states = hidden_states + bsz, seq_len, _ = hidden_states.size() + + q = hidden_states + if self.normalize_before: + q = self.layer_norm(q) + + q = self.w_qs(q) + k = self.w_ks(hidden_states) + v = self.w_vs(hidden_states) + q /= math.sqrt(self.d_k) + + q = q.view(bsz, seq_len, self.n_head, self.d_k) + k = k.view(bsz, seq_len, self.n_head, self.d_k) + q = q.float().contiguous() + k = k.float().contiguous() + # attn_weights.size(): (batch_size, L, num_heads, 11) + attn_weights = graph_mm_tvm(q, k, self.q_k_mask, self.k_q_mask, False, -1000000000) + attn_weights = self.dropout_attn(F.softmax(attn_weights, dim=-1)) + + v = v.view(bsz, seq_len, self.n_head, self.d_k) + v = v.float().contiguous() + # is_t1_diagonaled=True + attn = graph_mm_tvm(attn_weights, v, self.q_k_mask, self.k_q_mask, True, 0) + attn = attn.reshape(bsz, seq_len, self.n_head * self.d_k).contiguous() + context = self.dropout_fc(self.fc(attn)) + context += residual + + if not self.normalize_before: + context = self.layer_norm(context) + + return context + diff --git a/basicts/archs/arch_zoo/pyraformer_arch/pyraformer_arch.py b/basicts/archs/arch_zoo/pyraformer_arch/pyraformer_arch.py new file mode 100644 index 0000000..314eb63 --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/pyraformer_arch.py @@ -0,0 +1,168 @@ +import torch +import torch.nn as nn + +from easydict import EasyDict + +from .embed import DataEmbedding, CustomEmbedding +from .layers import Bottleneck_Construct, Conv_Construct, MaxPooling_Construct, AvgPooling_Construct +from .layers import EncoderLayer, Decoder, Predictor +from .layers import get_mask, get_subsequent_mask, refer_points, get_k_q, get_q_k +from ..utils import data_transformation_4_xformer + + +class Encoder(nn.Module): + """ A encoder model with self attention mechanism. """ + + def __init__(self, opt): + super().__init__() + + self.d_model = opt.d_model + self.window_size = opt.window_size + self.truncate = opt.truncate + if opt.decoder == 'attention': + self.mask, self.all_size = get_mask( + opt.input_size, opt.window_size, opt.inner_size, opt.device) + else: + self.mask, self.all_size = get_mask( + opt.input_size+1, opt.window_size, opt.inner_size, opt.device) + self.decoder_type = opt.decoder + if opt.decoder == 'FC': + self.indexes = refer_points( + self.all_size, opt.window_size, opt.device) + + if opt.use_tvm: + assert len(set(self.window_size) + ) == 1, "Only constant window size is supported." + padding = 1 if opt.decoder == 'FC' else 0 + q_k_mask = get_q_k(opt.input_size + padding, + opt.inner_size, opt.window_size[0], opt.device) + k_q_mask = get_k_q(q_k_mask) + self.layers = nn.ModuleList([ + EncoderLayer(opt.d_model, opt.d_inner_hid, opt.n_head, opt.d_k, opt.d_v, dropout=opt.dropout, + normalize_before=False, use_tvm=True, q_k_mask=q_k_mask, k_q_mask=k_q_mask) for i in range(opt.n_layer) + ]) + else: + self.layers = nn.ModuleList([ + EncoderLayer(opt.d_model, opt.d_inner_hid, opt.n_head, opt.d_k, opt.d_v, dropout=opt.dropout, + normalize_before=False) for i in range(opt.n_layer) + ]) + + if opt.embed_type == 'CustomEmbedding': + # NOTE: Here is different from official code. + # We follow the implementation in "Are Transformers Effective for Time Series Forecasting?" (https://arxiv.org/abs/2205.13504). + # Here is a possible reason: + # The custom embedding is not mentioned in the paper, + # and it is similar to a cruical technique similar to STID[1] for MTS forecasting, which may cause unfairness. + # [1] Spatial-Temporal Identity: A Simple yet Effective Baseline for Multivariate Time Series Forecasting. + self.enc_embedding = DataEmbedding( + opt.enc_in, opt.d_model, opt.num_time_features, opt.dropout) + # self.enc_embedding = CustomEmbedding(opt.enc_in, opt.d_model, opt.covariate_size, opt.seq_num, opt.dropout) + else: + self.enc_embedding = DataEmbedding( + opt.enc_in, opt.d_model, opt.num_time_features, opt.dropout) + + self.conv_layers = eval(opt.CSCM)( + opt.d_model, opt.window_size, opt.d_bottleneck) + + def forward(self, x_enc, x_mark_enc): + + seq_enc = self.enc_embedding(x_enc, x_mark_enc) + + mask = self.mask.repeat(len(seq_enc), 1, 1).to(x_enc.device) + seq_enc = self.conv_layers(seq_enc) + + for i in range(len(self.layers)): + seq_enc, _ = self.layers[i](seq_enc, mask) + + if self.decoder_type == 'FC': + indexes = self.indexes.repeat(seq_enc.size( + 0), 1, 1, seq_enc.size(2)).to(seq_enc.device) + indexes = indexes.view(seq_enc.size(0), -1, seq_enc.size(2)) + all_enc = torch.gather(seq_enc, 1, indexes) + seq_enc = all_enc.view(seq_enc.size(0), self.all_size[0], -1) + elif self.decoder_type == 'attention' and self.truncate: + seq_enc = seq_enc[:, :self.all_size[0]] + + return seq_enc + + +class Pyraformer(nn.Module): + """ A sequence to sequence model with attention mechanism. """ + + def __init__(self, **model_args): + super().__init__() + + opt = EasyDict(model_args) + opt.window_size = eval(opt.window_size) + + self.predict_step = opt.predict_step + self.d_model = opt.d_model + self.input_size = opt.input_size + self.decoder_type = opt.decoder + self.channels = opt.enc_in + + self.encoder = Encoder(opt) + if opt.decoder == 'attention': + mask = get_subsequent_mask( + opt.input_size, opt.window_size, opt.predict_step, opt.truncate) + self.decoder = Decoder(opt, mask) + self.predictor = Predictor(opt.d_model, opt.enc_in) + elif opt.decoder == 'FC': + self.predictor = Predictor( + 4 * opt.d_model, opt.predict_step * opt.enc_in) + + def forward_xformer(self, x_enc: torch.Tensor, x_mark_enc: torch.Tensor, x_dec: torch.Tensor, x_mark_dec: torch.Tensor, + enc_self_mask: torch.Tensor = None, dec_self_mask: torch.Tensor = None, dec_enc_mask: torch.Tensor = None) -> torch.Tensor: + """Feed forward of PyraFormer. Kindly note that `enc_self_mask`, `dec_self_mask`, and `dec_enc_mask` are not actually used in PyraFormer. + + Args: + x_enc (torch.Tensor): input data of encoder (without the time features). Shape: [B, L1, N] + x_mark_enc (torch.Tensor): time features input of encoder w.r.t. x_enc. Shape: [B, L1, C-1] + x_dec (torch.Tensor): input data of decoder. Shape: [B, start_token_length + L2, N] + x_mark_dec (torch.Tensor): time features input to decoder w.r.t. x_dec. Shape: [B, start_token_length + L2, C-1] + enc_self_mask (torch.Tensor, optional): encoder self attention masks. Defaults to None. + dec_self_mask (torch.Tensor, optional): decoder self attention masks. Defaults to None. + dec_enc_mask (torch.Tensor, optional): decoder encoder self attention masks. Defaults to None. + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + if self.decoder_type == 'attention': + enc_output = self.encoder(x_enc, x_mark_enc) + dec_enc = self.decoder(x_dec, x_mark_dec, enc_output) + # NOTE: pre-train is removed. + # if pretrain: + # dec_enc = torch.cat( + # [enc_output[:, :self.input_size], dec_enc], dim=1) + # pred = self.predictor(dec_enc) + # else: + pred = self.predictor(dec_enc) + elif self.decoder_type == 'FC': + enc_output = self.encoder(x_enc, x_mark_enc)[:, -1, :] + pred = self.predictor(enc_output).view( + enc_output.size(0), self.predict_step, -1) + return pred.unsqueeze(-1) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """ + + Args: + history_data (Tensor): Input data with shape: [B, L1, N, C] + future_data (Tensor): Future data with shape: [B, L2, N, C] + + Returns: + torch.Tensor: outputs with shape [B, L2, N, 1] + """ + + x_enc, x_mark_enc, x_dec, x_mark_dec = data_transformation_4_xformer( + history_data=history_data, future_data=future_data, start_token_len=0) + + predict_token = torch.zeros(x_enc.size( + 0), 1, x_enc.size(-1), device=x_enc.device) + x_enc = torch.cat([x_enc, predict_token], dim=1) + x_mark_enc = torch.cat([x_mark_enc, x_mark_dec[:, 0:1, :]], dim=1) + + prediction = self.forward_xformer( + x_enc=x_enc, x_mark_enc=x_mark_enc, x_dec=x_dec, x_mark_dec=x_mark_dec) + return prediction diff --git a/basicts/archs/arch_zoo/pyraformer_arch/sub_layers.py b/basicts/archs/arch_zoo/pyraformer_arch/sub_layers.py new file mode 100644 index 0000000..3f28491 --- /dev/null +++ b/basicts/archs/arch_zoo/pyraformer_arch/sub_layers.py @@ -0,0 +1,96 @@ +import torch.nn as nn +import torch.nn.functional as F + +from .modules import ScaledDotProductAttention + + +class MultiHeadAttention(nn.Module): + """ Multi-Head Attention module """ + + def __init__(self, n_head, d_model, d_k, d_v, dropout=0.1, normalize_before=True): + super().__init__() + + self.normalize_before = normalize_before + self.n_head = n_head + self.d_k = d_k + self.d_v = d_v + + self.w_qs = nn.Linear(d_model, n_head * d_k, bias=False) + self.w_ks = nn.Linear(d_model, n_head * d_k, bias=False) + self.w_vs = nn.Linear(d_model, n_head * d_v, bias=False) + nn.init.xavier_uniform_(self.w_qs.weight) + nn.init.xavier_uniform_(self.w_ks.weight) + nn.init.xavier_uniform_(self.w_vs.weight) + + self.fc = nn.Linear(d_v * n_head, d_model) + nn.init.xavier_uniform_(self.fc.weight) + + self.attention = ScaledDotProductAttention( + temperature=d_k ** 0.5, attn_dropout=dropout) + + self.layer_norm = nn.LayerNorm(d_model, eps=1e-6) + self.dropout = nn.Dropout(dropout) + + def forward(self, q, k, v, mask=None): + d_k, d_v, n_head = self.d_k, self.d_v, self.n_head + sz_b, len_q, len_k, len_v = q.size(0), q.size(1), k.size(1), v.size(1) + + residual = q + if self.normalize_before: + q = self.layer_norm(q) + + # Pass through the pre-attention projection: b x lq x (n*dv) + # Separate different heads: b x lq x n x dv + q = self.w_qs(q).view(sz_b, len_q, n_head, d_k) + k = self.w_ks(k).view(sz_b, len_k, n_head, d_k) + v = self.w_vs(v).view(sz_b, len_v, n_head, d_v) + + # Transpose for attention dot product: b x n x lq x dv + q, k, v = q.transpose(1, 2), k.transpose(1, 2), v.transpose(1, 2) + + if mask is not None: + if len(mask.size()) == 3: + mask = mask.unsqueeze(1) # For head axis broadcasting. + + output, attn = self.attention(q, k, v, mask=mask) + + # Transpose to move the head dimension back: b x lq x n x dv + # Combine the last two dimensions to concatenate all the heads together: b x lq x (n*dv) + output = output.transpose(1, 2).contiguous().view(sz_b, len_q, -1) + output = self.dropout(self.fc(output)) + output += residual + + if not self.normalize_before: + output = self.layer_norm(output) + return output, attn + + +class PositionwiseFeedForward(nn.Module): + """ Two-layer position-wise feed-forward neural network. """ + + def __init__(self, d_in, d_hid, dropout=0.1, normalize_before=True): + super().__init__() + + self.normalize_before = normalize_before + + self.w_1 = nn.Linear(d_in, d_hid) + self.w_2 = nn.Linear(d_hid, d_in) + + self.layer_norm = nn.LayerNorm(d_in, eps=1e-6) + #self.layer_norm = GraphNorm(d_in) + self.dropout = nn.Dropout(dropout) + + def forward(self, x): + residual = x + if self.normalize_before: + x = self.layer_norm(x) + + x = F.gelu(self.w_1(x)) + x = self.dropout(x) + x = self.w_2(x) + x = self.dropout(x) + x = x + residual + + if not self.normalize_before: + x = self.layer_norm(x) + return x diff --git a/basicts/archs/arch_zoo/stemgnn_arch/__init__.py b/basicts/archs/arch_zoo/stemgnn_arch/__init__.py new file mode 100644 index 0000000..2154d27 --- /dev/null +++ b/basicts/archs/arch_zoo/stemgnn_arch/__init__.py @@ -0,0 +1,3 @@ +from .stemgnn_arch import StemGNN + +__all__ = ["StemGNN"] diff --git a/basicts/archs/arch_zoo/stemgnn_arch/stemgnn_arch.py b/basicts/archs/arch_zoo/stemgnn_arch/stemgnn_arch.py new file mode 100644 index 0000000..c8a6533 --- /dev/null +++ b/basicts/archs/arch_zoo/stemgnn_arch/stemgnn_arch.py @@ -0,0 +1,214 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class GLU(nn.Module): + def __init__(self, input_channel, output_channel): + super(GLU, self).__init__() + self.linear_left = nn.Linear(input_channel, output_channel) + self.linear_right = nn.Linear(input_channel, output_channel) + + def forward(self, x): + return torch.mul(self.linear_left(x), torch.sigmoid(self.linear_right(x))) + + +class StockBlockLayer(nn.Module): + def __init__(self, time_step, unit, multi_layer, stack_cnt=0): + super(StockBlockLayer, self).__init__() + self.time_step = time_step + self.unit = unit + self.stack_cnt = stack_cnt + self.multi = multi_layer + self.weight = nn.Parameter(torch.Tensor( + 1, 3 + 1, 1, self.time_step * self.multi, self.multi * self.time_step)) # [K+1, 1, in_c, out_c] + nn.init.xavier_normal_(self.weight) + self.forecast = nn.Linear( + self.time_step * self.multi, self.time_step * self.multi) + self.forecast_result = nn.Linear( + self.time_step * self.multi, self.time_step) + if self.stack_cnt == 0: + self.backcast = nn.Linear( + self.time_step * self.multi, self.time_step) + self.backcast_short_cut = nn.Linear(self.time_step, self.time_step) + self.relu = nn.ReLU() + self.GLUs = nn.ModuleList() + self.output_channel = 4 * self.multi + for i in range(3): + if i == 0: + self.GLUs.append( + GLU(self.time_step * 4, self.time_step * self.output_channel)) + self.GLUs.append( + GLU(self.time_step * 4, self.time_step * self.output_channel)) + elif i == 1: + self.GLUs.append( + GLU(self.time_step * self.output_channel, self.time_step * self.output_channel)) + self.GLUs.append( + GLU(self.time_step * self.output_channel, self.time_step * self.output_channel)) + else: + self.GLUs.append( + GLU(self.time_step * self.output_channel, self.time_step * self.output_channel)) + self.GLUs.append( + GLU(self.time_step * self.output_channel, self.time_step * self.output_channel)) + + def spe_seq_cell(self, input): + batch_size, k, input_channel, node_cnt, time_step = input.size() + input = input.view(batch_size, -1, node_cnt, time_step) + # warning: pytorch version need >= 1.8 + ffted = torch.fft.fft(input, dim=-1) + ffted_real = ffted.real + ffted_imag = ffted.imag + ffted = torch.stack([ffted_real, ffted_imag], dim=-1) + # ffted = torch.rfft(input, 1, onesided=False) + real = ffted[..., 0].permute( + 0, 2, 1, 3).contiguous().reshape(batch_size, node_cnt, -1) + img = ffted[..., 1].permute(0, 2, 1, 3).contiguous().reshape( + batch_size, node_cnt, -1) + for i in range(3): + real = self.GLUs[i * 2](real) + img = self.GLUs[2 * i + 1](img) + real = real.reshape(batch_size, node_cnt, 4, - + 1).permute(0, 2, 1, 3).contiguous() + img = img.reshape(batch_size, node_cnt, 4, - + 1).permute(0, 2, 1, 3).contiguous() + time_step_as_inner = torch.complex(real, img) + iffted = torch.fft.ifft(time_step_as_inner, dim=-1).real + # time_step_as_inner = torch.cat([real.unsqueeze(-1), img.unsqueeze(-1)], dim=-1) + # iffted = torch.irfft(time_step_as_inner, 1, onesided=False) + return iffted + + def forward(self, x, mul_L): + mul_L = mul_L.unsqueeze(1) + x = x.unsqueeze(1) + gfted = torch.matmul(mul_L, x) # B, cheb_order, 1, N, L + gconv_input = self.spe_seq_cell(gfted).unsqueeze(2) + igfted = torch.matmul(gconv_input, self.weight) + igfted = torch.sum(igfted, dim=1) + forecast_source = torch.sigmoid(self.forecast(igfted).squeeze(1)) + forecast = self.forecast_result(forecast_source) + if self.stack_cnt == 0: + backcast_short = self.backcast_short_cut(x).squeeze(1) + backcast_source = torch.sigmoid( + self.backcast(igfted) - backcast_short) + else: + backcast_source = None + return forecast, backcast_source + + +class StemGNN(nn.Module): + """ + Paper: Spectral Temporal Graph Neural Network for Multivariate Time-series Forecasting + Link: https://arxiv.org/abs/2103.07719 + Ref Official Code: https://github.com/microsoft/StemGNN + Note: + There are some difference in implementation described in the paper as well as the source code. + Details can be found in [here](https://github.com/microsoft/StemGNN/issues/12) + We adopt the implementation of the code. + Details of difference: + - No reconstruction loss. + - No 1DConv. + - Use chebyshev polynomials to reduce time complexity. + - There is no the output layer composed of GLU and fully-connected (FC) sublayers as described in third paragraph in section 4.1. + - The experimental setting is not fair in StemGNN, and we can not reproduce the paper's performance. + """ + + def __init__(self, units, stack_cnt, time_step, multi_layer, horizon, dropout_rate=0.5, leaky_rate=0.2, **kwargs): + super(StemGNN, self).__init__() + self.unit = units + self.stack_cnt = stack_cnt + self.unit = units + self.alpha = leaky_rate + self.time_step = time_step + self.horizon = horizon + self.weight_key = nn.Parameter(torch.zeros(size=(self.unit, 1))) + nn.init.xavier_uniform_(self.weight_key.data, gain=1.414) + self.weight_query = nn.Parameter(torch.zeros(size=(self.unit, 1))) + nn.init.xavier_uniform_(self.weight_query.data, gain=1.414) + self.GRU = nn.GRU(self.time_step, self.unit) + self.multi_layer = multi_layer + self.stock_block = nn.ModuleList() + self.stock_block.extend( + [StockBlockLayer(self.time_step, self.unit, self.multi_layer, stack_cnt=i) for i in range(self.stack_cnt)]) + self.fc = nn.Sequential( + nn.Linear(int(self.time_step), int(self.time_step)), + nn.LeakyReLU(), + nn.Linear(int(self.time_step), self.horizon), + ) + self.leakyrelu = nn.LeakyReLU(self.alpha) + self.dropout = nn.Dropout(p=dropout_rate) + + def get_laplacian(self, graph, normalize): + if normalize: + D = torch.diag(torch.sum(graph, dim=-1) ** (-1 / 2)) + L = torch.eye(graph.size(0), device=graph.device, + dtype=graph.dtype) - torch.mm(torch.mm(D, graph), D) + else: + D = torch.diag(torch.sum(graph, dim=-1)) + L = D - graph + return L + + def cheb_polynomial(self, laplacian): + N = laplacian.size(0) # [N, N] + laplacian = laplacian.unsqueeze(0) + first_laplacian = torch.zeros( + [1, N, N], device=laplacian.device, dtype=torch.float) + second_laplacian = laplacian + third_laplacian = ( + 2 * torch.matmul(laplacian, second_laplacian)) - first_laplacian + forth_laplacian = 2 * \ + torch.matmul(laplacian, third_laplacian) - second_laplacian + multi_order_laplacian = torch.cat( + [first_laplacian, second_laplacian, third_laplacian, forth_laplacian], dim=0) + return multi_order_laplacian + + def latent_correlation_layer(self, x): + input, _ = self.GRU(x.permute(2, 0, 1).contiguous()) + input = input.permute(1, 0, 2).contiguous() + attention = self.self_graph_attention(input) + attention = torch.mean(attention, dim=0) + degree = torch.sum(attention, dim=1) + # laplacian is sym or not + attention = 0.5 * (attention + attention.T) + degree_l = torch.diag(degree) + diagonal_degree_hat = torch.diag(1 / (torch.sqrt(degree) + 1e-7)) + laplacian = torch.matmul(diagonal_degree_hat, + torch.matmul(degree_l - attention, diagonal_degree_hat)) + mul_L = self.cheb_polynomial(laplacian) + return mul_L, attention + + def self_graph_attention(self, input): + input = input.permute(0, 2, 1).contiguous() + bat, N, fea = input.size() + key = torch.matmul(input, self.weight_key) + query = torch.matmul(input, self.weight_query) + data = key.repeat(1, 1, N).view(bat, N * N, 1) + query.repeat(1, N, 1) + data = data.squeeze(2) + data = data.view(bat, N, -1) + data = self.leakyrelu(data) + attention = F.softmax(data, dim=2) + attention = self.dropout(attention) + return attention + + def graph_fft(self, input, eigenvectors): + return torch.matmul(eigenvectors, input) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feedforward function of StemGNN. + + Args: + history_data (torch.Tensor): [B, L, N, 1] + + Returns: + torch.Tensor: [B, L, N, 1] + """ + + x = history_data[..., 0] + mul_L, attention = self.latent_correlation_layer(x) + X = x.unsqueeze(1).permute(0, 1, 3, 2).contiguous() + result = [] + for stack_i in range(self.stack_cnt): + forecast, X = self.stock_block[stack_i](X, mul_L) + result.append(forecast) + forecast = result[0] + result[1] + forecast = self.fc(forecast) + return forecast.permute(0, 2, 1).contiguous().unsqueeze(-1) diff --git a/basicts/archs/arch_zoo/stgcn_arch/__init__.py b/basicts/archs/arch_zoo/stgcn_arch/__init__.py new file mode 100644 index 0000000..51e274b --- /dev/null +++ b/basicts/archs/arch_zoo/stgcn_arch/__init__.py @@ -0,0 +1,3 @@ +from .stgcn_arch import STGCNChebGraphConv as STGCN + +__all__ = ["STGCN"] diff --git a/basicts/archs/arch_zoo/stgcn_arch/stgcn_arch.py b/basicts/archs/arch_zoo/stgcn_arch/stgcn_arch.py new file mode 100644 index 0000000..07d9b52 --- /dev/null +++ b/basicts/archs/arch_zoo/stgcn_arch/stgcn_arch.py @@ -0,0 +1,66 @@ +import torch +import torch.nn as nn + +from .stgcn_layers import STConvBlock, OutputBlock + + +class STGCNChebGraphConv(nn.Module): + """ + Paper: Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traf๏ฌc Forecasting + Official Code: https://github.com/VeritasYin/STGCN_IJCAI-18 (tensorflow) + Ref Code: https://github.com/hazdzz/STGCN + Note: + https://github.com/hazdzz/STGCN/issues/9 + Link: https://arxiv.org/abs/1709.04875 + """ + + # STGCNChebGraphConv contains 'TGTND TGTND TNFF' structure + # ChebGraphConv is the graph convolution from ChebyNet. + # Using the Chebyshev polynomials of the first kind as a graph filter. + + # T: Gated Temporal Convolution Layer (GLU or GTU) + # G: Graph Convolution Layer (ChebGraphConv) + # T: Gated Temporal Convolution Layer (GLU or GTU) + # N: Layer Normolization + # D: Dropout + + # T: Gated Temporal Convolution Layer (GLU or GTU) + # G: Graph Convolution Layer (ChebGraphConv) + # T: Gated Temporal Convolution Layer (GLU or GTU) + # N: Layer Normolization + # D: Dropout + + # T: Gated Temporal Convolution Layer (GLU or GTU) + # N: Layer Normalization + # F: Fully-Connected Layer + # F: Fully-Connected Layer + + def __init__(self, Kt, Ks, blocks, T, n_vertex, act_func, graph_conv_type, gso, bias, droprate): + super(STGCNChebGraphConv, self).__init__() + modules = [] + for l in range(len(blocks) - 3): + modules.append(STConvBlock( + Kt, Ks, n_vertex, blocks[l][-1], blocks[l+1], act_func, graph_conv_type, gso, bias, droprate)) + self.st_blocks = nn.Sequential(*modules) + Ko = T - (len(blocks) - 3) * 2 * (Kt - 1) + self.Ko = Ko + assert Ko != 0, "Ko = 0." + self.output = OutputBlock( + Ko, blocks[-3][-1], blocks[-2], blocks[-1][0], n_vertex, act_func, bias, droprate) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """feedforward function of STGCN. + + Args: + history_data (torch.Tensor): historical data with shape [B, L, N, C] + + Returns: + torch.Tensor: prediction with shape [B, L, N, C] + """ + x = history_data.permute(0, 3, 1, 2).contiguous() + + x = self.st_blocks(x) + x = self.output(x) + + x = x.transpose(2, 3) + return x diff --git a/basicts/archs/arch_zoo/stgcn_arch/stgcn_layers.py b/basicts/archs/arch_zoo/stgcn_arch/stgcn_layers.py new file mode 100644 index 0000000..69e6d78 --- /dev/null +++ b/basicts/archs/arch_zoo/stgcn_arch/stgcn_layers.py @@ -0,0 +1,322 @@ +import math + +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.nn.init as init + + +class Align(nn.Module): + def __init__(self, c_in, c_out): + super(Align, self).__init__() + self.c_in = c_in + self.c_out = c_out + self.align_conv = nn.Conv2d( + in_channels=c_in, out_channels=c_out, kernel_size=(1, 1)) + + def forward(self, x): + if self.c_in > self.c_out: + x = self.align_conv(x) + elif self.c_in < self.c_out: + batch_size, _, timestep, n_vertex = x.shape + x = torch.cat([x, torch.zeros( + [batch_size, self.c_out - self.c_in, timestep, n_vertex]).to(x)], dim=1) + else: + x = x + + return x + + +class CausalConv1d(nn.Conv1d): + def __init__(self, in_channels, out_channels, kernel_size, stride=1, enable_padding=False, dilation=1, groups=1, bias=True): + if enable_padding == True: + self.__padding = (kernel_size - 1) * dilation + else: + self.__padding = 0 + super(CausalConv1d, self).__init__(in_channels, out_channels, kernel_size=kernel_size, + stride=stride, padding=self.__padding, dilation=dilation, groups=groups, bias=bias) + + def forward(self, input): + result = super(CausalConv1d, self).forward(input) + if self.__padding != 0: + return result[:, :, : -self.__padding] + + return result + + +class CausalConv2d(nn.Conv2d): + def __init__(self, in_channels, out_channels, kernel_size, stride=1, enable_padding=False, dilation=1, groups=1, bias=True): + kernel_size = nn.modules.utils._pair(kernel_size) + stride = nn.modules.utils._pair(stride) + dilation = nn.modules.utils._pair(dilation) + if enable_padding == True: + self.__padding = [int((kernel_size[i] - 1) * dilation[i]) + for i in range(len(kernel_size))] + else: + self.__padding = 0 + self.left_padding = nn.modules.utils._pair(self.__padding) + super(CausalConv2d, self).__init__(in_channels, out_channels, kernel_size, + stride=stride, padding=0, dilation=dilation, groups=groups, bias=bias) + + def forward(self, input): + if self.__padding != 0: + input = F.pad( + input, (self.left_padding[1], 0, self.left_padding[0], 0)) + result = super(CausalConv2d, self).forward(input) + + return result + + +class TemporalConvLayer(nn.Module): + + # Temporal Convolution Layer (GLU) + # + # |--------------------------------| * Residual Connection * + # | | + # | |--->--- CasualConv2d ----- + -------| + # -------|----| โŠ™ ------> + # |--->--- CasualConv2d --- Sigmoid ---| + # + + # param x: tensor, [bs, c_in, ts, n_vertex] + + def __init__(self, Kt, c_in, c_out, n_vertex, act_func): + super(TemporalConvLayer, self).__init__() + self.Kt = Kt + self.c_in = c_in + self.c_out = c_out + self.n_vertex = n_vertex + self.align = Align(c_in, c_out) + if act_func == 'glu' or act_func == 'gtu': + self.causal_conv = CausalConv2d( + in_channels=c_in, out_channels=2 * c_out, kernel_size=(Kt, 1), enable_padding=False, dilation=1) + else: + self.causal_conv = CausalConv2d(in_channels=c_in, out_channels=c_out, kernel_size=( + Kt, 1), enable_padding=False, dilation=1) + self.act_func = act_func + self.sigmoid = nn.Sigmoid() + self.tanh = nn.Tanh() + self.relu = nn.ReLU() + self.leaky_relu = nn.LeakyReLU() + self.silu = nn.SiLU() + + def forward(self, x): + x_in = self.align(x)[:, :, self.Kt - 1:, :] + x_causal_conv = self.causal_conv(x) + + if self.act_func == 'glu' or self.act_func == 'gtu': + x_p = x_causal_conv[:, : self.c_out, :, :] + x_q = x_causal_conv[:, -self.c_out:, :, :] + + if self.act_func == 'glu': + # GLU was first purposed in + # *Language Modeling with Gated Convolutional Networks*. + # URL: https://arxiv.org/abs/1612.08083 + # Input tensor X is split by a certain dimension into tensor X_a and X_b. + # In the original paper, GLU is defined as Linear(X_a) โŠ™ Sigmoid(Linear(X_b)). + # However, in PyTorch, GLU is defined as X_a โŠ™ Sigmoid(X_b). + # URL: https://pytorch.org/docs/master/nn.functional.html#torch.nn.functional.glu + # Because in original paper, the representation of GLU and GTU is ambiguous. + # So, it is arguable which one version is correct. + + # (x_p + x_in) โŠ™ Sigmoid(x_q) + x = torch.mul((x_p + x_in), self.sigmoid(x_q)) + + else: + # Tanh(x_p + x_in) โŠ™ Sigmoid(x_q) + x = torch.mul(self.tanh(x_p + x_in), self.sigmoid(x_q)) + + elif self.act_func == 'relu': + x = self.relu(x_causal_conv + x_in) + + elif self.act_func == 'leaky_relu': + x = self.leaky_relu(x_causal_conv + x_in) + + elif self.act_func == 'silu': + x = self.silu(x_causal_conv + x_in) + + else: + raise NotImplementedError( + f'ERROR: The activation function {self.act_func} is not implemented.') + + return x + + +class ChebGraphConv(nn.Module): + def __init__(self, c_in, c_out, Ks, gso, bias): + super(ChebGraphConv, self).__init__() + self.c_in = c_in + self.c_out = c_out + self.Ks = Ks + self.gso = gso + self.weight = nn.Parameter(torch.FloatTensor(Ks, c_in, c_out)) + if bias: + self.bias = nn.Parameter(torch.FloatTensor(c_out)) + else: + self.register_parameter('bias', None) + self.reset_parameters() + + def reset_parameters(self): + init.kaiming_uniform_(self.weight, a=math.sqrt(5)) + if self.bias is not None: + fan_in, _ = init._calculate_fan_in_and_fan_out(self.weight) + bound = 1 / math.sqrt(fan_in) if fan_in > 0 else 0 + init.uniform_(self.bias, -bound, bound) + + def forward(self, x): + #bs, c_in, ts, n_vertex = x.shape + x = torch.permute(x, (0, 2, 3, 1)) + + self.gso = self.gso.to(x.device) + + if self.Ks - 1 < 0: + raise ValueError( + f'ERROR: the graph convolution kernel size Ks has to be a positive integer, but received {self.Ks}.') + elif self.Ks - 1 == 0: + x_0 = x + x_list = [x_0] + elif self.Ks - 1 == 1: + x_0 = x + x_1 = torch.einsum('hi,btij->bthj', self.gso, x) + x_list = [x_0, x_1] + elif self.Ks - 1 >= 2: + x_0 = x + x_1 = torch.einsum('hi,btij->bthj', self.gso, x) + x_list = [x_0, x_1] + for k in range(2, self.Ks): + x_list.append(torch.einsum('hi,btij->bthj', 2 * + self.gso, x_list[k - 1]) - x_list[k - 2]) + + x = torch.stack(x_list, dim=2) + + cheb_graph_conv = torch.einsum('btkhi,kij->bthj', x, self.weight) + + if self.bias is not None: + cheb_graph_conv = torch.add(cheb_graph_conv, self.bias) + else: + cheb_graph_conv = cheb_graph_conv + + return cheb_graph_conv + + +class GraphConv(nn.Module): + def __init__(self, c_in, c_out, gso, bias): + super(GraphConv, self).__init__() + self.c_in = c_in + self.c_out = c_out + self.gso = gso + self.weight = nn.Parameter(torch.FloatTensor(c_in, c_out)) + if bias: + self.bias = nn.Parameter(torch.FloatTensor(c_out)) + else: + self.register_parameter('bias', None) + self.reset_parameters() + + def reset_parameters(self): + init.kaiming_uniform_(self.weight, a=math.sqrt(5)) + if self.bias is not None: + fan_in, _ = init._calculate_fan_in_and_fan_out(self.weight) + bound = 1 / math.sqrt(fan_in) if fan_in > 0 else 0 + init.uniform_(self.bias, -bound, bound) + + def forward(self, x): + #bs, c_in, ts, n_vertex = x.shape + x = torch.permute(x, (0, 2, 3, 1)) + + first_mul = torch.einsum('hi,btij->bthj', self.gso, x) + second_mul = torch.einsum('bthi,ij->bthj', first_mul, self.weight) + + if self.bias is not None: + graph_conv = torch.add(second_mul, self.bias) + else: + graph_conv = second_mul + + return graph_conv + + +class GraphConvLayer(nn.Module): + def __init__(self, graph_conv_type, c_in, c_out, Ks, gso, bias): + super(GraphConvLayer, self).__init__() + self.graph_conv_type = graph_conv_type + self.c_in = c_in + self.c_out = c_out + self.align = Align(c_in, c_out) + self.Ks = Ks + self.gso = gso + if self.graph_conv_type == 'cheb_graph_conv': + self.cheb_graph_conv = ChebGraphConv(c_out, c_out, Ks, gso, bias) + elif self.graph_conv_type == 'graph_conv': + self.graph_conv = GraphConv(c_out, c_out, gso, bias) + + def forward(self, x): + x_gc_in = self.align(x) + if self.graph_conv_type == 'cheb_graph_conv': + x_gc = self.cheb_graph_conv(x_gc_in) + elif self.graph_conv_type == 'graph_conv': + x_gc = self.graph_conv(x_gc_in) + x_gc = x_gc.permute(0, 3, 1, 2) + x_gc_out = torch.add(x_gc, x_gc_in) + + return x_gc_out + + +class STConvBlock(nn.Module): + # STConv Block contains 'TGTND' structure + # T: Gated Temporal Convolution Layer (GLU or GTU) + # G: Graph Convolution Layer (ChebGraphConv or GraphConv) + # T: Gated Temporal Convolution Layer (GLU or GTU) + # N: Layer Normolization + # D: Dropout + + def __init__(self, Kt, Ks, n_vertex, last_block_channel, channels, act_func, graph_conv_type, gso, bias, droprate): + super(STConvBlock, self).__init__() + self.tmp_conv1 = TemporalConvLayer( + Kt, last_block_channel, channels[0], n_vertex, act_func) + self.graph_conv = GraphConvLayer( + graph_conv_type, channels[0], channels[1], Ks, gso, bias) + self.tmp_conv2 = TemporalConvLayer( + Kt, channels[1], channels[2], n_vertex, act_func) + self.tc2_ln = nn.LayerNorm([n_vertex, channels[2]]) + self.relu = nn.ReLU() + self.dropout = nn.Dropout(p=droprate) + + def forward(self, x): + x = self.tmp_conv1(x) + x = self.graph_conv(x) + x = self.relu(x) + x = self.tmp_conv2(x) + x = self.tc2_ln(x.permute(0, 2, 3, 1)).permute(0, 3, 1, 2) + x = self.dropout(x) + + return x + + +class OutputBlock(nn.Module): + # Output block contains 'TNFF' structure + # T: Gated Temporal Convolution Layer (GLU or GTU) + # N: Layer Normolization + # F: Fully-Connected Layer + # F: Fully-Connected Layer + + def __init__(self, Ko, last_block_channel, channels, end_channel, n_vertex, act_func, bias, droprate): + super(OutputBlock, self).__init__() + self.tmp_conv1 = TemporalConvLayer( + Ko, last_block_channel, channels[0], n_vertex, act_func) + self.fc1 = nn.Linear( + in_features=channels[0], out_features=channels[1], bias=bias) + self.fc2 = nn.Linear( + in_features=channels[1], out_features=end_channel, bias=bias) + self.tc1_ln = nn.LayerNorm([n_vertex, channels[0]]) + self.relu = nn.ReLU() + self.leaky_relu = nn.LeakyReLU() + self.silu = nn.SiLU() + self.dropout = nn.Dropout(p=droprate) + + def forward(self, x): + x = self.tmp_conv1(x) + x = self.tc1_ln(x.permute(0, 2, 3, 1)) + x = self.fc1(x) + x = self.relu(x) + x = self.fc2(x).permute(0, 3, 1, 2) + + return x diff --git a/basicts/archs/arch_zoo/stid_arch/__init__.py b/basicts/archs/arch_zoo/stid_arch/__init__.py new file mode 100644 index 0000000..64b1647 --- /dev/null +++ b/basicts/archs/arch_zoo/stid_arch/__init__.py @@ -0,0 +1,3 @@ +from .stid_arch import STID + +__all__ = ["STID"] diff --git a/basicts/archs/arch_zoo/stid_arch/mlp.py b/basicts/archs/arch_zoo/stid_arch/mlp.py new file mode 100644 index 0000000..17fccbc --- /dev/null +++ b/basicts/archs/arch_zoo/stid_arch/mlp.py @@ -0,0 +1,29 @@ +import torch +from torch import nn + + +class MultiLayerPerceptron(nn.Module): + """Multi-Layer Perceptron with residual links.""" + + def __init__(self, input_dim, hidden_dim) -> None: + super().__init__() + self.fc1 = nn.Conv2d( + in_channels=input_dim, out_channels=hidden_dim, kernel_size=(1, 1), bias=True) + self.fc2 = nn.Conv2d( + in_channels=hidden_dim, out_channels=hidden_dim, kernel_size=(1, 1), bias=True) + self.act = nn.ReLU() + self.drop = nn.Dropout(p=0.15) + + def forward(self, input_data: torch.Tensor) -> torch.Tensor: + """Feed forward of MLP. + + Args: + input_data (torch.Tensor): input data with shape [B, D, N] + + Returns: + torch.Tensor: latent repr + """ + + hidden = self.fc2(self.drop(self.act(self.fc1(input_data)))) # MLP + hidden = hidden + input_data # residual + return hidden diff --git a/basicts/archs/arch_zoo/stid_arch/stid_arch.py b/basicts/archs/arch_zoo/stid_arch/stid_arch.py new file mode 100644 index 0000000..9b52c1d --- /dev/null +++ b/basicts/archs/arch_zoo/stid_arch/stid_arch.py @@ -0,0 +1,115 @@ +import torch +from torch import nn + +from .mlp import MultiLayerPerceptron + + +class STID(nn.Module): + """ + The implementation of CIKM 2022 short paper + "Spatial-Temporal Identity: A Simple yet Effective Baseline for Multivariate Time Series Forecasting" + Link: https://arxiv.org/abs/2208.05233 + """ + + def __init__(self, **model_args): + super().__init__() + # attributes + self.num_nodes = model_args["num_nodes"] + self.node_dim = model_args["node_dim"] + self.input_len = model_args["input_len"] + self.input_dim = model_args["input_dim"] + self.embed_dim = model_args["embed_dim"] + self.output_len = model_args["output_len"] + self.num_layer = model_args["num_layer"] + self.temp_dim_tid = model_args["temp_dim_tid"] + self.temp_dim_diw = model_args["temp_dim_diw"] + + self.if_time_in_day = model_args["if_T_i_D"] + self.if_day_in_week = model_args["if_D_i_W"] + self.if_spatial = model_args["if_node"] + + # spatial embeddings + if self.if_spatial: + self.node_emb = nn.Parameter( + torch.empty(self.num_nodes, self.node_dim)) + nn.init.xavier_uniform_(self.node_emb) + # temporal embeddings + if self.if_time_in_day: + self.time_in_day_emb = nn.Parameter( + torch.empty(288, self.temp_dim_tid)) + nn.init.xavier_uniform_(self.time_in_day_emb) + if self.if_day_in_week: + self.day_in_week_emb = nn.Parameter( + torch.empty(7, self.temp_dim_diw)) + nn.init.xavier_uniform_(self.day_in_week_emb) + + # embedding layer + self.time_series_emb_layer = nn.Conv2d( + in_channels=self.input_dim * self.input_len, out_channels=self.embed_dim, kernel_size=(1, 1), bias=True) + + # encoding + self.hidden_dim = self.embed_dim+self.node_dim * \ + int(self.if_spatial)+self.temp_dim_tid*int(self.if_day_in_week) + \ + self.temp_dim_diw*int(self.if_time_in_day) + self.encoder = nn.Sequential( + *[MultiLayerPerceptron(self.hidden_dim, self.hidden_dim) for _ in range(self.num_layer)]) + + # regression + self.regression_layer = nn.Conv2d( + in_channels=self.hidden_dim, out_channels=self.output_len, kernel_size=(1, 1), bias=True) + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feed forward of STID. + + Args: + history_data (torch.Tensor): history data with shape [B, L, N, C] + + Returns: + torch.Tensor: prediction wit shape [B, L, N, C] + """ + + # prepare data + input_data = history_data[..., range(self.input_dim)] + + if self.if_time_in_day: + t_i_d_data = history_data[..., 1] + time_in_day_emb = self.time_in_day_emb[( + t_i_d_data[:, -1, :] * 288).type(torch.LongTensor)] + else: + time_in_day_emb = None + if self.if_day_in_week: + d_i_w_data = history_data[..., 2] + day_in_week_emb = self.day_in_week_emb[( + d_i_w_data[:, -1, :]).type(torch.LongTensor)] + else: + day_in_week_emb = None + + # time series embedding + batch_size, _, num_nodes, _ = input_data.shape + input_data = input_data.transpose(1, 2).contiguous() + input_data = input_data.view( + batch_size, num_nodes, -1).transpose(1, 2).unsqueeze(-1) + time_series_emb = self.time_series_emb_layer(input_data) + + node_emb = [] + if self.if_spatial: + # expand node embeddings + node_emb.append(self.node_emb.unsqueeze(0).expand( + batch_size, -1, -1).transpose(1, 2).unsqueeze(-1)) + # temporal embeddings + tem_emb = [] + if time_in_day_emb is not None: + tem_emb.append(time_in_day_emb.transpose(1, 2).unsqueeze(-1)) + if day_in_week_emb is not None: + tem_emb.append(day_in_week_emb.transpose(1, 2).unsqueeze(-1)) + + # concate all embeddings + hidden = torch.cat([time_series_emb] + node_emb + tem_emb, dim=1) + + # encoding + hidden = self.encoder(hidden) + + # regression + prediction = self.regression_layer(hidden) + + return prediction diff --git a/basicts/archs/arch_zoo/stnorm_arch/__init__.py b/basicts/archs/arch_zoo/stnorm_arch/__init__.py new file mode 100644 index 0000000..fdc7041 --- /dev/null +++ b/basicts/archs/arch_zoo/stnorm_arch/__init__.py @@ -0,0 +1,3 @@ +from .stnorm_arch import STNorm + +__all__ = ["STNorm"] diff --git a/basicts/archs/arch_zoo/stnorm_arch/stnorm_arch.py b/basicts/archs/arch_zoo/stnorm_arch/stnorm_arch.py new file mode 100644 index 0000000..81465ee --- /dev/null +++ b/basicts/archs/arch_zoo/stnorm_arch/stnorm_arch.py @@ -0,0 +1,198 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.nn import Parameter + + +class SNorm(nn.Module): + def __init__(self, channels): + super(SNorm, self).__init__() + self.beta = nn.Parameter(torch.zeros(channels)) + self.gamma = nn.Parameter(torch.ones(channels)) + + def forward(self, x): + x_norm = (x - x.mean(2, keepdims=True)) / \ + (x.var(2, keepdims=True, unbiased=True) + 0.00001) ** 0.5 + + out = x_norm * self.gamma.view(1, -1, 1, 1) + \ + self.beta.view(1, -1, 1, 1) + return out + + +class TNorm(nn.Module): + def __init__(self, num_nodes, channels, track_running_stats=True, momentum=0.1): + super(TNorm, self).__init__() + self.track_running_stats = track_running_stats + self.beta = nn.Parameter(torch.zeros(1, channels, num_nodes, 1)) + self.gamma = nn.Parameter(torch.ones(1, channels, num_nodes, 1)) + self.register_buffer( + 'running_mean', torch.zeros(1, channels, num_nodes, 1)) + self.register_buffer( + 'running_var', torch.ones(1, channels, num_nodes, 1)) + self.momentum = momentum + + def forward(self, x): + if self.track_running_stats: + mean = x.mean((0, 3), keepdims=True) + var = x.var((0, 3), keepdims=True, unbiased=False) + if self.training: + n = x.shape[3] * x.shape[0] + with torch.no_grad(): + self.running_mean = self.momentum * mean + \ + (1 - self.momentum) * self.running_mean + self.running_var = self.momentum * var * n / \ + (n - 1) + (1 - self.momentum) * self.running_var + else: + mean = self.running_mean + var = self.running_var + else: + mean = x.mean((3), keepdims=True) + var = x.var((3), keepdims=True, unbiased=True) + x_norm = (x - mean) / (var + 0.00001) ** 0.5 + out = x_norm * self.gamma + self.beta + return out + + +class STNorm(nn.Module): + """ + Paper: ST-Norm: Spatial and Temporal Normalization for Multi-variate Time Series Forecasting + Link: https://dl.acm.org/doi/10.1145/3447548.3467330 + Ref Official Code: https://github.com/JLDeng/ST-Norm/blob/master/models/Wavenet.py + """ + + def __init__(self, num_nodes, tnorm_bool, snorm_bool, in_dim, out_dim, channels, kernel_size, blocks, layers): + super(STNorm, self).__init__() + self.blocks = blocks + self.layers = layers + self.snorm_bool = snorm_bool + self.tnorm_bool = tnorm_bool + + self.filter_convs = nn.ModuleList() + self.gate_convs = nn.ModuleList() + self.residual_convs = nn.ModuleList() + self.skip_convs = nn.ModuleList() + + if self.snorm_bool: + self.sn = nn.ModuleList() + if self.tnorm_bool: + self.tn = nn.ModuleList() + num = int(self.tnorm_bool) + int(self.snorm_bool) + 1 + + self.mlps = nn.ModuleList() + self.gconv = nn.ModuleList() + self.cross_product = nn.ModuleList() + + self.start_conv = nn.Conv2d(in_channels=in_dim, + out_channels=channels, + kernel_size=(1, 1)) + + receptive_field = 1 + self.dropout = nn.Dropout(0.2) + + self.dilation = [] + + for b in range(blocks): + additional_scope = kernel_size - 1 + new_dilation = 1 + for i in range(layers): + # dilated convolutions + self.dilation.append(new_dilation) + if self.tnorm_bool: + self.tn.append(TNorm(num_nodes, channels)) + if self.snorm_bool: + self.sn.append(SNorm(channels)) + self.filter_convs.append(nn.Conv2d( + in_channels=num * channels, out_channels=channels, kernel_size=(1, kernel_size), dilation=new_dilation)) + + self.gate_convs.append(nn.Conv1d( + in_channels=num * channels, out_channels=channels, kernel_size=(1, kernel_size), dilation=new_dilation)) + + # 1x1 convolution for residual connection + self.residual_convs.append( + nn.Conv1d(in_channels=channels, out_channels=channels, kernel_size=(1, 1))) + + # 1x1 convolution for skip connection + self.skip_convs.append( + nn.Conv1d(in_channels=channels, out_channels=channels, kernel_size=(1, 1))) + new_dilation *= 2 + receptive_field += additional_scope + additional_scope *= 2 + + self.end_conv_1 = nn.Conv2d( + in_channels=channels, out_channels=channels, kernel_size=(1, 1), bias=True) + + self.end_conv_2 = nn.Conv2d(in_channels=channels, + out_channels=out_dim, + kernel_size=(1, 1), + bias=True) + + self.receptive_field = receptive_field + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, train: bool, **kwargs) -> torch.Tensor: + """Feedforward function of STNorm. + + Args: + history_data (torch.Tensor): shape [B, C, N, L] + + Returns: + torch.Tensor: [B, L, N, 1] + """ + + input = history_data.transpose(1, 3).contiguous() + in_len = input.size(3) + if in_len < self.receptive_field: + x = nn.functional.pad( + input, (self.receptive_field-in_len, 0, 0, 0)) + else: + x = input + x = self.start_conv(x) + skip = 0 + + # WaveNet layers + for i in range(self.blocks * self.layers): + residual = x + x_list = [] + x_list.append(x) + b, c, n, t = x.shape + if self.tnorm_bool: + x_tnorm = self.tn[i](x) + x_list.append(x_tnorm) + if self.snorm_bool: + x_snorm = self.sn[i](x) + x_list.append(x_snorm) + # dilated convolution + x = torch.cat(x_list, dim=1) + filter = self.filter_convs[i](x) + b, c, n, t = filter.shape + filter = torch.tanh(filter) + gate = self.gate_convs[i](x) + gate = torch.sigmoid(gate) + x = filter * gate + # parametrized skip connection + s = x + s = self.skip_convs[i](s) + try: + skip = skip[:, :, :, -s.size(3):] + except: + skip = 0 + skip = s + skip + + x = self.residual_convs[i](x) + + x = x + residual[:, :, :, -x.size(3):] + + x = F.relu(skip) + rep = F.relu(self.end_conv_1(x)) + out = self.end_conv_2(rep) + return out + + def load_my_state_dict(self, state_dict): + own_state = self.state_dict() + for name, param in state_dict.items(): + if isinstance(param, Parameter): + param = param.data + try: + own_state[name].copy_(param) + except: + print(name) + print(param.shape) diff --git a/basicts/archs/arch_zoo/utils/__init__.py b/basicts/archs/arch_zoo/utils/__init__.py new file mode 100644 index 0000000..3becaf2 --- /dev/null +++ b/basicts/archs/arch_zoo/utils/__init__.py @@ -0,0 +1,3 @@ +from .xformer import data_transformation_4_xformer + +__all__ = ["data_transformation_4_xformer"] diff --git a/basicts/archs/arch_zoo/utils/xformer.py b/basicts/archs/arch_zoo/utils/xformer.py new file mode 100644 index 0000000..ce78d76 --- /dev/null +++ b/basicts/archs/arch_zoo/utils/xformer.py @@ -0,0 +1,39 @@ +import torch + + +def data_transformation_4_xformer(history_data: torch.Tensor, future_data: torch.Tensor, start_token_len: int): + """Transfer the data into the XFormer format. + + Args: + history_data (torch.Tensor): history data with shape: [B, L1, N, C]. + future_data (torch.Tensor): future data with shape: [B, L2, N, C]. + L1 and L2 are input sequence length and output sequence length, respectively. + start_token_length (int): length of the decoder start token. Ref: Informer paper. + + Returns: + torch.Tensor: x_enc, input data of encoder (without the time features). Shape: [B, L1, N] + torch.Tensor: x_mark_enc, time features input of encoder w.r.t. x_enc. Shape: [B, L1, C-1] + torch.Tensor: x_dec, input data of decoder. Shape: [B, start_token_length + L2, N] + torch.Tensor: x_mark_dec, time features input to decoder w.r.t. x_dec. Shape: [B, start_token_length + L2, C-1] + """ + + # get the x_enc + x_enc = history_data[..., 0] # B, L1, N + # get the corresponding x_mark_enc + x_mark_enc = history_data[:, :, 0, 1:] # B, L1, C-1 + + # get the x_dec + if start_token_len == 0: + x_dec = torch.zeros_like(future_data[..., 0]) # B, L2, N + x_mark_dec = future_data[..., :, 0, 1:] # B, L2, C-1 + return x_enc, x_mark_enc, x_dec, x_mark_dec + else: + x_dec_token = x_enc[:, -start_token_len:, :] # B, start_token_length, N + x_dec_zeros = torch.zeros_like(future_data[..., 0]) # B, L2, N + x_dec = torch.cat([x_dec_token, x_dec_zeros], dim=1) # B, (start_token_length+L2), N + # get the corresponding x_mark_dec + x_mark_dec_token = x_mark_enc[:, -start_token_len:, :] # B, start_token_length, C-1 + x_mark_dec_future = future_data[..., :, 0, 1:] # B, L2, C-1 + x_mark_dec = torch.cat([x_mark_dec_token, x_mark_dec_future], dim=1) # B, (start_token_length+L2), C-1 + + return x_enc.float(), x_mark_enc.float(), x_dec.float(), x_mark_dec.float() diff --git a/basicts/data/__init__.py b/basicts/data/__init__.py new file mode 100644 index 0000000..b105067 --- /dev/null +++ b/basicts/data/__init__.py @@ -0,0 +1,10 @@ +import os + +from easytorch.utils.registry import scan_modules + +from .registry import SCALER_REGISTRY +from .dataset import TimeSeriesForecastingDataset + +__all__ = ["SCALER_REGISTRY", "TimeSeriesForecastingDataset"] + +scan_modules(os.getcwd(), __file__, ["__init__.py", "registry.py"]) diff --git a/basicts/data/dataset.py b/basicts/data/dataset.py new file mode 100644 index 0000000..42731a2 --- /dev/null +++ b/basicts/data/dataset.py @@ -0,0 +1,73 @@ +import os + +import torch +from torch.utils.data import Dataset + +from ..utils import load_pkl + + +class TimeSeriesForecastingDataset(Dataset): + """Time series forecasting dataset.""" + + def __init__(self, data_file_path: str, index_file_path: str, mode: str) -> None: + super().__init__() + assert mode in ["train", "valid", "test"], "error mode" + self._check_if_file_exists(data_file_path, index_file_path) + # read raw data (normalized) + data = load_pkl(data_file_path) + processed_data = data["processed_data"] + self.data = torch.from_numpy(processed_data).float() + # read index + self.index = load_pkl(index_file_path)[mode] + + def _check_if_file_exists(self, data_file_path: str, index_file_path: str): + """Check if data file and index file exist. + + Args: + data_file_path (str): data file path + index_file_path (str): index file path + + Raises: + FileNotFoundError: no data file + FileNotFoundError: no index file + """ + + if not os.path.isfile(data_file_path): + raise FileNotFoundError("BasicTS can not find data file {0}".format(data_file_path)) + if not os.path.isfile(index_file_path): + raise FileNotFoundError("BasicTS can not find index file {0}".format(index_file_path)) + + def __getitem__(self, index: int) -> tuple: + """Get a sample. + + Args: + index (int): the iteration index (not the self.index) + + Returns: + tuple: (future_data, history_data), where the shape of each is L x N x C. + """ + + idx = list(self.index[index]) + if isinstance(idx[0], int): + # continuous index + history_data = self.data[idx[0]:idx[1]] + future_data = self.data[idx[1]:idx[2]] + else: + # discontinuous index or custom index + # NOTE: current time $t$ should not included in the index[0] + history_index = idx[0] # list + assert idx[1] not in history_index, "current time t should not included in the idx[0]" + history_index.append(idx[1]) + history_data = self.data[history_index] + future_data = self.data[idx[1], idx[2]] + + return future_data, history_data + + def __len__(self): + """Dataset length + + Returns: + int: dataset length + """ + + return len(self.index) diff --git a/basicts/data/registry.py b/basicts/data/registry.py new file mode 100644 index 0000000..826969d --- /dev/null +++ b/basicts/data/registry.py @@ -0,0 +1,3 @@ +from easytorch.utils.registry import Registry + +SCALER_REGISTRY = Registry("Scaler") diff --git a/basicts/data/transform.py b/basicts/data/transform.py new file mode 100644 index 0000000..20f19fa --- /dev/null +++ b/basicts/data/transform.py @@ -0,0 +1,59 @@ +import pickle + +import torch +import numpy as np + +from .registry import SCALER_REGISTRY + + +@SCALER_REGISTRY.register() +def standard_transform(data: np.array, output_dir: str, train_index: list, history_seq_len: int, future_seq_len: int) -> np.array: + """Standard normalization. + + Args: + data (np.array): raw time series data. + output_dir (str): output dir path. + train_index (list): train index. + history_seq_len (int): historical sequence length. + future_seq_len (int): future sequence length. + + Returns: + np.array: normalized raw time series data. + """ + + # data: L, N, C + data_train = data[:train_index[-1][1], ...] + + mean, std = data_train[..., 0].mean(), data_train[..., 0].std() + + print("mean (training data):", mean) + print("std (training data):", std) + scaler = {} + scaler["func"] = re_standard_transform.__name__ + scaler["args"] = {"mean": mean, "std": std} + # label to identify the scaler for different settings. + with open(output_dir + "/scaler_in{0}_out{1}.pkl".format(history_seq_len, future_seq_len), "wb") as f: + pickle.dump(scaler, f) + + def normalize(x): + return (x - mean) / std + + data_norm = normalize(data) + return data_norm + + +@SCALER_REGISTRY.register() +def re_standard_transform(data: torch.Tensor, **kwargs) -> torch.Tensor: + """Standard re-transformation. + + Args: + data (torch.Tensor): input data. + + Returns: + torch.Tensor: re-scaled data. + """ + + mean, std = kwargs["mean"], kwargs["std"] + data = data * std + data = data + mean + return data diff --git a/basicts/launcher.py b/basicts/launcher.py new file mode 100644 index 0000000..2c7b639 --- /dev/null +++ b/basicts/launcher.py @@ -0,0 +1,19 @@ +from typing import Dict, Union + +import easytorch + +def launch_training(cfg: Union[Dict, str], gpus: str = None, node_rank: int = 0): + """Extended easytorch launch_training. + + Args: + cfg (Union[Dict, str]): Easytorch config. + gpus (str): set ``CUDA_VISIBLE_DEVICES`` environment variable. + node_rank (int): Rank of the current node. + """ + + # pre-processing of some possible future features, such as: + # registering model, runners. + # config checking + pass + # launch training based on easytorch + easytorch.launch_training(cfg=cfg, gpus=gpus, node_rank=node_rank) diff --git a/basicts/losses/__init__.py b/basicts/losses/__init__.py new file mode 100644 index 0000000..39d7c0a --- /dev/null +++ b/basicts/losses/__init__.py @@ -0,0 +1,4 @@ +from .losses import l1_loss, l2_loss +from ..metrics import masked_mae, masked_mape, masked_rmse, masked_mse + +__all__ = ["l1_loss", "l2_loss", "masked_mae", "masked_mape", "masked_rmse", "masked_mse"] diff --git a/basicts/losses/losses.py b/basicts/losses/losses.py new file mode 100644 index 0000000..1691225 --- /dev/null +++ b/basicts/losses/losses.py @@ -0,0 +1,17 @@ +import torch.nn.functional as F + +from ..utils import check_nan_inf + + +def l1_loss(input_data, target_data): + """unmasked mae.""" + + return F.l1_loss(input_data, target_data) + + +def l2_loss(input_data, target_data): + """unmasked mse""" + + check_nan_inf(input_data) + check_nan_inf(target_data) + return F.mse_loss(input_data, target_data) diff --git a/basicts/metrics/__init__.py b/basicts/metrics/__init__.py new file mode 100644 index 0000000..5e69753 --- /dev/null +++ b/basicts/metrics/__init__.py @@ -0,0 +1,5 @@ +from .mae import masked_mae +from .mape import masked_mape +from .rmse import masked_rmse, masked_mse + +__all__ = ["masked_mae", "masked_mape", "masked_rmse", "masked_mse"] diff --git a/basicts/metrics/mae.py b/basicts/metrics/mae.py new file mode 100644 index 0000000..c79e208 --- /dev/null +++ b/basicts/metrics/mae.py @@ -0,0 +1,30 @@ +import torch +import numpy as np + + +def masked_mae(preds: torch.Tensor, labels: torch.Tensor, null_val: float = np.nan) -> torch.Tensor: + """Masked mean absolute error. + + Args: + preds (torch.Tensor): predicted values + labels (torch.Tensor): labels + null_val (float, optional): null value. Defaults to np.nan. + + Returns: + torch.Tensor: masked mean absolute error + """ + + # fix very small values of labels, which should be 0. Otherwise, nan detector will fail. + labels = torch.where(labels < 1e-4, torch.zeros_like(labels), labels) + # TODO fix very large values + if np.isnan(null_val): + mask = ~torch.isnan(labels) + else: + mask = (labels != null_val) + mask = mask.float() + mask /= torch.mean((mask)) + mask = torch.where(torch.isnan(mask), torch.zeros_like(mask), mask) + loss = torch.abs(preds-labels) + loss = loss * mask + loss = torch.where(torch.isnan(loss), torch.zeros_like(loss), loss) + return torch.mean(loss) diff --git a/basicts/metrics/mape.py b/basicts/metrics/mape.py new file mode 100644 index 0000000..2911bad --- /dev/null +++ b/basicts/metrics/mape.py @@ -0,0 +1,29 @@ +import torch +import numpy as np + + +def masked_mape(preds: torch.Tensor, labels: torch.Tensor, null_val: float = np.nan) -> torch.Tensor: + """Masked mean absolute percentage error. + + Args: + preds (torch.Tensor): predicted values + labels (torch.Tensor): labels + null_val (float, optional): null value. Defaults to np.nan. + + Returns: + torch.Tensor: masked mean absolute percentage error + """ + + # fix very small values of labels, which should be 0. Otherwise, nan detector will fail. + labels = torch.where(labels < 1e-4, torch.zeros_like(labels), labels) + if np.isnan(null_val): + mask = ~torch.isnan(labels) + else: + mask = (labels != null_val) + mask = mask.float() + mask /= torch.mean((mask)) + mask = torch.where(torch.isnan(mask), torch.zeros_like(mask), mask) + loss = torch.abs(preds-labels)/labels + loss = loss * mask + loss = torch.where(torch.isnan(loss), torch.zeros_like(loss), loss) + return torch.mean(loss) diff --git a/basicts/metrics/rmse.py b/basicts/metrics/rmse.py new file mode 100644 index 0000000..106da8d --- /dev/null +++ b/basicts/metrics/rmse.py @@ -0,0 +1,44 @@ +import torch +import numpy as np + + +def masked_mse(preds: torch.Tensor, labels: torch.Tensor, null_val: float = np.nan) -> torch.Tensor: + """Masked mean squared error. + + Args: + preds (torch.Tensor): predicted values + labels (torch.Tensor): labels + null_val (float, optional): null value. Defaults to np.nan. + + Returns: + torch.Tensor: masked mean squared error + """ + + # fix very small values of labels, which should be 0. Otherwise, nan detector will fail. + labels = torch.where(labels < 1e-4, torch.zeros_like(labels), labels) + if np.isnan(null_val): + mask = ~torch.isnan(labels) + else: + mask = (labels != null_val) + mask = mask.float() + mask /= torch.mean((mask)) + mask = torch.where(torch.isnan(mask), torch.zeros_like(mask), mask) + loss = (preds-labels)**2 + loss = loss * mask + loss = torch.where(torch.isnan(loss), torch.zeros_like(loss), loss) + return torch.mean(loss) + + +def masked_rmse(preds: torch.Tensor, labels: torch.Tensor, null_val: float = np.nan) -> torch.Tensor: + """root mean squared error. + + Args: + preds (torch.Tensor): predicted values + labels (torch.Tensor): labels + null_val (float, optional): null value . Defaults to np.nan. + + Returns: + torch.Tensor: root mean squared error + """ + + return torch.sqrt(masked_mse(preds=preds, labels=labels, null_val=null_val)) diff --git a/basicts/runners/__init__.py b/basicts/runners/__init__.py new file mode 100644 index 0000000..cecc85d --- /dev/null +++ b/basicts/runners/__init__.py @@ -0,0 +1,28 @@ +from .base_tsf_runner import BaseTimeSeriesForecastingRunner +from .runner_zoo.simple_tsf_runner import SimpleTimeSeriesForecastingRunner +from .runner_zoo.stid_runner import STIDRunner +from .runner_zoo.gwnet_runner import GraphWaveNetRunner +from .runner_zoo.dcrnn_runner import DCRNNRunner +from .runner_zoo.d2stgnn_runner import D2STGNNRunner +from .runner_zoo.stgcn_runner import STGCNRunner +from .runner_zoo.mtgnn_runner import MTGNNRunner +from .runner_zoo.stnorm_runner import STNormRunner +from .runner_zoo.agcrn_runner import AGCRNRunner +from .runner_zoo.stemgnn_runner import StemGNNRunner +from .runner_zoo.gts_runner import GTSRunner +from .runner_zoo.dgcrn_runner import DGCRNRunner +from .runner_zoo.linear_runner import LinearRunner +from .runner_zoo.autoformer_runner import AutoformerRunner +from .runner_zoo.hi_runner import HIRunner +from .runner_zoo.fedformer_runner import FEDformerRunner +from .runner_zoo.informer_runner import InformerRunner +from .runner_zoo.pyraformer_runner import PyraformerRunner + +__all__ = ["BaseTimeSeriesForecastingRunner", + "SimpleTimeSeriesForecastingRunner", "STIDRunner", + "GraphWaveNetRunner", "DCRNNRunner", "D2STGNNRunner", + "STGCNRunner", "MTGNNRunner", "STNormRunner", + "AGCRNRunner", "StemGNNRunner", "GTSRunner", + "DGCRNRunner", "LinearRunner", "AutoformerRunner", + "HIRunner", "FEDformerRunner", "InformerRunner", + "PyraformerRunner"] diff --git a/basicts/runners/base_runner.py b/basicts/runners/base_runner.py new file mode 100644 index 0000000..39ae4fc --- /dev/null +++ b/basicts/runners/base_runner.py @@ -0,0 +1,201 @@ +import time +from typing import Dict + +import setproctitle +import torch +from torch import nn +from torch.utils.data import DataLoader +from easytorch import Runner +from easytorch.utils import master_only +from easytorch.core.data_loader import build_data_loader + + +class BaseRunner(Runner): + """ + An expanded easytorch runner for benchmarking time series models. + - Support test loader and test process. + - Support setup_graph for the models acting like tensorflow. + """ + + def __init__(self, cfg: dict): + """Init + + Args: + cfg (dict): all in one configurations + """ + + super().__init__(cfg) + + # validate every `val_interval` epoch + self.val_interval = cfg["VAL"].get("INTERVAL", 1) + # test every `test_interval` epoch + self.test_interval = cfg["TEST"].get("INTERVAL", 1) + + # declare data loader + self.train_data_loader = None + self.val_data_loader = None + + # set proctitle + proctitle_name = "{0}({1})".format(cfg["MODEL"].get( + "NAME", " "), cfg.get("DATASET_NAME", " ")) + setproctitle.setproctitle("{0}@BasicTS".format(proctitle_name)) + + @staticmethod + def define_model(cfg: Dict) -> nn.Module: + return cfg["MODEL"]["ARCH"](**cfg.MODEL.PARAM) + + def build_train_data_loader(self, cfg: dict) -> DataLoader: + """Support "setup_graph" for the models acting like tensorflow. + + Args: + cfg (dict): all in one configurations + + Returns: + DataLoader: train dataloader + """ + + train_data_loader = super().build_train_data_loader(cfg) + if cfg["TRAIN"].get("SETUP_GRAPH", False): + for data in train_data_loader: + self.setup_graph(data) + break + return train_data_loader + + def setup_graph(self, data: torch.Tensor): + """Setup all parameters and the computation graph. + + Args: + data (torch.Tensor): data necessary for a forward pass + """ + + pass + + def init_training(self, cfg: dict): + """Initialize training and support test dataloader. + + Args: + cfg (dict): config + """ + + super().init_training(cfg) + # init test + if hasattr(cfg, "TEST"): + self.init_test(cfg) + + @master_only + def init_test(self, cfg: dict): + """Initialize test. + + Args: + cfg (dict): config + """ + + self.test_interval = cfg["TEST"].get("INTERVAL", 1) + self.test_data_loader = self.build_test_data_loader(cfg) + self.register_epoch_meter("test_time", "test", "{:.2f} (s)", plt=False) + + def build_test_data_loader(self, cfg: dict) -> DataLoader: + """Build val dataset and dataloader. + Build dataset by calling ```self.build_train_dataset```, + build dataloader by calling ```build_data_loader```. + + Args: + cfg (dict): config + + Returns: + val data loader (DataLoader) + """ + + dataset = self.build_test_dataset(cfg) + return build_data_loader(dataset, cfg["TEST"]["DATA"]) + + @staticmethod + def build_test_dataset(cfg: dict): + """It can be implemented to a build dataset for test. + + Args: + cfg (dict): config + + Returns: + val dataset (Dataset) + """ + + raise NotImplementedError() + + # support test process + def on_epoch_end(self, epoch: int): + """Callback at the end of an epoch. + + Args: + epoch (int): current epoch. + """ + + # print train meters + self.print_epoch_meters("train") + # tensorboard plt meters + self.plt_epoch_meters("train", epoch) + # validate + if self.val_data_loader is not None and epoch % self.val_interval == 0: + self.validate(train_epoch=epoch) + # test + if self.test_data_loader is not None and epoch % self.test_interval == 0: + self.test_process(train_epoch=epoch) + # save model + self.save_model(epoch) + # reset meters + self.reset_epoch_meters() + + @torch.no_grad() + @master_only + def test_process(self, cfg: dict = None, train_epoch: int = None): + """The whole test process. + + Args: + cfg (dict, optional): config + train_epoch (int, optional): current epoch if in training process. + """ + + # init test if not in training process + if train_epoch is None: + self.init_test(cfg) + + self.on_test_start() + + test_start_time = time.time() + self.model.eval() + + # test + self.test() + + test_end_time = time.time() + self.update_epoch_meter("test_time", test_end_time - test_start_time) + # print test meters + self.print_epoch_meters("test") + if train_epoch is not None: + # tensorboard plt meters + self.plt_epoch_meters("test", train_epoch // self.test_interval) + + self.on_test_end() + + @master_only + def on_test_start(self): + """Callback at the start of testing. + """ + + pass + + @master_only + def on_test_end(self): + """Callback at the end of testing. + """ + + pass + + def test(self, train_epoch: int = None): + """It can be implemented to define testing details. + + Args: + train_epoch (int, optional): current epoch if in training process. + """ + + raise NotImplementedError() diff --git a/basicts/runners/base_tsf_runner.py b/basicts/runners/base_tsf_runner.py new file mode 100644 index 0000000..7b97bd5 --- /dev/null +++ b/basicts/runners/base_tsf_runner.py @@ -0,0 +1,308 @@ +import math +from typing import Tuple, Union, Optional + +import torch +from easytorch.utils.dist import master_only + +from .base_runner import BaseRunner +from ..data import SCALER_REGISTRY +from ..utils import load_pkl +from ..metrics import masked_mae, masked_mape, masked_rmse + + +class BaseTimeSeriesForecastingRunner(BaseRunner): + """ + Runner for short term multivariate time series forecasting datasets. + Typically, models predict the future 12 time steps based on historical time series. + Features: + - Evaluate at horizon 3, 6, 12, and overall. + - Metrics: MAE, RMSE, MAPE. The best model is the one with the smallest mae at validation. + - Loss: MAE (masked_mae). Allow customization. + - Support curriculum learning. + - Users only need to implement the `forward` function. + """ + + def __init__(self, cfg: dict): + super().__init__(cfg) + self.dataset_name = cfg["DATASET_NAME"] + # different datasets have different null_values, e.g., 0.0 or np.nan. + self.null_val = cfg["TRAIN"].get("NULL_VAL", 0) + self.dataset_type = cfg["DATASET_TYPE"] + + # read scaler for re-normalization + self.scaler = load_pkl("datasets/" + self.dataset_name + "/scaler_in{0}_out{1}.pkl".format( + cfg["DATASET_INPUT_LEN"], cfg["DATASET_OUTPUT_LEN"])) + # define loss + self.loss = cfg["TRAIN"]["LOSS"] + # define metric + self.metrics = {"MAE": masked_mae, "RMSE": masked_rmse, "MAPE": masked_mape} + # curriculum learning for output. Note that this is different from the CL in Seq2Seq archs. + self.cl_param = cfg.TRAIN.get("CL", None) + if self.cl_param is not None: + self.warm_up_epochs = cfg.TRAIN.CL.get("WARM_EPOCHS", 0) + self.cl_epochs = cfg.TRAIN.CL.get("CL_EPOCHS") + self.prediction_length = cfg.TRAIN.CL.get("PREDICTION_LENGTH") + # evaluation horizon + self.evaluation_horizons = [_ - 1 for _ in cfg["TEST"].get("EVALUATION_HORIZONS", range(1, 13))] + assert min(self.evaluation_horizons) >= 0, "The horizon should start counting from 0." + + def init_training(self, cfg: dict): + """Initialize training. + + Including loss, training meters, etc. + + Args: + cfg (dict): config + """ + + super().init_training(cfg) + for key, _ in self.metrics.items(): + self.register_epoch_meter("train_"+key, "train", "{:.4f}") + + def init_validation(self, cfg: dict): + """Initialize validation. + + Including validation meters, etc. + + Args: + cfg (dict): config + """ + + super().init_validation(cfg) + for key, _ in self.metrics.items(): + self.register_epoch_meter("val_"+key, "val", "{:.4f}") + + def init_test(self, cfg: dict): + """Initialize test. + + Including test meters, etc. + + Args: + cfg (dict): config + """ + + super().init_test(cfg) + for key, _ in self.metrics.items(): + self.register_epoch_meter("test_"+key, "test", "{:.4f}") + + def build_train_dataset(self, cfg: dict): + """Build MNIST train dataset + + Args: + cfg (dict): config + + Returns: + train dataset (Dataset) + """ + + data_file_path = "{0}/data_in{1}_out{2}.pkl".format(cfg["TRAIN"]["DATA"]["DIR"], cfg["DATASET_INPUT_LEN"], cfg["DATASET_OUTPUT_LEN"]) + index_file_path = "{0}/index_in{1}_out{2}.pkl".format(cfg["TRAIN"]["DATA"]["DIR"], cfg["DATASET_INPUT_LEN"], cfg["DATASET_OUTPUT_LEN"]) + + # build dataset args + dataset_args = cfg.get("DATASET_ARGS", dict()) + # three necessary arguments, data file path, corresponding index file path, and mode (train, valid, or test) + dataset_args["data_file_path"] = data_file_path + dataset_args["index_file_path"] = index_file_path + dataset_args["mode"] = "train" + + dataset = cfg["DATASET_CLS"](**dataset_args) + print("train len: {0}".format(len(dataset))) + + batch_size = cfg["TRAIN"]["DATA"]["BATCH_SIZE"] + self.iter_per_epoch = math.ceil(len(dataset) / batch_size) + + return dataset + + @staticmethod + def build_val_dataset(cfg: dict): + """Build MNIST val dataset + + Args: + cfg (dict): config + + Returns: + validation dataset (Dataset) + """ + data_file_path = "{0}/data_in{1}_out{2}.pkl".format(cfg["VAL"]["DATA"]["DIR"], cfg["DATASET_INPUT_LEN"], cfg["DATASET_OUTPUT_LEN"]) + index_file_path = "{0}/index_in{1}_out{2}.pkl".format(cfg["VAL"]["DATA"]["DIR"], cfg["DATASET_INPUT_LEN"], cfg["DATASET_OUTPUT_LEN"]) + + # build dataset args + dataset_args = cfg.get("DATASET_ARGS", dict()) + # three necessary arguments, data file path, corresponding index file path, and mode (train, valid, or test) + dataset_args["data_file_path"] = data_file_path + dataset_args["index_file_path"] = index_file_path + dataset_args["mode"] = "valid" + + dataset = cfg["DATASET_CLS"](**dataset_args) + print("val len: {0}".format(len(dataset))) + + return dataset + + @staticmethod + def build_test_dataset(cfg: dict): + """Build MNIST val dataset + + Args: + cfg (dict): config + + Returns: + train dataset (Dataset) + """ + + data_file_path = "{0}/data_in{1}_out{2}.pkl".format(cfg["TEST"]["DATA"]["DIR"], cfg["DATASET_INPUT_LEN"], cfg["DATASET_OUTPUT_LEN"]) + index_file_path = "{0}/index_in{1}_out{2}.pkl".format(cfg["TEST"]["DATA"]["DIR"], cfg["DATASET_INPUT_LEN"], cfg["DATASET_OUTPUT_LEN"]) + + # build dataset args + dataset_args = cfg.get("DATASET_ARGS", dict()) + # three necessary arguments, data file path, corresponding index file path, and mode (train, valid, or test) + dataset_args["data_file_path"] = data_file_path + dataset_args["index_file_path"] = index_file_path + dataset_args["mode"] = "test" + + dataset = cfg["DATASET_CLS"](**dataset_args) + print("test len: {0}".format(len(dataset))) + + return dataset + + def curriculum_learning(self, epoch: int = None) -> int: + """Calculate task level in curriculum learning. + + Args: + epoch (int, optional): current epoch if in training process, else None. Defaults to None. + + Returns: + int: task level + """ + + if epoch is None: + return self.prediction_length + epoch -= 1 + # generate curriculum length + if epoch < self.warm_up_epochs: + # still warm up + cl_length = self.prediction_length + else: + _ = (epoch - self.warm_up_epochs) // self.cl_epochs + 1 + cl_length = min(_, self.prediction_length) + return cl_length + + def forward(self, data: tuple, epoch: int = None, iter_num: int = None, train: bool = True, **kwargs) -> tuple: + """Feed forward process for train, val, and test. Note that the outputs are NOT re-scaled. + + Args: + data (tuple): data (future data, history data). [B, L, N, C] for each of them + epoch (int, optional): epoch number. Defaults to None. + iter_num (int, optional): iteration number. Defaults to None. + train (bool, optional): if in the training process. Defaults to True. + + Returns: + tuple: (prediction, real_value). [B, L, N, C] for each of them. + """ + + raise NotImplementedError() + + def train_iters(self, epoch: int, iter_index: int, data: Union[torch.Tensor, Tuple]) -> torch.Tensor: + """Training details. + + Args: + data (Union[torch.Tensor, Tuple]): Data provided by DataLoader + epoch (int): current epoch. + iter_index (int): current iter. + + Returns: + loss (torch.Tensor) + """ + + iter_num = (epoch-1) * self.iter_per_epoch + iter_index + forward_return = list(self.forward(data=data, epoch=epoch, iter_num=iter_num, train=True)) + # re-scale data + prediction_rescaled = SCALER_REGISTRY.get(self.scaler["func"])(forward_return[0], **self.scaler["args"]) + real_value_rescaled = SCALER_REGISTRY.get(self.scaler["func"])(forward_return[1], **self.scaler["args"]) + # loss + if self.cl_param: + cl_length = self.curriculum_learning(epoch=epoch) + forward_return[0] = prediction_rescaled[:, :cl_length, :, :] + forward_return[1] = real_value_rescaled[:, :cl_length, :, :] + else: + forward_return[0] = prediction_rescaled + forward_return[1] = real_value_rescaled + loss = self.loss(*forward_return, null_val=self.null_val) + # metrics + for metric_name, metric_func in self.metrics.items(): + metric_item = metric_func(*forward_return[:2], null_val=self.null_val) + self.update_epoch_meter("train_"+metric_name, metric_item.item()) + return loss + + def val_iters(self, iter_index: int, data: Union[torch.Tensor, Tuple]): + """Validation details. + + Args: + data (Union[torch.Tensor, Tuple]): Data provided by DataLoader + train_epoch (int): current epoch if in training process. Else None. + iter_index (int): current iter. + """ + + forward_return = self.forward(data=data, epoch=None, iter_num=None, train=False) + # re-scale data + prediction_rescaled = SCALER_REGISTRY.get(self.scaler["func"])(forward_return[0], **self.scaler["args"]) + real_value_rescaled = SCALER_REGISTRY.get(self.scaler["func"])(forward_return[1], **self.scaler["args"]) + # metrics + for metric_name, metric_func in self.metrics.items(): + metric_item = metric_func(prediction_rescaled, real_value_rescaled, null_val=self.null_val) + self.update_epoch_meter("val_"+metric_name, metric_item.item()) + + @torch.no_grad() + @master_only + def test(self): + """Evaluate the model. + + Args: + train_epoch (int, optional): current epoch if in training process. + """ + + # test loop + prediction = [] + real_value = [] + for _, data in enumerate(self.test_data_loader): + forward_return = self.forward(data, epoch=None, iter_num=None, train=False) + prediction.append(forward_return[0]) # preds = forward_return[0] + real_value.append(forward_return[1]) # testy = forward_return[1] + prediction = torch.cat(prediction, dim=0) + real_value = torch.cat(real_value, dim=0) + # re-scale data + prediction = SCALER_REGISTRY.get(self.scaler["func"])( + prediction, **self.scaler["args"]) + real_value = SCALER_REGISTRY.get(self.scaler["func"])( + real_value, **self.scaler["args"]) + # summarize the results. + # test performance of different horizon + for i in self.evaluation_horizons: + # For horizon i, only calculate the metrics **at that time** slice here. + pred = prediction[:, i, :, :] + real = real_value[:, i, :, :] + # metrics + metric_results = {} + for metric_name, metric_func in self.metrics.items(): + metric_item = metric_func(pred, real, null_val=self.null_val) + metric_results[metric_name] = metric_item.item() + log = "Evaluate best model on test data for horizon " + \ + "{:d}, Test MAE: {:.4f}, Test RMSE: {:.4f}, Test MAPE: {:.4f}" + log = log.format( + i+1, metric_results["MAE"], metric_results["RMSE"], metric_results["MAPE"]) + self.logger.info(log) + # test performance overall + for metric_name, metric_func in self.metrics.items(): + metric_item = metric_func(prediction, real_value, null_val=self.null_val) + self.update_epoch_meter("test_"+metric_name, metric_item.item()) + metric_results[metric_name] = metric_item.item() + + @master_only + def on_validating_end(self, train_epoch: Optional[int]): + """Callback at the end of validating. + + Args: + train_epoch (Optional[int]): current epoch if in training process. + """ + + if train_epoch is not None: + self.save_best_model(train_epoch, "val_MAE", greater_best=False) diff --git a/basicts/runners/runner_zoo/agcrn_runner.py b/basicts/runners/runner_zoo/agcrn_runner.py new file mode 100644 index 0000000..cc3dbe7 --- /dev/null +++ b/basicts/runners/runner_zoo/agcrn_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as AGCRNRunner diff --git a/basicts/runners/runner_zoo/autoformer_runner.py b/basicts/runners/runner_zoo/autoformer_runner.py new file mode 100644 index 0000000..f314d76 --- /dev/null +++ b/basicts/runners/runner_zoo/autoformer_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as AutoformerRunner diff --git a/basicts/runners/runner_zoo/d2stgnn_runner.py b/basicts/runners/runner_zoo/d2stgnn_runner.py new file mode 100644 index 0000000..88b9f4a --- /dev/null +++ b/basicts/runners/runner_zoo/d2stgnn_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as D2STGNNRunner diff --git a/basicts/runners/runner_zoo/dcrnn_runner.py b/basicts/runners/runner_zoo/dcrnn_runner.py new file mode 100644 index 0000000..338502d --- /dev/null +++ b/basicts/runners/runner_zoo/dcrnn_runner.py @@ -0,0 +1,84 @@ +import torch + +from ..base_tsf_runner import BaseTimeSeriesForecastingRunner + + +class DCRNNRunner(BaseTimeSeriesForecastingRunner): + """Runner for DCRNN: add setup_graph and teacher forcing.""" + + def __init__(self, cfg: dict): + super().__init__(cfg) + self.forward_features = cfg["MODEL"].get("FROWARD_FEATURES", None) + self.target_features = cfg["MODEL"].get("TARGET_FEATURES", None) + + def setup_graph(self, data): + """The dcrnn official codes act like tensorflow, which create parameters in the first feedforward process.""" + try: + self.train_iters(1, 0, data) + except AttributeError: + pass + + def select_input_features(self, data: torch.Tensor) -> torch.Tensor: + """Select input features and reshape data to fit the target model. + + Args: + data (torch.Tensor): input history data, shape [B, L, N, C]. + + Returns: + torch.Tensor: reshaped data + """ + + # select feature using self.forward_features + if self.forward_features is not None: + data = data[:, :, :, self.forward_features] + return data + + def select_target_features(self, data: torch.Tensor) -> torch.Tensor: + """Select target features and reshape data back to the BasicTS framework + + Args: + data (torch.Tensor): prediction of the model with arbitrary shape. + + Returns: + torch.Tensor: reshaped data with shape [B, L, N, C] + """ + + # select feature using self.target_features + data = data[:, :, :, self.target_features] + return data + + def forward(self, data: tuple, epoch: int = None, iter_num: int = None, train: bool = True) -> tuple: + """Feed forward process for train, val, and test. Note that the outputs are NOT re-scaled. + + Args: + data (tuple): data (future data, history data). [B, L, N, C] for each of them + epoch (int, optional): epoch number. Defaults to None. + iter_num (int, optional): iteration number. Defaults to None. + train (bool, optional): if in the training process. Defaults to True. + + Returns: + tuple: (prediction, real_value) + """ + + # preprocess + future_data, history_data = data + history_data = self.to_running_device(history_data) # B, L, N, C + future_data = self.to_running_device(future_data) # B, L, N, C + batch_size, length, num_nodes, _ = future_data.shape + + history_data = self.select_input_features(history_data) + if train: + # teacher forcing only use the first dimension. + future_data_4_dec = future_data[..., [0]] + else: + future_data_4_dec = None + + # feed forward + prediction_data = self.model(history_data=history_data, future_data=future_data_4_dec, + batch_seen=iter_num if self.model.training else None, epoch=epoch) + assert list(prediction_data.shape)[:3] == [batch_size, length, num_nodes], \ + "error shape of the output, edit the forward function to reshape it to [B, L, N, C]" + # post process + prediction = self.select_target_features(prediction_data) + real_value = self.select_target_features(future_data) + return prediction, real_value diff --git a/basicts/runners/runner_zoo/dgcrn_runner.py b/basicts/runners/runner_zoo/dgcrn_runner.py new file mode 100644 index 0000000..9756823 --- /dev/null +++ b/basicts/runners/runner_zoo/dgcrn_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as DGCRNRunner diff --git a/basicts/runners/runner_zoo/fedformer_runner.py b/basicts/runners/runner_zoo/fedformer_runner.py new file mode 100644 index 0000000..77c1771 --- /dev/null +++ b/basicts/runners/runner_zoo/fedformer_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as FEDformerRunner diff --git a/basicts/runners/runner_zoo/gts_runner.py b/basicts/runners/runner_zoo/gts_runner.py new file mode 100644 index 0000000..bcc2fe8 --- /dev/null +++ b/basicts/runners/runner_zoo/gts_runner.py @@ -0,0 +1,80 @@ +import torch + +from ..base_tsf_runner import BaseTimeSeriesForecastingRunner + + +class GTSRunner(BaseTimeSeriesForecastingRunner): + def __init__(self, cfg: dict): + super().__init__(cfg) + self.forward_features = cfg["MODEL"].get("FROWARD_FEATURES", None) + self.target_features = cfg["MODEL"].get("TARGET_FEATURES", None) + + def setup_graph(self, data): + try: + self.train_iters(1, 0, data) + except AttributeError: + pass + + def select_input_features(self, data: torch.Tensor) -> torch.Tensor: + """Select input features and reshape data to fit the target model. + + Args: + data (torch.Tensor): input history data, shape [B, L, N, C]. + + Returns: + torch.Tensor: reshaped data + """ + + # select feature using self.forward_features + if self.forward_features is not None: + data = data[:, :, :, self.forward_features] + return data + + def select_target_features(self, data: torch.Tensor) -> torch.Tensor: + """Select target features and reshape data back to the BasicTS framework + + Args: + data (torch.Tensor): prediction of the model with arbitrary shape. + + Returns: + torch.Tensor: reshaped data with shape [B, L, N, C] + """ + + # select feature using self.target_features + data = data[:, :, :, self.target_features] + return data + + def forward(self, data: tuple, epoch:int = None, iter_num: int = None, train:bool = True, **kwargs) -> tuple: + """feed forward process for train, val, and test. Note that the outputs are NOT re-scaled. + + Args: + data (tuple): data (future data, history data). [B, L, N, C] for each of them + epoch (int, optional): epoch number. Defaults to None. + iter_num (int, optional): iteration number. Defaults to None. + train (bool, optional): if in the training process. Defaults to True. + + Returns: + tuple: (prediction, real_value) + """ + + # preprocess + future_data, history_data = data + history_data = self.to_running_device(history_data) # B, L, N, C + future_data = self.to_running_device(future_data) # B, L, N, C + batch_size, length, num_nodes, _ = future_data.shape + + history_data = self.select_input_features(history_data) + if train: + # teacher forcing only use the first dimension. + future_data_4_dec = future_data[..., [0]] + else: + future_data_4_dec = None + + # feed forward + prediction_data, pred_adj, prior_adj = self.model(history_data=history_data, future_data=future_data_4_dec, batch_seen=iter_num, epoch=epoch) + assert list(prediction_data.shape)[:3] == [batch_size, length, num_nodes], \ + "error shape of the output, edit the forward function to reshape it to [B, L, N, C]" + # post process + prediction = self.select_target_features(prediction_data) + real_value = self.select_target_features(future_data) + return prediction, real_value, pred_adj, prior_adj diff --git a/basicts/runners/runner_zoo/gwnet_runner.py b/basicts/runners/runner_zoo/gwnet_runner.py new file mode 100644 index 0000000..e5c51c3 --- /dev/null +++ b/basicts/runners/runner_zoo/gwnet_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as GraphWaveNetRunner diff --git a/basicts/runners/runner_zoo/hi_runner.py b/basicts/runners/runner_zoo/hi_runner.py new file mode 100644 index 0000000..51869a9 --- /dev/null +++ b/basicts/runners/runner_zoo/hi_runner.py @@ -0,0 +1,10 @@ +import torch + +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner + + +class HIRunner(SimpleTimeSeriesForecastingRunner): + + def backward(self, loss: torch.Tensor): + pass + return diff --git a/basicts/runners/runner_zoo/informer_runner.py b/basicts/runners/runner_zoo/informer_runner.py new file mode 100644 index 0000000..8aff96c --- /dev/null +++ b/basicts/runners/runner_zoo/informer_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as InformerRunner diff --git a/basicts/runners/runner_zoo/linear_runner.py b/basicts/runners/runner_zoo/linear_runner.py new file mode 100644 index 0000000..6b60a65 --- /dev/null +++ b/basicts/runners/runner_zoo/linear_runner.py @@ -0,0 +1,3 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as LinearRunner + +__all__ = ["LinearRunner"] diff --git a/basicts/runners/runner_zoo/mtgnn_runner.py b/basicts/runners/runner_zoo/mtgnn_runner.py new file mode 100644 index 0000000..b734137 --- /dev/null +++ b/basicts/runners/runner_zoo/mtgnn_runner.py @@ -0,0 +1,110 @@ +from typing import Tuple, Union + +import torch +import numpy as np + +from ..base_tsf_runner import BaseTimeSeriesForecastingRunner + + +class MTGNNRunner(BaseTimeSeriesForecastingRunner): + def __init__(self, cfg: dict): + super().__init__(cfg) + self.forward_features = cfg["MODEL"].get("FROWARD_FEATURES", None) + self.target_features = cfg["MODEL"].get("TARGET_FEATURES", None) + # graph training + self.step_size = cfg.TRAIN.CUSTOM.STEP_SIZE + self.num_nodes = cfg.TRAIN.CUSTOM.NUM_NODES + self.num_split = cfg.TRAIN.CUSTOM.NUM_SPLIT + self.perm = None + + def select_input_features(self, data: torch.Tensor) -> torch.Tensor: + """Select input features. + + Args: + data (torch.Tensor): input history data, shape [B, L, N, C] + + Returns: + torch.Tensor: reshaped data + """ + + # select feature using self.forward_features + if self.forward_features is not None: + data = data[:, :, :, self.forward_features] + return data + + def select_target_features(self, data: torch.Tensor) -> torch.Tensor: + """Select target feature + + Args: + data (torch.Tensor): prediction of the model with arbitrary shape. + + Returns: + torch.Tensor: reshaped data with shape [B, L, N, C] + """ + + # select feature using self.target_features + data = data[:, :, :, self.target_features] + return data + + def forward(self, data: tuple, epoch: int = None, iter_num: int = None, train: bool = True, **kwargs) -> tuple: + """Feed forward process for train, val, and test. Note that the outputs are NOT re-scaled. + + Args: + data (tuple): data (future data, history data). [B, L, N, C] for each of them + epoch (int, optional): epoch number. Defaults to None. + iter_num (int, optional): iteration number. Defaults to None. + train (bool, optional): if in the training process. Defaults to True. + + Returns: + tuple: (prediction, real_value). [B, L, N, C] for each of them. + """ + + if train: + future_data, history_data, idx = data + else: + future_data, history_data = data + idx = None + + history_data = self.to_running_device(history_data) # B, L, N, C + future_data = self.to_running_device(future_data) # B, L, N, C + batch_size, seq_len, num_nodes, _ = future_data.shape + + history_data = self.select_input_features(history_data) + + prediction_data = self.model( + history_data=history_data, idx=idx, batch_seen=iter_num, epoch=epoch) # B, L, N, C + assert list(prediction_data.shape)[:3] == [ + batch_size, seq_len, num_nodes], "error shape of the output, edit the forward function to reshape it to [B, L, N, C]" + # post process + prediction = self.select_target_features(prediction_data) + real_value = self.select_target_features(future_data) + return prediction, real_value + + def train_iters(self, epoch: int, iter_index: int, data: Union[torch.Tensor, Tuple]) -> torch.Tensor: + """It must be implement to define training detail. + + If it returns `loss`, the function ```self.backward``` will be called. + + Args: + epoch (int): current epoch. + iter_index (int): current iter. + data (torch.Tensor or tuple): Data provided by DataLoader + + Returns: + loss (torch.Tensor) + """ + + if iter_index % self.step_size == 0: + self.perm = np.random.permutation(range(self.num_nodes)) + num_sub = int(self.num_nodes/self.num_split) + for j in range(self.num_split): + if j != self.num_split-1: + idx = self.perm[j * num_sub:(j + 1) * num_sub] + raise + else: + idx = self.perm[j * num_sub:] + idx = torch.tensor(idx) + future_data, history_data = data + data = future_data[:, :, idx, :], history_data[:, :, idx, :], idx + loss = super().train_iters(epoch, iter_index, data) + self.backward(loss) diff --git a/basicts/runners/runner_zoo/pyraformer_runner.py b/basicts/runners/runner_zoo/pyraformer_runner.py new file mode 100644 index 0000000..c5d05d8 --- /dev/null +++ b/basicts/runners/runner_zoo/pyraformer_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as PyraformerRunner diff --git a/basicts/runners/runner_zoo/simple_tsf_runner.py b/basicts/runners/runner_zoo/simple_tsf_runner.py new file mode 100644 index 0000000..437e0df --- /dev/null +++ b/basicts/runners/runner_zoo/simple_tsf_runner.py @@ -0,0 +1,78 @@ +import torch + +from ..base_tsf_runner import BaseTimeSeriesForecastingRunner + + +class SimpleTimeSeriesForecastingRunner(BaseTimeSeriesForecastingRunner): + """Simple Runner: select forward features and target features.""" + + def __init__(self, cfg: dict): + super().__init__(cfg) + self.forward_features = cfg["MODEL"].get("FROWARD_FEATURES", None) + self.target_features = cfg["MODEL"].get("TARGET_FEATURES", None) + + def select_input_features(self, data: torch.Tensor) -> torch.Tensor: + """Select input features. + + Args: + data (torch.Tensor): input history data, shape [B, L, N, C] + + Returns: + torch.Tensor: reshaped data + """ + + # select feature using self.forward_features + if self.forward_features is not None: + data = data[:, :, :, self.forward_features] + return data + + def select_target_features(self, data: torch.Tensor) -> torch.Tensor: + """Select target feature. + + Args: + data (torch.Tensor): prediction of the model with arbitrary shape. + + Returns: + torch.Tensor: reshaped data with shape [B, L, N, C] + """ + + # select feature using self.target_features + data = data[:, :, :, self.target_features] + return data + + def forward(self, data: tuple, epoch: int = None, iter_num: int = None, train: bool = True, **kwargs) -> tuple: + """Feed forward process for train, val, and test. Note that the outputs are NOT re-scaled. + + Args: + data (tuple): data (future data, history ata). + epoch (int, optional): epoch number. Defaults to None. + iter_num (int, optional): iteration number. Defaults to None. + train (bool, optional): if in the training process. Defaults to True. + + Returns: + tuple: (prediction, real_value) + """ + + # preprocess + future_data, history_data = data + history_data = self.to_running_device(history_data) # B, L, N, C + future_data = self.to_running_device(future_data) # B, L, N, C + batch_size, length, num_nodes, _ = future_data.shape + + history_data = self.select_input_features(history_data) + future_data_4_dec = self.select_input_features(future_data) + + # curriculum learning + if self.cl_param is None: + prediction_data = self.model(history_data=history_data, future_data=future_data_4_dec, batch_seen=iter_num, epoch=epoch, train=train) + else: + task_level = self.curriculum_learning(epoch) + prediction_data = self.model(history_data=history_data, future_data=future_data_4_dec, batch_seen=iter_num, epoch=epoch, train=train,\ + task_level=task_level) + # feed forward + assert list(prediction_data.shape)[:3] == [batch_size, length, num_nodes], \ + "error shape of the output, edit the forward function to reshape it to [B, L, N, C]" + # post process + prediction = self.select_target_features(prediction_data) + real_value = self.select_target_features(future_data) + return prediction, real_value diff --git a/basicts/runners/runner_zoo/stemgnn_runner.py b/basicts/runners/runner_zoo/stemgnn_runner.py new file mode 100644 index 0000000..2260cab --- /dev/null +++ b/basicts/runners/runner_zoo/stemgnn_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as StemGNNRunner diff --git a/basicts/runners/runner_zoo/stgcn_runner.py b/basicts/runners/runner_zoo/stgcn_runner.py new file mode 100644 index 0000000..2eb8b80 --- /dev/null +++ b/basicts/runners/runner_zoo/stgcn_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as STGCNRunner diff --git a/basicts/runners/runner_zoo/stid_runner.py b/basicts/runners/runner_zoo/stid_runner.py new file mode 100644 index 0000000..7f5b98c --- /dev/null +++ b/basicts/runners/runner_zoo/stid_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as STIDRunner diff --git a/basicts/runners/runner_zoo/stnorm_runner.py b/basicts/runners/runner_zoo/stnorm_runner.py new file mode 100644 index 0000000..aeeaa23 --- /dev/null +++ b/basicts/runners/runner_zoo/stnorm_runner.py @@ -0,0 +1 @@ +from .simple_tsf_runner import SimpleTimeSeriesForecastingRunner as STNormRunner diff --git a/basicts/utils/__init__.py b/basicts/utils/__init__.py new file mode 100644 index 0000000..cad8f2e --- /dev/null +++ b/basicts/utils/__init__.py @@ -0,0 +1,4 @@ +from .serialization import load_adj, load_pkl, dump_pkl, load_node2vec_emb +from .misc import clock, check_nan_inf, remove_nan_inf + +__all__ = ["load_adj", "load_pkl", "dump_pkl", "load_node2vec_emb", "clock", "check_nan_inf", "remove_nan_inf"] diff --git a/basicts/utils/adjacent_matrix_norm.py b/basicts/utils/adjacent_matrix_norm.py new file mode 100644 index 0000000..417d4ac --- /dev/null +++ b/basicts/utils/adjacent_matrix_norm.py @@ -0,0 +1,102 @@ +import numpy as np +import scipy.sparse as sp +from scipy.sparse import linalg + + +def calculate_symmetric_normalized_laplacian(adj: np.ndarray) -> np.matrix: + """Calculate yymmetric normalized laplacian. + Assuming unnormalized laplacian matrix is `L = D - A`, + then symmetric normalized laplacian matrix is: + `L^{Sym} = D^-1/2 L D^-1/2 = D^-1/2 (D-A) D^-1/2 = I - D^-1/2 A D^-1/2` + For node `i` and `j` where `i!=j`, L^{sym}_{ij} <=0. + + Args: + adj (np.ndarray): Adjacent matrix A + + Returns: + np.matrix: Symmetric normalized laplacian L^{Sym} + """ + + adj = sp.coo_matrix(adj) + degree = np.array(adj.sum(1)) + # diagonals of D^{-1/2} + degree_inv_sqrt = np.power(degree, -0.5).flatten() + degree_inv_sqrt[np.isinf(degree_inv_sqrt)] = 0. + matrix_degree_inv_sqrt = sp.diags(degree_inv_sqrt) # D^{-1/2} + symmetric_normalized_laplacian = sp.eye( + adj.shape[0]) - matrix_degree_inv_sqrt.dot(adj).dot(matrix_degree_inv_sqrt).tocoo() + return symmetric_normalized_laplacian + + +def calculate_scaled_laplacian(adj: np.ndarray, lambda_max: int = 2, undirected: bool = True) -> np.matrix: + """Re-scaled the eigenvalue to [-1, 1] by scaled the normalized laplacian matrix for chebyshev pol. + According to `2017 ICLR GCN`, the lambda max is set to 2, and the graph is set to undirected. + Note that rescale the laplacian matrix is equal to rescale the eigenvalue matrix. + `L_{scaled} = (2 / lambda_max * L) - I` + + Args: + adj (np.ndarray): Adjacent matrix A + lambda_max (int, optional): Defaults to 2. + undirected (bool, optional): Defaults to True. + + Returns: + np.matrix: The rescaled laplacian matrix. + """ + + if undirected: + adj = np.maximum.reduce([adj, adj.T]) + laplacian_matrix = calculate_symmetric_normalized_laplacian(adj) + if lambda_max is None: # manually cal the max lambda + lambda_max, _ = linalg.eigsh(laplacian_matrix, 1, which='LM') + lambda_max = lambda_max[0] + laplacian_matrix = sp.csr_matrix(laplacian_matrix) + num_nodes, _ = laplacian_matrix.shape + identity_matrix = sp.identity( + num_nodes, format='csr', dtype=laplacian_matrix.dtype) + laplacian_res = (2 / lambda_max * laplacian_matrix) - identity_matrix + return laplacian_res + + +def calculate_symmetric_message_passing_adj(adj: np.ndarray) -> np.matrix: + """Calculate the renormalized message passing adj in `GCN`. + A = A + I + return D^{-1/2} A D^{-1/2} + + Args: + adj (np.ndarray): Adjacent matrix A + + Returns: + np.matrix: Renormalized message passing adj in `GCN`. + """ + + # add self loop + adj = adj + np.diag(np.ones(adj.shape[0], dtype=np.float32)) + # print("calculating the renormalized message passing adj, please ensure that self-loop has added to adj.") + adj = sp.coo_matrix(adj) + row_sum = np.array(adj.sum(1)) + d_inv_sqrt = np.power(row_sum, -0.5).flatten() + d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0. + d_mat_inv_sqrt = sp.diags(d_inv_sqrt) + mp_adj = d_mat_inv_sqrt.dot(adj).transpose().dot( + d_mat_inv_sqrt).astype(np.float32) + return mp_adj + + +def calculate_transition_matrix(adj: np.ndarray) -> np.matrix: + """Calculate the transition matrix `P` proposed in DCRNN and Graph WaveNet. + P = D^{-1}A = A/rowsum(A) + + Args: + adj (np.ndarray): Adjacent matrix A + + Returns: + np.matrix: Transition matrix P + """ + + adj = sp.coo_matrix(adj) + row_sum = np.array(adj.sum(1)).flatten() + d_inv = np.power(row_sum, -1).flatten() + d_inv[np.isinf(d_inv)] = 0. + d_mat = sp.diags(d_inv) + prob_matrix = d_mat.dot(adj).astype(np.float32).todense() + return prob_matrix diff --git a/basicts/utils/misc.py b/basicts/utils/misc.py new file mode 100644 index 0000000..35387c5 --- /dev/null +++ b/basicts/utils/misc.py @@ -0,0 +1,56 @@ +import time + +import torch + + +def clock(func): + """clock decorator""" + def clocked(*args, **kw): + """decorator for clock""" + t0 = time.perf_counter() + result = func(*args, **kw) + elapsed = time.perf_counter() - t0 + name = func.__name__ + print("%s: %0.8fs..." % (name, elapsed)) + return result + return clocked + + +def check_nan_inf(tensor: torch.Tensor, raise_ex: bool = True) -> tuple: + """check nan and in in tensor + + Args: + tensor (torch.Tensor): Tensor + raise_ex (bool, optional): If raise exceptions. Defaults to True. + + Raises: + Exception: If raise_ex is True and there are nans or infs in tensor, then raise Exception. + + Returns: + dict: {'nan': bool, 'inf': bool} + bool: if exist nan or if + """ + + # nan + nan = torch.any(torch.isnan(tensor)) + # inf + inf = torch.any(torch.isinf(tensor)) + # raise + if raise_ex and (nan or inf): + raise Exception({"nan": nan, "inf": inf}) + return {"nan": nan, "inf": inf}, nan or inf + + +def remove_nan_inf(tensor: torch.Tensor): + """remove nan and inf in tensor + + Args: + tensor (torch.Tensor): input tensor + + Returns: + torch.Tensor: output tensor + """ + + tensor = torch.where(torch.isnan(tensor), torch.zeros_like(tensor), tensor) + tensor = torch.where(torch.isinf(tensor), torch.zeros_like(tensor), tensor) + return tensor diff --git a/basicts/utils/serialization.py b/basicts/utils/serialization.py new file mode 100644 index 0000000..4b579c9 --- /dev/null +++ b/basicts/utils/serialization.py @@ -0,0 +1,103 @@ +import pickle + +import torch +import numpy as np + +from .adjacent_matrix_norm import calculate_scaled_laplacian, calculate_symmetric_normalized_laplacian, calculate_symmetric_message_passing_adj, calculate_transition_matrix + + +def load_pkl(pickle_file: str) -> object: + """Load pickle data. + + Args: + pickle_file (str): file path + + Returns: + object: loaded objected + """ + + try: + with open(pickle_file, "rb") as f: + pickle_data = pickle.load(f) + except UnicodeDecodeError: + with open(pickle_file, "rb") as f: + pickle_data = pickle.load(f, encoding="latin1") + except Exception as e: + print("Unable to load data ", pickle_file, ":", e) + raise + return pickle_data + + +def dump_pkl(obj: object, file_path: str): + """Dumplicate pickle data. + + Args: + obj (object): object + file_path (str): file path + """ + + with open(file_path, "wb") as f: + pickle.dump(obj, f) + + +def load_adj(file_path: str, adj_type: str): + """load adjacency matrix. + + Args: + file_path (str): file path + adj_type (str): adjacency matrix type + + Returns: + list of numpy.matrix: list of preproceesed adjacency matrices + np.ndarray: raw adjacency matrix + """ + + try: + # METR and PEMS_BAY + _, _, adj_mx = load_pkl(file_path) + except ValueError: + # PEMS04 + adj_mx = load_pkl(file_path) + if adj_type == "scalap": + adj = [calculate_scaled_laplacian(adj_mx).astype(np.float32).todense()] + elif adj_type == "normlap": + adj = [calculate_symmetric_normalized_laplacian( + adj_mx).astype(np.float32).todense()] + elif adj_type == "symnadj": + adj = [calculate_symmetric_message_passing_adj( + adj_mx).astype(np.float32).todense()] + elif adj_type == "transition": + adj = [calculate_transition_matrix(adj_mx).T] + elif adj_type == "doubletransition": + adj = [calculate_transition_matrix(adj_mx).T, calculate_transition_matrix(adj_mx.T).T] + elif adj_type == "identity": + adj = [np.diag(np.ones(adj_mx.shape[0])).astype(np.float32).todense()] + elif adj_type == "original": + adj = adj_mx + else: + error = 0 + assert error, "adj type not defined" + return adj, adj_mx + + +def load_node2vec_emb(file_path: str) -> torch.Tensor: + """load node2vec embedding + + Args: + file_path (str): file path + + Returns: + torch.Tensor: node2vec embedding + """ + + # spatial embedding + with open(file_path, mode="r") as f: + lines = f.readlines() + temp = lines[0].split(" ") + num_vertex, dims = int(temp[0]), int(temp[1]) + spatial_embeddings = torch.zeros((num_vertex, dims), dtype=torch.float32) + for line in lines[1:]: + temp = line.split(" ") + index = int(temp[0]) + spatial_embeddings[index] = torch.Tensor([float(ch) for ch in temp[1:]]) + return spatial_embeddings diff --git a/config/METR-LA/forecasting.py b/config/METR-LA/forecasting.py deleted file mode 100644 index 3775d50..0000000 --- a/config/METR-LA/forecasting.py +++ /dev/null @@ -1,140 +0,0 @@ -import os -import sys - -import easydict -sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) -from easydict import EasyDict -from Runner_FullModel import FullModelRunner -from utils.load_data import * - -DATASET_NAME = "METR-LA" - -GRAPH_NAME = {"METR-LA": "adj_mx_la.pkl", "PEMS04": "adj_mx_04.pkl", "PEMS-BAY": "adj_mx_bay.pkl"} -NUM_NODES = {"METR-LA": 207, "PEMS04":307, "PEMS-BAY":325} -adj_mx, adj_ori = load_adj("datasets/sensor_graph/" + GRAPH_NAME[DATASET_NAME], "doubletransition") - -CFG = EasyDict() -BATCH_SIZE = 32 -# General Parameters -EPOCHES = 100 -NUM_WORKERS = 8 -PIN_MEMORY = True -PREFETCH = True -GPU_NUM = 1 -SEED = 0 - -# Model Parameters of TSFormer -PATCH_SIZE = 12 # also the sequence length -WINDOW_SIZE = 288 * 7 # windows size of long history information -HIDDEN_DIM = 96 # hidden dim of history dim -MASK_RATIO = 0.75 -L_TSFORMER = 4 -LM = 2 - -# ==================================== Configuration ============================================= # -# General -CFG.DESCRIPTION = "FullModel@EZ torch" -CFG.RUNNER = FullModelRunner -CFG.DATASET_NAME = DATASET_NAME -CFG.FIND_UNUSED_PARAMETERS = True -CFG.USE_GPU = True if GPU_NUM >0 else False -CFG.GPU_NUM = GPU_NUM -CFG.SEED = SEED -CFG.K = 10 -CFG.CUDNN_ENABLED = True - -# Model -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "STEP" -CFG.MODEL.PARAM = EasyDict() -CFG.MODEL.PARAM.TSFORMER = { - "patch_size":PATCH_SIZE, - "in_channel":1, - "out_channel":HIDDEN_DIM, - "dropout":0.1, - "mask_size":WINDOW_SIZE/PATCH_SIZE, - "mask_ratio":MASK_RATIO, - "L":L_TSFORMER -} -CFG.MODEL.PARAM.BACKEND = EasyDict() -CFG.MODEL.PARAM.BACKEND.GWNET = { - "num_nodes" : NUM_NODES[DATASET_NAME], - "supports" :[torch.tensor(i) for i in adj_mx], # the supports are not used - "dropout" : 0.3, - "gcn_bool" : True, - "addaptadj" : True, - "aptinit" : None, - "in_dim" : 2, - "out_dim" : 12, - "residual_channels" : 32, - "dilation_channels" : 32, - "skip_channels" : 256, - "end_channels" : 512, - "kernel_size" : 2, - "blocks" : 4, - "layers" : 2 -} - -# Train -CFG.TRAIN = EasyDict() -CFG.TRAIN.SETUP_GRAPH = True -CFG.TRAIN.WARMUP_EPOCHS = 0 -CFG.TRAIN.CL_EPOCHS = 6 -CFG.TRAIN.CLIP = 3 -# CFG.TRAIN.CKPT_SAVE_STRATEGY = "SaveEveryEpoch" # delete pt to save space -CFG.TRAIN.NUM_EPOCHS = EPOCHES -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -## DATA -CFG.TRAIN.DATA = EasyDict() -CFG.TRAIN.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TRAIN.DATA.DATASET_NAME = DATASET_NAME -CFG.TRAIN.DATA.DIR = "datasets/"+CFG.TRAIN.DATA.DATASET_NAME -CFG.TRAIN.DATA.PREFETCH = PREFETCH -CFG.TRAIN.DATA.BATCH_SIZE = BATCH_SIZE -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = NUM_WORKERS -CFG.TRAIN.DATA.PIN_MEMORY = PIN_MEMORY -# OPTIM -### OPTIM for GWNet -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM= { - "lr":0.005, - "weight_decay":1.0e-5, - "eps":1.0e-8, -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM= { - "milestones":[1, 18, 36, 54, 72], - "gamma":0.5 -} - -# Validate -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -CFG.VAL.DATA = EasyDict() -CFG.VAL.DATA.SEQ_LEN = WINDOW_SIZE -CFG.VAL.DATA.DATASET_NAME = CFG.TRAIN.DATA.DATASET_NAME -CFG.VAL.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.VAL.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.VAL.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.VAL.DATA.PIN_MEMORY = PIN_MEMORY - -# Test -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -CFG.TEST.DATA = EasyDict() -CFG.TEST.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TEST.DATA.DATASET_NAME = CFG.TRAIN.DATA.DATASET_NAME -CFG.TEST.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.TEST.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.TEST.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.TEST.DATA.PIN_MEMORY = PIN_MEMORY diff --git a/config/METR-LA/pretraining.py b/config/METR-LA/pretraining.py deleted file mode 100644 index 34d51e1..0000000 --- a/config/METR-LA/pretraining.py +++ /dev/null @@ -1,99 +0,0 @@ -import os -import sys -sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) -from easydict import EasyDict -from Runner_TSFormer import TSFormerRunner - -DATASET_NAME = "METR-LA" - -CFG = EasyDict() -BATCH_SIZE = 8 -PATCH_SIZE = 12 -WINDOW_SIZE = 288 * 7 -HIDDEN_DIM = 96 -L = 4 -EPOCHES = 200 -NUM_WORKERS = 2 -PIN_MEMORY = True -PREFETCH = True -GPU_NUM = 1 -SEED = 0 -MASK_RATIO = 0.75 - -# General -CFG.Description = "TSFormer@EZ torch" -CFG.RUNNER = TSFormerRunner -CFG.DATASET_NAME = DATASET_NAME -CFG.INDEX = 11 -CFG.FIND_UNUSED_PARAMETERS = False -CFG.USE_GPU = True if GPU_NUM >0 else False -CFG.GPU_NUM = GPU_NUM -CFG.SEED = SEED -CFG.CUDNN_ENABLED = True -# Model -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "TSFormer" -CFG.MODEL.PARAM = { - "patch_size":PATCH_SIZE, - "in_channel":1, - "out_channel":HIDDEN_DIM, - "dropout":0.1, - "mask_size":WINDOW_SIZE/PATCH_SIZE, - "mask_ratio":MASK_RATIO, - "L":L -} - -# Train -CFG.TRAIN = EasyDict() -CFG.TRAIN.CKPT_SAVE_STRATEGY = "SaveEveryEpoch" -CFG.TRAIN.NUM_EPOCHS = EPOCHES -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -## DATA -CFG.TRAIN.DATA = EasyDict() -CFG.TRAIN.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TRAIN.DATA.DIR = "datasets/"+CFG.DATASET_NAME -CFG.TRAIN.DATA.PREFETCH = PREFETCH -CFG.TRAIN.DATA.BATCH_SIZE = BATCH_SIZE -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = NUM_WORKERS -CFG.TRAIN.DATA.PIN_MEMORY = PIN_MEMORY -## OPTIM -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "AdamW" -CFG.TRAIN.OPTIM.PARAM= { - "lr":0.0005, - "weight_decay":0, - "eps":1.0e-8, - "betas":(0.9, 0.95) -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM= { - "milestones":[50], - "gamma":0.5 -} -# Validate -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -CFG.VAL.DATA = EasyDict() -CFG.VAL.DATA.SEQ_LEN = WINDOW_SIZE -CFG.VAL.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.VAL.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.VAL.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.VAL.DATA.PIN_MEMORY = PIN_MEMORY -# Validate -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -CFG.TEST.DATA = EasyDict() -CFG.TEST.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TEST.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.TEST.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.TEST.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.TEST.DATA.PIN_MEMORY = PIN_MEMORY diff --git a/config/PEMS-BAY/forecasting.py b/config/PEMS-BAY/forecasting.py deleted file mode 100644 index 241c8e2..0000000 --- a/config/PEMS-BAY/forecasting.py +++ /dev/null @@ -1,140 +0,0 @@ -import os -import sys - -import easydict -sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) -from easydict import EasyDict -from Runner_FullModel import FullModelRunner -from utils.load_data import * - -DATASET_NAME = "PEMS-BAY" - -GRAPH_NAME = {"METR-LA": "adj_mx_la.pkl", "PEMS04": "adj_mx_04.pkl", "PEMS-BAY": "adj_mx_bay.pkl"} -NUM_NODES = {"METR-LA": 207, "PEMS04":307, "PEMS-BAY":325} -adj_mx, adj_ori = load_adj("datasets/sensor_graph/" + GRAPH_NAME[DATASET_NAME], "doubletransition") - -CFG = EasyDict() -BATCH_SIZE = 32 -# General Parameters -EPOCHES = 100 -NUM_WORKERS = 1 -PIN_MEMORY = True -PREFETCH = True -GPU_NUM = 2 -SEED = 0 - -# Model Parameters of TSFormer -PATCH_SIZE = 12 # also the sequence length -WINDOW_SIZE = 288 * 7 # windows size of long history information -HIDDEN_DIM = 96 # hidden dim of history dim -MASK_RATIO = 0.75 -L_TSFORMER = 4 -LM = 2 - -# ==================================== Configuration ============================================= # -# General -CFG.DESCRIPTION = "FullModel@EZ torch" -CFG.RUNNER = FullModelRunner -CFG.DATASET_NAME = DATASET_NAME -CFG.FIND_UNUSED_PARAMETERS = True -CFG.USE_GPU = True if GPU_NUM >0 else False -CFG.GPU_NUM = GPU_NUM -CFG.SEED = SEED -CFG.K = 10 -CFG.CUDNN_ENABLED = True - -# Model -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "FullModel" -CFG.MODEL.PARAM = EasyDict() -CFG.MODEL.PARAM.TSFORMER = { - "patch_size":PATCH_SIZE, - "in_channel":1, - "out_channel":HIDDEN_DIM, - "dropout":0.1, - "mask_size":WINDOW_SIZE/PATCH_SIZE, - "mask_ratio":MASK_RATIO, - "L":L_TSFORMER -} -CFG.MODEL.PARAM.BACKEND = EasyDict() -CFG.MODEL.PARAM.BACKEND.GWNET = { - "num_nodes" : NUM_NODES[DATASET_NAME], - "supports" :[torch.tensor(i) for i in adj_mx], # the supports are not used - "dropout" : 0.3, - "gcn_bool" : True, - "addaptadj" : True, - "aptinit" : None, - "in_dim" : 2, - "out_dim" : 12, - "residual_channels" : 32, - "dilation_channels" : 32, - "skip_channels" : 256, - "end_channels" : 512, - "kernel_size" : 2, - "blocks" : 4, - "layers" : 2 -} - -# Train -CFG.TRAIN = EasyDict() -CFG.TRAIN.SETUP_GRAPH = True -CFG.TRAIN.WARMUP_EPOCHS = 30 -CFG.TRAIN.CL_EPOCHS = 3 -CFG.TRAIN.CLIP = 3 -# CFG.TRAIN.CKPT_SAVE_STRATEGY = "SaveEveryEpoch" # delete pt to save space -CFG.TRAIN.NUM_EPOCHS = EPOCHES -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -## DATA -CFG.TRAIN.DATA = EasyDict() -CFG.TRAIN.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TRAIN.DATA.DATASET_NAME = DATASET_NAME -CFG.TRAIN.DATA.DIR = "datasets/"+CFG.TRAIN.DATA.DATASET_NAME -CFG.TRAIN.DATA.PREFETCH = PREFETCH -CFG.TRAIN.DATA.BATCH_SIZE = BATCH_SIZE -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = NUM_WORKERS -CFG.TRAIN.DATA.PIN_MEMORY = PIN_MEMORY -# OPTIM -### OPTIM for GWNet -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM= { - "lr":0.001, - "weight_decay":1.0e-5, - "eps":1.0e-8, -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM= { - "milestones":[1, 18, 36, 54, 72], - "gamma":0.5 -} - -# Validate -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -CFG.VAL.DATA = EasyDict() -CFG.VAL.DATA.SEQ_LEN = WINDOW_SIZE -CFG.VAL.DATA.DATASET_NAME = CFG.TRAIN.DATA.DATASET_NAME -CFG.VAL.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.VAL.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.VAL.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.VAL.DATA.PIN_MEMORY = PIN_MEMORY - -# Test -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -CFG.TEST.DATA = EasyDict() -CFG.TEST.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TEST.DATA.DATASET_NAME = CFG.TRAIN.DATA.DATASET_NAME -CFG.TEST.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.TEST.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.TEST.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.TEST.DATA.PIN_MEMORY = PIN_MEMORY diff --git a/config/PEMS-BAY/pretraining.py b/config/PEMS-BAY/pretraining.py deleted file mode 100644 index 684e4d8..0000000 --- a/config/PEMS-BAY/pretraining.py +++ /dev/null @@ -1,99 +0,0 @@ -import os -import sys -sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) -from easydict import EasyDict -from Runner_TSFormer import TSFormerRunner - -DATASET_NAME = "PEMS-BAY" - -CFG = EasyDict() -BATCH_SIZE = 8 -PATCH_SIZE = 12 -WINDOW_SIZE = 288 * 7 -HIDDEN_DIM = 96 -L = 4 -EPOCHES = 200 -NUM_WORKERS = 2 -PIN_MEMORY = True -PREFETCH = True -GPU_NUM = 8 -SEED = 0 -MASK_RATIO = 0.75 - -# General -CFG.Description = "TSFormer@EZ torch" -CFG.RUNNER = TSFormerRunner -CFG.DATASET_NAME = DATASET_NAME -CFG.INDEX = 11 -CFG.FIND_UNUSED_PARAMETERS = False -CFG.USE_GPU = True if GPU_NUM >0 else False -CFG.GPU_NUM = GPU_NUM -CFG.SEED = SEED -CFG.CUDNN_ENABLED = True -# Model -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "TSFormer" -CFG.MODEL.PARAM = { - "patch_size":PATCH_SIZE, - "in_channel":1, - "out_channel":HIDDEN_DIM, - "dropout":0.1, - "mask_size":WINDOW_SIZE/PATCH_SIZE, - "mask_ratio":MASK_RATIO, - "L":L -} - -# Train -CFG.TRAIN = EasyDict() -CFG.TRAIN.CKPT_SAVE_STRATEGY = "SaveEveryEpoch" -CFG.TRAIN.NUM_EPOCHS = EPOCHES -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -## DATA -CFG.TRAIN.DATA = EasyDict() -CFG.TRAIN.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TRAIN.DATA.DIR = "datasets/"+CFG.DATASET_NAME -CFG.TRAIN.DATA.PREFETCH = PREFETCH -CFG.TRAIN.DATA.BATCH_SIZE = BATCH_SIZE -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = NUM_WORKERS -CFG.TRAIN.DATA.PIN_MEMORY = PIN_MEMORY -## OPTIM -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "AdamW" -CFG.TRAIN.OPTIM.PARAM= { - "lr":0.002, - "weight_decay":0, - "eps":1.0e-8, - "betas":(0.9, 0.95) -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM= { - "milestones":[50], - "gamma":0.5 -} -# Validate -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -CFG.VAL.DATA = EasyDict() -CFG.VAL.DATA.SEQ_LEN = WINDOW_SIZE -CFG.VAL.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.VAL.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.VAL.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.VAL.DATA.PIN_MEMORY = PIN_MEMORY -# Validate -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -CFG.TEST.DATA = EasyDict() -CFG.TEST.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TEST.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.TEST.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.TEST.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.TEST.DATA.PIN_MEMORY = PIN_MEMORY diff --git a/config/PEMS04/forecasting.py b/config/PEMS04/forecasting.py deleted file mode 100644 index ca5df5c..0000000 --- a/config/PEMS04/forecasting.py +++ /dev/null @@ -1,139 +0,0 @@ -import os -import sys - -import easydict -sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) -from easydict import EasyDict -from Runner_FullModel import FullModelRunner -from utils.load_data import * - -DATASET_NAME = "PEMS04" -GRAPH_NAME = {"METR-LA": "adj_mx_la.pkl", "PEMS04": "adj_mx_04.pkl", "PEMS-BAY": "adj_mx_bay.pkl"} -NUM_NODES = {"METR-LA": 207, "PEMS04":307, "PEMS-BAY":325} -adj_mx, adj_ori = load_adj("datasets/sensor_graph/" + GRAPH_NAME[DATASET_NAME], "doubletransition") - -CFG = EasyDict() -BATCH_SIZE = 8 -# General Parameters -EPOCHES = 100 -NUM_WORKERS = 2 -PIN_MEMORY = True -PREFETCH = True -GPU_NUM = 2 -SEED = 0 - -# Model Parameters of TSFormer -PATCH_SIZE = 12 # also the sequence length -WINDOW_SIZE = 288 * 7 * 2 # windows size of long history information -HIDDEN_DIM = 96 # hidden dim of history dim -MASK_RATIO = 0.75 -L_TSFORMER = 4 -LM = 2 - -# ==================================== Configuration ============================================= # -# General -CFG.DESCRIPTION = "FullModel@EZ torch" -CFG.RUNNER = FullModelRunner -CFG.DATASET_NAME = DATASET_NAME -CFG.FIND_UNUSED_PARAMETERS = True -CFG.USE_GPU = True if GPU_NUM >0 else False -CFG.GPU_NUM = GPU_NUM -CFG.SEED = SEED -CFG.K = 10 -CFG.CUDNN_ENABLED = True - -# Model -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "FullModel" -CFG.MODEL.PARAM = EasyDict() -CFG.MODEL.PARAM.TSFORMER = { - "patch_size":PATCH_SIZE, - "in_channel":1, - "out_channel":HIDDEN_DIM, - "dropout":0.1, - "mask_size":WINDOW_SIZE/PATCH_SIZE, - "mask_ratio":MASK_RATIO, - "L":L_TSFORMER -} - -CFG.MODEL.PARAM.BACKEND = EasyDict() -CFG.MODEL.PARAM.BACKEND.GWNET = { - "num_nodes" : NUM_NODES[DATASET_NAME], - "supports" :[torch.tensor(i) for i in adj_mx], # the supports are not used - "dropout" : 0.3, - "gcn_bool" : True, - "addaptadj" : True, - "aptinit" : None, - "in_dim" : 2, - "out_dim" : 12, - "residual_channels" : 32, - "dilation_channels" : 32, - "skip_channels" : 256, - "end_channels" : 512, - "kernel_size" : 2, - "blocks" : 4, - "layers" : 2 -} - -# Train -CFG.TRAIN = EasyDict() -CFG.TRAIN.SETUP_GRAPH = True -CFG.TRAIN.WARMUP_EPOCHS = 100 -CFG.TRAIN.CL_EPOCHS = 6 -# CFG.TRAIN.CKPT_SAVE_STRATEGY = "SaveEveryEpoch" # delete pt to save space -CFG.TRAIN.NUM_EPOCHS = EPOCHES -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -## DATA -CFG.TRAIN.DATA = EasyDict() -CFG.TRAIN.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TRAIN.DATA.DATASET_NAME = DATASET_NAME -CFG.TRAIN.DATA.DIR = "datasets/"+CFG.TRAIN.DATA.DATASET_NAME -CFG.TRAIN.DATA.PREFETCH = PREFETCH -CFG.TRAIN.DATA.BATCH_SIZE = BATCH_SIZE -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = NUM_WORKERS -CFG.TRAIN.DATA.PIN_MEMORY = PIN_MEMORY -# OPTIM -### OPTIM for GWNet -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM= { - "lr":0.002, - "weight_decay":1.0e-5, - "eps":1.0e-8, -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM= { - "milestones":[1, 18, 36, 54, 72], - "gamma":0.5 -} - -# Validate -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -CFG.VAL.DATA = EasyDict() -CFG.VAL.DATA.SEQ_LEN = WINDOW_SIZE -CFG.VAL.DATA.DATASET_NAME = CFG.TRAIN.DATA.DATASET_NAME -CFG.VAL.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.VAL.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.VAL.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.VAL.DATA.PIN_MEMORY = PIN_MEMORY - -# Test -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -CFG.TEST.DATA = EasyDict() -CFG.TEST.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TEST.DATA.DATASET_NAME = CFG.TRAIN.DATA.DATASET_NAME -CFG.TEST.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.TEST.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.TEST.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.TEST.DATA.PIN_MEMORY = PIN_MEMORY diff --git a/config/PEMS04/pretraining.py b/config/PEMS04/pretraining.py deleted file mode 100644 index c7d8e4d..0000000 --- a/config/PEMS04/pretraining.py +++ /dev/null @@ -1,99 +0,0 @@ -import os -import sys -sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) -from easydict import EasyDict -from Runner_TSFormer import TSFormerRunner - -DATASET_NAME = "PEMS04" - -CFG = EasyDict() -BATCH_SIZE = 8 -PATCH_SIZE = 12 -WINDOW_SIZE = 288 * 7 * 2 -HIDDEN_DIM = 96 -L = 4 -EPOCHES = 200 -NUM_WORKERS = 2 -PIN_MEMORY = True -PREFETCH = True -GPU_NUM = 2 -SEED = 0 -MASK_RATIO = 0.75 - -# General -CFG.Description = "TSFormer@EZ torch" -CFG.RUNNER = TSFormerRunner -CFG.DATASET_NAME = DATASET_NAME -CFG.INDEX = 12 -CFG.FIND_UNUSED_PARAMETERS = False -CFG.USE_GPU = True if GPU_NUM >0 else False -CFG.GPU_NUM = GPU_NUM -CFG.SEED = SEED -CFG.CUDNN_ENABLED = True -# Model -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "TSFormer" -CFG.MODEL.PARAM = { - "patch_size":PATCH_SIZE, - "in_channel":1, - "out_channel":HIDDEN_DIM, - "dropout":0.1, - "mask_size":WINDOW_SIZE/PATCH_SIZE, - "mask_ratio":MASK_RATIO, - "L":L -} - -# Train -CFG.TRAIN = EasyDict() -CFG.TRAIN.CKPT_SAVE_STRATEGY = "SaveEveryEpoch" -CFG.TRAIN.NUM_EPOCHS = EPOCHES -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -## DATA -CFG.TRAIN.DATA = EasyDict() -CFG.TRAIN.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TRAIN.DATA.DIR = "datasets/"+CFG.DATASET_NAME -CFG.TRAIN.DATA.PREFETCH = PREFETCH -CFG.TRAIN.DATA.BATCH_SIZE = BATCH_SIZE -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = NUM_WORKERS -CFG.TRAIN.DATA.PIN_MEMORY = PIN_MEMORY -## OPTIM -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "AdamW" -CFG.TRAIN.OPTIM.PARAM= { - "lr":0.001, - "weight_decay":0, - "eps":1.0e-8, - "betas":(0.9, 0.95) -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM= { - "milestones":[50], - "gamma":0.5 -} -# Validate -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -CFG.VAL.DATA = EasyDict() -CFG.VAL.DATA.SEQ_LEN = WINDOW_SIZE -CFG.VAL.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.VAL.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.VAL.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.VAL.DATA.PIN_MEMORY = PIN_MEMORY -# Validate -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -CFG.TEST.DATA = EasyDict() -CFG.TEST.DATA.SEQ_LEN = WINDOW_SIZE -CFG.TEST.DATA.DIR = CFG.TRAIN.DATA.DIR -CFG.TEST.DATA.PREFETCH = CFG.TRAIN.DATA.PREFETCH -CFG.TEST.DATA.BATCH_SIZE = CFG.TRAIN.DATA.BATCH_SIZE -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = CFG.TRAIN.DATA.NUM_WORKERS -CFG.TEST.DATA.PIN_MEMORY = PIN_MEMORY diff --git a/config/__init__.py b/config/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/dataloader/dataset.py b/dataloader/dataset.py deleted file mode 100644 index d99c4e9..0000000 --- a/dataloader/dataset.py +++ /dev/null @@ -1,65 +0,0 @@ -import os -import pickle -import sys -sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) -from utils import clock, load_pkl, dump_pkl - -from torch.utils.data import Dataset, DataLoader -import numpy as np -import torch - -class MTSDataset(Dataset): - def __init__(self, raw_file_path, index_file_path, seq_len, throw=False, pretrain=False) -> None: - super().__init__() - self.pretrain = pretrain - self.seq_len = seq_len - # read full data - self.data = torch.from_numpy(load_pkl(raw_file_path)).float() - self.mask = torch.zeros(self.seq_len, self.data.shape[1], self.data.shape[2]) - # read index - index = load_pkl(index_file_path) # [idx-12, idx, idx+12] - if throw: - self.index = self.pre_process(index) - else: - self.index = index - - def pre_process(self, index): - for i, idx in enumerate(index): - # _1 = idx[0] - _2 = idx[1] - # _3 = idx[2] - if _2 - self.seq_len < 0 : - continue - else: - break - return index[i:] - - def data_reshaper(self, data): - """Reshape data to any models.""" - if not self.pretrain: - pass - else: - data = data[..., [0]] - data = data.permute(1, 2, 0) - return data - - def __getitem__(self, index): - idx = self.index[index] - y = self.data[idx[1]:idx[2], ...] - short_x = self.data[idx[0]:idx[1], ...] - if self.pretrain: - long_x = self.data[idx[1]-self.seq_len:idx[1], ...] - long_x = self.data_reshaper(long_x) - y = None - short_x = None - abs_idx = torch.Tensor(range(idx[1]-self.seq_len, idx[1], 12)) - return long_x, abs_idx - else: - if idx[1]-self.seq_len < 0: - long_x = self.mask - else: - long_x = self.data[idx[1]-self.seq_len:idx[1], ...] - return y, short_x, long_x - - def __len__(self): - return len(self.index) diff --git a/datasets/README.md b/datasets/README.md new file mode 100644 index 0000000..ddb3d79 --- /dev/null +++ b/datasets/README.md @@ -0,0 +1,29 @@ + +# Data Preparation + +## Download Raw Data + +You can download all the raw datasets at [Google Drive](https://drive.google.com/file/d/1PY7IZ3SchpyXfNIXs71A2GEV29W5QCv2/view?usp=sharing) or [Baidu Yun](https://pan.baidu.com/s/1CXLxeHxHIMWLy3IKGFUq8g?pwd=blf8), and unzip them to `datasets/raw_data/`. + +## Pre-process Data + +You can pre-process all data via: + +```bash +cd /path/to/your/project +bash scripts/data_preparation/all.sh +``` + +Then the `dataset` directory will look like this: + +```text +datasets + โ”œโ”€METR-LA + โ”œโ”€METR-BAY + โ”œโ”€PEMS04 + โ”œโ”€raw_data + | โ”œโ”€PEMS04 + | โ”œโ”€PEMS-BAY + | โ”œโ”€METR-LA + โ”œโ”€README.md +``` diff --git a/easytorch/__init__.py b/easytorch/__init__.py deleted file mode 100644 index 9f0b3e5..0000000 --- a/easytorch/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .config import import_config -from .core import * -from .utils import * -from .version import __version__ diff --git a/easytorch/config.py b/easytorch/config.py deleted file mode 100644 index 52b65a4..0000000 --- a/easytorch/config.py +++ /dev/null @@ -1,256 +0,0 @@ -"""Everything is based on config. - -`Config` is the set of all configurations. `Config` is is implemented by `dict`, We recommend using `EasyDict`. - -Look at the following example: - -cfg.py - -```python -import os -from easydict import EasyDict - -from my_runner import MyRunner - -CFG = EasyDict() - -CFG.DESC = 'my net' # customized description -CFG.RUNNER = MyRunner -CFG.GPU_NUM = 1 - -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = 'my_net' - -CFG.TRAIN = EasyDict() - -CFG.TRAIN.NUM_EPOCHS = 100 -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -CFG.TRAIN.CKPT_SAVE_STRATEGY = None - -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = 'SGD' -CFG.TRAIN.OPTIM.PARAM = { - 'lr': 0.002, - 'momentum': 0.1, -} - -CFG.TRAIN.DATA = EasyDict() -CFG.TRAIN.DATA.BATCH_SIZE = 4 -CFG.TRAIN.DATA.DIR = './my_data' -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.PIN_MEMORY = True -CFG.TRAIN.DATA.PREFETCH = True - -CFG.VAL = EasyDict() - -CFG.VAL.INTERVAL = 1 - -CFG.VAL.DATA = EasyDict() -CFG.VAL.DATA.DIR = 'mnist_data' - -CFG._TRAINING_INDEPENDENT` = [ - 'OTHER_CONFIG' -] - -``` - -All configurations consists of two parts: - 1. Training dependent configuration: changing this will affect the training results. - 2. Training independent configuration: changing this will not affect the training results. - -Notes: - All training dependent configurations will be calculated MD5, - this MD5 value will be the sub directory name of checkpoint save directory. - If the MD5 value is `098f6bcd4621d373cade4e832627b4f6`, - real checkpoint save directory is `{CFG.TRAIN.CKPT_SAVE_DIR}/098f6bcd4621d373cade4e832627b4f6` - -Notes: - Each configuration default is training dependent, - except the key is in `TRAINING_INDEPENDENT_KEYS` or `CFG._TRAINING_INDEPENDENT` -""" - -import os -import shutil -import types -import copy -import hashlib - -TRAINING_INDEPENDENT_FLAG = '_TRAINING_INDEPENDENT' - -TRAINING_INDEPENDENT_KEYS = { - 'DIST_BACKEND', - 'DIST_INIT_METHOD', - 'TRAIN.CKPT_SAVE_STRATEGY', - 'TRAIN.DATA.NUM_WORKERS', - 'TRAIN.DATA.PIN_MEMORY', - 'TRAIN.DATA.PREFETCH', - 'VAL' -} - - -def get_training_dependent_config(cfg: dict, except_keys: set or list = None) -> dict: - """Get training dependent config. - Recursively traversal each key, - if the key is in `TRAINING_INDEPENDENT_KEYS` or `CFG._TRAINING_INDEPENDENT`, pop it. - - Args: - cfg (dict): Config - except_keys (set or list): the keys need to be excepted - - Returns: - cfg (dict): Training dependent configs - """ - cfg_copy = copy.deepcopy(cfg) - - if except_keys is None: - except_keys = copy.deepcopy(TRAINING_INDEPENDENT_KEYS) - if cfg_copy.get(TRAINING_INDEPENDENT_FLAG) is not None: - except_keys.update(cfg_copy[TRAINING_INDEPENDENT_FLAG]) - - # convert to set - if isinstance(except_keys, list): - except_keys = set(except_keys) - - if cfg_copy.get(TRAINING_INDEPENDENT_FLAG) is not None: - cfg_copy.pop(TRAINING_INDEPENDENT_FLAG) - - pop_list = [] - dict_list = [] - for k, v in cfg_copy.items(): - if isinstance(v, dict): - sub_except_keys = set([]) - for except_key in except_keys: - if k == except_key: - pop_list.append(k) - elif except_key.find(k) == 0 and except_key[len(k)] == '.': - sub_except_keys.add(except_key[len(k) + 1:]) - if len(sub_except_keys) != 0: - new_v = get_training_dependent_config(v, sub_except_keys) - dict_list.append((k, new_v)) - else: - for except_key in except_keys: - if k == except_key: - pop_list.append(k) - - for dict_key, dict_value in dict_list: - cfg_copy[dict_key] = dict_value - - for pop_key in pop_list: - cfg_copy.pop(pop_key) - - return cfg_copy - - -def config_str(cfg: dict, indent: str = '') -> str: - """Get config string - - Args: - cfg (dict): Config - indent (str): if ``cfg`` is a sub config, ``indent`` += ' ' - - Returns: - Config string (str) - """ - - s = '' - for k, v in cfg.items(): - if isinstance(v, dict): - s += (indent + '{}:').format(k) + '\n' - s += config_str(v, indent + ' ') - elif isinstance(v, types.FunctionType): - s += (indent + '{}: {}').format(k, v.__name__) + '\n' - elif k == TRAINING_INDEPENDENT_FLAG: - pass - else: - s += (indent + '{}: {}').format(k, v) + '\n' - return s - - -def config_md5(cfg: dict) -> str: - """Get MD5 value of config. - - Notes: - Only training dependent configurations participate in the MD5 calculation. - - Args: - cfg (dict): Config - - Returns: - MD5 (str) - """ - - cfg_excepted = get_training_dependent_config(cfg) - m = hashlib.md5() - m.update(config_str(cfg_excepted).encode('utf-8')) - return m.hexdigest() - - -def print_config(cfg: dict): - """Print config - - Args: - cfg (dict): Config - """ - - print('MD5: {}'.format(config_md5(cfg))) - print(config_str(cfg)) - - -def save_config(cfg: dict, file_path: str): - """Save config - - Args: - cfg (dict): Config - file_path (str): file path - """ - - with open(file_path, 'w') as f: - content = 'MD5: {}\n'.format(config_md5(cfg)) - content += config_str(cfg) - f.write(content) - - -def copy_config_file(cfg_file_path: str, save_dir: str): - """Copy config file to `save_dir` - - Args: - cfg_file_path (str): config file path - save_dir (str): save directory - """ - - if os.path.isfile(cfg_file_path) and os.path.isdir(save_dir): - cfg_file_name = os.path.basename(cfg_file_path) - shutil.copyfile(cfg_file_path, os.path.join(save_dir, cfg_file_name)) - - -def import_config(path: str, verbose: bool = True) -> dict: - """Import config by path - - Examples: - ``` - cfg = import_config('config/my_config.py') - ``` - is equivalent to - ``` - from config.my_config import CFG as cfg - ``` - - Args: - path (str): Config path - verbose (str): set to ``True`` to print config - - Returns: - cfg (dict): `CFG` in config file - """ - - if path.find('.py') != -1: - path = path[:path.find('.py')].replace('/', '.').replace('\\', '.') - cfg_name = path.split('.')[-1] - cfg = __import__(path, fromlist=[cfg_name]).CFG - - if verbose: - print_config(cfg) - return cfg diff --git a/easytorch/core/__init__.py b/easytorch/core/__init__.py deleted file mode 100644 index 609ab23..0000000 --- a/easytorch/core/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .launcher import launch_training, launch_runner -from .runner import Runner -from .meter_pool import AvgMeter, MeterPool - - -__all__ = [ - 'launch_training', 'launch_runner', 'Runner', 'AvgMeter', 'MeterPool' -] diff --git a/easytorch/core/checkpoint.py b/easytorch/core/checkpoint.py deleted file mode 100644 index 67e8d15..0000000 --- a/easytorch/core/checkpoint.py +++ /dev/null @@ -1,154 +0,0 @@ -import os -import glob -from logging import Logger - -import torch -from torch import nn, optim -from torch.nn.parallel import DistributedDataParallel as DDP - -from ..utils import get_logger, get_local_rank - -DEFAULT_LOGGER = get_logger('easytorch-checkpoint') - - -def get_ckpt_dict(model: nn.Module, optimizer: optim.Optimizer, epoch: int) -> dict: - """Generate checkpoint dict. - checkpoint dict format: - { - 'epoch': current epoch ([1, num_epochs]), - 'model_state_dict': state_dict of model, - 'optim_state_dict': state_dict of optimizer - } - if model is a module wrapper, use `model.module` - - Args: - model (nn.Module): the model to be saved - optimizer (optim.Optimizer): the optimizer to be saved - epoch: current epoch - - Returns: - checkpoint dict (dict): generated checkpoint dict - """ - - if isinstance(model, DDP): - _model = model.module - else: - _model = model - return { - 'epoch': epoch, - 'model_state_dict': _model.state_dict(), - 'optim_state_dict': optimizer.state_dict() - } - - -def get_last_ckpt_path(ckpt_save_dir: str, name_pattern: str = '*.pt') -> str: - """Get last checkpoint path in `ckpt_save_dir` - checkpoint files will be sorted by name - - Args: - ckpt_save_dir (str): checkpoint save directory - name_pattern (str): name pattern for checkpoint file, default is '*.pt' - - Returns: - checkpoint path (str): last checkpoint path in `ckpt_save_dir` - """ - - ckpt_list = glob.glob(os.path.join(ckpt_save_dir, name_pattern)) - ckpt_list.sort() - return ckpt_list[-1] - - -def load_ckpt(ckpt_save_dir: str, ckpt_path: str = None, use_gpu: bool = True, logger: Logger = DEFAULT_LOGGER) -> dict: - """Load checkpoint - if param `ckpt_path` is None, load the last checkpoint in `ckpt_save_dir`, - else load checkpoint from `ckpt_path` - - Args: - ckpt_save_dir (str): checkpoint save directory - ckpt_path (str): checkpoint path, default is None - use_gpu (bool): set to ``True`` to load checkpoint to GPU - logger (Logger): logger, default is Logger('easytorch') - - Returns: - checkpoint dict loaded from file - """ - - if ckpt_path is None: - ckpt_path = get_last_ckpt_path(ckpt_save_dir) - if use_gpu: - map_location = 'cuda:{}'.format(get_local_rank()) - else: - map_location = 'cpu' - logger.info('load ckpt from \'{}\''.format(ckpt_path)) - return torch.load(ckpt_path, map_location=map_location) - - -def save_ckpt(ckpt: dict, ckpt_path: str, logger: Logger = DEFAULT_LOGGER): - """Save checkpoint - - Args: - ckpt (dict): saved checkpoint dict - ckpt_path (str): checkpoint save path - logger (Logger): logger, default is Logger('easytorch') - """ - - torch.save(ckpt, ckpt_path) - logger.info('ckpt {} saved'.format(ckpt_path)) - - -def need_to_remove_last_ckpt(last_epoch: int, ckpt_save_strategy: int or list or tuple) -> bool: - """Judging whether to remove last checkpoint by `ckpt_save_strategy` - - `ckpt_save_strategy` should be None, an int value, a list or a tuple - if `ckpt_save_strategy` is None, remove last checkpoint file every epoch - if `ckpt_save_strategy` is an int value `n`, save checkpoint every n epoch, - remove last checkpoint file when last_epoch % ckpt_save_strategy != 0 - if `ckpt_save_strategy` is a list or a tuple `l`, save checkpoint when epoch in `l`, - remove last checkpoint file when last_epoch not in ckpt_save_strategy - - Args: - last_epoch (int): last epoch num - ckpt_save_strategy (int or list or tuple): checkpoint save strategy - - Returns: - last checkpoint delete flag (bool): `True` means delete last checkpoint - """ - - if ckpt_save_strategy is None: - return True - elif isinstance(ckpt_save_strategy, int) and last_epoch % ckpt_save_strategy != 0: - return True - elif isinstance(ckpt_save_strategy, (list, tuple)) and last_epoch not in ckpt_save_strategy: - return True - else: - return False - - -def backup_last_ckpt(last_ckpt_path: str, epoch: int, ckpt_save_strategy: int or list or tuple): - """Backup last checkpoint when last checkpoint needs to be removed (by call need_to_remove_last_ckpt()) - if last checkpoint file name is `a.pt`, rename `a.pt` to `a.pt.bak` - - Args: - last_ckpt_path (str): last checkpoint file path - epoch (int): current epoch num - ckpt_save_strategy (int or list or tuple): checkpoint save strategy - """ - - last_epoch = epoch - 1 - - # rename last ckpt to .bak - if need_to_remove_last_ckpt(last_epoch, ckpt_save_strategy) and last_epoch != 0: - os.rename(last_ckpt_path, last_ckpt_path + '.bak') - - -def clear_ckpt(ckpt_save_dir: str, name_pattern: str = '*.pt.bak'): - """Clear all backed up checkpoint files - - Args: - ckpt_save_dir (str): checkpoint save directory - name_pattern (str): backed up checkpoint file name pattern - """ - - ckpt_list = glob.glob(os.path.join(ckpt_save_dir, name_pattern)) - for ckpt in ckpt_list: - os.remove(ckpt) diff --git a/easytorch/core/data_loader.py b/easytorch/core/data_loader.py deleted file mode 100644 index 61d1294..0000000 --- a/easytorch/core/data_loader.py +++ /dev/null @@ -1,94 +0,0 @@ -from torch.utils.data import Dataset, DataLoader -from torch.utils.data.distributed import DistributedSampler - -from ..utils import get_rank, get_world_size - - -def build_data_loader(dataset: Dataset, data_cfg: dict): - """Build dataloader from `data_cfg` - `data_cfg` is part of config which defines fields about data, such as `CFG.TRAIN.DATA` - - structure of `data_cfg` is - { - 'BATCH_SIZE': (int, optional) batch size of data loader (default: ``1``), - 'SHUFFLE': (bool, optional) data reshuffled option (default: ``False``), - 'NUM_WORKERS': (int, optional) num workers for data loader (default: ``0``), - 'PIN_MEMORY': (bool, optional) pin_memory option (default: ``False``), - 'PREFETCH': (bool, optional) set to ``True`` to use `BackgroundGenerator` (default: ``False``) - need to install `prefetch_generator`, see https://pypi.org/project/prefetch_generator/ - } - - Args: - dataset (Dataset): dataset defined by user - data_cfg (dict): data config - - Returns: - data loader - """ - - if data_cfg.get('PREFETCH', False): - from ..utils.data_prefetcher import DataLoaderX - return DataLoaderX( - dataset, - batch_size=data_cfg.get('BATCH_SIZE', 1), - shuffle=data_cfg.get('SHUFFLE', False), - num_workers=data_cfg.get('NUM_WORKERS', 0), - pin_memory=data_cfg.get('PIN_MEMORY', False) - ) - else: - return DataLoader( - dataset, - batch_size=data_cfg.get('BATCH_SIZE', 1), - shuffle=data_cfg.get('SHUFFLE', False), - num_workers=data_cfg.get('NUM_WORKERS', 0), - pin_memory=data_cfg.get('PIN_MEMORY', False) - ) - - -def build_data_loader_ddp(dataset: Dataset, data_cfg: dict): - """Build ddp dataloader from `data_cfg` - `data_cfg` is part of config which defines fields about data, such as `CFG.TRAIN.DATA` - - structure of `data_cfg` is - { - 'BATCH_SIZE': (int, optional) batch size of data loader (default: ``1``), - 'SHUFFLE': (bool, optional) data reshuffled option (default: ``False``), - 'NUM_WORKERS': (int, optional) num workers for data loader (default: ``0``), - 'PIN_MEMORY': (bool, optional) pin_memory option (default: ``False``), - 'PREFETCH': (bool, optional) set to ``True`` to use `BackgroundGenerator` (default: ``False``) - need to install `prefetch_generator`, see https://pypi.org/project/prefetch_generator/ - } - - Args: - dataset (Dataset): dataset defined by user - data_cfg (dict): data config - - Returns: - data loader - """ - - ddp_sampler = DistributedSampler( - dataset, - get_world_size(), - get_rank(), - shuffle=data_cfg.get('SHUFFLE', False) - ) - if data_cfg.get('PREFETCH', False): - from ..utils.data_prefetcher import DataLoaderX - return DataLoaderX( - dataset, - batch_size=data_cfg.get('BATCH_SIZE', 1), - shuffle=False, - sampler=ddp_sampler, - num_workers=data_cfg.get('NUM_WORKERS', 0), - pin_memory=data_cfg.get('PIN_MEMORY', False) - ) - else: - return DataLoader( - dataset, - batch_size=data_cfg.get('BATCH_SIZE', 1), - shuffle=False, - sampler=ddp_sampler, - num_workers=data_cfg.get('NUM_WORKERS', 0), - pin_memory=data_cfg.get('PIN_MEMORY', False) - ) diff --git a/easytorch/core/launcher.py b/easytorch/core/launcher.py deleted file mode 100644 index a79ff63..0000000 --- a/easytorch/core/launcher.py +++ /dev/null @@ -1,179 +0,0 @@ -import os -from typing import Callable - -import torch -from torch import distributed as dist -from torch.distributed import Backend -from torch import multiprocessing as mp - -from ..config import import_config, config_md5, save_config, copy_config_file -from ..utils import set_gpus, set_tf32_mode, get_dist_backend - - -def train(cfg: dict, use_gpu: bool, tf32_mode: bool): - """Start training - - 1. Init runner defined by `cfg` - 2. Init logger - 3. Call `train()` method in the runner - - Args: - cfg (dict): Easytorch config. - use_gpu (bool): set to ``True`` to use GPU - tf32_mode (dict): set to ``True`` to use tf32 on Ampere GPU. - """ - - if use_gpu: - # set tf32 mode - set_tf32_mode(tf32_mode) - - # init runner - Runner = cfg['RUNNER'] - runner = Runner(cfg, use_gpu) - - # init logger (after making ckpt save dir) - runner.init_logger(logger_name='easytorch-training', log_file_name='training_log') - - # train - runner.train(cfg) - - -def train_ddp(local_rank: int, world_size: int, backend: str or Backend, init_method: str, cfg: dict, tf32_mode: bool, - node_rank: int = 0): - """Start training with DistributedDataParallel - - Args: - local_rank: Rank of the current process in the current node. - world_size: Number of processes participating in the job. - backend: The backend to use. - init_method: URL specifying how to initialize the process group. - cfg (dict): Easytorch config. - tf32_mode (dict): set to ``True`` to use tf32 on Ampere GPU. - node_rank (int): Rank of the current node. - """ - - # set cuda device - torch.cuda.set_device(local_rank) - - rank = cfg['GPU_NUM'] * node_rank + local_rank - - # init process - dist.init_process_group( - backend, - init_method=init_method, - rank=rank, - world_size=world_size - ) - - # start training - train(cfg, True, tf32_mode) - - -def launch_training(cfg: dict or str, gpus: str, tf32_mode: bool, node_rank: int = 0): - """Launch training process defined by `cfg`. - - Support distributed data parallel training when the number of available GPUs is greater than one. - Nccl backend is used by default. - - Notes: - If `USE_GPU` in `cfg` is ```True```, easytorch will run in GPU mode, `GPU_NUM` in `cfg` must - be greater than 0; - If `USE_GPU` in `cfg` is ```False```, easytorch will run in CPU mode, `GPU_NUM` in `cfg` must - be 0. - In order to ensure the consistency of training results, the number of available GPUs - must be equal to `GPU_NUM` in GPU mode. - - Args: - cfg (dict): Easytorch config. - gpus (str): set ``CUDA_VISIBLE_DEVICES`` environment variable. - tf32_mode(dict): set to ``True`` to use tf32 on Ampere GPU. - node_rank (int): Rank of the current node. - """ - - if isinstance(cfg, str): - cfg_path = cfg - cfg = import_config(cfg) - else: - cfg_path = None - - use_gpu = cfg.get('USE_GPU', True) - gpu_num = cfg.get('GPU_NUM', 0) - - if use_gpu: - if gpu_num == 0: - raise RuntimeError('Easytorch is running in GPU mode, but cfg.GPU_NUM is 0') - - set_gpus(gpus) - - device_count = torch.cuda.device_count() - if gpu_num != device_count: - raise RuntimeError('GPU num not match, cfg.GPU_NUM = {:d}, but torch.cuda.device_count() = {:d}'.format( - gpu_num, device_count - )) - else: - if gpu_num != 0: - raise RuntimeError('Easytorch is running in CPU mode, but cfg.GPU_NUM is not zero') - - # convert ckpt save dir - cfg['TRAIN']['CKPT_SAVE_DIR'] = os.path.join(cfg['TRAIN']['CKPT_SAVE_DIR'], config_md5(cfg)) - - # save config - if not os.path.isdir(cfg['TRAIN']['CKPT_SAVE_DIR']): - os.makedirs(cfg['TRAIN']['CKPT_SAVE_DIR']) - if cfg_path is None: - save_config(cfg, os.path.join(cfg['TRAIN']['CKPT_SAVE_DIR'], 'param.txt')) - else: - copy_config_file(cfg_path, cfg['TRAIN']['CKPT_SAVE_DIR']) - - if gpu_num <= 1: - train(cfg, use_gpu, tf32_mode) - else: - dist_node_num = cfg.get('DIST_NODE_NUM', 1) - if node_rank >= dist_node_num: - raise ValueError('The node_rank must be less than dist_node_num!') - - world_size = dist_node_num * gpu_num - - backend, init_method = get_dist_backend(dist_node_num, cfg.get('DIST_BACKEND'), cfg.get('DIST_INIT_METHOD')) - - mp.spawn( - train_ddp, - args=(world_size, backend, init_method, cfg, tf32_mode, node_rank), - nprocs=gpu_num, - join=True - ) - - -def launch_runner(cfg: dict or str, fn: Callable, args: tuple = (), gpus: str = None, tf32_mode: bool = False): - """Launch runner defined by `cfg`, and call `fn`. - - Args: - cfg (dict): Easytorch config. - fn (Callable): Function is called after init runner. - The function is called as ``fn(cfg, runner, *args)``, where ``cfg`` is - the Easytorch config and ``runner`` is the runner defined by ``cfg`` and - ``args`` is the passed through tuple of arguments. - args (tuple): Arguments passed to ``fn``. - gpus (str): set ``CUDA_VISIBLE_DEVICES`` environment variable. - tf32_mode(dict): set to ``True`` to use tf32 on Ampere GPU. - """ - - if isinstance(cfg, str): - cfg = import_config(cfg) - - use_gpu = cfg.get('USE_GPU', True) - if use_gpu: - set_gpus(gpus) - set_tf32_mode(tf32_mode) - - # convert ckpt save dir - cfg['TRAIN']['CKPT_SAVE_DIR'] = os.path.join(cfg['TRAIN']['CKPT_SAVE_DIR'], config_md5(cfg)) - - # make ckpt save dir - if not os.path.isdir(cfg['TRAIN']['CKPT_SAVE_DIR']): - os.makedirs(cfg['TRAIN']['CKPT_SAVE_DIR']) - - Runner = cfg['RUNNER'] - runner = Runner(cfg, use_gpu) - - fn(cfg, runner, *args) diff --git a/easytorch/core/meter_pool.py b/easytorch/core/meter_pool.py deleted file mode 100644 index fa1a81c..0000000 --- a/easytorch/core/meter_pool.py +++ /dev/null @@ -1,151 +0,0 @@ -import logging - -import torch -from torch.utils.tensorboard import SummaryWriter - - -class AvgMeter(object): - """Average meter. - """ - - def __init__(self): - self._sum = 0. - self._count = 0 - - def reset(self): - """Reset counter. - """ - - self._sum = 0. - self._count = 0 - - def update(self, value: float, n: int = 1): - """Update sum and count. - - Args: - value (float): value. - n (int): number. - """ - - self._sum += value * n - self._count += n - - @property - def avg(self) -> float: - """Get average value. - - Returns: - avg (float) - """ - - return self._sum / self._count if self._count != 0 else 0 - - -class MeterPool: - """Meter container - """ - - def __init__(self): - self._pool = {} - - def register(self, name: str, meter_type: str, fmt: str = '{:f}', plt: bool = True): - """Init an average meter and add it to meter pool. - - Args: - name (str): meter name (must be unique). - meter_type (str): meter type. - fmt (str): meter output format. - plt (bool): set ```True``` to plot it in tensorboard - when calling ```plt_meters```. - """ - - self._pool[name] = { - 'meter': AvgMeter(), - 'index': len(self._pool.keys()), - 'format': fmt, - 'type': meter_type, - 'plt': plt - } - - def update(self, name: str, value: float): - """Update average meter. - - Args: - name (str): meter name. - value (str): value. - """ - - self._pool[name]['meter'].update(value) - - def get_avg(self, name: str) -> float: - """Get average value. - - Args: - name (str): meter name. - - Returns: - avg (float) - """ - - return self._pool[name]['meter'].avg - - def print_meters(self, meter_type: str, logger: logging.Logger = None): - """Print the specified type of meters. - - Args: - meter_type (str): meter type - logger (logging.Logger): logger - """ - - print_list = [] - for i in range(len(self._pool.keys())): - for name, value in self._pool.items(): - if value['index'] == i and value['type'] == meter_type: - print_list.append( - ('{}: ' + value['format']).format(name, value['meter'].avg) - ) - print_str = '{}:: [{}]'.format(meter_type, ', '.join(print_list)) - if logger is None: - print(print_str) - else: - logger.info(print_str) - - def plt_meters(self, meter_type: str, step: int, tensorboard_writer: SummaryWriter): - """Plot the specified type of meters in tensorboard. - - Args: - meter_type (str): meter type. - step (int): Global step value to record - tensorboard_writer (SummaryWriter): tensorboard SummaryWriter - """ - - for name, value in self._pool.items(): - if value['plt'] and value['type'] == meter_type: - tensorboard_writer.add_scalar(name, value['meter'].avg, global_step=step) - tensorboard_writer.flush() - - def reset(self): - """Reset all meters. - """ - - for _, value in self._pool.items(): - value['meter'].reset() - - -class MeterPoolDDP(MeterPool): - def to_tensor(self): - tensor = torch.empty((len(self._pool.keys()), 2)) - for i in range(len(self._pool.keys())): - for _, value in self._pool.items(): - if value['index'] == i: - tensor[i][0] = float(value['meter'].count) - tensor[i][1] = value['meter'].avg - return tensor - - def update_tensor(self, tensor): - if tensor.shape[0] != len(self._pool.keys()): - raise ValueError('Invalid tensor shape!') - for i in range(len(self._pool.keys())): - for _, value in self._pool.items(): - if value['index'] == i: - value['meter'].update(tensor[i][1], tensor[i][0]) diff --git a/easytorch/core/optimizer_builder.py b/easytorch/core/optimizer_builder.py deleted file mode 100644 index b1356c1..0000000 --- a/easytorch/core/optimizer_builder.py +++ /dev/null @@ -1,93 +0,0 @@ -from torch import nn, optim -from torch.optim import lr_scheduler - -from .. import easyoptim -from ..easyoptim import easy_lr_scheduler - - -def build_optim(optim_cfg: dict, model: nn.Module) -> optim.Optimizer: - """Build optimizer from `optim_cfg` - `optim_cfg` is part of config which defines fields about optimizer - - structure of `optim_cfg` is - { - 'TYPE': (str) optimizer name, such as ``Adam``, ``SGD``, - 'PARAM': (dict) optimizer init params except first param `params` - } - - Note: - Optimizer is initialized by reflection, please ensure optim_cfg['TYPE'] is in `torch.optim` - - Examples: - optim_cfg = { - 'TYPE': 'Adam', - 'PARAM': { - 'lr': 1e-3, - 'betas': (0.9, 0.99) - 'eps': 1e-8, - 'weight_decay': 0 - } - } - An `Adam` optimizer will be built. - - Args: - optim_cfg (dict): optimizer config - model (nn.Module): model defined by user - - Returns: - optimizer (optim.Optimizer) - """ - - optim_type = optim_cfg['TYPE'] - if hasattr(optim, optim_type): - Optim = getattr(optim, optim_type) - else: - Optim = getattr(easyoptim, optim_type) - optim_param = optim_cfg['PARAM'].copy() - optimizer = Optim(model.parameters(), **optim_param) - return optimizer - - -def build_lr_scheduler(lr_scheduler_cfg: dict, optimizer: optim.Optimizer): - """Build lr_scheduler from `lr_scheduler_cfg` - `lr_scheduler_cfg` is part of config which defines fields about lr_scheduler - - structure of `lr_scheduler_cfg` is - { - 'TYPE': (str) lr_scheduler name, such as ``MultiStepLR``, ``CosineAnnealingLR``, - 'PARAM': (dict) lr_scheduler init params except first param `optimizer` - } - - Note: - LRScheduler is initialized by reflection, please ensure - lr_scheduler_cfg['TYPE'] is in `torch.optim.lr_scheduler` or `easytorch.easyoptim.easy_lr_scheduler`, - if the `type` is not found in `torch.optim.lr_scheduler`, - it will continue to be search in `easytorch.easyoptim.easy_lr_scheduler` - - Examples: - lr_scheduler_cfg = { - 'TYPE': 'MultiStepLR', - 'PARAM': { - 'milestones': [100, 200, 300], - 'gamma': 0.1 - } - } - An `MultiStepLR` lr_scheduler will be built. - - Args: - lr_scheduler_cfg (dict): lr_scheduler config - optimizer (nn.Module): optimizer - - Returns: - LRScheduler - """ - - lr_scheduler_type = lr_scheduler_cfg['TYPE'] - if hasattr(lr_scheduler, lr_scheduler_type): - Scheduler = getattr(lr_scheduler, lr_scheduler_type) - else: - Scheduler = getattr(easy_lr_scheduler, lr_scheduler_type) - scheduler_param = lr_scheduler_cfg['PARAM'].copy() - scheduler_param['optimizer'] = optimizer - scheduler = Scheduler(**scheduler_param) - return scheduler diff --git a/easytorch/core/runner.py b/easytorch/core/runner.py deleted file mode 100644 index 0bbf271..0000000 --- a/easytorch/core/runner.py +++ /dev/null @@ -1,684 +0,0 @@ -import os -import time -import logging -from abc import ABCMeta, abstractmethod - -from tqdm import tqdm -import torch -from torch import nn -from torch.utils.data import Dataset, DataLoader -from torch.utils.data.distributed import DistributedSampler -from torch.nn.parallel import DistributedDataParallel as DDP -from torch.utils.tensorboard import SummaryWriter - -from .meter_pool import MeterPool -from .checkpoint import get_ckpt_dict, load_ckpt, save_ckpt, backup_last_ckpt, clear_ckpt -from .data_loader import build_data_loader, build_data_loader_ddp -from .optimizer_builder import build_optim, build_lr_scheduler -from ..utils import TimePredictor, get_logger, get_rank, get_local_rank, is_master, master_only, setup_random_seed - - -class Runner(metaclass=ABCMeta): - def __init__(self, cfg: dict, use_gpu: bool = True): - # default logger - self.logger = get_logger('easytorch') - - # setup random seed - # each rank has different seed in distributed mode - self.seed = cfg.get('SEED') - if self.seed is not None: - setup_random_seed( - self.seed + get_rank(), - deterministic=cfg.get('DETERMINISTIC', True), - cudnn_enabled=cfg.get('CUDNN_ENABLED', False), - cudnn_benchmark=cfg.get('CUDNN_BENCHMARK', False) - ) - - # param - self.use_gpu = use_gpu - self.model_name = cfg['MODEL']['NAME'] - self.ckpt_save_dir = cfg['TRAIN']['CKPT_SAVE_DIR'] - self.logger.info('ckpt save dir: \'{}\''.format(self.ckpt_save_dir)) - self.ckpt_save_strategy = None - self.num_epochs = None - self.start_epoch = None - - self.val_interval = 1 - self.test_interval = 1 - - # create model - self.model = self.build_model(cfg) - - # declare optimizer and lr_scheduler - self.optim = None - self.scheduler = None - - # declare data loader - self.train_data_loader = None - self.val_data_loader = None - self.test_data_loader = None - - # declare meter pool - self.meter_pool = None - - # declare tensorboard_writer - self.tensorboard_writer = None - - def init_logger(self, logger: logging.Logger = None, logger_name: str = None, - log_file_name: str = None, log_level: int = logging.INFO): - """Initialize logger. - - Args: - logger (logging.Logger, optional): specified logger. - logger_name (str, optional): specified name of logger. - log_file_name (str, optional): logger file name. - log_level (int, optional): log level, default is INFO. - """ - - if logger is not None: - self.logger = logger - elif logger_name is not None: - if log_file_name is not None: - log_file_name = '{}_{}.log'.format(log_file_name, time.strftime("%Y%m%d%H%M%S", time.localtime())) - log_file_path = os.path.join(self.ckpt_save_dir, log_file_name) - else: - log_file_path = None - self.logger = get_logger(logger_name, log_file_path, log_level) - else: - raise TypeError('At least one of logger and logger_name is not None') - - def to_running_device(self, src: torch.Tensor or torch.Module) -> torch.Tensor or torch.Module: - """Move `src` to the running device. If `self.use_gpu` is ```True```, - the running device is GPU, else the running device is CPU. - - Args: - src (torch.Tensor or torch.Module): source - - Returns: - target (torch.Tensor or torch.Module) - """ - - if self.use_gpu: - return src.cuda() - else: - return src.cpu() - - @staticmethod - @abstractmethod - def define_model(cfg: dict) -> nn.Module: - """It must be implement to define the model for training or inference. - - Users can select different models by param in cfg. - - Args: - cfg (dict): config - - Returns: - model (nn.Module) - """ - - pass - - @staticmethod - @abstractmethod - def build_train_dataset(cfg: dict) -> Dataset: - """It must be implement to build dataset for training. - - Args: - cfg (dict): config - - Returns: - train dataset (Dataset) - """ - - pass - - @staticmethod - def build_val_dataset(cfg: dict): - """It can be implement to build dataset for validation (not necessary). - - Args: - cfg (dict): config - - Returns: - val dataset (Dataset) - """ - - raise NotImplementedError() - - @staticmethod - def build_test_dataset(cfg: dict): - """It can be implement to build dataset for validation (not necessary). - - Args: - cfg (dict): config - - Returns: - val dataset (Dataset) - """ - - raise NotImplementedError() - - def build_train_data_loader(self, cfg: dict) -> DataLoader: - """Build train dataset and dataloader. - Build dataset by calling ```self.build_train_dataset```, - build dataloader by calling ```build_data_loader``` or - ```build_data_loader_ddp``` when DDP is initialized - - Args: - cfg (dict): config - - Returns: - train data loader (DataLoader) - """ - - dataset = self.build_train_dataset(cfg) - if torch.distributed.is_initialized(): - return build_data_loader_ddp(dataset, cfg['TRAIN']['DATA']) - else: - return build_data_loader(dataset, cfg['TRAIN']['DATA']) - - def build_val_data_loader(self, cfg: dict) -> DataLoader: - """Build val dataset and dataloader. - Build dataset by calling ```self.build_train_dataset```, - build dataloader by calling ```build_data_loader```. - - Args: - cfg (dict): config - - Returns: - val data loader (DataLoader) - """ - - dataset = self.build_val_dataset(cfg) - return build_data_loader(dataset, cfg['VAL']['DATA']) - - def build_test_data_loader(self, cfg: dict) -> DataLoader: - """Build val dataset and dataloader. - Build dataset by calling ```self.build_train_dataset```, - build dataloader by calling ```build_data_loader```. - - Args: - cfg (dict): config - - Returns: - val data loader (DataLoader) - """ - - dataset = self.build_test_dataset(cfg) - return build_data_loader(dataset, cfg['TEST']['DATA']) - - def build_model(self, cfg: dict) -> nn.Module: - """Build model. - - Initialize model by calling ```self.define_model```, - Moves model to the GPU. - - If DDP is initialized, initialize the DDP wrapper. - - Args: - cfg (dict): config - - Returns: - model (nn.Module) - """ - - model = self.define_model(cfg) - model = self.to_running_device(model) - if torch.distributed.is_initialized(): - model = DDP(model, device_ids=[get_local_rank()], find_unused_parameters=cfg.get("FIND_UNUSED_PARAMETERS", False)) - return model - - def get_ckpt_path(self, epoch: int) -> str: - """Get checkpoint path. - - The format is "{ckpt_save_dir}/{model_name}_{epoch}" - - Args: - epoch (int): current epoch. - - Returns: - checkpoint path (str) - """ - - epoch_str = str(epoch).zfill(len(str(self.num_epochs))) - ckpt_name = '{}_{}.pt'.format(self.model_name, epoch_str) - return os.path.join(self.ckpt_save_dir, ckpt_name) - - def save_model(self, epoch: int): - """Save checkpoint every epoch. - - checkpoint format is { - 'epoch': current epoch ([1, num_epochs]), - 'model_state_dict': state_dict of model, - 'optim_state_dict': state_dict of optimizer - } - - Decide whether to delete the last checkpoint by the checkpoint save strategy. - - Args: - epoch (int): current epoch. - """ - - ckpt_dict = get_ckpt_dict(self.model, self.optim, epoch) - - # backup last epoch - # last_ckpt_path = self.get_ckpt_path(epoch - 1) - # backup_last_ckpt(last_ckpt_path, epoch, self.ckpt_save_strategy) - - # save ckpt - ckpt_path = self.get_ckpt_path(epoch) - save_ckpt(ckpt_dict, ckpt_path, self.logger) - - # clear ckpt every 10 epoch or in the end - if epoch % 10 == 0 or epoch == self.num_epochs: - clear_ckpt(self.ckpt_save_dir) - - def load_model_resume(self, strict: bool = True): - """Load last checkpoint in checkpoint save dir to resume training. - - Load model state dict. - Load optimizer state dict. - Load start epoch and set it to lr_scheduler. - - Args: - strict (bool, optional): whether to strictly enforce that the keys - in :attr:`state_dict` match the keys returned by this module's - :meth:`~torch.nn.Module.state_dict` function. Default: ``True`` - """ - - try: - checkpoint_dict = load_ckpt(self.ckpt_save_dir, use_gpu=self.use_gpu, logger=self.logger) - if isinstance(self.model, DDP): - self.model.module.load_state_dict(checkpoint_dict['model_state_dict'], strict=strict) - else: - self.model.load_state_dict(checkpoint_dict['model_state_dict'], strict=strict) - self.optim.load_state_dict(checkpoint_dict['optim_state_dict']) - self.start_epoch = checkpoint_dict['epoch'] - if self.scheduler is not None: - self.scheduler.last_epoch = checkpoint_dict['epoch'] - self.logger.info('resume training') - except (IndexError, OSError, KeyError): - pass - - def load_model(self, ckpt_path: str = None, strict: bool = True): - """Load model state dict. - if param `ckpt_path` is None, load the last checkpoint in `self.ckpt_save_dir`, - else load checkpoint from `ckpt_path` - - Args: - ckpt_path (str, optional): checkpoint path, default is None - strict (bool, optional): whether to strictly enforce that the keys - in :attr:`state_dict` match the keys returned by this module's - :meth:`~torch.nn.Module.state_dict` function. Default: ``True`` - """ - - try: - checkpoint_dict = load_ckpt(self.ckpt_save_dir, ckpt_path=ckpt_path, use_gpu=self.use_gpu, - logger=self.logger) - if isinstance(self.model, DDP): - self.model.module.load_state_dict(checkpoint_dict['model_state_dict'], strict=strict) - else: - self.model.load_state_dict(checkpoint_dict['model_state_dict'], strict=strict) - except (IndexError, OSError): - raise OSError('Ckpt file does not exist') - - def train(self, cfg: dict): - """Train model. - - Train process: - [init_training] - for in train_epoch - [on_epoch_start] - for in train iters - [train_iters] - [on_epoch_end] ------> Epoch Val: val every n epoch - [on_validating_start] - for in val iters - val iter - [on_validating_end] - [on_training_end] - - Args: - cfg (dict): config - """ - - self.init_training(cfg) - - # train time predictor - train_time_predictor = TimePredictor(self.start_epoch, self.num_epochs) - - # training loop - for epoch_index in range(self.start_epoch, self.num_epochs): - epoch = epoch_index + 1 - self.on_epoch_start(epoch) - epoch_start_time = time.time() - # start training - self.model.train() - - # tqdm process bar - data_iter = tqdm(self.train_data_loader) if get_local_rank() == 0 else self.train_data_loader - - # data loop - for iter_index, data in enumerate(data_iter): - loss = self.train_iters(epoch, iter_index, data) - if loss is not None: - self.backward(loss) - # update lr_scheduler - if self.scheduler is not None: - self.scheduler.step() - - epoch_end_time = time.time() - # epoch time - self.update_epoch_meter('train_time', epoch_end_time - epoch_start_time) - self.on_epoch_end(epoch) - - expected_end_time = train_time_predictor.get_expected_end_time(epoch) - - # estimate training finish time - if epoch < self.num_epochs: - self.logger.info('The estimated training finish time is {}'.format( - time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(expected_end_time)))) - - # log training finish time - self.logger.info('The training finished at {}'.format( - time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) - )) - - self.on_training_end() - - def setup_graph(self, data): - pass - - def init_training(self, cfg: dict): - """Initialize training - - Args: - cfg (dict): config - """ - - # init training param - self.num_epochs = cfg['TRAIN']['NUM_EPOCHS'] - self.start_epoch = 0 - self.ckpt_save_strategy = cfg['TRAIN'].get('CKPT_SAVE_STRATEGY') - - # train data loader - self.train_data_loader = self.build_train_data_loader(cfg) - self.register_epoch_meter('train_time', 'train', '{:.2f} (s)', plt=False) - - if cfg['TRAIN'].get('SETUP_GRAPH'): - for data in self.train_data_loader: - # data loop - self.setup_graph(data) - break - - # create optim - self.optim = build_optim(cfg['TRAIN']['OPTIM'], self.model) - self.logger.info('set optim: ' + str(self.optim)) - - # create lr_scheduler - if hasattr(cfg['TRAIN'], 'LR_SCHEDULER'): - self.scheduler = build_lr_scheduler(cfg['TRAIN']['LR_SCHEDULER'], self.optim) - self.logger.info('set lr_scheduler: ' + str(self.scheduler)) - self.register_epoch_meter('lr', 'train', '{:.2e}') - - # fine tune - if hasattr(cfg['TRAIN'], 'FINETUNE_FROM'): - self.load_model(cfg['TRAIN']['FINETUNE_FROM']) - self.logger.info('start fine tuning') - - # resume - # self.load_model_resume() - - # init tensorboard(after resume) - if is_master(): - self.tensorboard_writer = SummaryWriter( - os.path.join(self.ckpt_save_dir, 'tensorboard'), - purge_step=(self.start_epoch + 1) if self.start_epoch != 0 else None - ) - - # init validation - if hasattr(cfg, 'VAL'): - self.init_validation(cfg) - # init test - if hasattr(cfg, 'TEST'): - self.init_test(cfg) - - def on_epoch_start(self, epoch: int): - """Callback at the start of an epoch. - - Args: - epoch (int): current epoch - """ - - # print epoch num - self.logger.info('epoch {:d} / {:d}'.format(epoch, self.num_epochs)) - # update lr meter - if self.scheduler is not None: - self.update_epoch_meter('lr', self.scheduler.get_last_lr()[0]) - - # set epoch for sampler in distributed mode - # see https://pytorch.org/docs/stable/data.html - sampler = self.train_data_loader.sampler - if torch.distributed.is_initialized() and isinstance(sampler, DistributedSampler) and sampler.shuffle: - sampler.set_epoch(epoch) - - def on_epoch_end(self, epoch: int): - """Callback at the end of an epoch. - - Args: - epoch (int): current epoch. - """ - - # print train meters - self.print_epoch_meters('train') - # tensorboard plt meters - self.plt_epoch_meters('train', epoch) - # validate - if self.val_data_loader is not None and epoch % self.val_interval == 0: - self.validate(train_epoch=epoch) - # test - if self.test_data_loader is not None and epoch % self.test_interval == 0: - self.test(train_epoch=epoch) - # save model - if is_master(): - self.save_model(epoch) - # reset meters - self.reset_epoch_meters() - - def on_training_end(self): - """Callback at the end of training. - """ - - if is_master(): - # close tensorboard writer - self.tensorboard_writer.close() - - @abstractmethod - def train_iters(self, epoch: int, iter_index: int, data: torch.Tensor or tuple) -> torch.Tensor: - """It must be implement to define training detail. - - If it returns `loss`, the function ```self.backward``` will be called. - - Args: - epoch (int): current epoch. - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - - Returns: - loss (torch.Tensor) - """ - - pass - - def backward(self, loss: torch.Tensor): - """Backward and update params. - - Args: - loss (torch.Tensor): loss - """ - - self.optim.zero_grad() - loss.backward() - if hasattr(self, 'clip'): - torch.nn.utils.clip_grad_norm_(self.model.parameters(), self.clip) - self.optim.step() - - @torch.no_grad() - @master_only - def validate(self, cfg: dict = None, train_epoch: int = None): - """Validate model. - - Args: - cfg (dict, optional): config - train_epoch (int, optional): current epoch if in training process. - """ - - # init validation if not in training process - if train_epoch is None: - self.init_validation(cfg) - - self.on_validating_start() - - val_start_time = time.time() - self.model.eval() - - # val loop - for iter_index, data in enumerate(self.val_data_loader): - self.val_iters(iter_index, data) - - val_end_time = time.time() - self.update_epoch_meter('val_time', val_end_time - val_start_time) - # print val meters - self.print_epoch_meters('val') - if train_epoch is not None: - # tensorboard plt meters - self.plt_epoch_meters('val', train_epoch // self.val_interval) - - self.on_validating_end() - - @torch.no_grad() - @master_only - def test(self, cfg: dict = None, train_epoch: int = None): - """test model. - - Args: - cfg (dict, optional): config - train_epoch (int, optional): current epoch if in training process. - """ - - # init test if not in training process - if train_epoch is None: - self.init_test(cfg) - - self.on_test_start() - - test_start_time = time.time() - self.model.eval() - - # test loop - for iter_index, data in enumerate(self.test_data_loader): - self.test_iters(iter_index, data) - - test_end_time = time.time() - self.update_epoch_meter('test_time', test_start_time - test_end_time) - # print test meters - self.print_epoch_meters('test') - if train_epoch is not None: - # tensorboard plt meters - self.plt_epoch_meters('test', train_epoch // self.test_interval) - - self.on_test_end() - - @master_only - def init_validation(self, cfg: dict): - """Initialize validation - - Args: - cfg (dict): config - """ - - self.val_interval = cfg['VAL'].get('INTERVAL', 1) - self.val_data_loader = self.build_val_data_loader(cfg) - self.register_epoch_meter('val_time', 'val', '{:.2f} (s)', plt=False) - - @master_only - def init_test(self, cfg: dict): - """Initialize test - - Args: - cfg (dict): config - """ - - self.test_interval = cfg['TEST'].get('INTERVAL', 1) - self.test_data_loader = self.build_test_data_loader(cfg) - self.register_epoch_meter('test_time', 'test', '{:.2f} (s)', plt=False) - - @master_only - def on_validating_start(self): - """Callback at the start of validating. - """ - - pass - - @master_only - def on_validating_end(self): - """Callback at the end of validating. - """ - - pass - @master_only - def on_test_start(self): - """Callback at the start of testing. - """ - - pass - - @master_only - def on_test_end(self): - """Callback at the end of testing. - """ - - pass - - def val_iters(self, iter_index: int, data: torch.Tensor or tuple): - """It can be implement to define testing detail (not necessary). - - Args: - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - """ - - raise NotImplementedError() - - def test_iters(self, iter_index: int, data: torch.Tensor or tuple): - """It can be implement to define testing detail (not necessary). - - Args: - iter_index (int): current iter. - data (torch.Tensor or tuple): Data provided by DataLoader - """ - - raise NotImplementedError() - - @master_only - def register_epoch_meter(self, name, meter_type, fmt='{:f}', plt=True): - if self.meter_pool is None: - self.meter_pool = MeterPool() - self.meter_pool.register(name, meter_type, fmt, plt) - - @master_only - def update_epoch_meter(self, name, value): - self.meter_pool.update(name, value) - - @master_only - def print_epoch_meters(self, meter_type): - self.meter_pool.print_meters(meter_type, self.logger) - - @master_only - def plt_epoch_meters(self, meter_type, step): - self.meter_pool.plt_meters(meter_type, step, self.tensorboard_writer) - - @master_only - def reset_epoch_meters(self): - self.meter_pool.reset() diff --git a/easytorch/easyoptim/__init__.py b/easytorch/easyoptim/__init__.py deleted file mode 100644 index 2a35826..0000000 --- a/easytorch/easyoptim/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .lamb import Lamb -from . import easy_lr_scheduler diff --git a/easytorch/easyoptim/easy_lr_scheduler.py b/easytorch/easyoptim/easy_lr_scheduler.py deleted file mode 100644 index 7102bca..0000000 --- a/easytorch/easyoptim/easy_lr_scheduler.py +++ /dev/null @@ -1,172 +0,0 @@ -import math -import warnings - -from torch.optim.lr_scheduler import _LRScheduler - - -class MultiCosineAnnealingWarmupLR(_LRScheduler): - r"""Set the learning rate of each parameter group using a cosine annealing - schedule, where :math:`\eta_{max}` is set to the initial lr, :math:`T_{cur}` - is the number of epochs since the last restart and :math:`T_{i}` is the number - of epochs between two warm restarts in SGDR: - - .. math:: - \eta_t = \eta_{min} + \lr_mult \times \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 + - \cos\left(\frac{T_{cur}}{T_{i}}\pi\right)\right) - - When :math:`T_{cur}=T_{i}`, set :math:`\eta_t = \eta_{min}`. - When :math:`T_{cur}=0` after restart, set :math:`\eta_t=\eta_{max}`. - - It has been proposed in - `SGDR: Stochastic Gradient Descent with Warm Restarts`_. - - Args: - optimizer (Optimizer): Wrapped optimizer. - final_epoch (int): Number of total iterations - T_0 (list): Number of iterations for the restart - lr_mult (list): A factor multiplied with learning rate at iteration T_0, must have the same shape as T_0 - warmup_begin (int, optional): Number of iterations for the beginning warm up, notice that the first decay T_mult will be reduced by this param. Default: 0 - warmup_factor (float, optional): A factor that the learning rate will be multiplied at first epoch. Default: 0.01 - eta_min (float, optional): Minimum learning rate. Default: 0. - last_epoch (int, optional): The index of last epoch. Default: -1. - - - .. _SGDR\: Stochastic Gradient Descent with Warm Restarts: - https://arxiv.org/abs/1608.03983 - """ - def __init__(self, optimizer, final_epoch, T_0=None, lr_mult=None, warmup_begin=0, warmup_factor=0.01, eta_min=0, last_epoch=-1, verbose=False): - if T_0 and not isinstance(T_0, list): - raise ValueError("Expected list object or None type T_0, but got {}".format(type(T_0))) - if lr_mult and not isinstance(lr_mult, list): - raise ValueError("Expected list object or None type lr_mult, bug got {}".format(type(lr_mult))) - if not T_0 and not lr_mult: - raise ValueError("Expected T_0 and lr_mult has the same length, but got NoneType and {}".format(len(lr_mult))) - if T_0 and not lr_mult: - raise ValueError("Expected T_0 and lr_mult has the same length, but got {} and NoneType".format(len(T_0))) - if T_0 and lr_mult and len(T_0) != len(lr_mult): - raise ValueError("Expected T_0 and lr_mult has the same length, but got {} and {}".format(len(T_0), len(lr_mult))) - - self.final_epoch = final_epoch - self.T_0_list = T_0 if T_0 else [] - self.lr_mult_list = lr_mult if lr_mult else [] - self.warmup_begin = warmup_begin - self.warmup_factor = warmup_factor - self.eta_min = eta_min - - # add number at beggining - self.T_0_list.insert(0, 0) - self.lr_mult_list.insert(0, 1) - - # calculate T_i accroding to given T_0 list - self.T_0_expand= self.T_0_list.copy() - self.T_0_expand.append(final_epoch) - - if self.warmup_begin > self.T_0_expand[1]: - raise ValueError("the warmup_begin iteration is bigger than the first T_i, please use smaller warmup_begin or bigger T_0[0]") - - self.T_i_list = [self.T_0_expand[i+1] - self.T_0_expand[i] - 1 for i in range(len(self.T_0_expand)-1)] - self.T_i_list[0] = self.T_i_list[0] - self.warmup_begin # subtract warmup at beginning - - - # initial T_i, lr_mult and T_cur - self.T_i = self.T_i_list[0] - self.lr_mult = self.lr_mult_list[0] - self.T_cur = 0 - - super(MultiCosineAnnealingWarmupLR, self).__init__(optimizer, last_epoch) - - def get_lr(self): - if not self._get_lr_called_within_step: - warnings.warn("To get the last learning rate computed by the scheduler, " - "please use `get_last_lr()`.", UserWarning) - - if self.last_epoch <= self.warmup_begin: - if self.warmup_begin != 0: - lr = [(base_lr - self.warmup_factor * base_lr) * (self.last_epoch/self.warmup_begin) + self.warmup_factor * base_lr - for base_lr in self.base_lrs] - else: - lr = [base_lr for base_lr in self.base_lrs] - else: - lr = [self.eta_min + (self.lr_mult * base_lr - self.eta_min) * (1 + math.cos(math.pi * self.T_cur / self.T_i)) / 2 - for base_lr in self.base_lrs] - - return lr - - def step(self, epoch=None): - """Step could be called after every batch update - - Example: - >>> T_0 = [20, 30, 50] - >>> lr_mult = [0.8, 0.6, 0.5] - >>> scheduler = MultiCosineAnnealingWarmupLR(optimizer, final_epoch=150, T_0, lr_mult, warmup_begin=5, warmup_factor=0.001, eta_min=1e-7) - >>> iters = len(dataloader) - >>> for epoch in range(20): - >>> for i, sample in enumerate(dataloader): - >>> inputs, labels = sample['inputs'], sample['labels'] - >>> optimizer.zero_grad() - >>> outputs = net(inputs) - >>> loss = criterion(outputs, labels) - >>> loss.backward() - >>> optimizer.step() - >>> scheduler.step() - """ - - def locate(self, epoch: int): - """return the number of which section dose T_0 locate in T_0_list - """ - for i in range(1, len(self.T_0_list)): - if epoch == 0: - return 0 - elif epoch >= self.T_0_list[i-1] and epoch < self.T_0_list[i]: - return i-1 - else: - continue - return len(self.T_0_list) - 1 - - - if epoch is None and self.last_epoch < 0: - epoch = 0 - - if epoch is None: - epoch = self.last_epoch + 1 - section = locate(self, epoch) # the section of the T_0_list - self.T_0 = self.T_0_list[section] - self.T_i = self.T_i_list[section] - self.T_cur = epoch - self.T_0 - if epoch < self.T_0_expand[1]: - self.T_cur = self.T_cur - self.warmup_begin # subtract warmup_begin at first section - self.lr_mult = self.lr_mult_list[section] - else: - if epoch < 0: - raise ValueError("Expected non-negative epoch, but got {}".format(epoch)) - section = locate(self, epoch) - self.T_0 = self.T_0_list[section] - self.T_i = self.T_i_list[section] - if epoch == 0: - self.T_cur = 0 - else: - self.T_cur = epoch - self.T_0 - 1 - if epoch < self.T_0_expand[1]: - self.T_cur = self.T_cur - self.warmup_begin - self.lr_mult = self.lr_mult_list[section] - - self.last_epoch = math.floor(epoch) - - class _enable_get_lr_call: - - def __init__(self, o): - self.o = o - - def __enter__(self): - self.o._get_lr_called_within_step = True - return self - - def __exit__(self, type, value, traceback): - self.o._get_lr_called_within_step = False - return self - - with _enable_get_lr_call(self): - for param_group, lr in zip(self.optimizer.param_groups, self.get_lr()): - param_group['lr'] = lr - - self._last_lr = [group['lr'] for group in self.optimizer.param_groups] diff --git a/easytorch/easyoptim/lamb.py b/easytorch/easyoptim/lamb.py deleted file mode 100644 index 04c9bc9..0000000 --- a/easytorch/easyoptim/lamb.py +++ /dev/null @@ -1,184 +0,0 @@ -""" PyTorch Lamb optimizer w/ behaviour similar to NVIDIA FusedLamb -This optimizer code was adapted from the following (starting with latest) -* https://github.com/HabanaAI/Model-References/blob/2b435114fe8e31f159b1d3063b8280ae37af7423/PyTorch/nlp/bert/pretraining/lamb.py -* https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/LanguageModeling/Transformer-XL/pytorch/lamb.py -* https://github.com/cybertronai/pytorch-lamb -Use FusedLamb if you can (GPU). The reason for including this variant of Lamb is to have a version that is -similar in behaviour to APEX FusedLamb if you aren't using NVIDIA GPUs or cannot install/use APEX. -In addition to some cleanup, this Lamb impl has been modified to support PyTorch XLA and has been tested on TPU. -Original copyrights for above sources are below. -Modifications Copyright 2021 Ross Wightman -""" -# Copyright (c) 2021, Habana Labs Ltd. All rights reserved. - -# Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# MIT License -# -# Copyright (c) 2019 cybertronai -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -import math - -import torch -from torch.optim import Optimizer - - -class Lamb(Optimizer): - """Implements a pure pytorch variant of FuseLAMB (NvLamb variant) optimizer from apex.optimizers.FusedLAMB - reference: https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/LanguageModeling/Transformer-XL/pytorch/lamb.py - LAMB was proposed in `Large Batch Optimization for Deep Learning: Training BERT in 76 minutes`_. - Arguments: - params (iterable): iterable of parameters to optimize or dicts defining parameter groups. - lr (float, optional): learning rate. (default: 1e-3) - betas (Tuple[float, float], optional): coefficients used for computing - running averages of gradient and its norm. (default: (0.9, 0.999)) - eps (float, optional): term added to the denominator to improve - numerical stability. (default: 1e-8) - weight_decay (float, optional): weight decay (L2 penalty) (default: 0) - grad_averaging (bool, optional): whether apply (1-beta2) to grad when - calculating running averages of gradient. (default: True) - max_grad_norm (float, optional): value used to clip global grad norm (default: 1.0) - trust_clip (bool): enable LAMBC trust ratio clipping (default: False) - always_adapt (boolean, optional): Apply adaptive learning rate to 0.0 - weight decay parameter (default: False) - .. _Large Batch Optimization for Deep Learning - Training BERT in 76 minutes: - https://arxiv.org/abs/1904.00962 - .. _On the Convergence of Adam and Beyond: - https://openreview.net/forum?id=ryQu7f-RZ - """ - - def __init__( - self, params, lr=1e-3, bias_correction=True, betas=(0.9, 0.999), eps=1e-6, - weight_decay=0.01, grad_averaging=True, max_grad_norm=1.0, trust_clip=False, always_adapt=False): - defaults = dict( - lr=lr, bias_correction=bias_correction, betas=betas, eps=eps, weight_decay=weight_decay, - grad_averaging=grad_averaging, max_grad_norm=max_grad_norm, - trust_clip=trust_clip, always_adapt=always_adapt) - super().__init__(params, defaults) - - @torch.no_grad() - def step(self, closure=None): - """Performs a single optimization step. - Arguments: - closure (callable, optional): A closure that reevaluates the model - and returns the loss. - """ - loss = None - if closure is not None: - with torch.enable_grad(): - loss = closure() - - device = self.param_groups[0]['params'][0].device - one_tensor = torch.tensor(1.0, device=device) # because torch.where doesn't handle scalars correctly - global_grad_norm = torch.zeros(1, device=device) - for group in self.param_groups: - for p in group['params']: - if p.grad is None: - continue - grad = p.grad - if grad.is_sparse: - raise RuntimeError('Lamb does not support sparse gradients, consider SparseAdam instad.') - global_grad_norm.add_(grad.pow(2).sum()) - - global_grad_norm = torch.sqrt(global_grad_norm) - # FIXME it'd be nice to remove explicit tensor conversion of scalars when torch.where promotes - # scalar types properly https://github.com/pytorch/pytorch/issues/9190 - max_grad_norm = torch.tensor(self.defaults['max_grad_norm'], device=device) - clip_global_grad_norm = torch.where( - global_grad_norm > max_grad_norm, - global_grad_norm / max_grad_norm, - one_tensor) - - for group in self.param_groups: - bias_correction = 1 if group['bias_correction'] else 0 - beta1, beta2 = group['betas'] - grad_averaging = 1 if group['grad_averaging'] else 0 - beta3 = 1 - beta1 if grad_averaging else 1.0 - - # assume same step across group now to simplify things - # per parameter step can be easily support by making it tensor, or pass list into kernel - if 'step' in group: - group['step'] += 1 - else: - group['step'] = 1 - - if bias_correction: - bias_correction1 = 1 - beta1 ** group['step'] - bias_correction2 = 1 - beta2 ** group['step'] - else: - bias_correction1, bias_correction2 = 1.0, 1.0 - - for p in group['params']: - if p.grad is None: - continue - grad = p.grad.div_(clip_global_grad_norm) - state = self.state[p] - - # State initialization - if len(state) == 0: - # Exponential moving average of gradient valuesa - state['exp_avg'] = torch.zeros_like(p) - # Exponential moving average of squared gradient values - state['exp_avg_sq'] = torch.zeros_like(p) - - exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq'] - - # Decay the first and second moment running average coefficient - exp_avg.mul_(beta1).add_(grad, alpha=beta3) # m_t - exp_avg_sq.mul_(beta2).addcmul_(grad, grad, value=1 - beta2) # v_t - - denom = (exp_avg_sq.sqrt() / math.sqrt(bias_correction2)).add_(group['eps']) - update = (exp_avg / bias_correction1).div_(denom) - - weight_decay = group['weight_decay'] - if weight_decay != 0: - update.add_(p, alpha=weight_decay) - - if weight_decay != 0 or group['always_adapt']: - # Layer-wise LR adaptation. By default, skip adaptation on parameters that are - # excluded from weight decay, unless always_adapt == True, then always enabled. - w_norm = p.norm(2.0) - g_norm = update.norm(2.0) - # FIXME nested where required since logical and/or not working in PT XLA - trust_ratio = torch.where( - w_norm > 0, - torch.where(g_norm > 0, w_norm / g_norm, one_tensor), - one_tensor, - ) - if group['trust_clip']: - # LAMBC trust clipping, upper bound fixed at one - trust_ratio = torch.minimum(trust_ratio, one_tensor) - update.mul_(trust_ratio) - - p.add_(update, alpha=-group['lr']) - - return loss diff --git a/easytorch/train.py b/easytorch/train.py deleted file mode 100644 index df89546..0000000 --- a/easytorch/train.py +++ /dev/null @@ -1,30 +0,0 @@ -import os -import sys -from argparse import ArgumentParser - -from easytorch import launch_training - - -def parse_args(): - parser = ArgumentParser(description='Welcome to EasyTorch!') - parser.add_argument('-c', '--cfg', help='training config', required=True) - parser.add_argument('--node-rank', default=0, type=int, help='node rank for distributed training') - parser.add_argument('--gpus', help='visible gpus', type=str) - parser.add_argument('--tf32', help='enable tf32 on Ampere device', action='store_true') - return parser.parse_args() - - -def main(): - # work dir - path = os.getcwd() - sys.path.append(path) - - # parse arguments - args = parse_args() - - # train - launch_training(args.cfg, args.gpus, args.tf32, args.node_rank) - - -if __name__ == '__main__': - main() diff --git a/easytorch/utils/__init__.py b/easytorch/utils/__init__.py deleted file mode 100644 index 1754da9..0000000 --- a/easytorch/utils/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from .env import set_gpus, set_tf32_mode, setup_random_seed -from .timer import Timer, TimePredictor -from .dist import get_rank, get_local_rank, get_world_size, is_rank, is_master, master_only, get_dist_backend -from .logging import get_logger -from .named_hook import NamedForwardHook, NamedBackwardHook - - -__all__ = [ - 'set_gpus', 'Timer', 'TimePredictor', 'set_tf32_mode', 'get_logger', - 'get_rank', 'get_local_rank', 'get_world_size', 'is_rank', 'is_master', 'master_only', - 'get_dist_backend', 'setup_random_seed', 'NamedForwardHook', 'NamedBackwardHook' -] diff --git a/easytorch/utils/data_prefetcher.py b/easytorch/utils/data_prefetcher.py deleted file mode 100644 index e882e15..0000000 --- a/easytorch/utils/data_prefetcher.py +++ /dev/null @@ -1,60 +0,0 @@ -import threading -import queue as Queue - -from torch.utils.data import DataLoader - - -class BackgroundGenerator(threading.Thread): - def __init__(self, generator, max_prefetch=1): - """ - - This function transforms generator into a background-thead generator. - :param generator: generator or genexp or any - It can be used with any minibatch generator. - - It is quite lightweight, but not entirely weightless. - Using global variables inside generator is not recommended (may rise GIL and zero-out the benefit of having a background thread.) - The ideal use case is when everything it requires is store inside it and everything it outputs is passed through queue. - - There's no restriction on doing weird stuff, reading/writing files, retrieving URLs [or whatever] wlilst iterating. - - :param max_prefetch: defines, how many iterations (at most) can background generator keep stored at any moment of time. - Whenever there's already max_prefetch batches stored in queue, the background process will halt until one of these batches is dequeued. - - !Default max_prefetch=1 is okay unless you deal with some weird file IO in your generator! - - Setting max_prefetch to -1 lets it store as many batches as it can, which will work slightly (if any) faster, but will require storing - all batches in memory. If you use infinite generator with max_prefetch=-1, it will exceed the RAM size unless dequeued quickly enough. - """ - threading.Thread.__init__(self) - self.queue = Queue.Queue(max_prefetch) - self.generator = generator - self.daemon = True - self.start() - - def run(self): - for item in self.generator: - self.queue.put(item) - self.queue.put(None) - - def next(self): - next_item = self.queue.get() - if next_item is None: - raise StopIteration - return next_item - - def __next__(self): - return self.next() - - def __iter__(self): - return self - - def __len__(self): - return len(self.generator) - - -class DataLoaderX(DataLoader): - """Dataloader with prefetch. See https://github.com/justheuristic/prefetch_generator - """ - def __iter__(self): - return BackgroundGenerator(super().__iter__()) diff --git a/easytorch/utils/dist.py b/easytorch/utils/dist.py deleted file mode 100644 index d0ce19b..0000000 --- a/easytorch/utils/dist.py +++ /dev/null @@ -1,128 +0,0 @@ -import functools -import random -from typing import Tuple - -import torch - - -# default master rank -MASTER_RANK = 0 - - -def get_rank() -> int: - """Get the rank of current process group. - - If DDP is initialized, return `torch.distributed.get_rank()`. - Else return 0 - - Returns: - rank (int) - """ - - if torch.distributed.is_initialized(): - return torch.distributed.get_rank() - else: - return 0 - - -def get_local_rank() -> int: - """Get the local rank of current process group in multiple compute nodes. - - Returns: - local_rank (int) - """ - - return get_rank() % torch.cuda.device_count() if torch.cuda.device_count() != 0 else 0 - - -def get_world_size() -> int: - """Get the number of processes in the current process group. - - If DDP is initialized, return ```torch.distributed.get_world_size()```. - Else return 1 - - Returns: - world_size (int) - """ - - if torch.distributed.is_initialized(): - return torch.distributed.get_world_size() - else: - return 1 - - -def is_rank(rank: int) -> bool: - """Checking if the rank of current process group is equal to ```rank```. - - Notes: - ```rank``` must be less than ```world_size``` - - Args: - rank (int): rank - - Returns: - result (bool) - """ - - if rank >= get_world_size(): - raise ValueError('Rank is out of range') - - return get_rank() == rank - - -def is_master() -> bool: - """Checking if current process is master process. - - The rank of master process is ```MASTER_RANK``` - - Returns: - result (bool) - """ - - return is_rank(MASTER_RANK) - - -def master_only(func): - """An function decorator that the function is only executed in the master process. - - Examples: - @master_only - def func(x): - return 2 ** x - - Args: - func: function - - Returns: - wrapper func - """ - - @functools.wraps(func) - def wrapper(*args, **kwargs): - if is_master(): - return func(*args, **kwargs) - - return wrapper - - -def get_dist_backend(dist_node_num: int = 1, backend: str = None, init_method: str = None) -> Tuple[str, str]: - """Get pytorch dist backend and init method. - - Note: - Default `backend` is 'nccl', default `init_method` is 'tcp://127.0.0.1:{random port}' - - Args: - backend (str): The backend to use. - init_method (str): URL specifying how to initialize the process group. - - Returns: - (backend, init_method) - """ - - backend = 'nccl' if backend is None else backend - if init_method is None: - if dist_node_num == 1: - init_method = 'tcp://127.0.0.1:{:d}'.format(random.randint(50000, 65000)) - else: - raise ValueError('The init_method cannot be None in multiple compute nodes') - return backend, init_method diff --git a/easytorch/utils/env.py b/easytorch/utils/env.py deleted file mode 100644 index f346a6e..0000000 --- a/easytorch/utils/env.py +++ /dev/null @@ -1,76 +0,0 @@ -import os -import random - -import torch -import numpy as np - -from .logging import get_logger - - -def set_gpus(gpus: str): - """Set environment variable `CUDA_VISIBLE_DEVICES` to select GPU devices. - - Examples: - set_gpus('0,1,2,3') - - Args: - gpus (str): environment variable `CUDA_VISIBLE_DEVICES` value - """ - - if gpus is not None: - os.environ["CUDA_VISIBLE_DEVICES"] = gpus - - -def set_tf32_mode(tf32_mode: bool): - """Set tf32 mode on Ampere gpu when torch version >= 1.7.0 and cuda version >= 11.0. - See https://pytorch.org/docs/stable/notes/cuda.html#tf32-on-ampere - - Args: - tf32_mode (bool): set to ``True`` to enable tf32 mode. - """ - - logger = get_logger('easytorch-env') - if torch.__version__ >= '1.7.0': - if tf32_mode: - logger.info('Enable TF32 mode') - else: - # disable tf32 mode on Ampere gpu - torch.backends.cuda.matmul.allow_tf32 = False - torch.backends.cudnn.allow_tf32 = False - logger.info('Disable TF32 mode') - else: - if tf32_mode: - raise RuntimeError('Torch version {} does not support tf32'.format(torch.__version__)) - - -def setup_random_seed(seed: int, deterministic: bool = True, cudnn_enabled: bool = False, - cudnn_benchmark: bool = False): - """Setup random seed. - - Including `random`, `numpy`, `torch` - - Args: - seed (int): random seed. - deterministic (bool): Use deterministic algorithms. - See https://pytorch.org/docs/stable/generated/torch.use_deterministic_algorithms.html. - cudnn_enabled (bool): Enable cudnn. - See https://pytorch.org/docs/stable/backends.html - cudnn_benchmark (bool): Enable cudnn benchmark. - See https://pytorch.org/docs/stable/backends.html - """ - - random.seed(seed) - np.random.seed(seed) - - os.environ['PYTHONHASHSEED'] = str(seed) - - torch.manual_seed(seed) - torch.cuda.manual_seed(seed) - torch.cuda.manual_seed_all(seed) - - if deterministic: - os.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8' - torch.use_deterministic_algorithms(True) - torch.backends.cudnn.deterministic = True - torch.backends.cudnn.enabled = cudnn_enabled - torch.backends.cudnn.benchmark = cudnn_benchmark diff --git a/easytorch/utils/logging.py b/easytorch/utils/logging.py deleted file mode 100644 index 51c4cbf..0000000 --- a/easytorch/utils/logging.py +++ /dev/null @@ -1,52 +0,0 @@ -import logging - -from .dist import is_master - -logger_initialized = set([]) - - -def get_logger(name, log_file: str = None, log_level: int = logging.INFO, file_mode: str = 'w') -> logging.Logger: - """Return a logger with the specified name, creating it if necessary. - - Notes: - If current process is master process, return `Logger(log_level)` with FileHandler. - If current process is not master process, return `Logger(logging.ERROR)` - - Args: - name (str): specified name of logger - log_file (str): logger file name - log_level (int): logger level - file_mode (str): logger file mode - - Returns: - logger (logging.Logger) - """ - - logger = logging.getLogger(name) - logger.propagate = False - - if name in logger_initialized: - return logger - - logger_handlers = [logging.StreamHandler()] - - if is_master() and log_file is not None: - logger_handlers.append(logging.FileHandler(log_file, file_mode)) - - formatter = logging.Formatter( - '%(asctime)s - %(name)s - %(levelname)s - %(message)s' - ) - - for handler in logger_handlers: - handler.setFormatter(formatter) - handler.setLevel(log_level) - logger.addHandler(handler) - - if is_master(): - logger.setLevel(log_level) - else: - logger.setLevel(logging.ERROR) - - logger_initialized.add(name) - - return logger diff --git a/easytorch/utils/named_hook.py b/easytorch/utils/named_hook.py deleted file mode 100644 index f495078..0000000 --- a/easytorch/utils/named_hook.py +++ /dev/null @@ -1,26 +0,0 @@ -from abc import ABCMeta, abstractmethod -from typing import Tuple - -import torch -from torch import nn - - -class NamedHook(metaclass=ABCMeta): - def __init__(self, name: str): - self.name = name - - @abstractmethod - def __call__(self, module: nn.Module, *args, **kwargs): - pass - - -class NamedForwardHook(NamedHook, metaclass=ABCMeta): - @abstractmethod - def __call__(self, module: nn.Module, inputs: Tuple[torch.Tensor], outputs: Tuple[torch.Tensor]): - pass - - -class NamedBackwardHook(NamedHook, metaclass=ABCMeta): - @abstractmethod - def __call__(self, module: nn.Module, input_grads: Tuple[torch.Tensor], output_grads: Tuple[torch.Tensor]): - pass diff --git a/easytorch/utils/timer.py b/easytorch/utils/timer.py deleted file mode 100644 index 3ee6d80..0000000 --- a/easytorch/utils/timer.py +++ /dev/null @@ -1,103 +0,0 @@ -import time - - -class Timer: - """Timer with multiple record - - Examples: - >>> timer = Timer() - >>> time.sleep(1) - >>> timer.record('one') - >>> time.sleep(2) - >>> timer.record('two') - >>> timer.print() - Start:: [diff: 0.000000, total: 0.000000] - one:: [diff: 1.002618, total: 1.002618] - two:: [diff: 2.003077, total: 3.005695] - >>> print(timer.get(2)) - (2.0030770301818848, 3.005695104598999) - >>> print(timer.get(1)) - (1.0026180744171143, 1.0026180744171143) - >>> print(timer.get(2, 0)) - (3.005695104598999, 3.005695104598999) - """ - - def __init__(self): - self._record_dict = {'Start': time.time()} - self._record_names = ['Start'] - - def record(self, name: str = None): - """Record a checkpoint - - Args: - name (str): checkpoint name (default is Record_i, i is index) - """ - - if name is None: - name = 'Record_{:d}'.format(len(self._record_names)) - elif self._record_dict.get(name) is not None: - raise ValueError('Name \'{}\' already exists'.format(name)) - - self._record_dict[name] = time.time() - self._record_names.append(name) - - def print(self): - """Print all checkpoints of this timer - """ - start_time_record = last_time_record = self._record_dict['Start'] - for name in self._record_names: - time_record = self._record_dict[name] - time_diff = time_record - last_time_record - time_total = time_record - start_time_record - last_time_record = time_record - print('{}:: [diff: {:2f}, total: {:2f}]'.format(name, time_diff, time_total)) - - def get(self, end: str or int, start: str or int = None): - """Get the time from the ```start``` to the```end```(diff), - and the time from timer initialization to the ```end```(total). - - Notes: - If start is none, default is the previous one of the ```end```. - - Args: - end (str or int): end checkpoint name or index - start (str or int): start checkpoint name or index - - Returns: - (diff, total) - """ - - # end - if isinstance(end, int): - end_record_index = end - end_record_name = self._record_names[end_record_index] - else: - end_record_name = end - end_record_index = self._record_names.index(end_record_name) - end_record_time = self._record_dict[end_record_name] - - # start - if start is None: - start_record_index = max(end_record_index - 1, 0) - start_record_name = self._record_names[start_record_index] - elif isinstance(start, int): - start_record_name = self._record_names[start] - else: - start_record_name = start - start_record_time = self._record_dict[start_record_name] - - return end_record_time - start_record_time, end_record_time - self._record_dict['Start'] - - -class TimePredictor: - def __init__(self, start_step: int, end_step: int): - self.start_step = start_step - self.end_step = end_step - self.start_time = time.time() - - def get_remaining_time(self, step: int) -> float: - now_time = time.time() - return (now_time - self.start_time) * (self.end_step - self.start_step) / (step - self.start_step) - - def get_expected_end_time(self, step: int) -> float: - return self.start_time + self.get_remaining_time(step) diff --git a/easytorch/version.py b/easytorch/version.py deleted file mode 100644 index 848c121..0000000 --- a/easytorch/version.py +++ /dev/null @@ -1,2 +0,0 @@ -__version__ = '1.0' -__all__ = ['__version__'] diff --git a/losses/losses_torch.py b/losses/losses_torch.py deleted file mode 100644 index 65fb9b3..0000000 --- a/losses/losses_torch.py +++ /dev/null @@ -1,89 +0,0 @@ -import torch -import numpy as np - -# ============== RMSE ================= # -def masked_mse(preds, labels, null_val=np.nan): - if np.isnan(null_val): - mask = ~torch.isnan(labels) - else: - mask = (labels != null_val) - mask = mask.float() - mask /= torch.mean((mask)) - mask = torch.where(torch.isnan(mask), torch.zeros_like(mask), mask) - loss = (preds-labels)**2 - loss = loss * mask - loss = torch.where(torch.isnan(loss), torch.zeros_like(loss), loss) - return torch.mean(loss) - - -def masked_rmse(preds, labels, null_val=np.nan): - return torch.sqrt(masked_mse(preds=preds, labels=labels, null_val=null_val)) - - -# ============== MAE ================= # -def masked_mae(preds, labels, null_val=np.nan): - if np.isnan(null_val): - mask = ~torch.isnan(labels) - else: - mask = (labels != null_val) - mask = mask.float() - mask /= torch.mean((mask)) - mask = torch.where(torch.isnan(mask), torch.zeros_like(mask), mask) - loss = torch.abs(preds-labels) - loss = loss * mask - loss = torch.where(torch.isnan(loss), torch.zeros_like(loss), loss) - return torch.mean(loss) - - -# ============== MAPE ================== # -def masked_mape(preds, labels, null_val=np.nan): - # fix very small values of labels, which should be 0. Otherwise, nan detector will fail. - labels = torch.where(labels < 1e-2, torch.zeros_like(labels), labels) - if np.isnan(null_val): - mask = ~torch.isnan(labels) - else: - mask = (labels != null_val) - mask = mask.float() - mask /= torch.mean((mask)) - mask = torch.where(torch.isnan(mask), torch.zeros_like(mask), mask) - loss = torch.abs(preds-labels)/labels - loss = loss * mask - loss = torch.where(torch.isnan(loss), torch.zeros_like(loss), loss) - return torch.mean(loss) - - -def metric(pred, real): - mae = masked_mae(pred, real, 0.0).item() - mape = masked_mape(pred, real, 0.0).item() - rmse = masked_rmse(pred, real, 0.0).item() - return mae, mape, rmse - - -def metric_multi_part(pred, real, part=5): - B, L_P, N = pred.shape - assert B % part == 0 - par = int(B / part) - mae_list = [] - mape_list = [] - rmse_list = [] - - for i in range(1, part+1): - start = (i-1)*par - end = i * par - preds_part = pred[start:end, ...] - labels_part = real[start:end, ...] - mae, mape, rmse = metric(preds_part, labels_part) - mae_list.append(mae) - mape_list.append(mape) - rmse_list.append(rmse) - mae = sum(mae_list) / part - mape = sum(mape_list) / part - rmse = sum(rmse_list) / part - return mae, mape, rmse - - -if __name__ == "__main__": - preds = torch.randn(6850, 1296, 207) - reals = torch.randn(6850, 1296, 207) - mae1, mape1, rmse1 = metric(preds, reals) - mae2, mape2, rmse2 = metric_multi_part(preds, reals) diff --git a/main.py b/main.py deleted file mode 100644 index d03e1af..0000000 --- a/main.py +++ /dev/null @@ -1,28 +0,0 @@ -import sys -sys.path.append('../..') -from argparse import ArgumentParser - -from easytorch import launch_training -import setproctitle -setproctitle.setproctitle("STEP") - -def parse_args(): - parser = ArgumentParser(description='Welcome to EasyTorch!') - # pre-training - parser.add_argument('-c', '--cfg', default='config/METR-LA/pretraining.py', help='training config') - # parser.add_argument('-c', '--cfg', default='config/PEMS-BAY/pretraining.py', help='training config') - # parser.add_argument('-c', '--cfg', default='config/PEMS04/pretraining.py', help='training config') - - # forecasting - # parser.add_argument('-c', '--cfg', default='config/METR-LA/forecasting.py', help='training config') - # parser.add_argument('-c', '--cfg', default='config/PEMS-BAY/forecasting.py', help='training config') - # parser.add_argument('-c', '--cfg', default='config/PEMS04/forecasting.py', help='training config') - - parser.add_argument('--gpus', default=None, help='visible gpus') - parser.add_argument('--tf32', default=True, help='enable tf32 on Ampere device') - return parser.parse_args() - -if __name__ == "__main__": - args = parse_args() - - launch_training(args.cfg, args.gpus, args.tf32) diff --git a/models/step.py b/models/step.py deleted file mode 100644 index 190a85b..0000000 --- a/models/step.py +++ /dev/null @@ -1,74 +0,0 @@ -import torch -from torch import nn - -from .tsformer import TSFormer -from .graphwavenet import GraphWaveNet -from .discrete_graph_learning import DiscreteGraphLearning - - -class STEP(nn.Module): - """Pre-training Enhanced Spatial-temporal Graph Neural Network for Multivariate Time Series Forecasting""" - - def __init__(self, cfg, **model_args): - super().__init__() - self.dataset_name = cfg.DATASET_NAME - - # initialize pre-training model (TSFormer) and backed model (Graph WaveNet) - tsformer_args = model_args["TSFORMER"] # TSFormer arguments - # backend model (Graph WaveNet) arguments - backend_args = model_args["BACKEND"]["GWNET"] - self.tsformer = TSFormer(**tsformer_args, mode="inference") - self.backend = GraphWaveNet(**backend_args) - - # load pre-trained model - self.load_pre_trained_model() - - # discrete graph learning - self.dynamic_graph_learning = DiscreteGraphLearning(cfg) - - def load_pre_trained_model(self): - """Load pre-trained model""" - - if self.dataset_name == "METR-LA": - checkpoint_dict = torch.load("TSFormer_CKPT/TSFormer_METR-LA.pt") - elif self.dataset_name == "PEMS04": - checkpoint_dict = torch.load("TSFormer_CKPT/TSFormer_PEMS04.pt") - elif self.dataset_name == "PEMS-BAY": - checkpoint_dict = torch.load("TSFormer_CKPT/TSFormer_PEMS-BAY.pt") - else: - assert False, "Error" - # load parameters - self.tsformer.load_state_dict(checkpoint_dict["model_state_dict"]) - # freeze parameters - for param in self.tsformer.parameters(): - param.requires_grad = False - - def forward(self, short_term_history, long_term_history=None): - """Feed forward of STEP. Details can be found in Section 3.2 of the paper. - - Args: - short_term_history (torch.Tensor): - Short-term historical MTS with shape [B, L, N, C], - which is the commonly used input of existing STGNNs. - L is the length of segments (patches). - long_term_history (torch.Tensor, optional): - Very long-term historical MTS with shape [B, P * L, N, C], - which is used in the TSFormer. - P is the number of segments (patches). - - Returns: - torch.Tensor: prediction with shape [B, N, L]. - torch.Tensor: the Bernoulli distribution parameters with shape [B, N, N]. - torch.Tensor: the kNN graph with shape [B, N, N], which is used to guide the training of the dependency graph. - """ - - batch_size, _, num_nodes, _ = short_term_history.shape - - # discrete graph learning & feed forward of TSFormer - bernoulli_unnorm, hidden_states, adj_knn, sampled_adj = self.dynamic_graph_learning(long_term_history, self.tsformer) - - # enhancing downstream STGNNs - hidden_states = hidden_states[:, :, -1, :] - y_hat = self.backend(short_term_history, hidden_states=hidden_states, sampled_adj=sampled_adj) - - return y_hat, bernoulli_unnorm.softmax(-1)[..., 0].clone().reshape(batch_size, num_nodes, num_nodes), adj_knn diff --git a/models/tsformer/__init__.py b/models/tsformer/__init__.py deleted file mode 100644 index 4d0ae44..0000000 --- a/models/tsformer/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .model import TSFormer - -__all__ = ["TSFormer"] diff --git a/models/tsformer/model.py b/models/tsformer/model.py deleted file mode 100644 index 0486049..0000000 --- a/models/tsformer/model.py +++ /dev/null @@ -1,143 +0,0 @@ -import torch -from torch import nn -from timm.models.layers import trunc_normal_ as __call_trunc_normal_ - -from models.tsformer.patch import Patch -from models.tsformer.mask import MaskGenerator -from models.tsformer.transformer_layers import TransformerLayers -from models.tsformer.positional_encoding import PositionalEncoding - - -def trunc_normal_(tensor, mean=0., std=1.): - __call_trunc_normal_(tensor, mean=mean, std=std, a=-std, b=std) - - -def unshuffle(shuffled_tokens): - dic = {} - for k, v, in enumerate(shuffled_tokens): - dic[v] = k - unshuffle_index = [] - for i in range(len(shuffled_tokens)): - unshuffle_index.append(dic[i]) - return unshuffle_index - - -class TSFormer(nn.Module): - """An efficient unsupervised pre-training model for Time Series based on transFormer blocks. (TSFormer)""" - - def __init__(self, patch_size, in_channel, out_channel, dropout, mask_size, mask_ratio, L, mode="Pretrain"): - super().__init__() - self.patch_size = patch_size - self.selected_feature = 0 - self.mode = mode - self.patch = Patch(patch_size, in_channel, out_channel) - self.pe = PositionalEncoding(out_channel, dropout=dropout) - self.mask = MaskGenerator(mask_size, mask_ratio) - self.encoder = TransformerLayers(out_channel, L) - self.decoder = TransformerLayers(out_channel, 1) - self.encoder_2_decoder = nn.Linear(out_channel, out_channel) - self.mask_token = nn.Parameter(torch.zeros(1, 1, 1, out_channel)) - trunc_normal_(self.mask_token, std=.02) - self.output_layer = nn.Linear(out_channel, patch_size) - - def _forward_pre_train(self, long_term_history): - """Feed forward of the TSFormer in the pre-training stage. - - Args: - long_term_history (torch.Tensor): Very long-term historical MTS with shape [B, N, 1, P * L], - which is used in the TSFormer. - P is the number of segments (patches). - - Returns: - torch.Tensor: the reconstruction of the masked tokens. Shape [B, L * P * r, N], where r is the masking ratio. - torch.Tensor: the ground truth of the masked tokens. Shape [B, L * P * r, N]. - dict: data for plotting. - """ - - batch_size, num_nodes, _, _ = long_term_history.shape - # get patches and embed input - patches = self.patch(long_term_history) # B, N, d, P - patches = patches.transpose(-1, -2) # B, N, P, d - # positional embedding - patches = self.pe(patches) - - # mask tokens - unmasked_token_index, masked_token_index = self.mask() - encoder_input = patches[:, :, unmasked_token_index, :] - - # encoder - hidden_states_unmasked = self.encoder(encoder_input) # B, N, P*(1-r), d - # encoder to decoder - hidden_states_unmasked = self.encoder_2_decoder(hidden_states_unmasked) - # decoder - # H_unmasked = self.pe(H, index=unmasked_token_index) - hidden_states_masked = self.pe(self.mask_token.expand(batch_size, num_nodes, len(masked_token_index), hidden_states_unmasked.shape[-1]), index=masked_token_index) - hidden_states_full = torch.cat([hidden_states_unmasked, hidden_states_masked], dim=-2) # B, N, P, d - reconstruction_full = self.output_layer(self.decoder(hidden_states_full)) # B, N, P, L - - # get reconstructed masked tokens - batch_size, num_nodes, _, _ = reconstruction_full.shape - reconstruction_masked_tokens = reconstruction_full[:, :, len(unmasked_token_index):, :] # B, N, r*P, d - reconstruction_masked_tokens = reconstruction_masked_tokens.view(batch_size, num_nodes, -1).transpose(1, 2) # B, r*P*d, N - - label_full = long_term_history.permute(0, 3, 1, 2).unfold(1, self.patch_size, self.patch_size)[:, :, :, self.selected_feature, :].transpose(1, 2) # B, N, P, L - label_masked_tokens = label_full[:, :, masked_token_index, :].contiguous() # B, N, r*P, d - label_masked_tokens = label_masked_tokens.view(batch_size, num_nodes, -1).transpose(1, 2) # # B, r*P*d, N - - # prepare plot - # note that the output_full and label_full are not aligned. The out_full is shuffled. - # therefore, we need to unshuffle the out_full for better plotting. - unshuffled_index = unshuffle(unmasked_token_index + masked_token_index) - out_full_unshuffled = reconstruction_full[:, :, unshuffled_index, :] - plot_args = {} - plot_args["out_full_unshuffled"] = out_full_unshuffled - plot_args["label_full"] = label_full - plot_args["unmasked_token_index"] = unmasked_token_index - plot_args["masked_token_index"] = masked_token_index - - return reconstruction_masked_tokens, label_masked_tokens, plot_args - - def _forward_backend(self, long_term_history): - """Feed forward process in the forecasting stage. - - Args: - long_term_history (torch.Tensor): Very long-term historical MTS with shape [B, P * L, N, C], - which is used in the TSFormer. - P is the number of segments (patches). - - Returns: - torch.Tensor: the output of TSFormer of the encoder with shape [B, N, L, d]. - """ - - # get patches and exec input embedding - patches = self.patch(long_term_history) # B, N, d, L - patches = patches.transpose(-1, -2) # B, N, L, d - # positional embedding - patches = self.pe(patches) - - encoder_input = patches # no mask when running the backend. - - # encoder - hidden_states = self.encoder(encoder_input) # B, N, L, d - return hidden_states - - def forward(self, input_data): - """feed forward of the TSFormer. - TSFormer has two modes: the pre-training mode and the forecasting mode, - which are used in the pre-training stage and the forecasting stage, respectively. - - Args: - input_data (torch.Tensor): very long-term historical time series with shape B, N, 1, L * P. - - Returns: - pre-training: - torch.Tensor: the reconstruction of the masked tokens. Shape [B, L * P * r, N] - torch.Tensor: the ground truth of the masked tokens. Shape [B, L * P * r, N] - dict: data for plotting. - forecasting: - torch.Tensor: the output of TSFormer of the encoder with shape [B, N, L, d]. - """ - if self.mode == "Pretrain": - return self._forward_pre_train(input_data) - else: - return self._forward_backend(input_data) diff --git a/models/tsformer/positional_encoding.py b/models/tsformer/positional_encoding.py deleted file mode 100644 index 1fdf27c..0000000 --- a/models/tsformer/positional_encoding.py +++ /dev/null @@ -1,55 +0,0 @@ -import torch -from torch import nn - -class LearnableTemporalPositionalEncoding(nn.Module): - """Learnable positional encoding.""" - - def __init__(self, d_model, dropout=0.1, max_len: int = 1000): - super().__init__() - self.dropout = nn.Dropout(p=dropout) - self.pe = nn.Parameter(torch.empty(max_len, d_model), requires_grad=True) - nn.init.uniform_(self.pe, -0.02, 0.02) - - def forward(self, input_data, index): - """Positional encoding. - - Args: - input_data (torch.tensor): input sequence with shape [B*N, P, d]. - index (list or None): add positional embedding by index. - - Returns: - torch.tensor: output sequence - """ - - if index is None: - pe = self.pe[:input_data.size(1), :].unsqueeze(0) - else: - pe = self.pe[index].unsqueeze(0) - input_data = input_data + pe - input_data = self.dropout(input_data) - return input_data - -class PositionalEncoding(nn.Module): - """Positional encoding.""" - - def __init__(self, hidden_dim, dropout=0.1): - super().__init__() - self.tem_pe = LearnableTemporalPositionalEncoding(hidden_dim, dropout) - - def forward(self, input_data, index=None, abs_idx=None): - """Positional encoding - - Args: - input_data (torch.tensor): input sequence with shape [B, N, P, d]. - index (list or None): add positional embedding by index. - - Returns: - torch.tensor: output sequence - """ - - batch_size, num_nodes, num_patches, num_feat = input_data.shape - # temporal embedding - input_data = self.tem_pe(input_data.view(batch_size*num_nodes, num_patches, num_feat), index=index) - input_data = input_data.view(batch_size, num_nodes, num_patches, num_feat) - # absolute positional embedding - return input_data diff --git a/scripts/data_preparation/METR-LA/generate_training_data.py b/scripts/data_preparation/METR-LA/generate_training_data.py new file mode 100644 index 0000000..73e5f14 --- /dev/null +++ b/scripts/data_preparation/METR-LA/generate_training_data.py @@ -0,0 +1,152 @@ +import os +import sys +import shutil +import pickle +import argparse + +import numpy as np +import pandas as pd + +# TODO: remove it when basicts can be installed by pip +sys.path.append(os.path.abspath(__file__ + "/../../../..")) +from basicts.data.transform import standard_transform + + +def generate_data(args: argparse.Namespace): + """Preprocess and generate train/valid/test datasets. + Default settings of METR-LA dataset: + - Normalization method: standard norm. + - Dataset division: 7:1:2. + - Window size: history 12, future 12. + - Channels (features): three channels [traffic speed, time of day, day of week] + - Target: predict the traffic speed of the future 12 time steps. + + Args: + args (argparse): configurations of preprocessing + """ + + target_channel = args.target_channel + future_seq_len = args.future_seq_len + history_seq_len = args.history_seq_len + add_time_of_day = args.tod + add_day_of_week = args.dow + output_dir = args.output_dir + train_ratio = args.train_ratio + valid_ratio = args.valid_ratio + data_file_path = args.data_file_path + graph_file_path = args.graph_file_path + + # read data + df = pd.read_hdf(data_file_path) + data = np.expand_dims(df.values, axis=-1) + + data = data[..., target_channel] + print("raw time series shape: {0}".format(data.shape)) + + l, n, f = data.shape + num_samples = l - (history_seq_len + future_seq_len) + 1 + # keep same number of validation and test samples with Graph WaveNet (input 12, output 12) + test_num_short = 6850 + valid_num_short = 3425 + train_num_short = num_samples - valid_num_short - test_num_short + # train_num_short = round(num_samples * train_ratio) + # valid_num_short = round(num_samples * valid_ratio) + # test_num_short = num_samples - train_num_short - valid_num_short + print("number of training samples:{0}".format(train_num_short)) + print("number of validation samples:{0}".format(valid_num_short)) + print("number of test samples:{0}".format(test_num_short)) + + index_list = [] + for t in range(history_seq_len, num_samples + history_seq_len): + index = (t-history_seq_len, t, t+future_seq_len) + index_list.append(index) + + train_index = index_list[:train_num_short] + valid_index = index_list[train_num_short: train_num_short + valid_num_short] + test_index = index_list[train_num_short + + valid_num_short: train_num_short + valid_num_short + test_num_short] + + scaler = standard_transform + data_norm = scaler(data, output_dir, train_index, history_seq_len, future_seq_len) + + # add external feature + feature_list = [data_norm] + if add_time_of_day: + # numerical time_of_day + tod = ( + df.index.values - df.index.values.astype("datetime64[D]")) / np.timedelta64(1, "D") + tod_tiled = np.tile(tod, [1, n, 1]).transpose((2, 1, 0)) + feature_list.append(tod_tiled) + + if add_day_of_week: + # numerical day_of_week + dow = df.index.dayofweek + dow_tiled = np.tile(dow, [1, n, 1]).transpose((2, 1, 0)) + feature_list.append(dow_tiled) + + processed_data = np.concatenate(feature_list, axis=-1) + + # dump data + index = {} + index["train"] = train_index + index["valid"] = valid_index + index["test"] = test_index + with open(output_dir + "/index_in{0}_out{1}.pkl".format(history_seq_len, future_seq_len), "wb") as f: + pickle.dump(index, f) + + data = {} + data["processed_data"] = processed_data + with open(output_dir + "/data_in{0}_out{1}.pkl".format(history_seq_len, future_seq_len), "wb") as f: + pickle.dump(data, f) + # copy adj + shutil.copyfile(graph_file_path, output_dir + "/adj_mx.pkl") + + +if __name__ == "__main__": + # sliding window size for generating history sequence and target sequence + HISTORY_SEQ_LEN = 2016 + FUTURE_SEQ_LEN = 12 + + TRAIN_RATIO = 0.7 + VALID_RATIO = 0.1 + TARGET_CHANNEL = [0] # target channel(s) + + DATASET_NAME = "METR-LA" + TOD = True # if add time_of_day feature + DOW = True # if add day_of_week feature + OUTPUT_DIR = "datasets/" + DATASET_NAME + DATA_FILE_PATH = "datasets/raw_data/{0}/{0}.h5".format(DATASET_NAME) + GRAPH_FILE_PATH = "datasets/raw_data/{0}/adj_{0}.pkl".format(DATASET_NAME) + + parser = argparse.ArgumentParser() + parser.add_argument("--output_dir", type=str, + default=OUTPUT_DIR, help="Output directory.") + parser.add_argument("--data_file_path", type=str, + default=DATA_FILE_PATH, help="Raw traffic readings.") + parser.add_argument("--graph_file_path", type=str, + default=GRAPH_FILE_PATH, help="Raw traffic readings.") + parser.add_argument("--history_seq_len", type=int, + default=HISTORY_SEQ_LEN, help="Sequence Length.") + parser.add_argument("--future_seq_len", type=int, + default=FUTURE_SEQ_LEN, help="Sequence Length.") + parser.add_argument("--tod", type=bool, default=TOD, + help="Add feature time_of_day.") + parser.add_argument("--dow", type=bool, default=DOW, + help="Add feature day_of_week.") + parser.add_argument("--target_channel", type=list, + default=TARGET_CHANNEL, help="Selected channels.") + parser.add_argument("--train_ratio", type=float, + default=TRAIN_RATIO, help="Train ratio") + parser.add_argument("--valid_ratio", type=float, + default=VALID_RATIO, help="Validate ratio.") + args_metr = parser.parse_args() + + # print args + print("-"*(20+45+5)) + for key, value in sorted(vars(args_metr).items()): + print("|{0:>20} = {1:<45}|".format(key, str(value))) + print("-"*(20+45+5)) + + if not os.path.exists(args_metr.output_dir): + os.makedirs(args_metr.output_dir) + generate_data(args_metr) diff --git a/scripts/data_preparation/PEMS-BAY/generate_training_data.py b/scripts/data_preparation/PEMS-BAY/generate_training_data.py new file mode 100644 index 0000000..d1468eb --- /dev/null +++ b/scripts/data_preparation/PEMS-BAY/generate_training_data.py @@ -0,0 +1,152 @@ +import os +import sys +import shutil +import pickle +import argparse + +import numpy as np +import pandas as pd + +# TODO: remove it when basicts can be installed by pip +sys.path.append(os.path.abspath(__file__ + "/../../../..")) +from basicts.data.transform import standard_transform + + +def generate_data(args: argparse.Namespace): + """Preprocess and generate train/valid/test datasets. + Default settings of PEMS-BAY dataset: + - Normalization method: standard norm. + - Dataset division: 7:1:2. + - Window size: history 12, future 12. + - Channels (features): three channels [traffic speed, time of day, day of week] + - Target: predict the traffic speed of the future 12 time steps. + + Args: + args (argparse): configurations of preprocessing + """ + + target_channel = args.target_channel + future_seq_len = args.future_seq_len + history_seq_len = args.history_seq_len + add_time_of_day = args.tod + add_day_of_week = args.dow + output_dir = args.output_dir + train_ratio = args.train_ratio + valid_ratio = args.valid_ratio + data_file_path = args.data_file_path + graph_file_path = args.graph_file_path + + # read data + df = pd.read_hdf(data_file_path) + data = np.expand_dims(df.values, axis=-1) + + data = data[..., target_channel] + print("raw time series shape: {0}".format(data.shape)) + + l, n, f = data.shape + num_samples = l - (history_seq_len + future_seq_len) + 1 + # keep same number of validation and test samples with Graph WaveNet (input 12, output 12) + test_num_short = 10419 + valid_num_short = 5209 + train_num_short = num_samples - valid_num_short - test_num_short + # train_num_short = round(num_samples * train_ratio) + # valid_num_short = round(num_samples * valid_ratio) + # test_num_short = num_samples - train_num_short - valid_num_short + print("number of training samples:{0}".format(train_num_short)) + print("number of validation samples:{0}".format(valid_num_short)) + print("number of test samples:{0}".format(test_num_short)) + + index_list = [] + for t in range(history_seq_len, num_samples + history_seq_len): + index = (t-history_seq_len, t, t+future_seq_len) + index_list.append(index) + + train_index = index_list[:train_num_short] + valid_index = index_list[train_num_short: train_num_short + valid_num_short] + test_index = index_list[train_num_short + + valid_num_short: train_num_short + valid_num_short + test_num_short] + + scaler = standard_transform + data_norm = scaler(data, output_dir, train_index, history_seq_len, future_seq_len) + + # add external feature + feature_list = [data_norm] + if add_time_of_day: + # numerical time_of_day + tod = ( + df.index.values - df.index.values.astype("datetime64[D]")) / np.timedelta64(1, "D") + tod_tiled = np.tile(tod, [1, n, 1]).transpose((2, 1, 0)) + feature_list.append(tod_tiled) + + if add_day_of_week: + # numerical day_of_week + dow = df.index.dayofweek + dow_tiled = np.tile(dow, [1, n, 1]).transpose((2, 1, 0)) + feature_list.append(dow_tiled) + + processed_data = np.concatenate(feature_list, axis=-1) + + # dump data + index = {} + index["train"] = train_index + index["valid"] = valid_index + index["test"] = test_index + with open(output_dir + "/index_in{0}_out{1}.pkl".format(history_seq_len, future_seq_len), "wb") as f: + pickle.dump(index, f) + + data = {} + data["processed_data"] = processed_data + with open(output_dir + "/data_in{0}_out{1}.pkl".format(history_seq_len, future_seq_len), "wb") as f: + pickle.dump(data, f) + # copy adj + shutil.copyfile(graph_file_path, output_dir + "/adj_mx.pkl") + + +if __name__ == "__main__": + # sliding window size for generating history sequence and target sequence + HISTORY_SEQ_LEN = 2016 + FUTURE_SEQ_LEN = 12 + + TRAIN_RATIO = 0.7 + VALID_RATIO = 0.1 + TARGET_CHANNEL = [0] # target channel(s) + + DATASET_NAME = "PEMS-BAY" + TOD = True # if add time_of_day feature + DOW = True # if add day_of_week feature + OUTPUT_DIR = "datasets/" + DATASET_NAME + DATA_FILE_PATH = "datasets/raw_data/{0}/{0}.h5".format(DATASET_NAME) + GRAPH_FILE_PATH = "datasets/raw_data/{0}/adj_{0}.pkl".format(DATASET_NAME) + + parser = argparse.ArgumentParser() + parser.add_argument("--output_dir", type=str, + default=OUTPUT_DIR, help="Output directory.") + parser.add_argument("--data_file_path", type=str, + default=DATA_FILE_PATH, help="Raw traffic readings.") + parser.add_argument("--graph_file_path", type=str, + default=GRAPH_FILE_PATH, help="Raw traffic readings.") + parser.add_argument("--history_seq_len", type=int, + default=HISTORY_SEQ_LEN, help="Sequence Length.") + parser.add_argument("--future_seq_len", type=int, + default=FUTURE_SEQ_LEN, help="Sequence Length.") + parser.add_argument("--tod", type=bool, default=TOD, + help="Add feature time_of_day.") + parser.add_argument("--dow", type=bool, default=DOW, + help="Add feature day_of_week.") + parser.add_argument("--target_channel", type=list, + default=TARGET_CHANNEL, help="Selected channels.") + parser.add_argument("--train_ratio", type=float, + default=TRAIN_RATIO, help="Train ratio") + parser.add_argument("--valid_ratio", type=float, + default=VALID_RATIO, help="Validate ratio.") + args_metr = parser.parse_args() + + # print args + print("-"*(20+45+5)) + for key, value in sorted(vars(args_metr).items()): + print("|{0:>20} = {1:<45}|".format(key, str(value))) + print("-"*(20+45+5)) + + if not os.path.exists(args_metr.output_dir): + os.makedirs(args_metr.output_dir) + generate_data(args_metr) diff --git a/scripts/data_preparation/PEMS04/generate_adj_mx.py b/scripts/data_preparation/PEMS04/generate_adj_mx.py new file mode 100644 index 0000000..47d97ff --- /dev/null +++ b/scripts/data_preparation/PEMS04/generate_adj_mx.py @@ -0,0 +1,84 @@ +import os +import csv +import pickle + +import numpy as np + + +def get_adjacency_matrix(distance_df_filename: str, num_of_vertices: int, id_filename: str = None) -> tuple: + """Generate adjacency matrix. + + Args: + distance_df_filename (str): path of the csv file contains edges information + num_of_vertices (int): number of vertices + id_filename (str, optional): id filename. Defaults to None. + + Returns: + tuple: two adjacency matrix. + np.array: connectivity-based adjacency matrix A (A[i, j]=0 or A[i, j]=1) + np.array: distance-based adjacency matrix A + """ + + if "npy" in distance_df_filename: + adj_mx = np.load(distance_df_filename) + return adj_mx, None + else: + adjacency_matrix_connectivity = np.zeros((int(num_of_vertices), int( + num_of_vertices)), dtype=np.float32) + adjacency_matrix_distance = np.zeros((int(num_of_vertices), int(num_of_vertices)), + dtype=np.float32) + if id_filename: + # the id in the distance file does not start from 0, so it needs to be remapped + with open(id_filename, "r") as f: + id_dict = {int(i): idx for idx, i in enumerate( + f.read().strip().split("\n"))} # map node idx to 0-based index (start from 0) + with open(distance_df_filename, "r") as f: + f.readline() # omit the first line + reader = csv.reader(f) + for row in reader: + if len(row) != 3: + continue + i, j, distance = int(row[0]), int(row[1]), float(row[2]) + adjacency_matrix_connectivity[id_dict[i], id_dict[j]] = 1 + adjacency_matrix_connectivity[id_dict[j], id_dict[i]] = 1 + adjacency_matrix_distance[id_dict[i], + id_dict[j]] = distance + adjacency_matrix_distance[id_dict[j], + id_dict[i]] = distance + return adjacency_matrix_connectivity, adjacency_matrix_distance + else: + # ids in distance file start from 0 + with open(distance_df_filename, "r") as f: + f.readline() + reader = csv.reader(f) + for row in reader: + if len(row) != 3: + continue + i, j, distance = int(row[0]), int(row[1]), float(row[2]) + adjacency_matrix_connectivity[i, j] = 1 + adjacency_matrix_connectivity[j, i] = 1 + adjacency_matrix_distance[i, j] = distance + adjacency_matrix_distance[j, i] = distance + return adjacency_matrix_connectivity, adjacency_matrix_distance + + +def generate_adj_pems04(): + distance_df_filename, num_of_vertices = "datasets/raw_data/PEMS04/PEMS04.csv", 307 + if os.path.exists(distance_df_filename.split(".", maxsplit=1)[0] + ".txt"): + id_filename = distance_df_filename.split(".", maxsplit=1)[0] + ".txt" + else: + id_filename = None + adj_mx, distance_mx = get_adjacency_matrix( + distance_df_filename, num_of_vertices, id_filename=id_filename) + # the self loop is missing + add_self_loop = False + if add_self_loop: + print("adding self loop to adjacency matrices.") + adj_mx = adj_mx + np.identity(adj_mx.shape[0]) + distance_mx = distance_mx + np.identity(distance_mx.shape[0]) + else: + print("kindly note that there is no self loop in adjacency matrices.") + with open("datasets/raw_data/PEMS04/adj_PEMS04.pkl", "wb") as f: + pickle.dump(adj_mx, f) + with open("datasets/raw_data/PEMS04/adj_PEMS04_distance.pkl", "wb") as f: + pickle.dump(distance_mx, f) diff --git a/scripts/data_preparation/PEMS04/generate_training_data.py b/scripts/data_preparation/PEMS04/generate_training_data.py new file mode 100644 index 0000000..9445175 --- /dev/null +++ b/scripts/data_preparation/PEMS04/generate_training_data.py @@ -0,0 +1,162 @@ +import os +import sys +import shutil +import pickle +import argparse + +import numpy as np + +from generate_adj_mx import generate_adj_pems04 +# TODO: remove it when basicts can be installed by pip +sys.path.append(os.path.abspath(__file__ + "/../../../..")) +from basicts.data.transform import standard_transform + + +def generate_data(args: argparse.Namespace): + """Preprocess and generate train/valid/test datasets. + Default settings of PEMS04 dataset: + - Normalization method: standard norm. + - Dataset division: 6:2:2. + - Window size: history 12, future 12. + - Channels (features): three channels [traffic flow, time of day, day of week] + - Target: predict the traffic speed of the future 12 time steps. + + Args: + args (argparse): configurations of preprocessing + """ + + target_channel = args.target_channel + future_seq_len = args.future_seq_len + history_seq_len = args.history_seq_len + add_time_of_day = args.tod + add_day_of_week = args.dow + output_dir = args.output_dir + train_ratio = args.train_ratio + valid_ratio = args.valid_ratio + data_file_path = args.data_file_path + graph_file_path = args.graph_file_path + steps_per_day = args.steps_per_day + + # read data + data = np.load(data_file_path)["data"] + data = data[..., target_channel] + print("raw time series shape: {0}".format(data.shape)) + + l, n, f = data.shape + num_samples = l - (history_seq_len + future_seq_len) + 1 + # keep same number of validation and test samples with Graph WaveNet (input 12, output 12) + test_num_short = 3394 + valid_num_short = 3394 + train_num_short = num_samples - valid_num_short - test_num_short + # train_num_short = round(num_samples * train_ratio) + # valid_num_short = round(num_samples * valid_ratio) + # test_num_short = num_samples - train_num_short - valid_num_short + print("number of training samples:{0}".format(train_num_short)) + print("number of validation samples:{0}".format(valid_num_short)) + print("number of test samples:{0}".format(test_num_short)) + + index_list = [] + for t in range(history_seq_len, num_samples + history_seq_len): + index = (t-history_seq_len, t, t+future_seq_len) + index_list.append(index) + + train_index = index_list[:train_num_short] + valid_index = index_list[train_num_short: train_num_short + valid_num_short] + test_index = index_list[train_num_short + + valid_num_short: train_num_short + valid_num_short + test_num_short] + + scaler = standard_transform + data_norm = scaler(data, output_dir, train_index, history_seq_len, future_seq_len) + + # add external feature + feature_list = [data_norm] + if add_time_of_day: + # numerical time_of_day + tod = [i % steps_per_day / + steps_per_day for i in range(data_norm.shape[0])] + tod = np.array(tod) + tod_tiled = np.tile(tod, [1, n, 1]).transpose((2, 1, 0)) + feature_list.append(tod_tiled) + + if add_day_of_week: + # numerical day_of_week + dow = [(i // steps_per_day) % 7 for i in range(data_norm.shape[0])] + dow = np.array(dow) + dow_tiled = np.tile(dow, [1, n, 1]).transpose((2, 1, 0)) + feature_list.append(dow_tiled) + + processed_data = np.concatenate(feature_list, axis=-1) + + # dump data + index = {} + index["train"] = train_index + index["valid"] = valid_index + index["test"] = test_index + with open(output_dir + "/index_in{0}_out{1}.pkl".format(history_seq_len, future_seq_len), "wb") as f: + pickle.dump(index, f) + + data = {} + data["processed_data"] = processed_data + with open(output_dir + "/data_in{0}_out{1}.pkl".format(history_seq_len, future_seq_len), "wb") as f: + pickle.dump(data, f) + # copy adj + if os.path.exists(args.graph_file_path): + # copy + shutil.copyfile(args.graph_file_path, output_dir + "/adj_mx.pkl") + else: + # generate and copy + generate_adj_pems04() + shutil.copyfile(graph_file_path, output_dir + "/adj_mx.pkl") + + +if __name__ == "__main__": + # sliding window size for generating history sequence and target sequence + HISTORY_SEQ_LEN = 288 * 7 * 2 + FUTURE_SEQ_LEN = 12 + + TRAIN_RATIO = 0.6 + VALID_RATIO = 0.2 + TARGET_CHANNEL = [0] # target channel(s) + STEPS_PER_DAY = 288 + + DATASET_NAME = "PEMS04" + TOD = True # if add time_of_day feature + DOW = True # if add day_of_week feature + OUTPUT_DIR = "datasets/" + DATASET_NAME + DATA_FILE_PATH = "datasets/raw_data/{0}/{0}.npz".format(DATASET_NAME) + GRAPH_FILE_PATH = "datasets/raw_data/{0}/adj_{0}.pkl".format(DATASET_NAME) + + parser = argparse.ArgumentParser() + parser.add_argument("--output_dir", type=str, + default=OUTPUT_DIR, help="Output directory.") + parser.add_argument("--data_file_path", type=str, + default=DATA_FILE_PATH, help="Raw traffic readings.") + parser.add_argument("--graph_file_path", type=str, + default=GRAPH_FILE_PATH, help="Raw traffic readings.") + parser.add_argument("--history_seq_len", type=int, + default=HISTORY_SEQ_LEN, help="Sequence Length.") + parser.add_argument("--future_seq_len", type=int, + default=FUTURE_SEQ_LEN, help="Sequence Length.") + parser.add_argument("--steps_per_day", type=int, + default=STEPS_PER_DAY, help="Sequence Length.") + parser.add_argument("--tod", type=bool, default=TOD, + help="Add feature time_of_day.") + parser.add_argument("--dow", type=bool, default=DOW, + help="Add feature day_of_week.") + parser.add_argument("--target_channel", type=list, + default=TARGET_CHANNEL, help="Selected channels.") + parser.add_argument("--train_ratio", type=float, + default=TRAIN_RATIO, help="Train ratio") + parser.add_argument("--valid_ratio", type=float, + default=VALID_RATIO, help="Validate ratio.") + args_metr = parser.parse_args() + + # print args + print("-"*(20+45+5)) + for key, value in sorted(vars(args_metr).items()): + print("|{0:>20} = {1:<45}|".format(key, str(value))) + print("-"*(20+45+5)) + + if not os.path.exists(args_metr.output_dir): + os.makedirs(args_metr.output_dir) + generate_data(args_metr) diff --git a/scripts/data_preparation/all.sh b/scripts/data_preparation/all.sh new file mode 100755 index 0000000..782de87 --- /dev/null +++ b/scripts/data_preparation/all.sh @@ -0,0 +1,8 @@ +#!/bin/bash +python scripts/data_preparation/METR-LA/generate_training_data.py --history_seq_len 12 +python scripts/data_preparation/METR-LA/generate_training_data.py --history_seq_len 2016 +python scripts/data_preparation/PEMS-BAY/generate_training_data.py --history_seq_len 12 +python scripts/data_preparation/PEMS-BAY/generate_training_data.py --history_seq_len 2016 +python scripts/data_preparation/PEMS04/generate_training_data.py --history_seq_len 12 +python scripts/data_preparation/PEMS04/generate_training_data.py --history_seq_len 4032 + diff --git a/step/STEP_METR-LA.py b/step/STEP_METR-LA.py new file mode 100644 index 0000000..ad47b20 --- /dev/null +++ b/step/STEP_METR-LA.py @@ -0,0 +1,156 @@ +import os +import sys + + +# TODO: remove it when basicts can be installed by pip +sys.path.append(os.path.abspath(__file__ + "/../../..")) +import torch +from easydict import EasyDict +from basicts.utils.serialization import load_adj + +from .step_arch import STEP +from .step_runner import STEPRunner +from .step_loss import step_loss +from .step_data import ForecastingDataset + + +CFG = EasyDict() + +# ================= general ================= # +CFG.DESCRIPTION = "STEP(METR-LA) configuration" +CFG.RUNNER = STEPRunner +CFG.DATASET_CLS = ForecastingDataset +CFG.DATASET_NAME = "METR-LA" +CFG.DATASET_TYPE = "Traffic speed" +CFG.DATASET_INPUT_LEN = 12 +CFG.DATASET_OUTPUT_LEN = 12 +CFG.DATASET_ARGS = { + "seq_len": 288 * 7 + } +CFG.GPU_NUM = 1 + +# ================= environment ================= # +CFG.ENV = EasyDict() +CFG.ENV.SEED = 0 +CFG.ENV.CUDNN = EasyDict() +CFG.ENV.CUDNN.ENABLED = True + +# ================= model ================= # +CFG.MODEL = EasyDict() +CFG.MODEL.NAME = "STEP" +CFG.MODEL.ARCH = STEP +adj_mx, _ = load_adj("datasets/" + CFG.DATASET_NAME + "/adj_mx.pkl", "doubletransition") +CFG.MODEL.PARAM = { + "dataset_name": CFG.DATASET_NAME, + "pre_trained_tsformer_path": "checkpoints/TSFormer_100/9d41dcdd120ddfa470db3dd4eaf682a5/TSFormer_best_val_MAE.pt", + "tsformer_args": { + "patch_size":12, + "in_channel":1, + "embed_dim":96, + "num_heads":4, + "mlp_ratio":4, + "dropout":0.1, + "num_token":288 * 7 / 12, + "mask_ratio":0.75, + "encoder_depth":4, + "decoder_depth":1, + "mode":"forecasting" + }, + "backend_args": { + "num_nodes" : 207, + "supports" :[torch.tensor(i) for i in adj_mx], # the supports are not used + "dropout" : 0.3, + "gcn_bool" : True, + "addaptadj" : True, + "aptinit" : None, + "in_dim" : 2, + "out_dim" : 12, + "residual_channels" : 32, + "dilation_channels" : 32, + "skip_channels" : 256, + "end_channels" : 512, + "kernel_size" : 2, + "blocks" : 4, + "layers" : 2 + }, + "dgl_args": { + "dataset_name": CFG.DATASET_NAME, + "k": 10, + "input_seq_len": CFG.DATASET_INPUT_LEN, + "output_seq_len": CFG.DATASET_OUTPUT_LEN + } +} +CFG.MODEL.FROWARD_FEATURES = [0, 1, 2] +CFG.MODEL.TARGET_FEATURES = [0] + +# ================= optim ================= # +CFG.TRAIN = EasyDict() +CFG.TRAIN.LOSS = step_loss +CFG.TRAIN.OPTIM = EasyDict() +CFG.TRAIN.OPTIM.TYPE = "Adam" +CFG.TRAIN.OPTIM.PARAM= { + "lr":0.005, + "weight_decay":1.0e-5, + "eps":1.0e-8, +} +CFG.TRAIN.LR_SCHEDULER = EasyDict() +CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" +CFG.TRAIN.LR_SCHEDULER.PARAM= { + "milestones":[1, 18, 36, 54, 72], + "gamma":0.5 +} + +# ================= train ================= # +CFG.TRAIN.CLIP_GRAD_PARAM = { + "max_norm": 3.0 +} +CFG.TRAIN.NUM_EPOCHS = 100 +CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( + "checkpoints", + "_".join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) +) +# train data +CFG.TRAIN.DATA = EasyDict() +CFG.TRAIN.NULL_VAL = 0.0 +# read data +CFG.TRAIN.DATA.DIR = "datasets/" + CFG.DATASET_NAME +# dataloader args, optional +CFG.TRAIN.DATA.BATCH_SIZE = 32 +CFG.TRAIN.DATA.PREFETCH = False +CFG.TRAIN.DATA.SHUFFLE = True +CFG.TRAIN.DATA.NUM_WORKERS = 2 +CFG.TRAIN.DATA.PIN_MEMORY = True +# curriculum learning +CFG.TRAIN.CL = EasyDict() +CFG.TRAIN.CL.WARM_EPOCHS = 0 +CFG.TRAIN.CL.CL_EPOCHS = 6 +CFG.TRAIN.CL.PREDICTION_LENGTH = 12 + +# ================= validate ================= # +CFG.VAL = EasyDict() +CFG.VAL.INTERVAL = 1 +# validating data +CFG.VAL.DATA = EasyDict() +# read data +CFG.VAL.DATA.DIR = "datasets/" + CFG.DATASET_NAME +# dataloader args, optional +CFG.VAL.DATA.BATCH_SIZE = 32 +CFG.VAL.DATA.PREFETCH = False +CFG.VAL.DATA.SHUFFLE = False +CFG.VAL.DATA.NUM_WORKERS = 2 +CFG.VAL.DATA.PIN_MEMORY = True + +# ================= test ================= # +CFG.TEST = EasyDict() +CFG.TEST.INTERVAL = 1 +# evluation +# test data +CFG.TEST.DATA = EasyDict() +# read data +CFG.TEST.DATA.DIR = "datasets/" + CFG.DATASET_NAME +# dataloader args, optional +CFG.TEST.DATA.BATCH_SIZE = 32 +CFG.TEST.DATA.PREFETCH = False +CFG.TEST.DATA.SHUFFLE = False +CFG.TEST.DATA.NUM_WORKERS = 2 +CFG.TEST.DATA.PIN_MEMORY = True diff --git a/step/TSFormer_METR-LA.py b/step/TSFormer_METR-LA.py new file mode 100644 index 0000000..9fe4879 --- /dev/null +++ b/step/TSFormer_METR-LA.py @@ -0,0 +1,118 @@ +import os +import sys + +# TODO: remove it when basicts can be installed by pip +sys.path.append(os.path.abspath(__file__ + "/../../..")) +from easydict import EasyDict +from basicts.losses import masked_mae + +from .step_arch import TSFormer +from .step_runner import TSFormerRunner +from .step_data import PretrainingDataset + + +CFG = EasyDict() + +# ================= general ================= # +CFG.DESCRIPTION = "TSFormer(METR-LA) configuration" +CFG.RUNNER = TSFormerRunner +CFG.DATASET_CLS = PretrainingDataset +CFG.DATASET_NAME = "METR-LA" +CFG.DATASET_TYPE = "Traffic speed" +CFG.DATASET_INPUT_LEN = 288 * 7 +CFG.DATASET_OUTPUT_LEN = 12 +CFG.GPU_NUM = 1 + +# ================= environment ================= # +CFG.ENV = EasyDict() +CFG.ENV.SEED = 0 +CFG.ENV.CUDNN = EasyDict() +CFG.ENV.CUDNN.ENABLED = True + +# ================= model ================= # +CFG.MODEL = EasyDict() +CFG.MODEL.NAME = "TSFormer" +CFG.MODEL.ARCH = TSFormer +CFG.MODEL.PARAM = { + "patch_size":12, + "in_channel":1, + "embed_dim":96, + "num_heads":4, + "mlp_ratio":4, + "dropout":0.1, + "num_token":288 * 7 / 12, + "mask_ratio":0.75, + "encoder_depth":4, + "decoder_depth":1, + "mode":"pre-train" +} +CFG.MODEL.FROWARD_FEATURES = [0] +CFG.MODEL.TARGET_FEATURES = [0] + +# ================= optim ================= # +CFG.TRAIN = EasyDict() +CFG.TRAIN.LOSS = masked_mae +CFG.TRAIN.OPTIM = EasyDict() +CFG.TRAIN.OPTIM.TYPE = "Adam" +CFG.TRAIN.OPTIM.PARAM= { + "lr":0.0005, + "weight_decay":0, + "eps":1.0e-8, + "betas":(0.9, 0.95) +} +CFG.TRAIN.LR_SCHEDULER = EasyDict() +CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" +CFG.TRAIN.LR_SCHEDULER.PARAM= { + "milestones":[50], + "gamma":0.5 +} + +# ================= train ================= # +CFG.TRAIN.CLIP_GRAD_PARAM = { + "max_norm": 5.0 +} +CFG.TRAIN.NUM_EPOCHS = 100 +CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( + "checkpoints", + "_".join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) +) +# train data +CFG.TRAIN.DATA = EasyDict() +CFG.TRAIN.NULL_VAL = 0.0 +# read data +CFG.TRAIN.DATA.DIR = "datasets/" + CFG.DATASET_NAME +# dataloader args, optional +CFG.TRAIN.DATA.BATCH_SIZE = 8 +CFG.TRAIN.DATA.PREFETCH = False +CFG.TRAIN.DATA.SHUFFLE = True +CFG.TRAIN.DATA.NUM_WORKERS = 2 +CFG.TRAIN.DATA.PIN_MEMORY = True + +# ================= validate ================= # +CFG.VAL = EasyDict() +CFG.VAL.INTERVAL = 1 +# validating data +CFG.VAL.DATA = EasyDict() +# read data +CFG.VAL.DATA.DIR = "datasets/" + CFG.DATASET_NAME +# dataloader args, optional +CFG.VAL.DATA.BATCH_SIZE = 8 +CFG.VAL.DATA.PREFETCH = False +CFG.VAL.DATA.SHUFFLE = False +CFG.VAL.DATA.NUM_WORKERS = 2 +CFG.VAL.DATA.PIN_MEMORY = True + +# ================= test ================= # +CFG.TEST = EasyDict() +CFG.TEST.INTERVAL = 1 +# evluation +# test data +CFG.TEST.DATA = EasyDict() +# read data +CFG.TEST.DATA.DIR = "datasets/" + CFG.DATASET_NAME +# dataloader args, optional +CFG.TEST.DATA.BATCH_SIZE = 8 +CFG.TEST.DATA.PREFETCH = False +CFG.TEST.DATA.SHUFFLE = False +CFG.TEST.DATA.NUM_WORKERS = 2 +CFG.TEST.DATA.PIN_MEMORY = True diff --git a/step/run.py b/step/run.py new file mode 100644 index 0000000..8f86f6a --- /dev/null +++ b/step/run.py @@ -0,0 +1,20 @@ +import os +import sys +from argparse import ArgumentParser + +# TODO: remove it when basicts can be installed by pip +sys.path.append(os.path.abspath(__file__ + "/../..")) +from basicts import launch_training + + +def parse_args(): + parser = ArgumentParser(description="Run time series forecasting model in BasicTS framework!") + parser.add_argument("-c", "--cfg", default="examples/STEP/TSFormer_METR-LA.py", help="training config") + # parser.add_argument("-c", "--cfg", default="examples/STEP/STEP_METR-LA.py", help="training config") + parser.add_argument("--gpus", default="0", help="visible gpus") + return parser.parse_args() + +if __name__ == "__main__": + args = parse_args() + + launch_training(args.cfg, args.gpus) diff --git a/step/step_arch/__init__.py b/step/step_arch/__init__.py new file mode 100644 index 0000000..9a84218 --- /dev/null +++ b/step/step_arch/__init__.py @@ -0,0 +1,4 @@ +from .step import STEP +from .tsformer import TSFormer + +__all__ = ["TSFormer", "STEP"] diff --git a/models/discrete_graph_learning.py b/step/step_arch/discrete_graph_learning.py similarity index 92% rename from models/discrete_graph_learning.py rename to step/step_arch/discrete_graph_learning.py index f62aa45..559b112 100644 --- a/models/discrete_graph_learning.py +++ b/step/step_arch/discrete_graph_learning.py @@ -3,9 +3,9 @@ import numpy as np from torch import nn import torch.nn.functional as F +from basicts.utils import load_pkl -from utils.log import load_pkl -from utils.Similarity_e import batch_cosine_similarity, batch_dot_similarity +from .similarity import batch_cosine_similarity, batch_dot_similarity def sample_gumbel(shape, eps=1e-20, device=None): @@ -48,17 +48,17 @@ def gumbel_softmax(logits, temperature, hard=False, eps=1e-10): class DiscreteGraphLearning(nn.Module): """Dynamic graph learning module.""" - def __init__(self, cfg): + def __init__(self, dataset_name, k, input_seq_len, output_seq_len): super().__init__() - - self.k = cfg["K"] # the "k" of knn graph - self.num_nodes = {"METR-LA": 207, "PEMS04": 307, "PEMS-BAY": 325}[cfg.DATASET_NAME] - self.train_length = {"METR-LA": 23990, "PEMS04": 13599, "PEMS-BAY": 36482}[cfg.DATASET_NAME] - self.node_feats = torch.from_numpy(load_pkl("datasets/" + cfg.DATASET_NAME + "/data.pkl")).float()[:self.train_length, :, 0] + + self.k = k # the "k" of knn graph + self.num_nodes = {"METR-LA": 207, "PEMS04": 307, "PEMS-BAY": 325}[dataset_name] + self.train_length = {"METR-LA": 23990, "PEMS04": 13599, "PEMS-BAY": 36482}[dataset_name] + self.node_feats = torch.from_numpy(load_pkl("datasets/" + dataset_name + "/data_in{0}_out{1}.pkl".format(input_seq_len, output_seq_len))["processed_data"]).float()[:self.train_length, :, 0] # CNN for global feature extraction ## for the dimension, see https://github.com/zezhishao/STEP/issues/1#issuecomment-1191640023 - self.dim_fc = {"METR-LA": 383552, "PEMS04": 217296, "PEMS-BAY": 217296}[cfg.DATASET_NAME] + self.dim_fc = {"METR-LA": 383552, "PEMS04": 217296, "PEMS-BAY": 217296}[dataset_name] self.embedding_dim = 100 ## network structure self.conv1 = torch.nn.Conv1d(1, 8, 10, stride=1) # .to(device) @@ -70,7 +70,7 @@ def __init__(self, cfg): # FC for transforming the features from TSFormer ## for the dimension, see https://github.com/zezhishao/STEP/issues/1#issuecomment-1191640023 - self.dim_fc_mean = {"METR-LA": 16128, "PEMS04": 16128 * 2, "PEMS-BAY": 16128}[cfg.DATASET_NAME] + self.dim_fc_mean = {"METR-LA": 16128, "PEMS04": 16128 * 2, "PEMS-BAY": 16128}[dataset_name] self.fc_out = nn.Linear((self.embedding_dim) * 2, self.embedding_dim) self.fc_cat = nn.Linear(self.embedding_dim, 2) self.fc_mean = nn.Linear(self.dim_fc_mean, 100) @@ -138,11 +138,11 @@ def forward(self, long_term_history, tsformer): global_feat = global_feat.unsqueeze(0).expand(batch_size, num_nodes, -1) # Gi in Eq. (2) # generate dynamic feature based on TSFormer - hidden_states = tsformer(long_term_history[..., [0]].permute(0, 2, 3, 1)) + hidden_states = tsformer(long_term_history[..., [0]]) dynamic_feat = F.relu(self.fc_mean(hidden_states.reshape(batch_size, num_nodes, -1))) # relu(FC(Hi)) in Eq. (2) # time series feature - node_feat = global_feat + dynamic_feat # Zi in Eq. (2) + node_feat = global_feat # learning discrete graph structure receivers = torch.matmul(self.rel_rec.to(node_feat.device), node_feat) diff --git a/models/graphwavenet/__init__.py b/step/step_arch/graphwavenet/__init__.py similarity index 100% rename from models/graphwavenet/__init__.py rename to step/step_arch/graphwavenet/__init__.py diff --git a/models/graphwavenet/model.py b/step/step_arch/graphwavenet/model.py similarity index 100% rename from models/graphwavenet/model.py rename to step/step_arch/graphwavenet/model.py diff --git a/step/step_arch/similarity.py b/step/step_arch/similarity.py new file mode 100644 index 0000000..11c9968 --- /dev/null +++ b/step/step_arch/similarity.py @@ -0,0 +1,21 @@ +import math + +import torch + + +def batch_cosine_similarity(x, y): + # ่ฎก็ฎ—ๅˆ†ๆฏ + l2_x = torch.norm(x, dim=2, p=2) + 1e-7 # avoid 0, l2 norm, num_heads x batch_size x hidden_dim==>num_heads x batch_size + l2_y = torch.norm(y, dim=2, p=2) + 1e-7 # avoid 0, l2 norm, num_heads x batch_size x hidden_dim==>num_heads x batch_size + l2_m = torch.matmul(l2_x.unsqueeze(dim=2), l2_y.unsqueeze(dim=2).transpose(1, 2)) + # ่ฎก็ฎ—ๅˆ†ๅญ + l2_z = torch.matmul(x, y.transpose(1, 2)) + # cos similarity affinity matrix + cos_affnity = l2_z / l2_m + adj = cos_affnity + return adj + +def batch_dot_similarity(x, y): + QKT = torch.bmm(x, y.transpose(-1, -2)) / math.sqrt(x.shape[2]) + W = torch.softmax(QKT, dim=-1) + return W diff --git a/step/step_arch/step.py b/step/step_arch/step.py new file mode 100644 index 0000000..9d6b122 --- /dev/null +++ b/step/step_arch/step.py @@ -0,0 +1,75 @@ +import torch +from torch import nn + +from .tsformer import TSFormer +from .graphwavenet import GraphWaveNet +from .discrete_graph_learning import DiscreteGraphLearning + + +class STEP(nn.Module): + """Pre-training Enhanced Spatial-temporal Graph Neural Network for Multivariate Time Series Forecasting""" + + def __init__(self, dataset_name, pre_trained_tsformer_path, tsformer_args, backend_args, dgl_args): + super().__init__() + self.dataset_name = dataset_name + self.pre_trained_tsformer_path = pre_trained_tsformer_path + + # tsformer and backend model args + tsformer_args = tsformer_args + backend_args = backend_args + # iniitalize the tsformer and backend models + self.tsformer = TSFormer(**tsformer_args) + self.backend = GraphWaveNet(**backend_args) + + # load pre-trained tsformer + self.load_pre_trained_model() + + # discrete graph learning + self.dynamic_graph_learning = DiscreteGraphLearning(**dgl_args) + + def load_pre_trained_model(self): + """Load pre-trained model""" + + # load parameters + checkpoint_dict = torch.load(self.pre_trained_tsformer_path) + self.tsformer.load_state_dict(checkpoint_dict["model_state_dict"]) + # freeze parameters + for param in self.tsformer.parameters(): + param.requires_grad = False + + def forward(self, history_data: torch.Tensor, long_history_data: torch.Tensor, future_data: torch.Tensor, batch_seen: int, epoch: int, **kwargs) -> torch.Tensor: + """Feed forward of STEP. + + Args: + history_data (torch.Tensor): Short-term historical data. shape: [B, L, N, 3] + long_history_data (torch.Tensor): Long-term historical data. shape: [B, L * P, N, 3] + future_data (torch.Tensor): future data + batch_seen (int): number of batches that have been seen + epoch (int): number of epochs + + Returns: + torch.Tensor: prediction with shape [B, N, L]. + torch.Tensor: the Bernoulli distribution parameters with shape [B, N, N]. + torch.Tensor: the kNN graph with shape [B, N, N], which is used to guide the training of the dependency graph. + """ + + # reshape + short_term_history = history_data # [B, L, N, 1] + long_term_history = long_history_data + + # STEP + batch_size, _, num_nodes, _ = short_term_history.shape + + # discrete graph learning & feed forward of TSFormer + bernoulli_unnorm, hidden_states, adj_knn, sampled_adj = self.dynamic_graph_learning(long_term_history, self.tsformer) + + # enhancing downstream STGNNs + hidden_states = hidden_states[:, :, -1, :] + y_hat = self.backend(short_term_history, hidden_states=hidden_states, sampled_adj=sampled_adj).transpose(1, 2) + + # graph structure loss coefficient + if epoch is not None: + gsl_coefficient = 1 / (int(epoch/6)+1) + else: + gsl_coefficient = 0 + return y_hat.unsqueeze(-1), bernoulli_unnorm.softmax(-1)[..., 0].clone().reshape(batch_size, num_nodes, num_nodes), adj_knn, gsl_coefficient diff --git a/step/step_arch/tsformer/__init__.py b/step/step_arch/tsformer/__init__.py new file mode 100644 index 0000000..370af87 --- /dev/null +++ b/step/step_arch/tsformer/__init__.py @@ -0,0 +1,3 @@ +from .tsformer import TSFormer + +__all__ = ["TSFormer"] diff --git a/models/tsformer/mask.py b/step/step_arch/tsformer/mask.py similarity index 78% rename from models/tsformer/mask.py rename to step/step_arch/tsformer/mask.py index 642abad..0668d59 100644 --- a/models/tsformer/mask.py +++ b/step/step_arch/tsformer/mask.py @@ -5,16 +5,17 @@ class MaskGenerator(nn.Module): """Mask generator.""" - def __init__(self, mask_size, mask_ratio): + + def __init__(self, num_tokens, mask_ratio): super().__init__() - self.mask_size = mask_size + self.num_tokens = num_tokens self.mask_ratio = mask_ratio self.sort = True def uniform_rand(self): - mask = list(range(int(self.mask_size))) + mask = list(range(int(self.num_tokens))) random.shuffle(mask) - mask_len = int(self.mask_size * self.mask_ratio) + mask_len = int(self.num_tokens * self.mask_ratio) self.masked_tokens = mask[:mask_len] self.unmasked_tokens = mask[mask_len:] if self.sort: diff --git a/models/tsformer/patch.py b/step/step_arch/tsformer/patch.py similarity index 61% rename from models/tsformer/patch.py rename to step/step_arch/tsformer/patch.py index 119f6d1..c66f5e0 100644 --- a/models/tsformer/patch.py +++ b/step/step_arch/tsformer/patch.py @@ -1,17 +1,21 @@ from torch import nn -class Patch(nn.Module): +class PatchEmbedding(nn.Module): """Patchify time series.""" - - def __init__(self, patch_size, input_channel, output_channel): + + def __init__(self, patch_size, in_channel, embed_dim, norm_layer): super().__init__() - self.output_channel = output_channel + self.output_channel = embed_dim self.len_patch = patch_size # the L - self.input_channel = input_channel - self.output_channel = output_channel + self.input_channel = in_channel + self.output_channel = embed_dim self.input_embedding = nn.Conv2d( - input_channel, output_channel, kernel_size=(self.len_patch, 1), stride=(self.len_patch, 1)) + in_channel, + embed_dim, + kernel_size=(self.len_patch, 1), + stride=(self.len_patch, 1)) + self.norm_layer = norm_layer if norm_layer is not None else nn.Identity() def forward(self, long_term_history): """ @@ -25,11 +29,14 @@ def forward(self, long_term_history): """ batch_size, num_nodes, num_feat, len_time_series = long_term_history.shape - long_term_history = long_term_history.unsqueeze(-1) # B, N, C, L, 1 + long_term_history = long_term_history.unsqueeze(-1) # B, N, C, L, 1 # B*N, C, L, 1 long_term_history = long_term_history.reshape(batch_size*num_nodes, num_feat, len_time_series, 1) # B*N, d, L/P, 1 output = self.input_embedding(long_term_history) + # norm + output = self.norm_layer(output) + # reshape output = output.squeeze(-1).view(batch_size, num_nodes, self.output_channel, -1) # B, N, d, P assert output.shape[-1] == len_time_series / self.len_patch return output diff --git a/step/step_arch/tsformer/positional_encoding.py b/step/step_arch/tsformer/positional_encoding.py new file mode 100644 index 0000000..6a6867c --- /dev/null +++ b/step/step_arch/tsformer/positional_encoding.py @@ -0,0 +1,35 @@ +import torch +from torch import nn + + +class PositionalEncoding(nn.Module): + """Positional encoding.""" + + def __init__(self, hidden_dim, dropout=0.1, max_len: int = 1000): + super().__init__() + self.dropout = nn.Dropout(p=dropout) + self.position_embedding = nn.Parameter(torch.empty(max_len, hidden_dim), requires_grad=True) + + def forward(self, input_data, index=None, abs_idx=None): + """Positional encoding + + Args: + input_data (torch.tensor): input sequence with shape [B, N, P, d]. + index (list or None): add positional embedding by index. + + Returns: + torch.tensor: output sequence + """ + + batch_size, num_nodes, num_patches, num_feat = input_data.shape + input_data = input_data.view(batch_size*num_nodes, num_patches, num_feat) + # positional encoding + if index is None: + pe = self.position_embedding[:input_data.size(1), :].unsqueeze(0) + else: + pe = self.position_embedding[index].unsqueeze(0) + input_data = input_data + pe + input_data = self.dropout(input_data) + # reshape + input_data = input_data.view(batch_size, num_nodes, num_patches, num_feat) + return input_data diff --git a/models/tsformer/transformer_layers.py b/step/step_arch/tsformer/transformer_layers.py similarity index 57% rename from models/tsformer/transformer_layers.py rename to step/step_arch/tsformer/transformer_layers.py index 0dff597..735fcc0 100644 --- a/models/tsformer/transformer_layers.py +++ b/step/step_arch/tsformer/transformer_layers.py @@ -4,19 +4,17 @@ class TransformerLayers(nn.Module): - """Transformer layers.""" - - def __init__(self, hidden_dim, num_layers, num_heads=4, dropout=0.1): + def __init__(self, hidden_dim, nlayers, mlp_ratio, num_heads=4, dropout=0.1): super().__init__() self.d_model = hidden_dim - encoder_layers = TransformerEncoderLayer(hidden_dim, num_heads, hidden_dim*4, dropout) - self.transformer_encoder = TransformerEncoder(encoder_layers, num_layers) + encoder_layers = TransformerEncoderLayer(hidden_dim, num_heads, hidden_dim*mlp_ratio, dropout) + self.transformer_encoder = TransformerEncoder(encoder_layers, nlayers) def forward(self, src): - batch_size, num_nodes, num_patches, num_feats = src.shape + B, N, L, D = src.shape src = src * math.sqrt(self.d_model) - src = src.view(batch_size*num_nodes, num_patches, num_feats) + src = src.view(B*N, L, D) src = src.transpose(0, 1) output = self.transformer_encoder(src, mask=None) - output = output.transpose(0, 1).view(batch_size, num_nodes, num_patches, num_feats) + output = output.transpose(0, 1).view(B, N, L, D) return output diff --git a/step/step_arch/tsformer/tsformer.py b/step/step_arch/tsformer/tsformer.py new file mode 100644 index 0000000..5febb04 --- /dev/null +++ b/step/step_arch/tsformer/tsformer.py @@ -0,0 +1,191 @@ +import torch +from torch import nn +from timm.models.vision_transformer import trunc_normal_ + +from .patch import PatchEmbedding +from .mask import MaskGenerator +from .positional_encoding import PositionalEncoding +from .transformer_layers import TransformerLayers + + +def unshuffle(shuffled_tokens): + dic = {} + for k, v, in enumerate(shuffled_tokens): + dic[v] = k + unshuffle_index = [] + for i in range(len(shuffled_tokens)): + unshuffle_index.append(dic[i]) + return unshuffle_index + + +class TSFormer(nn.Module): + """An efficient unsupervised pre-training model for Time Series based on transFormer blocks. (TSFormer)""" + + def __init__(self, patch_size, in_channel, embed_dim, num_heads, mlp_ratio, dropout, num_token, mask_ratio, encoder_depth, decoder_depth, mode="pre-train"): + super().__init__() + assert mode in ["pre-train", "forecasting"], "Error mode." + self.patch_size = patch_size + self.in_channel = in_channel + self.embed_dim = embed_dim + self.num_heads = num_heads + self.num_token = num_token + self.mask_ratio = mask_ratio + self.encoder_depth = encoder_depth + self.mode = mode + self.mlp_ratio = mlp_ratio + + self.selected_feature = 0 + + # norm layers + self.encoder_norm = nn.LayerNorm(embed_dim) + self.decoder_norm = nn.LayerNorm(embed_dim) + + # encoder specifics + # # patchify & embedding + self.patch_embedding = PatchEmbedding(patch_size, in_channel, embed_dim, norm_layer=None) + # # positional encoding + self.positional_encoding = PositionalEncoding(embed_dim, dropout=dropout) + # # masking + self.mask = MaskGenerator(num_token, mask_ratio) + # encoder + self.encoder = TransformerLayers(embed_dim, encoder_depth, mlp_ratio, num_heads, dropout) + + # decoder specifics + # transform layer + self.enc_2_dec_emb = nn.Linear(embed_dim, embed_dim, bias=True) + # # mask token + self.mask_token = nn.Parameter(torch.zeros(1, 1, 1, embed_dim)) + # # decoder + self.decoder = TransformerLayers(embed_dim, decoder_depth, mlp_ratio, num_heads, dropout) + + # # prediction (reconstruction) layer + self.output_layer = nn.Linear(embed_dim, patch_size) + self.initialize_weights() + + def initialize_weights(self): + # positional encoding + nn.init.uniform_(self.positional_encoding.position_embedding, -.02, .02) + # mask token + trunc_normal_(self.mask_token, std=.02) + + def encoding(self, long_term_history, mask=True): + """Encoding process of TSFormer: patchify, positional encoding, mask, Transformer layers. + + Args: + long_term_history (torch.Tensor): Very long-term historical MTS with shape [B, N, 1, P * L], + which is used in the TSFormer. + P is the number of segments (patches). + mask (bool): True in pre-training stage and False in forecasting stage. + + Returns: + torch.Tensor: hidden states of unmasked tokens + list: unmasked token index + list: masked token index + """ + + batch_size, num_nodes, _, _ = long_term_history.shape + # patchify and embed input + patches = self.patch_embedding(long_term_history) # B, N, d, P + patches = patches.transpose(-1, -2) # B, N, P, d + # positional embedding + patches = self.positional_encoding(patches) + + # mask + if mask: + unmasked_token_index, masked_token_index = self.mask() + encoder_input = patches[:, :, unmasked_token_index, :] + else: + unmasked_token_index, masked_token_index = None, None + encoder_input = patches + + # encoding + hidden_states_unmasked = self.encoder(encoder_input) + hidden_states_unmasked = self.encoder_norm(hidden_states_unmasked).view(batch_size, num_nodes, -1, self.embed_dim) + + return hidden_states_unmasked, unmasked_token_index, masked_token_index + + def decoding(self, hidden_states_unmasked, masked_token_index): + """Decoding process of TSFormer: encoder 2 decoder layer, add mask tokens, Transformer layers, predict. + + Args: + hidden_states_unmasked (torch.Tensor): hidden states of masked tokens [B, N, P*(1-r), d]. + masked_token_index (list): masked token index + + Returns: + torch.Tensor: reconstructed data + """ + batch_size, num_nodes, _, _ = hidden_states_unmasked.shape + + # encoder 2 decoder layer + hidden_states_unmasked = self.enc_2_dec_emb(hidden_states_unmasked) + + # add mask tokens + hidden_states_masked = self.positional_encoding( + self.mask_token.expand(batch_size, num_nodes, len(masked_token_index), hidden_states_unmasked.shape[-1]), + index=masked_token_index + ) + hidden_states_full = torch.cat([hidden_states_unmasked, hidden_states_masked], dim=-2) # B, N, P, d + + # decoding + hidden_states_full = self.decoder(hidden_states_full) + hidden_states_full = self.decoder_norm(hidden_states_full) + + # prediction (reconstruction) + reconstruction_full = self.output_layer(hidden_states_full.view(batch_size, num_nodes, -1, self.embed_dim)) + + return reconstruction_full + + def get_reconstructed_masked_tokens(self, reconstruction_full, real_value_full, unmasked_token_index, masked_token_index): + """Get reconstructed masked tokens and corresponding ground-truth for subsequent loss computing. + + Args: + reconstruction_full (torch.Tensor): reconstructed full tokens. + real_value_full (torch.Tensor): ground truth full tokens. + unmasked_token_index (list): unmasked token index. + masked_token_index (list): masked token index. + + Returns: + torch.Tensor: reconstructed masked tokens. + torch.Tensor: ground truth masked tokens. + """ + # get reconstructed masked tokens + batch_size, num_nodes, _, _ = reconstruction_full.shape + reconstruction_masked_tokens = reconstruction_full[:, :, len(unmasked_token_index):, :] # B, N, r*P, d + reconstruction_masked_tokens = reconstruction_masked_tokens.view(batch_size, num_nodes, -1).transpose(1, 2) # B, r*P*d, N + + label_full = real_value_full.permute(0, 3, 1, 2).unfold(1, self.patch_size, self.patch_size)[:, :, :, self.selected_feature, :].transpose(1, 2) # B, N, P, L + label_masked_tokens = label_full[:, :, masked_token_index, :].contiguous() # B, N, r*P, d + label_masked_tokens = label_masked_tokens.view(batch_size, num_nodes, -1).transpose(1, 2) # B, r*P*d, N + + return reconstruction_masked_tokens, label_masked_tokens + + def forward(self, history_data: torch.Tensor, future_data: torch.Tensor = None, batch_seen: int = None, epoch: int = None, **kwargs) -> torch.Tensor: + """feed forward of the TSFormer. + TSFormer has two modes: the pre-training mode and the forecasting mode, + which are used in the pre-training stage and the forecasting stage, respectively. + + Args: + history_data (torch.Tensor): very long-term historical time series with shape B, L * P, N, 1. + + Returns: + pre-training: + torch.Tensor: the reconstruction of the masked tokens. Shape [B, L * P * r, N, 1] + torch.Tensor: the ground truth of the masked tokens. Shape [B, L * P * r, N, 1] + dict: data for plotting. + forecasting: + torch.Tensor: the output of TSFormer of the encoder with shape [B, N, L, 1]. + """ + # reshape + history_data = history_data.permute(0, 2, 3, 1) # B, N, 1, L * P + # feed forward + if self.mode == "pre-train": + # encoding + hidden_states_unmasked, unmasked_token_index, masked_token_index = self.encoding(history_data) + # decoding + reconstruction_full = self.decoding(hidden_states_unmasked, masked_token_index) + # for subsequent loss computing + reconstruction_masked_tokens, label_masked_tokens = self.get_reconstructed_masked_tokens(reconstruction_full, history_data, unmasked_token_index, masked_token_index) + return reconstruction_masked_tokens, label_masked_tokens + else: + hidden_states_full, _, _ = self.encoding(history_data, mask=False) + return hidden_states_full diff --git a/step/step_data/__init__.py b/step/step_data/__init__.py new file mode 100644 index 0000000..bc0cdb0 --- /dev/null +++ b/step/step_data/__init__.py @@ -0,0 +1,4 @@ +from .pretraining_dataset import PretrainingDataset +from .forecasting_dataset import ForecastingDataset + +__all__ = ["PretrainingDataset", "ForecastingDataset"] diff --git a/step/step_data/forecasting_dataset.py b/step/step_data/forecasting_dataset.py new file mode 100644 index 0000000..daf0eea --- /dev/null +++ b/step/step_data/forecasting_dataset.py @@ -0,0 +1,80 @@ +import os + +import torch +from torch.utils.data import Dataset +from basicts.utils import load_pkl + + +class ForecastingDataset(Dataset): + """Time series forecasting dataset.""" + + def __init__(self, data_file_path: str, index_file_path: str, mode: str, seq_len:int) -> None: + """Init the dataset in the forecasting stage. + + Args: + data_file_path (str): data file path. + index_file_path (str): index file path. + mode (str): train, valid, or test. + seq_len (int): the length of long term historical data. + """ + + super().__init__() + assert mode in ["train", "valid", "test"], "error mode" + self._check_if_file_exists(data_file_path, index_file_path) + # read raw data (normalized) + data = load_pkl(data_file_path) + processed_data = data["processed_data"] + self.data = torch.from_numpy(processed_data).float() + # read index + self.index = load_pkl(index_file_path)[mode] + # length of long term historical data + self.seq_len = seq_len + # mask + self.mask = torch.zeros(self.seq_len, self.data.shape[1], self.data.shape[2]) + + def _check_if_file_exists(self, data_file_path: str, index_file_path: str): + """Check if data file and index file exist. + + Args: + data_file_path (str): data file path + index_file_path (str): index file path + + Raises: + FileNotFoundError: no data file + FileNotFoundError: no index file + """ + + if not os.path.isfile(data_file_path): + raise FileNotFoundError("BasicTS can not find data file {0}".format(data_file_path)) + if not os.path.isfile(index_file_path): + raise FileNotFoundError("BasicTS can not find index file {0}".format(index_file_path)) + + def __getitem__(self, index: int) -> tuple: + """Get a sample. + + Args: + index (int): the iteration index (not the self.index) + + Returns: + tuple: (future_data, history_data), where the shape of each is L x N x C. + """ + + idx = list(self.index[index]) + + history_data = self.data[idx[0]:idx[1]] # 12 + future_data = self.data[idx[1]:idx[2]] # 12 + if idx[1] - self.seq_len < 0: + long_history_data = self.mask + else: + long_history_data = self.data[idx[1] - self.seq_len:idx[1]] # 11 + + return future_data, history_data, long_history_data + + def __len__(self): + """Dataset length + + Returns: + int: dataset length + """ + + return len(self.index) diff --git a/step/step_data/pretraining_dataset.py b/step/step_data/pretraining_dataset.py new file mode 100644 index 0000000..258f0b7 --- /dev/null +++ b/step/step_data/pretraining_dataset.py @@ -0,0 +1 @@ +from basicts.data import TimeSeriesForecastingDataset as PretrainingDataset diff --git a/step/step_loss/__init__.py b/step/step_loss/__init__.py new file mode 100644 index 0000000..277630c --- /dev/null +++ b/step/step_loss/__init__.py @@ -0,0 +1,3 @@ +from .step_loss import step_loss + +__all__ = ["step_loss"] diff --git a/step/step_loss/step_loss.py b/step/step_loss/step_loss.py new file mode 100644 index 0000000..b3f4b01 --- /dev/null +++ b/step/step_loss/step_loss.py @@ -0,0 +1,17 @@ +import torch +import numpy as np +from torch import nn +from basicts.losses import masked_mae + +def step_loss(prediction, real_value, theta, priori_adj, gsl_coefficient, null_val=np.nan): + # graph structure learning loss + B, N, N = theta.shape + theta = theta.view(B, N*N) + tru = priori_adj.view(B, N*N) + BCE_loss = nn.BCELoss() + loss_graph = BCE_loss(theta, tru) + # prediction loss + loss_pred = masked_mae(preds=prediction, labels=real_value, null_val=null_val) + # final loss + loss = loss_pred + loss_graph * gsl_coefficient + return loss diff --git a/step/step_runner/__init__.py b/step/step_runner/__init__.py new file mode 100644 index 0000000..de471b5 --- /dev/null +++ b/step/step_runner/__init__.py @@ -0,0 +1,4 @@ +from .tsformer_runner import TSFormerRunner +from .step_runner import STEPRunner + +__all__ = ["TSFormerRunner", "STEPRunner"] diff --git a/step/step_runner/step_runner.py b/step/step_runner/step_runner.py new file mode 100644 index 0000000..dc95504 --- /dev/null +++ b/step/step_runner/step_runner.py @@ -0,0 +1,73 @@ +import torch + +from basicts.runners import BaseTimeSeriesForecastingRunner + + +class STEPRunner(BaseTimeSeriesForecastingRunner): + def __init__(self, cfg: dict): + super().__init__(cfg) + self.forward_features = cfg["MODEL"].get("FROWARD_FEATURES", None) + self.target_features = cfg["MODEL"].get("TARGET_FEATURES", None) + + def select_input_features(self, data: torch.Tensor) -> torch.Tensor: + """Select input features and reshape data to fit the target model. + + Args: + data (torch.Tensor): input history data, shape [B, L, N, C]. + + Returns: + torch.Tensor: reshaped data + """ + + # select feature using self.forward_features + if self.forward_features is not None: + data = data[:, :, :, self.forward_features] + return data + + def select_target_features(self, data: torch.Tensor) -> torch.Tensor: + """Select target features and reshape data back to the BasicTS framework + + Args: + data (torch.Tensor): prediction of the model with arbitrary shape. + + Returns: + torch.Tensor: reshaped data with shape [B, L, N, C] + """ + + # select feature using self.target_features + data = data[:, :, :, self.target_features] + return data + + def forward(self, data: tuple, epoch:int = None, iter_num: int = None, train:bool = True, **kwargs) -> tuple: + """feed forward process for train, val, and test. Note that the outputs are NOT re-scaled. + + Args: + data (tuple): data (future data, history data). [B, L, N, C] for each of them + epoch (int, optional): epoch number. Defaults to None. + iter_num (int, optional): iteration number. Defaults to None. + train (bool, optional): if in the training process. Defaults to True. + + Returns: + tuple: (prediction, real_value) + """ + + # preprocess + future_data, history_data, long_history_data = data + history_data = self.to_running_device(history_data) # B, L, N, C + long_history_data = self.to_running_device(long_history_data) # B, L, N, C + future_data = self.to_running_device(future_data) # B, L, N, C + + history_data = self.select_input_features(history_data) + long_history_data = self.select_input_features(long_history_data) + + # feed forward + prediction, pred_adj, prior_adj, gsl_coefficient = self.model(history_data=history_data, long_history_data=long_history_data, future_data=None, batch_seen=iter_num, epoch=epoch) + + batch_size, length, num_nodes, _ = future_data.shape + assert list(prediction.shape)[:3] == [batch_size, length, num_nodes], \ + "error shape of the output, edit the forward function to reshape it to [B, L, N, C]" + + # post process + prediction = self.select_target_features(prediction) + real_value = self.select_target_features(future_data) + return prediction, real_value, pred_adj, prior_adj, gsl_coefficient diff --git a/step/step_runner/tsformer_runner.py b/step/step_runner/tsformer_runner.py new file mode 100644 index 0000000..cdbf995 --- /dev/null +++ b/step/step_runner/tsformer_runner.py @@ -0,0 +1,91 @@ +import time +import torch + +from easytorch.utils.dist import master_only +from basicts.data.registry import SCALER_REGISTRY +from basicts.runners import BaseTimeSeriesForecastingRunner + + +class TSFormerRunner(BaseTimeSeriesForecastingRunner): + def __init__(self, cfg: dict): + super().__init__(cfg) + self.forward_features = cfg["MODEL"].get("FROWARD_FEATURES", None) + self.target_features = cfg["MODEL"].get("TARGET_FEATURES", None) + + def select_input_features(self, data: torch.Tensor) -> torch.Tensor: + """Select input features and reshape data to fit the target model. + + Args: + data (torch.Tensor): input history data, shape [B, L, N, C]. + + Returns: + torch.Tensor: reshaped data + """ + + # select feature using self.forward_features + if self.forward_features is not None: + data = data[:, :, :, self.forward_features] + return data + + def select_target_features(self, data: torch.Tensor) -> torch.Tensor: + """Select target features and reshape data back to the BasicTS framework + + Args: + data (torch.Tensor): prediction of the model with arbitrary shape. + + Returns: + torch.Tensor: reshaped data with shape [B, L, N, C] + """ + + # select feature using self.target_features + data = data[:, :, :, self.target_features] + return data + + def forward(self, data: tuple, epoch:int = None, iter_num: int = None, train:bool = True, **kwargs) -> tuple: + """feed forward process for train, val, and test. Note that the outputs are NOT re-scaled. + + Args: + data (tuple): data (future data, history data). [B, L, N, C] for each of them + epoch (int, optional): epoch number. Defaults to None. + iter_num (int, optional): iteration number. Defaults to None. + train (bool, optional): if in the training process. Defaults to True. + + Returns: + tuple: (prediction, real_value) + """ + + # preprocess + future_data, history_data = data + history_data = self.to_running_device(history_data) # B, L, N, C + future_data = self.to_running_device(future_data) # B, L, N, C + batch_size, length, num_nodes, _ = future_data.shape + + history_data = self.select_input_features(history_data) + + # feed forward + reconstruction_masked_tokens, label_masked_tokens = self.model(history_data=history_data, future_data=None, batch_seen=iter_num, epoch=epoch) + # assert list(prediction_data.shape)[:3] == [batch_size, length, num_nodes], \ + # "error shape of the output, edit the forward function to reshape it to [B, L, N, C]" + # post process + # prediction = self.select_target_features(prediction_data) + # real_value = self.select_target_features(future_data) + return reconstruction_masked_tokens, label_masked_tokens + + @torch.no_grad() + @master_only + def test(self): + """Evaluate the model. + + Args: + train_epoch (int, optional): current epoch if in training process. + """ + + for _, data in enumerate(self.test_data_loader): + forward_return = self.forward(data=data, epoch=None, iter_num=None, train=False) + # re-scale data + prediction_rescaled = SCALER_REGISTRY.get(self.scaler["func"])(forward_return[0], **self.scaler["args"]) + real_value_rescaled = SCALER_REGISTRY.get(self.scaler["func"])(forward_return[1], **self.scaler["args"]) + # metrics + for metric_name, metric_func in self.metrics.items(): + metric_item = metric_func(prediction_rescaled, real_value_rescaled, null_val=self.null_val) + self.update_epoch_meter("test_"+metric_name, metric_item.item()) diff --git a/train_logs/Backend_METR-LA.log b/train_logs/Backend_METR-LA.log deleted file mode 100644 index 8cb845e..0000000 --- a/train_logs/Backend_METR-LA.log +++ /dev/null @@ -1,1911 +0,0 @@ -2022-02-02 16:02:56,174 - easytorch-env - INFO - Enable TF32 mode -2022-02-02 16:02:56,175 - easytorch - INFO - ckpt save dir: 'checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c' -2022-02-02 16:03:17,552 - easytorch-training - INFO - set optim: Adam ( -Parameter Group 0 - amsgrad: False - betas: (0.9, 0.999) - eps: 1e-08 - lr: 0.005 - weight_decay: 1e-05 -) -2022-02-02 16:03:17,558 - easytorch-training - INFO - set lr_scheduler: -2022-02-02 16:03:17,893 - easytorch-training - INFO - epoch 1 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 16:08:25,862 - easytorch-training - INFO - train:: [train_loss: 3.1782, train_MAPE: 0.2666, train_RMSE: 12.9486, train_time: 307.97 (s), lr: 5.00e-03] -2022-02-02 16:09:13,734 - easytorch-training - INFO - val:: [val_time: 47.87 (s), val_loss: 10.6006, val_MAPE: 0.2761, val_RMSE: 12.6002] -2022-02-02 16:10:54,337 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.7962, Test RMSE: 4.6165, Test MAPE: 0.0669 -2022-02-02 16:10:54,337 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 11.4984, Test RMSE: 14.0470, Test MAPE: 0.3135 -2022-02-02 16:10:54,338 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 16:10:54,339 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 16:10:54,339 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 16:10:54,340 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 16:10:54,341 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 16:10:54,341 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 16:10:54,342 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 16:10:54,343 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 16:10:54,343 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 16:10:54,344 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 16:10:54,344 - easytorch-training - INFO - test:: [test_time: -100.61 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:10:55,531 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_001.pt saved -2022-02-02 16:10:55,531 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:01 -2022-02-02 16:10:55,531 - easytorch-training - INFO - epoch 2 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 16:16:03,036 - easytorch-training - INFO - train:: [train_loss: 2.3987, train_MAPE: 0.2666, train_RMSE: 12.9408, train_time: 307.50 (s), lr: 2.50e-03] -2022-02-02 16:16:51,797 - easytorch-training - INFO - val:: [val_time: 48.76 (s), val_loss: 10.5632, val_MAPE: 0.2754, val_RMSE: 12.5874] -2022-02-02 16:18:31,821 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.3321, Test RMSE: 4.0718, Test MAPE: 0.0587 -2022-02-02 16:18:31,822 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 11.4984, Test RMSE: 14.0470, Test MAPE: 0.3135 -2022-02-02 16:18:31,823 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 16:18:31,824 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 16:18:31,824 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 16:18:31,825 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 16:18:31,826 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 16:18:31,826 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 16:18:31,827 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 16:18:31,827 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 16:18:31,828 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 16:18:31,829 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 16:18:31,829 - easytorch-training - INFO - test:: [test_time: -100.03 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:18:33,028 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_002.pt saved -2022-02-02 16:18:33,028 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:54 -2022-02-02 16:18:33,028 - easytorch-training - INFO - epoch 3 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:02<00:00, 1.24it/s] -2022-02-02 16:23:35,980 - easytorch-training - INFO - train:: [train_loss: 2.3730, train_MAPE: 0.2672, train_RMSE: 12.9477, train_time: 302.95 (s), lr: 2.50e-03] -2022-02-02 16:24:24,486 - easytorch-training - INFO - val:: [val_time: 48.50 (s), val_loss: 10.5635, val_MAPE: 0.2752, val_RMSE: 12.5880] -2022-02-02 16:26:06,476 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.3417, Test RMSE: 4.1076, Test MAPE: 0.0562 -2022-02-02 16:26:06,478 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 11.4984, Test RMSE: 14.0470, Test MAPE: 0.3135 -2022-02-02 16:26:06,479 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 16:26:06,480 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 16:26:06,481 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 16:26:06,482 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 16:26:06,483 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 16:26:06,484 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 16:26:06,485 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 16:26:06,486 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 16:26:06,487 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 16:26:06,488 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 16:26:06,488 - easytorch-training - INFO - test:: [test_time: -102.00 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:26:08,017 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_003.pt saved -2022-02-02 16:26:08,018 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:44:28 -2022-02-02 16:26:08,018 - easytorch-training - INFO - epoch 4 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 16:31:14,530 - easytorch-training - INFO - train:: [train_loss: 2.3407, train_MAPE: 0.2658, train_RMSE: 12.9132, train_time: 306.51 (s), lr: 2.50e-03] -2022-02-02 16:32:01,756 - easytorch-training - INFO - val:: [val_time: 47.22 (s), val_loss: 10.5604, val_MAPE: 0.2752, val_RMSE: 12.5869] -2022-02-02 16:33:42,753 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2956, Test RMSE: 4.0394, Test MAPE: 0.0554 -2022-02-02 16:33:42,754 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 11.4984, Test RMSE: 14.0470, Test MAPE: 0.3135 -2022-02-02 16:33:42,755 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 16:33:42,755 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 16:33:42,756 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 16:33:42,757 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 16:33:42,757 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 16:33:42,758 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 16:33:42,759 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 16:33:42,759 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 16:33:42,760 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 16:33:42,761 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 16:33:42,761 - easytorch-training - INFO - test:: [test_time: -101.00 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:33:44,414 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_004.pt saved -2022-02-02 16:33:44,414 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:44:20 -2022-02-02 16:33:44,414 - easytorch-training - INFO - epoch 5 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:09<00:00, 1.21it/s] -2022-02-02 16:38:53,969 - easytorch-training - INFO - train:: [train_loss: 2.3255, train_MAPE: 0.2673, train_RMSE: 12.9485, train_time: 309.55 (s), lr: 2.50e-03] -2022-02-02 16:39:42,102 - easytorch-training - INFO - val:: [val_time: 48.13 (s), val_loss: 10.5597, val_MAPE: 0.2751, val_RMSE: 12.5868] -2022-02-02 16:41:24,228 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2879, Test RMSE: 4.0445, Test MAPE: 0.0550 -2022-02-02 16:41:24,228 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 11.4984, Test RMSE: 14.0470, Test MAPE: 0.3135 -2022-02-02 16:41:24,229 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 16:41:24,230 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 16:41:24,230 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 16:41:24,231 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 16:41:24,232 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 16:41:24,232 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 16:41:24,233 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 16:41:24,234 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 16:41:24,234 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 16:41:24,235 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 16:41:24,235 - easytorch-training - INFO - test:: [test_time: -102.13 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:41:25,456 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_005.pt saved -2022-02-02 16:41:25,456 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:49 -2022-02-02 16:41:25,456 - easytorch-training - INFO - epoch 6 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.23it/s] -2022-02-02 16:46:29,415 - easytorch-training - INFO - train:: [train_loss: 2.2740, train_MAPE: 0.2638, train_RMSE: 12.8778, train_time: 303.96 (s), lr: 2.50e-03] -2022-02-02 16:47:17,259 - easytorch-training - INFO - val:: [val_time: 47.84 (s), val_loss: 10.5608, val_MAPE: 0.2753, val_RMSE: 12.5864] -2022-02-02 16:48:58,200 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2996, Test RMSE: 4.0350, Test MAPE: 0.0564 -2022-02-02 16:48:58,202 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 11.4984, Test RMSE: 14.0470, Test MAPE: 0.3135 -2022-02-02 16:48:58,203 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 16:48:58,204 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 16:48:58,205 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 16:48:58,206 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 16:48:58,207 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 16:48:58,208 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 16:48:58,209 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 16:48:58,211 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 16:48:58,212 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 16:48:58,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 16:48:58,213 - easytorch-training - INFO - test:: [test_time: -100.95 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:48:59,597 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_006.pt saved -2022-02-02 16:48:59,598 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:44:52 -2022-02-02 16:48:59,598 - easytorch-training - INFO - epoch 7 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-02 16:54:02,738 - easytorch-training - INFO - train:: [train_loss: 2.4808, train_MAPE: 0.2504, train_RMSE: 12.4596, train_time: 303.14 (s), lr: 2.50e-03] -2022-02-02 16:54:50,917 - easytorch-training - INFO - val:: [val_time: 48.17 (s), val_loss: 9.8118, val_MAPE: 0.2554, val_RMSE: 12.0683] -2022-02-02 16:56:41,304 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2584, Test RMSE: 3.9308, Test MAPE: 0.0540 -2022-02-02 16:56:41,305 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.5746, Test RMSE: 4.8499, Test MAPE: 0.0642 -2022-02-02 16:56:41,305 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 16:56:41,306 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 16:56:41,307 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 16:56:41,307 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 16:56:41,308 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 16:56:41,309 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 16:56:41,309 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 16:56:41,310 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 16:56:41,311 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 16:56:41,311 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 16:56:41,311 - easytorch-training - INFO - test:: [test_time: -110.39 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:56:42,578 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_007.pt saved -2022-02-02 16:56:42,579 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:19 -2022-02-02 16:56:42,579 - easytorch-training - INFO - epoch 8 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 17:01:47,048 - easytorch-training - INFO - train:: [train_loss: 2.3914, train_MAPE: 0.2486, train_RMSE: 12.4211, train_time: 304.47 (s), lr: 2.50e-03] -2022-02-02 17:02:35,392 - easytorch-training - INFO - val:: [val_time: 48.34 (s), val_loss: 9.8079, val_MAPE: 0.2554, val_RMSE: 12.0652] -2022-02-02 17:04:15,400 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2356, Test RMSE: 3.8894, Test MAPE: 0.0538 -2022-02-02 17:04:15,401 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.5423, Test RMSE: 4.7535, Test MAPE: 0.0644 -2022-02-02 17:04:15,401 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 17:04:15,402 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:04:15,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:04:15,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:04:15,404 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:04:15,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:04:15,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:04:15,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:04:15,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:04:15,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:04:15,407 - easytorch-training - INFO - test:: [test_time: -100.01 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:04:16,944 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_008.pt saved -2022-02-02 17:04:16,945 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:36 -2022-02-02 17:04:16,945 - easytorch-training - INFO - epoch 9 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:08<00:00, 1.22it/s] -2022-02-02 17:09:25,559 - easytorch-training - INFO - train:: [train_loss: 2.3806, train_MAPE: 0.2481, train_RMSE: 12.4183, train_time: 308.61 (s), lr: 2.50e-03] -2022-02-02 17:10:13,324 - easytorch-training - INFO - val:: [val_time: 47.76 (s), val_loss: 9.8096, val_MAPE: 0.2556, val_RMSE: 12.0644] -2022-02-02 17:11:52,778 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2448, Test RMSE: 3.8843, Test MAPE: 0.0552 -2022-02-02 17:11:52,779 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.5576, Test RMSE: 4.7463, Test MAPE: 0.0666 -2022-02-02 17:11:52,780 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 17:11:52,782 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:11:52,783 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:11:52,784 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:11:52,785 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:11:52,786 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:11:52,787 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:11:52,789 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:11:52,790 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:11:52,791 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:11:52,791 - easytorch-training - INFO - test:: [test_time: -99.46 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:11:54,573 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_009.pt saved -2022-02-02 17:11:54,574 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:38 -2022-02-02 17:11:54,574 - easytorch-training - INFO - epoch 10 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:08<00:00, 1.22it/s] -2022-02-02 17:17:03,105 - easytorch-training - INFO - train:: [train_loss: 2.3703, train_MAPE: 0.2481, train_RMSE: 12.4153, train_time: 308.53 (s), lr: 2.50e-03] -2022-02-02 17:17:52,743 - easytorch-training - INFO - val:: [val_time: 49.63 (s), val_loss: 9.8052, val_MAPE: 0.2552, val_RMSE: 12.0654] -2022-02-02 17:19:34,817 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2183, Test RMSE: 3.9029, Test MAPE: 0.0534 -2022-02-02 17:19:34,818 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.5324, Test RMSE: 4.7989, Test MAPE: 0.0629 -2022-02-02 17:19:34,818 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 17:19:34,819 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:19:34,820 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:19:34,820 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:19:34,821 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:19:34,822 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:19:34,822 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:19:34,823 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:19:34,823 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:19:34,824 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:19:34,824 - easytorch-training - INFO - test:: [test_time: -102.08 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:19:36,394 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_010.pt saved -2022-02-02 17:19:36,397 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:22 -2022-02-02 17:19:36,398 - easytorch-training - INFO - epoch 11 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:01<00:00, 1.24it/s] -2022-02-02 17:24:38,354 - easytorch-training - INFO - train:: [train_loss: 2.3596, train_MAPE: 0.2465, train_RMSE: 12.3847, train_time: 301.96 (s), lr: 2.50e-03] -2022-02-02 17:25:24,940 - easytorch-training - INFO - val:: [val_time: 46.58 (s), val_loss: 9.8040, val_MAPE: 0.2551, val_RMSE: 12.0649] -2022-02-02 17:27:04,515 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2171, Test RMSE: 3.8855, Test MAPE: 0.0527 -2022-02-02 17:27:04,516 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.5224, Test RMSE: 4.7592, Test MAPE: 0.0624 -2022-02-02 17:27:04,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 17:27:04,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:27:04,518 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:27:04,519 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:27:04,519 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:27:04,520 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:27:04,521 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:27:04,521 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:27:04,522 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:27:04,522 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:27:04,523 - easytorch-training - INFO - test:: [test_time: -99.58 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:27:05,789 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_011.pt saved -2022-02-02 17:27:05,789 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:06 -2022-02-02 17:27:05,789 - easytorch-training - INFO - epoch 12 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 17:32:12,687 - easytorch-training - INFO - train:: [train_loss: 2.3262, train_MAPE: 0.2482, train_RMSE: 12.4230, train_time: 306.90 (s), lr: 2.50e-03] -2022-02-02 17:33:00,631 - easytorch-training - INFO - val:: [val_time: 47.94 (s), val_loss: 9.8459, val_MAPE: 0.2562, val_RMSE: 12.0891] -2022-02-02 17:34:41,656 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.5001, Test RMSE: 4.3107, Test MAPE: 0.0596 -2022-02-02 17:34:41,657 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.7942, Test RMSE: 5.3387, Test MAPE: 0.0705 -2022-02-02 17:34:41,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 11.4986, Test RMSE: 14.0471, Test MAPE: 0.3135 -2022-02-02 17:34:41,660 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:34:41,661 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:34:41,662 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:34:41,663 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:34:41,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:34:41,666 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:34:41,667 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:34:41,668 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:34:41,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:34:41,669 - easytorch-training - INFO - test:: [test_time: -101.04 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:34:43,452 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_012.pt saved -2022-02-02 17:34:43,452 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:10 -2022-02-02 17:34:43,453 - easytorch-training - INFO - epoch 13 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.23it/s] -2022-02-02 17:39:49,519 - easytorch-training - INFO - train:: [train_loss: 2.4862, train_MAPE: 0.2307, train_RMSE: 11.9040, train_time: 306.07 (s), lr: 2.50e-03] -2022-02-02 17:40:37,794 - easytorch-training - INFO - val:: [val_time: 48.27 (s), val_loss: 9.0645, val_MAPE: 0.2358, val_RMSE: 11.5319] -2022-02-02 17:42:19,170 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1917, Test RMSE: 3.8332, Test MAPE: 0.0522 -2022-02-02 17:42:19,171 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4893, Test RMSE: 4.6547, Test MAPE: 0.0618 -2022-02-02 17:42:19,172 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.7017, Test RMSE: 5.2358, Test MAPE: 0.0696 -2022-02-02 17:42:19,173 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:42:19,173 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:42:19,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:42:19,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:42:19,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:42:19,176 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:42:19,177 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:42:19,177 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:42:19,178 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:42:19,178 - easytorch-training - INFO - test:: [test_time: -101.38 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:42:20,698 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_013.pt saved -2022-02-02 17:42:20,698 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:11 -2022-02-02 17:42:20,698 - easytorch-training - INFO - epoch 14 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 17:47:26,680 - easytorch-training - INFO - train:: [train_loss: 2.4374, train_MAPE: 0.2298, train_RMSE: 11.8816, train_time: 305.98 (s), lr: 2.50e-03] -2022-02-02 17:48:14,071 - easytorch-training - INFO - val:: [val_time: 47.39 (s), val_loss: 9.0670, val_MAPE: 0.2356, val_RMSE: 11.5324] -2022-02-02 17:49:56,468 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.2062, Test RMSE: 3.8275, Test MAPE: 0.0518 -2022-02-02 17:49:56,469 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4988, Test RMSE: 4.6450, Test MAPE: 0.0617 -2022-02-02 17:49:56,469 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.7059, Test RMSE: 5.2328, Test MAPE: 0.0690 -2022-02-02 17:49:56,470 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:49:56,471 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:49:56,471 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:49:56,472 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:49:56,473 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:49:56,473 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:49:56,474 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:49:56,475 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:49:56,475 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:49:56,475 - easytorch-training - INFO - test:: [test_time: -102.40 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:49:57,951 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_014.pt saved -2022-02-02 17:49:57,952 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:12 -2022-02-02 17:49:57,952 - easytorch-training - INFO - epoch 15 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.23it/s] -2022-02-02 17:55:01,858 - easytorch-training - INFO - train:: [train_loss: 2.4169, train_MAPE: 0.2295, train_RMSE: 11.8829, train_time: 303.91 (s), lr: 2.50e-03] -2022-02-02 17:55:49,258 - easytorch-training - INFO - val:: [val_time: 47.39 (s), val_loss: 9.0596, val_MAPE: 0.2355, val_RMSE: 11.5287] -2022-02-02 17:57:32,248 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1800, Test RMSE: 3.8059, Test MAPE: 0.0513 -2022-02-02 17:57:32,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4690, Test RMSE: 4.6073, Test MAPE: 0.0605 -2022-02-02 17:57:32,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6681, Test RMSE: 5.1630, Test MAPE: 0.0680 -2022-02-02 17:57:32,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 17:57:32,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 17:57:32,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 17:57:32,252 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 17:57:32,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 17:57:32,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 17:57:32,254 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 17:57:32,254 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 17:57:32,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 17:57:32,255 - easytorch-training - INFO - test:: [test_time: -102.99 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:57:34,026 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_015.pt saved -2022-02-02 17:57:34,027 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:05 -2022-02-02 17:57:34,027 - easytorch-training - INFO - epoch 16 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 18:02:39,180 - easytorch-training - INFO - train:: [train_loss: 2.4168, train_MAPE: 0.2286, train_RMSE: 11.8605, train_time: 305.15 (s), lr: 2.50e-03] -2022-02-02 18:03:27,122 - easytorch-training - INFO - val:: [val_time: 47.94 (s), val_loss: 9.0627, val_MAPE: 0.2358, val_RMSE: 11.5305] -2022-02-02 18:05:08,820 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1973, Test RMSE: 3.8367, Test MAPE: 0.0525 -2022-02-02 18:05:08,822 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4848, Test RMSE: 4.6414, Test MAPE: 0.0623 -2022-02-02 18:05:08,823 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6854, Test RMSE: 5.2012, Test MAPE: 0.0696 -2022-02-02 18:05:08,824 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 18:05:08,825 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:05:08,826 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:05:08,827 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:05:08,828 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:05:08,829 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:05:08,831 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:05:08,832 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:05:08,833 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:05:08,833 - easytorch-training - INFO - test:: [test_time: -101.71 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:05:10,602 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_016.pt saved -2022-02-02 18:05:10,602 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:02 -2022-02-02 18:05:10,602 - easytorch-training - INFO - epoch 17 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 18:10:16,310 - easytorch-training - INFO - train:: [train_loss: 2.4147, train_MAPE: 0.2292, train_RMSE: 11.8690, train_time: 305.71 (s), lr: 2.50e-03] -2022-02-02 18:11:03,870 - easytorch-training - INFO - val:: [val_time: 47.56 (s), val_loss: 9.0596, val_MAPE: 0.2354, val_RMSE: 11.5283] -2022-02-02 18:12:46,401 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1761, Test RMSE: 3.7999, Test MAPE: 0.0513 -2022-02-02 18:12:46,402 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4719, Test RMSE: 4.5951, Test MAPE: 0.0606 -2022-02-02 18:12:46,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6670, Test RMSE: 5.1405, Test MAPE: 0.0676 -2022-02-02 18:12:46,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 18:12:46,404 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:12:46,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:12:46,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:12:46,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:12:46,408 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:12:46,409 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:12:46,409 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:12:46,410 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:12:46,411 - easytorch-training - INFO - test:: [test_time: -102.54 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:12:48,024 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_017.pt saved -2022-02-02 18:12:48,024 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:04 -2022-02-02 18:12:48,024 - easytorch-training - INFO - epoch 18 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 18:17:55,461 - easytorch-training - INFO - train:: [train_loss: 2.3957, train_MAPE: 0.2295, train_RMSE: 11.8766, train_time: 307.44 (s), lr: 2.50e-03] -2022-02-02 18:18:42,756 - easytorch-training - INFO - val:: [val_time: 47.29 (s), val_loss: 9.0648, val_MAPE: 0.2356, val_RMSE: 11.5245] -2022-02-02 18:20:23,040 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1929, Test RMSE: 3.7648, Test MAPE: 0.0516 -2022-02-02 18:20:23,041 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4801, Test RMSE: 4.5637, Test MAPE: 0.0611 -2022-02-02 18:20:23,041 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6750, Test RMSE: 5.1044, Test MAPE: 0.0690 -2022-02-02 18:20:23,042 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 11.4990, Test RMSE: 14.0474, Test MAPE: 0.3135 -2022-02-02 18:20:23,043 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:20:23,043 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:20:23,044 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:20:23,045 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:20:23,045 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:20:23,046 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:20:23,047 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:20:23,047 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:20:23,047 - easytorch-training - INFO - test:: [test_time: -100.29 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:20:24,446 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_018.pt saved -2022-02-02 18:20:24,446 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:00 -2022-02-02 18:20:24,447 - easytorch-training - INFO - epoch 19 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 18:25:31,130 - easytorch-training - INFO - train:: [train_loss: 2.5116, train_MAPE: 0.2101, train_RMSE: 11.2907, train_time: 306.68 (s), lr: 1.25e-03] -2022-02-02 18:26:20,035 - easytorch-training - INFO - val:: [val_time: 48.90 (s), val_loss: 8.3256, val_MAPE: 0.2163, val_RMSE: 10.9774] -2022-02-02 18:28:03,285 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1546, Test RMSE: 3.7443, Test MAPE: 0.0509 -2022-02-02 18:28:03,286 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4448, Test RMSE: 4.5411, Test MAPE: 0.0599 -2022-02-02 18:28:03,287 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6374, Test RMSE: 5.0705, Test MAPE: 0.0667 -2022-02-02 18:28:03,287 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7965, Test RMSE: 5.4958, Test MAPE: 0.0730 -2022-02-02 18:28:03,288 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:28:03,289 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:28:03,289 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:28:03,290 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:28:03,290 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:28:03,291 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:28:03,292 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:28:03,292 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:28:03,292 - easytorch-training - INFO - test:: [test_time: -103.26 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:28:04,672 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_019.pt saved -2022-02-02 18:28:04,673 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:17 -2022-02-02 18:28:04,673 - easytorch-training - INFO - epoch 20 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-02 18:33:07,868 - easytorch-training - INFO - train:: [train_loss: 2.4667, train_MAPE: 0.2117, train_RMSE: 11.3330, train_time: 303.19 (s), lr: 1.25e-03] -2022-02-02 18:33:58,744 - easytorch-training - INFO - val:: [val_time: 50.87 (s), val_loss: 8.3260, val_MAPE: 0.2167, val_RMSE: 10.9775] -2022-02-02 18:35:40,687 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1570, Test RMSE: 3.7415, Test MAPE: 0.0519 -2022-02-02 18:35:40,689 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4468, Test RMSE: 4.5316, Test MAPE: 0.0617 -2022-02-02 18:35:40,690 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6406, Test RMSE: 5.0777, Test MAPE: 0.0685 -2022-02-02 18:35:40,691 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.8047, Test RMSE: 5.5197, Test MAPE: 0.0755 -2022-02-02 18:35:40,692 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:35:40,693 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:35:40,694 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:35:40,696 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:35:40,697 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:35:40,698 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:35:40,699 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:35:40,700 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:35:40,700 - easytorch-training - INFO - test:: [test_time: -101.95 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:35:42,397 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_020.pt saved -2022-02-02 18:35:42,400 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:20 -2022-02-02 18:35:42,401 - easytorch-training - INFO - epoch 21 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 18:40:49,131 - easytorch-training - INFO - train:: [train_loss: 2.4497, train_MAPE: 0.2094, train_RMSE: 11.2815, train_time: 306.73 (s), lr: 1.25e-03] -2022-02-02 18:41:36,502 - easytorch-training - INFO - val:: [val_time: 47.37 (s), val_loss: 8.3242, val_MAPE: 0.2162, val_RMSE: 10.9746] -2022-02-02 18:43:19,646 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1495, Test RMSE: 3.7270, Test MAPE: 0.0513 -2022-02-02 18:43:19,647 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4357, Test RMSE: 4.5129, Test MAPE: 0.0598 -2022-02-02 18:43:19,647 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6272, Test RMSE: 5.0328, Test MAPE: 0.0665 -2022-02-02 18:43:19,648 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7878, Test RMSE: 5.4638, Test MAPE: 0.0723 -2022-02-02 18:43:19,649 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:43:19,649 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:43:19,650 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:43:19,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:43:19,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:43:19,652 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:43:19,652 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:43:19,653 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:43:19,653 - easytorch-training - INFO - test:: [test_time: -103.15 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:43:20,888 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_021.pt saved -2022-02-02 18:43:20,889 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:26 -2022-02-02 18:43:20,889 - easytorch-training - INFO - epoch 22 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 18:48:27,556 - easytorch-training - INFO - train:: [train_loss: 2.4562, train_MAPE: 0.2113, train_RMSE: 11.3238, train_time: 306.67 (s), lr: 1.25e-03] -2022-02-02 18:49:14,895 - easytorch-training - INFO - val:: [val_time: 47.33 (s), val_loss: 8.3217, val_MAPE: 0.2162, val_RMSE: 10.9748] -2022-02-02 18:50:54,694 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1434, Test RMSE: 3.7191, Test MAPE: 0.0505 -2022-02-02 18:50:54,695 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4314, Test RMSE: 4.5051, Test MAPE: 0.0598 -2022-02-02 18:50:54,696 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6257, Test RMSE: 5.0376, Test MAPE: 0.0665 -2022-02-02 18:50:54,697 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7860, Test RMSE: 5.4677, Test MAPE: 0.0725 -2022-02-02 18:50:54,699 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:50:54,700 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:50:54,701 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:50:54,702 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:50:54,703 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:50:54,704 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:50:54,705 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:50:54,706 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:50:54,707 - easytorch-training - INFO - test:: [test_time: -99.81 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:50:56,432 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_022.pt saved -2022-02-02 18:50:56,433 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:18 -2022-02-02 18:50:56,433 - easytorch-training - INFO - epoch 23 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:09<00:00, 1.21it/s] -2022-02-02 18:56:06,257 - easytorch-training - INFO - train:: [train_loss: 2.4451, train_MAPE: 0.2093, train_RMSE: 11.2756, train_time: 309.82 (s), lr: 1.25e-03] -2022-02-02 18:56:58,581 - easytorch-training - INFO - val:: [val_time: 52.32 (s), val_loss: 8.3219, val_MAPE: 0.2164, val_RMSE: 10.9717] -2022-02-02 18:58:45,792 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1521, Test RMSE: 3.7182, Test MAPE: 0.0516 -2022-02-02 18:58:45,794 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4339, Test RMSE: 4.4973, Test MAPE: 0.0604 -2022-02-02 18:58:45,795 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6219, Test RMSE: 5.0212, Test MAPE: 0.0671 -2022-02-02 18:58:45,796 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7728, Test RMSE: 5.4340, Test MAPE: 0.0732 -2022-02-02 18:58:45,797 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 18:58:45,798 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 18:58:45,799 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 18:58:45,800 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 18:58:45,801 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 18:58:45,803 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 18:58:45,804 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 18:58:45,805 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 18:58:45,805 - easytorch-training - INFO - test:: [test_time: -107.22 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:58:47,613 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_023.pt saved -2022-02-02 18:58:47,614 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:19 -2022-02-02 18:58:47,614 - easytorch-training - INFO - epoch 24 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 19:03:55,098 - easytorch-training - INFO - train:: [train_loss: 2.4376, train_MAPE: 0.2097, train_RMSE: 11.2804, train_time: 307.48 (s), lr: 1.25e-03] -2022-02-02 19:04:43,020 - easytorch-training - INFO - val:: [val_time: 47.92 (s), val_loss: 8.3211, val_MAPE: 0.2163, val_RMSE: 10.9728] -2022-02-02 19:06:22,725 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1480, Test RMSE: 3.7319, Test MAPE: 0.0511 -2022-02-02 19:06:22,725 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4319, Test RMSE: 4.5107, Test MAPE: 0.0602 -2022-02-02 19:06:22,726 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6252, Test RMSE: 5.0269, Test MAPE: 0.0673 -2022-02-02 19:06:22,727 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7810, Test RMSE: 5.4543, Test MAPE: 0.0734 -2022-02-02 19:06:22,727 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 11.4993, Test RMSE: 14.0475, Test MAPE: 0.3135 -2022-02-02 19:06:22,728 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 19:06:22,729 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:06:22,729 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:06:22,730 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:06:22,731 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:06:22,731 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:06:22,732 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:06:22,732 - easytorch-training - INFO - test:: [test_time: -99.71 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:06:24,374 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_024.pt saved -2022-02-02 19:06:24,375 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:14 -2022-02-02 19:06:24,375 - easytorch-training - INFO - epoch 25 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.23it/s] -2022-02-02 19:11:28,110 - easytorch-training - INFO - train:: [train_loss: 2.5566, train_MAPE: 0.1931, train_RMSE: 10.7360, train_time: 303.73 (s), lr: 1.25e-03] -2022-02-02 19:12:17,819 - easytorch-training - INFO - val:: [val_time: 49.70 (s), val_loss: 7.6080, val_MAPE: 0.1981, val_RMSE: 10.4069] -2022-02-02 19:13:58,714 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1602, Test RMSE: 3.7267, Test MAPE: 0.0512 -2022-02-02 19:13:58,715 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4447, Test RMSE: 4.5019, Test MAPE: 0.0608 -2022-02-02 19:13:58,716 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6329, Test RMSE: 5.0206, Test MAPE: 0.0678 -2022-02-02 19:13:58,717 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7835, Test RMSE: 5.4390, Test MAPE: 0.0739 -2022-02-02 19:13:58,718 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.9150, Test RMSE: 5.7903, Test MAPE: 0.0793 -2022-02-02 19:13:58,719 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 19:13:58,721 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:13:58,722 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:13:58,723 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:13:58,724 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:13:58,725 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:13:58,726 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:13:58,726 - easytorch-training - INFO - test:: [test_time: -100.90 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:14:00,509 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_025.pt saved -2022-02-02 19:14:00,509 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:08 -2022-02-02 19:14:00,509 - easytorch-training - INFO - epoch 26 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-02 19:19:03,565 - easytorch-training - INFO - train:: [train_loss: 2.5114, train_MAPE: 0.1928, train_RMSE: 10.7335, train_time: 303.06 (s), lr: 1.25e-03] -2022-02-02 19:19:50,716 - easytorch-training - INFO - val:: [val_time: 47.15 (s), val_loss: 7.6023, val_MAPE: 0.1979, val_RMSE: 10.4109] -2022-02-02 19:21:31,985 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1571, Test RMSE: 3.7606, Test MAPE: 0.0512 -2022-02-02 19:21:31,986 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4397, Test RMSE: 4.5432, Test MAPE: 0.0607 -2022-02-02 19:21:31,988 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6291, Test RMSE: 5.0689, Test MAPE: 0.0676 -2022-02-02 19:21:31,989 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7778, Test RMSE: 5.4739, Test MAPE: 0.0735 -2022-02-02 19:21:31,990 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.9113, Test RMSE: 5.8189, Test MAPE: 0.0790 -2022-02-02 19:21:31,991 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 19:21:31,993 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:21:31,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:21:31,995 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:21:31,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:21:31,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:21:31,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:21:31,999 - easytorch-training - INFO - test:: [test_time: -101.28 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:21:33,737 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_026.pt saved -2022-02-02 19:21:33,737 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:51 -2022-02-02 19:21:33,737 - easytorch-training - INFO - epoch 27 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 19:26:38,258 - easytorch-training - INFO - train:: [train_loss: 2.5042, train_MAPE: 0.1929, train_RMSE: 10.7362, train_time: 304.52 (s), lr: 1.25e-03] -2022-02-02 19:27:25,112 - easytorch-training - INFO - val:: [val_time: 46.85 (s), val_loss: 7.6019, val_MAPE: 0.1978, val_RMSE: 10.4073] -2022-02-02 19:29:04,769 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1486, Test RMSE: 3.7241, Test MAPE: 0.0509 -2022-02-02 19:29:04,770 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4306, Test RMSE: 4.4878, Test MAPE: 0.0603 -2022-02-02 19:29:04,771 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6169, Test RMSE: 5.0002, Test MAPE: 0.0669 -2022-02-02 19:29:04,772 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7648, Test RMSE: 5.4103, Test MAPE: 0.0726 -2022-02-02 19:29:04,773 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8970, Test RMSE: 5.7480, Test MAPE: 0.0782 -2022-02-02 19:29:04,775 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 19:29:04,776 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:29:04,777 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:29:04,778 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:29:04,779 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:29:04,780 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:29:04,781 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:29:04,781 - easytorch-training - INFO - test:: [test_time: -99.67 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:29:06,520 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_027.pt saved -2022-02-02 19:29:06,521 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:33 -2022-02-02 19:29:06,521 - easytorch-training - INFO - epoch 28 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 19:34:11,038 - easytorch-training - INFO - train:: [train_loss: 2.4990, train_MAPE: 0.1922, train_RMSE: 10.7198, train_time: 304.52 (s), lr: 1.25e-03] -2022-02-02 19:34:58,579 - easytorch-training - INFO - val:: [val_time: 47.54 (s), val_loss: 7.5994, val_MAPE: 0.1978, val_RMSE: 10.4079] -2022-02-02 19:36:38,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1516, Test RMSE: 3.7538, Test MAPE: 0.0513 -2022-02-02 19:36:38,256 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4320, Test RMSE: 4.5209, Test MAPE: 0.0605 -2022-02-02 19:36:38,257 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6189, Test RMSE: 5.0356, Test MAPE: 0.0673 -2022-02-02 19:36:38,257 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7649, Test RMSE: 5.4421, Test MAPE: 0.0731 -2022-02-02 19:36:38,258 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8912, Test RMSE: 5.7731, Test MAPE: 0.0784 -2022-02-02 19:36:38,258 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 19:36:38,259 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:36:38,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:36:38,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:36:38,261 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:36:38,262 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:36:38,262 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:36:38,263 - easytorch-training - INFO - test:: [test_time: -99.68 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:36:39,494 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_028.pt saved -2022-02-02 19:36:39,495 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:17 -2022-02-02 19:36:39,495 - easytorch-training - INFO - epoch 29 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 19:41:46,138 - easytorch-training - INFO - train:: [train_loss: 2.4999, train_MAPE: 0.1931, train_RMSE: 10.7415, train_time: 306.64 (s), lr: 1.25e-03] -2022-02-02 19:42:34,863 - easytorch-training - INFO - val:: [val_time: 48.72 (s), val_loss: 7.5988, val_MAPE: 0.1976, val_RMSE: 10.4083] -2022-02-02 19:44:22,514 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1467, Test RMSE: 3.7348, Test MAPE: 0.0510 -2022-02-02 19:44:22,515 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4269, Test RMSE: 4.5006, Test MAPE: 0.0601 -2022-02-02 19:44:22,515 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6110, Test RMSE: 5.0215, Test MAPE: 0.0663 -2022-02-02 19:44:22,516 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7599, Test RMSE: 5.4243, Test MAPE: 0.0722 -2022-02-02 19:44:22,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8903, Test RMSE: 5.7638, Test MAPE: 0.0776 -2022-02-02 19:44:22,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 19:44:22,518 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:44:22,519 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:44:22,519 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:44:22,520 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:44:22,520 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:44:22,521 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:44:22,521 - easytorch-training - INFO - test:: [test_time: -107.66 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:44:23,831 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_029.pt saved -2022-02-02 19:44:23,831 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:42 -2022-02-02 19:44:23,831 - easytorch-training - INFO - epoch 30 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 19:49:31,089 - easytorch-training - INFO - train:: [train_loss: 2.5056, train_MAPE: 0.1944, train_RMSE: 10.7736, train_time: 307.26 (s), lr: 1.25e-03] -2022-02-02 19:50:18,887 - easytorch-training - INFO - val:: [val_time: 47.79 (s), val_loss: 7.6006, val_MAPE: 0.1973, val_RMSE: 10.4045] -2022-02-02 19:51:59,606 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1450, Test RMSE: 3.7294, Test MAPE: 0.0504 -2022-02-02 19:51:59,607 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4254, Test RMSE: 4.4886, Test MAPE: 0.0594 -2022-02-02 19:51:59,608 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6132, Test RMSE: 5.0003, Test MAPE: 0.0659 -2022-02-02 19:51:59,608 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7620, Test RMSE: 5.3970, Test MAPE: 0.0714 -2022-02-02 19:51:59,609 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8978, Test RMSE: 5.7364, Test MAPE: 0.0763 -2022-02-02 19:51:59,610 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 11.4994, Test RMSE: 14.0476, Test MAPE: 0.3135 -2022-02-02 19:51:59,610 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:51:59,611 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:51:59,611 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:51:59,612 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:51:59,613 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:51:59,613 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:51:59,614 - easytorch-training - INFO - test:: [test_time: -100.72 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:52:00,855 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_030.pt saved -2022-02-02 19:52:00,858 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:41 -2022-02-02 19:52:00,858 - easytorch-training - INFO - epoch 31 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 19:57:07,358 - easytorch-training - INFO - train:: [train_loss: 2.5921, train_MAPE: 0.1754, train_RMSE: 10.1348, train_time: 306.50 (s), lr: 1.25e-03] -2022-02-02 19:57:55,360 - easytorch-training - INFO - val:: [val_time: 48.00 (s), val_loss: 6.8903, val_MAPE: 0.1798, val_RMSE: 9.8192] -2022-02-02 19:59:36,203 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1530, Test RMSE: 3.7414, Test MAPE: 0.0515 -2022-02-02 19:59:36,205 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4332, Test RMSE: 4.4994, Test MAPE: 0.0606 -2022-02-02 19:59:36,206 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6209, Test RMSE: 5.0175, Test MAPE: 0.0675 -2022-02-02 19:59:36,207 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7728, Test RMSE: 5.4357, Test MAPE: 0.0738 -2022-02-02 19:59:36,208 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.9007, Test RMSE: 5.7854, Test MAPE: 0.0792 -2022-02-02 19:59:36,209 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 3.0125, Test RMSE: 6.0599, Test MAPE: 0.0837 -2022-02-02 19:59:36,211 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 19:59:36,212 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 19:59:36,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 19:59:36,214 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 19:59:36,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 19:59:36,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 19:59:36,217 - easytorch-training - INFO - test:: [test_time: -100.85 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:59:37,971 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_031.pt saved -2022-02-02 19:59:37,971 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:40 -2022-02-02 19:59:37,971 - easytorch-training - INFO - epoch 32 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 20:04:42,580 - easytorch-training - INFO - train:: [train_loss: 2.5560, train_MAPE: 0.1743, train_RMSE: 10.1005, train_time: 304.61 (s), lr: 1.25e-03] -2022-02-02 20:05:31,495 - easytorch-training - INFO - val:: [val_time: 48.91 (s), val_loss: 6.8860, val_MAPE: 0.1794, val_RMSE: 9.8166] -2022-02-02 20:07:15,737 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1496, Test RMSE: 3.7438, Test MAPE: 0.0507 -2022-02-02 20:07:15,738 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4301, Test RMSE: 4.5051, Test MAPE: 0.0601 -2022-02-02 20:07:15,739 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6160, Test RMSE: 5.0266, Test MAPE: 0.0670 -2022-02-02 20:07:15,739 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7649, Test RMSE: 5.4388, Test MAPE: 0.0730 -2022-02-02 20:07:15,740 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8896, Test RMSE: 5.7767, Test MAPE: 0.0783 -2022-02-02 20:07:15,741 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 3.0038, Test RMSE: 6.0603, Test MAPE: 0.0830 -2022-02-02 20:07:15,741 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 20:07:15,742 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 20:07:15,743 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 20:07:15,743 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 20:07:15,744 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 20:07:15,745 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 20:07:15,745 - easytorch-training - INFO - test:: [test_time: -104.25 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 20:07:17,604 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_032.pt saved -2022-02-02 20:07:17,605 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:46 -2022-02-02 20:07:17,605 - easytorch-training - INFO - epoch 33 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.23it/s] -2022-02-02 20:12:21,381 - easytorch-training - INFO - train:: [train_loss: 2.5541, train_MAPE: 0.1746, train_RMSE: 10.1169, train_time: 303.78 (s), lr: 1.25e-03] -2022-02-02 20:13:08,210 - easytorch-training - INFO - val:: [val_time: 46.82 (s), val_loss: 6.8959, val_MAPE: 0.1788, val_RMSE: 9.8176] -2022-02-02 20:14:48,565 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1673, Test RMSE: 3.7343, Test MAPE: 0.0504 -2022-02-02 20:14:48,566 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4453, Test RMSE: 4.5005, Test MAPE: 0.0590 -2022-02-02 20:14:48,567 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6297, Test RMSE: 5.0140, Test MAPE: 0.0654 -2022-02-02 20:14:48,568 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7738, Test RMSE: 5.4100, Test MAPE: 0.0708 -2022-02-02 20:14:48,568 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8997, Test RMSE: 5.7416, Test MAPE: 0.0755 -2022-02-02 20:14:48,569 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 3.0108, Test RMSE: 6.0309, Test MAPE: 0.0797 -2022-02-02 20:14:48,569 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 20:14:48,570 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 20:14:48,571 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 20:14:48,571 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 20:14:48,572 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 20:14:48,573 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 20:14:48,573 - easytorch-training - INFO - test:: [test_time: -100.36 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 20:14:50,344 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_033.pt saved -2022-02-02 20:14:50,344 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:32 -2022-02-02 20:14:50,344 - easytorch-training - INFO - epoch 34 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.23it/s] -2022-02-02 20:19:56,378 - easytorch-training - INFO - train:: [train_loss: 2.5490, train_MAPE: 0.1750, train_RMSE: 10.1230, train_time: 306.03 (s), lr: 1.25e-03] -2022-02-02 20:20:46,736 - easytorch-training - INFO - val:: [val_time: 50.35 (s), val_loss: 6.8849, val_MAPE: 0.1790, val_RMSE: 9.8124] -2022-02-02 20:22:27,170 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1475, Test RMSE: 3.7177, Test MAPE: 0.0511 -2022-02-02 20:22:27,171 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4231, Test RMSE: 4.4737, Test MAPE: 0.0598 -2022-02-02 20:22:27,172 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6052, Test RMSE: 4.9795, Test MAPE: 0.0660 -2022-02-02 20:22:27,172 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7488, Test RMSE: 5.3708, Test MAPE: 0.0713 -2022-02-02 20:22:27,173 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8718, Test RMSE: 5.6972, Test MAPE: 0.0760 -2022-02-02 20:22:27,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9898, Test RMSE: 6.0030, Test MAPE: 0.0801 -2022-02-02 20:22:27,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 20:22:27,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 20:22:27,176 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 20:22:27,176 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 20:22:27,177 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 20:22:27,178 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 20:22:27,178 - easytorch-training - INFO - test:: [test_time: -100.44 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 20:22:28,576 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_034.pt saved -2022-02-02 20:22:28,576 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:35 -2022-02-02 20:22:28,576 - easytorch-training - INFO - epoch 35 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 20:27:33,960 - easytorch-training - INFO - train:: [train_loss: 2.5461, train_MAPE: 0.1742, train_RMSE: 10.1046, train_time: 305.38 (s), lr: 1.25e-03] -2022-02-02 20:28:21,697 - easytorch-training - INFO - val:: [val_time: 47.73 (s), val_loss: 6.8840, val_MAPE: 0.1790, val_RMSE: 9.8089] -2022-02-02 20:30:01,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1513, Test RMSE: 3.7216, Test MAPE: 0.0510 -2022-02-02 20:30:01,652 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4280, Test RMSE: 4.4804, Test MAPE: 0.0598 -2022-02-02 20:30:01,654 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6129, Test RMSE: 4.9907, Test MAPE: 0.0665 -2022-02-02 20:30:01,655 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7576, Test RMSE: 5.3854, Test MAPE: 0.0718 -2022-02-02 20:30:01,656 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8784, Test RMSE: 5.7056, Test MAPE: 0.0765 -2022-02-02 20:30:01,657 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9895, Test RMSE: 5.9878, Test MAPE: 0.0806 -2022-02-02 20:30:01,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 20:30:01,659 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 20:30:01,660 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 20:30:01,662 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 20:30:01,663 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 20:30:01,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 20:30:01,664 - easytorch-training - INFO - test:: [test_time: -99.96 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 20:30:03,474 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_035.pt saved -2022-02-02 20:30:03,475 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:28 -2022-02-02 20:30:03,475 - easytorch-training - INFO - epoch 36 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 20:35:10,528 - easytorch-training - INFO - train:: [train_loss: 2.5335, train_MAPE: 0.1742, train_RMSE: 10.0994, train_time: 307.05 (s), lr: 1.25e-03] -2022-02-02 20:36:00,004 - easytorch-training - INFO - val:: [val_time: 49.47 (s), val_loss: 6.8907, val_MAPE: 0.1791, val_RMSE: 9.8150] -2022-02-02 20:37:41,731 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1540, Test RMSE: 3.7273, Test MAPE: 0.0518 -2022-02-02 20:37:41,732 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4334, Test RMSE: 4.4887, Test MAPE: 0.0603 -2022-02-02 20:37:41,732 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6233, Test RMSE: 5.0187, Test MAPE: 0.0662 -2022-02-02 20:37:41,733 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7745, Test RMSE: 5.4307, Test MAPE: 0.0715 -2022-02-02 20:37:41,734 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.9020, Test RMSE: 5.7602, Test MAPE: 0.0760 -2022-02-02 20:37:41,734 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 3.0110, Test RMSE: 6.0368, Test MAPE: 0.0798 -2022-02-02 20:37:41,735 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 11.4996, Test RMSE: 14.0477, Test MAPE: 0.3135 -2022-02-02 20:37:41,735 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 20:37:41,736 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 20:37:41,737 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 20:37:41,737 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 20:37:41,738 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 20:37:41,738 - easytorch-training - INFO - test:: [test_time: -101.73 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 20:37:43,052 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_036.pt saved -2022-02-02 20:37:43,052 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:34 -2022-02-02 20:37:43,053 - easytorch-training - INFO - epoch 37 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 20:42:50,945 - easytorch-training - INFO - train:: [train_loss: 2.6077, train_MAPE: 0.1561, train_RMSE: 9.4579, train_time: 307.89 (s), lr: 6.25e-04] -2022-02-02 20:43:39,108 - easytorch-training - INFO - val:: [val_time: 48.16 (s), val_loss: 6.1753, val_MAPE: 0.1609, val_RMSE: 9.1965] -2022-02-02 20:45:22,530 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1431, Test RMSE: 3.7195, Test MAPE: 0.0507 -2022-02-02 20:45:22,531 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4218, Test RMSE: 4.4792, Test MAPE: 0.0594 -2022-02-02 20:45:22,532 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6050, Test RMSE: 4.9907, Test MAPE: 0.0660 -2022-02-02 20:45:22,532 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7487, Test RMSE: 5.3961, Test MAPE: 0.0715 -2022-02-02 20:45:22,533 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8675, Test RMSE: 5.7263, Test MAPE: 0.0761 -2022-02-02 20:45:22,534 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9754, Test RMSE: 6.0049, Test MAPE: 0.0803 -2022-02-02 20:45:22,534 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0721, Test RMSE: 6.2079, Test MAPE: 0.0843 -2022-02-02 20:45:22,535 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 20:45:22,535 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 20:45:22,536 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 20:45:22,537 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 20:45:22,537 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 20:45:22,538 - easytorch-training - INFO - test:: [test_time: -103.43 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 20:45:23,871 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_037.pt saved -2022-02-02 20:45:23,872 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:43 -2022-02-02 20:45:23,872 - easytorch-training - INFO - epoch 38 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 20:50:31,424 - easytorch-training - INFO - train:: [train_loss: 2.5789, train_MAPE: 0.1572, train_RMSE: 9.4899, train_time: 307.55 (s), lr: 6.25e-04] -2022-02-02 20:51:20,797 - easytorch-training - INFO - val:: [val_time: 49.37 (s), val_loss: 6.1758, val_MAPE: 0.1616, val_RMSE: 9.1970] -2022-02-02 20:53:01,319 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1431, Test RMSE: 3.7278, Test MAPE: 0.0507 -2022-02-02 20:53:01,320 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4210, Test RMSE: 4.4868, Test MAPE: 0.0597 -2022-02-02 20:53:01,321 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6043, Test RMSE: 4.9942, Test MAPE: 0.0666 -2022-02-02 20:53:01,321 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7480, Test RMSE: 5.3925, Test MAPE: 0.0725 -2022-02-02 20:53:01,322 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8704, Test RMSE: 5.7291, Test MAPE: 0.0777 -2022-02-02 20:53:01,323 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9764, Test RMSE: 6.0112, Test MAPE: 0.0820 -2022-02-02 20:53:01,323 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0745, Test RMSE: 6.2384, Test MAPE: 0.0865 -2022-02-02 20:53:01,324 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 20:53:01,324 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 20:53:01,325 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 20:53:01,326 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 20:53:01,326 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 20:53:01,326 - easytorch-training - INFO - test:: [test_time: -100.53 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 20:53:02,615 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_038.pt saved -2022-02-02 20:53:02,616 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:47 -2022-02-02 20:53:02,616 - easytorch-training - INFO - epoch 39 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 20:58:07,873 - easytorch-training - INFO - train:: [train_loss: 2.5801, train_MAPE: 0.1574, train_RMSE: 9.4845, train_time: 305.26 (s), lr: 6.25e-04] -2022-02-02 20:59:00,539 - easytorch-training - INFO - val:: [val_time: 52.66 (s), val_loss: 6.1748, val_MAPE: 0.1614, val_RMSE: 9.1908] -2022-02-02 21:00:43,325 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1456, Test RMSE: 3.7180, Test MAPE: 0.0510 -2022-02-02 21:00:43,326 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4226, Test RMSE: 4.4729, Test MAPE: 0.0600 -2022-02-02 21:00:43,327 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6054, Test RMSE: 4.9857, Test MAPE: 0.0671 -2022-02-02 21:00:43,328 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7480, Test RMSE: 5.3860, Test MAPE: 0.0730 -2022-02-02 21:00:43,330 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8658, Test RMSE: 5.7094, Test MAPE: 0.0778 -2022-02-02 21:00:43,331 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9699, Test RMSE: 5.9866, Test MAPE: 0.0822 -2022-02-02 21:00:43,332 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0671, Test RMSE: 6.2200, Test MAPE: 0.0861 -2022-02-02 21:00:43,333 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 21:00:43,334 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:00:43,335 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:00:43,336 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:00:43,338 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:00:43,338 - easytorch-training - INFO - test:: [test_time: -102.80 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:00:45,114 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_039.pt saved -2022-02-02 21:00:45,115 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:00 -2022-02-02 21:00:45,115 - easytorch-training - INFO - epoch 40 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 21:05:50,743 - easytorch-training - INFO - train:: [train_loss: 2.5902, train_MAPE: 0.1585, train_RMSE: 9.5299, train_time: 305.63 (s), lr: 6.25e-04] -2022-02-02 21:06:38,817 - easytorch-training - INFO - val:: [val_time: 48.07 (s), val_loss: 6.1774, val_MAPE: 0.1615, val_RMSE: 9.1999] -2022-02-02 21:08:22,185 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1453, Test RMSE: 3.7271, Test MAPE: 0.0510 -2022-02-02 21:08:22,186 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4219, Test RMSE: 4.4788, Test MAPE: 0.0600 -2022-02-02 21:08:22,187 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6116, Test RMSE: 5.0006, Test MAPE: 0.0670 -2022-02-02 21:08:22,187 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7537, Test RMSE: 5.4015, Test MAPE: 0.0725 -2022-02-02 21:08:22,188 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8700, Test RMSE: 5.7208, Test MAPE: 0.0770 -2022-02-02 21:08:22,188 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9733, Test RMSE: 5.9934, Test MAPE: 0.0811 -2022-02-02 21:08:22,189 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0692, Test RMSE: 6.2278, Test MAPE: 0.0849 -2022-02-02 21:08:22,190 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 21:08:22,190 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:08:22,191 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:08:22,192 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:08:22,192 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:08:22,192 - easytorch-training - INFO - test:: [test_time: -103.37 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:08:23,963 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_040.pt saved -2022-02-02 21:08:23,966 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:03 -2022-02-02 21:08:23,967 - easytorch-training - INFO - epoch 41 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 21:13:30,895 - easytorch-training - INFO - train:: [train_loss: 2.5793, train_MAPE: 0.1570, train_RMSE: 9.4733, train_time: 306.93 (s), lr: 6.25e-04] -2022-02-02 21:14:20,318 - easytorch-training - INFO - val:: [val_time: 49.42 (s), val_loss: 6.1729, val_MAPE: 0.1609, val_RMSE: 9.1937] -2022-02-02 21:15:59,400 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1435, Test RMSE: 3.7243, Test MAPE: 0.0505 -2022-02-02 21:15:59,401 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4173, Test RMSE: 4.4808, Test MAPE: 0.0593 -2022-02-02 21:15:59,402 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.5985, Test RMSE: 4.9865, Test MAPE: 0.0658 -2022-02-02 21:15:59,402 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7398, Test RMSE: 5.3821, Test MAPE: 0.0713 -2022-02-02 21:15:59,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8580, Test RMSE: 5.6996, Test MAPE: 0.0761 -2022-02-02 21:15:59,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9616, Test RMSE: 5.9744, Test MAPE: 0.0804 -2022-02-02 21:15:59,404 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0563, Test RMSE: 6.2038, Test MAPE: 0.0843 -2022-02-02 21:15:59,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 21:15:59,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:15:59,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:15:59,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:15:59,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:15:59,407 - easytorch-training - INFO - test:: [test_time: -99.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:16:00,763 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_041.pt saved -2022-02-02 21:16:00,763 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:00 -2022-02-02 21:16:00,763 - easytorch-training - INFO - epoch 42 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 21:21:08,752 - easytorch-training - INFO - train:: [train_loss: 2.5761, train_MAPE: 0.1575, train_RMSE: 9.4888, train_time: 307.99 (s), lr: 6.25e-04] -2022-02-02 21:21:56,086 - easytorch-training - INFO - val:: [val_time: 47.33 (s), val_loss: 6.1706, val_MAPE: 0.1611, val_RMSE: 9.1853] -2022-02-02 21:23:38,904 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1392, Test RMSE: 3.7100, Test MAPE: 0.0509 -2022-02-02 21:23:38,905 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4167, Test RMSE: 4.4569, Test MAPE: 0.0600 -2022-02-02 21:23:38,906 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6009, Test RMSE: 4.9652, Test MAPE: 0.0669 -2022-02-02 21:23:38,907 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7419, Test RMSE: 5.3577, Test MAPE: 0.0723 -2022-02-02 21:23:38,907 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8577, Test RMSE: 5.6722, Test MAPE: 0.0767 -2022-02-02 21:23:38,908 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9592, Test RMSE: 5.9407, Test MAPE: 0.0806 -2022-02-02 21:23:38,908 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0548, Test RMSE: 6.1748, Test MAPE: 0.0846 -2022-02-02 21:23:38,909 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 11.4998, Test RMSE: 14.0479, Test MAPE: 0.3135 -2022-02-02 21:23:38,910 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:23:38,910 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:23:38,911 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:23:38,912 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:23:38,912 - easytorch-training - INFO - test:: [test_time: -102.82 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:23:40,203 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_042.pt saved -2022-02-02 21:23:40,203 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:05 -2022-02-02 21:23:40,203 - easytorch-training - INFO - epoch 43 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 21:28:46,538 - easytorch-training - INFO - train:: [train_loss: 2.6589, train_MAPE: 0.1409, train_RMSE: 8.8339, train_time: 306.34 (s), lr: 6.25e-04] -2022-02-02 21:29:35,756 - easytorch-training - INFO - val:: [val_time: 49.21 (s), val_loss: 5.4771, val_MAPE: 0.1430, val_RMSE: 8.5290] -2022-02-02 21:31:24,923 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1493, Test RMSE: 3.7213, Test MAPE: 0.0508 -2022-02-02 21:31:24,924 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4240, Test RMSE: 4.4676, Test MAPE: 0.0595 -2022-02-02 21:31:24,925 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6067, Test RMSE: 4.9750, Test MAPE: 0.0659 -2022-02-02 21:31:24,925 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7484, Test RMSE: 5.3709, Test MAPE: 0.0714 -2022-02-02 21:31:24,926 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8687, Test RMSE: 5.6925, Test MAPE: 0.0760 -2022-02-02 21:31:24,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9713, Test RMSE: 5.9634, Test MAPE: 0.0801 -2022-02-02 21:31:24,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0625, Test RMSE: 6.1870, Test MAPE: 0.0838 -2022-02-02 21:31:24,928 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1446, Test RMSE: 6.3581, Test MAPE: 0.0873 -2022-02-02 21:31:24,929 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:31:24,929 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:31:24,930 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:31:24,931 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:31:24,931 - easytorch-training - INFO - test:: [test_time: -109.17 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:31:26,181 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_043.pt saved -2022-02-02 21:31:26,181 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:24 -2022-02-02 21:31:26,181 - easytorch-training - INFO - epoch 44 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 21:36:33,043 - easytorch-training - INFO - train:: [train_loss: 2.6199, train_MAPE: 0.1406, train_RMSE: 8.8295, train_time: 306.86 (s), lr: 6.25e-04] -2022-02-02 21:37:20,460 - easytorch-training - INFO - val:: [val_time: 47.41 (s), val_loss: 5.4764, val_MAPE: 0.1424, val_RMSE: 8.5341] -2022-02-02 21:39:02,464 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1447, Test RMSE: 3.7250, Test MAPE: 0.0506 -2022-02-02 21:39:02,465 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4224, Test RMSE: 4.4727, Test MAPE: 0.0589 -2022-02-02 21:39:02,466 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6052, Test RMSE: 4.9778, Test MAPE: 0.0652 -2022-02-02 21:39:02,466 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7477, Test RMSE: 5.3739, Test MAPE: 0.0702 -2022-02-02 21:39:02,467 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8693, Test RMSE: 5.6949, Test MAPE: 0.0746 -2022-02-02 21:39:02,468 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9727, Test RMSE: 5.9609, Test MAPE: 0.0785 -2022-02-02 21:39:02,468 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0676, Test RMSE: 6.1949, Test MAPE: 0.0820 -2022-02-02 21:39:02,469 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1548, Test RMSE: 6.3952, Test MAPE: 0.0856 -2022-02-02 21:39:02,469 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:39:02,470 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:39:02,471 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:39:02,471 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:39:02,471 - easytorch-training - INFO - test:: [test_time: -102.01 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:39:04,121 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_044.pt saved -2022-02-02 21:39:04,122 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:24 -2022-02-02 21:39:04,122 - easytorch-training - INFO - epoch 45 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-02 21:44:10,632 - easytorch-training - INFO - train:: [train_loss: 2.6138, train_MAPE: 0.1399, train_RMSE: 8.8083, train_time: 306.51 (s), lr: 6.25e-04] -2022-02-02 21:44:58,142 - easytorch-training - INFO - val:: [val_time: 47.50 (s), val_loss: 5.4711, val_MAPE: 0.1428, val_RMSE: 8.5301] -2022-02-02 21:46:43,972 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1463, Test RMSE: 3.7309, Test MAPE: 0.0510 -2022-02-02 21:46:43,973 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4194, Test RMSE: 4.4770, Test MAPE: 0.0596 -2022-02-02 21:46:43,974 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.5989, Test RMSE: 4.9766, Test MAPE: 0.0659 -2022-02-02 21:46:43,975 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7383, Test RMSE: 5.3699, Test MAPE: 0.0710 -2022-02-02 21:46:43,975 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8536, Test RMSE: 5.6720, Test MAPE: 0.0755 -2022-02-02 21:46:43,976 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9547, Test RMSE: 5.9320, Test MAPE: 0.0796 -2022-02-02 21:46:43,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0474, Test RMSE: 6.1610, Test MAPE: 0.0835 -2022-02-02 21:46:43,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1374, Test RMSE: 6.3643, Test MAPE: 0.0872 -2022-02-02 21:46:43,978 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:46:43,978 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:46:43,979 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:46:43,980 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:46:43,980 - easytorch-training - INFO - test:: [test_time: -105.84 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:46:45,167 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_045.pt saved -2022-02-02 21:46:45,167 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:31 -2022-02-02 21:46:45,167 - easytorch-training - INFO - epoch 46 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.23it/s] -2022-02-02 21:51:51,268 - easytorch-training - INFO - train:: [train_loss: 2.6208, train_MAPE: 0.1402, train_RMSE: 8.8085, train_time: 306.10 (s), lr: 6.25e-04] -2022-02-02 21:52:39,590 - easytorch-training - INFO - val:: [val_time: 48.32 (s), val_loss: 5.4796, val_MAPE: 0.1440, val_RMSE: 8.5375] -2022-02-02 21:54:28,757 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1434, Test RMSE: 3.7182, Test MAPE: 0.0510 -2022-02-02 21:54:28,758 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4215, Test RMSE: 4.4663, Test MAPE: 0.0604 -2022-02-02 21:54:28,758 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6072, Test RMSE: 4.9748, Test MAPE: 0.0674 -2022-02-02 21:54:28,759 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7532, Test RMSE: 5.3817, Test MAPE: 0.0735 -2022-02-02 21:54:28,760 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8724, Test RMSE: 5.7132, Test MAPE: 0.0784 -2022-02-02 21:54:28,761 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9753, Test RMSE: 5.9888, Test MAPE: 0.0826 -2022-02-02 21:54:28,762 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0632, Test RMSE: 6.2144, Test MAPE: 0.0863 -2022-02-02 21:54:28,762 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1481, Test RMSE: 6.4121, Test MAPE: 0.0898 -2022-02-02 21:54:28,763 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 21:54:28,764 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 21:54:28,765 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 21:54:28,766 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 21:54:28,766 - easytorch-training - INFO - test:: [test_time: -109.17 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 21:54:30,468 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_046.pt saved -2022-02-02 21:54:30,469 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:47 -2022-02-02 21:54:30,469 - easytorch-training - INFO - epoch 47 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 21:59:35,386 - easytorch-training - INFO - train:: [train_loss: 2.6027, train_MAPE: 0.1393, train_RMSE: 8.7839, train_time: 304.92 (s), lr: 6.25e-04] -2022-02-02 22:00:22,896 - easytorch-training - INFO - val:: [val_time: 47.51 (s), val_loss: 5.4768, val_MAPE: 0.1433, val_RMSE: 8.5367] -2022-02-02 22:02:04,897 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1519, Test RMSE: 3.7339, Test MAPE: 0.0508 -2022-02-02 22:02:04,898 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4220, Test RMSE: 4.4694, Test MAPE: 0.0597 -2022-02-02 22:02:04,899 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6021, Test RMSE: 4.9710, Test MAPE: 0.0662 -2022-02-02 22:02:04,900 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7432, Test RMSE: 5.3674, Test MAPE: 0.0717 -2022-02-02 22:02:04,901 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8616, Test RMSE: 5.6897, Test MAPE: 0.0764 -2022-02-02 22:02:04,903 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9616, Test RMSE: 5.9617, Test MAPE: 0.0808 -2022-02-02 22:02:04,904 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0528, Test RMSE: 6.1965, Test MAPE: 0.0847 -2022-02-02 22:02:04,905 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1374, Test RMSE: 6.3945, Test MAPE: 0.0880 -2022-02-02 22:02:04,906 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 22:02:04,907 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:02:04,908 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:02:04,909 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:02:04,909 - easytorch-training - INFO - test:: [test_time: -102.01 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:02:06,680 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_047.pt saved -2022-02-02 22:02:06,680 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:43 -2022-02-02 22:02:06,680 - easytorch-training - INFO - epoch 48 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:08<00:00, 1.22it/s] -2022-02-02 22:07:15,221 - easytorch-training - INFO - train:: [train_loss: 2.6111, train_MAPE: 0.1401, train_RMSE: 8.8123, train_time: 308.54 (s), lr: 6.25e-04] -2022-02-02 22:08:03,138 - easytorch-training - INFO - val:: [val_time: 47.91 (s), val_loss: 5.4763, val_MAPE: 0.1428, val_RMSE: 8.5380] -2022-02-02 22:09:43,611 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1492, Test RMSE: 3.7413, Test MAPE: 0.0506 -2022-02-02 22:09:43,611 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4236, Test RMSE: 4.4915, Test MAPE: 0.0591 -2022-02-02 22:09:43,612 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6045, Test RMSE: 4.9878, Test MAPE: 0.0655 -2022-02-02 22:09:43,613 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7447, Test RMSE: 5.3794, Test MAPE: 0.0706 -2022-02-02 22:09:43,613 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8619, Test RMSE: 5.6953, Test MAPE: 0.0751 -2022-02-02 22:09:43,614 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9621, Test RMSE: 5.9560, Test MAPE: 0.0791 -2022-02-02 22:09:43,615 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0509, Test RMSE: 6.1779, Test MAPE: 0.0826 -2022-02-02 22:09:43,615 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1369, Test RMSE: 6.3806, Test MAPE: 0.0860 -2022-02-02 22:09:43,616 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 11.5000, Test RMSE: 14.0480, Test MAPE: 0.3135 -2022-02-02 22:09:43,617 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:09:43,617 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:09:43,618 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:09:43,618 - easytorch-training - INFO - test:: [test_time: -100.48 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:09:44,842 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_048.pt saved -2022-02-02 22:09:44,843 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:44 -2022-02-02 22:09:44,843 - easytorch-training - INFO - epoch 49 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 22:14:49,513 - easytorch-training - INFO - train:: [train_loss: 2.6833, train_MAPE: 0.1228, train_RMSE: 8.0850, train_time: 304.67 (s), lr: 6.25e-04] -2022-02-02 22:15:37,403 - easytorch-training - INFO - val:: [val_time: 47.88 (s), val_loss: 4.7860, val_MAPE: 0.1269, val_RMSE: 7.8401] -2022-02-02 22:17:18,341 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1511, Test RMSE: 3.7375, Test MAPE: 0.0516 -2022-02-02 22:17:18,342 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4291, Test RMSE: 4.4949, Test MAPE: 0.0608 -2022-02-02 22:17:18,342 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6140, Test RMSE: 5.0086, Test MAPE: 0.0679 -2022-02-02 22:17:18,343 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7561, Test RMSE: 5.4089, Test MAPE: 0.0736 -2022-02-02 22:17:18,344 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8755, Test RMSE: 5.7393, Test MAPE: 0.0787 -2022-02-02 22:17:18,344 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9792, Test RMSE: 6.0254, Test MAPE: 0.0830 -2022-02-02 22:17:18,345 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0736, Test RMSE: 6.2750, Test MAPE: 0.0872 -2022-02-02 22:17:18,346 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1535, Test RMSE: 6.4706, Test MAPE: 0.0906 -2022-02-02 22:17:18,346 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2315, Test RMSE: 6.6119, Test MAPE: 0.0941 -2022-02-02 22:17:18,347 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:17:18,347 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:17:18,348 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:17:18,348 - easytorch-training - INFO - test:: [test_time: -100.94 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:17:20,006 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_049.pt saved -2022-02-02 22:17:20,006 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:38 -2022-02-02 22:17:20,006 - easytorch-training - INFO - epoch 50 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:08<00:00, 1.22it/s] -2022-02-02 22:22:28,256 - easytorch-training - INFO - train:: [train_loss: 2.6525, train_MAPE: 0.1225, train_RMSE: 8.0760, train_time: 308.25 (s), lr: 6.25e-04] -2022-02-02 22:23:15,086 - easytorch-training - INFO - val:: [val_time: 46.82 (s), val_loss: 4.7808, val_MAPE: 0.1260, val_RMSE: 7.8332] -2022-02-02 22:24:56,166 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1512, Test RMSE: 3.7429, Test MAPE: 0.0509 -2022-02-02 22:24:56,167 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4238, Test RMSE: 4.4893, Test MAPE: 0.0598 -2022-02-02 22:24:56,168 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6034, Test RMSE: 4.9835, Test MAPE: 0.0662 -2022-02-02 22:24:56,169 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7447, Test RMSE: 5.3815, Test MAPE: 0.0715 -2022-02-02 22:24:56,170 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8619, Test RMSE: 5.7000, Test MAPE: 0.0766 -2022-02-02 22:24:56,172 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9652, Test RMSE: 5.9763, Test MAPE: 0.0807 -2022-02-02 22:24:56,173 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0545, Test RMSE: 6.2086, Test MAPE: 0.0845 -2022-02-02 22:24:56,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1326, Test RMSE: 6.4057, Test MAPE: 0.0878 -2022-02-02 22:24:56,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2068, Test RMSE: 6.5510, Test MAPE: 0.0909 -2022-02-02 22:24:56,176 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:24:56,177 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:24:56,178 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:24:56,178 - easytorch-training - INFO - test:: [test_time: -101.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:24:57,925 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_050.pt saved -2022-02-02 22:24:57,928 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:37 -2022-02-02 22:24:57,928 - easytorch-training - INFO - epoch 51 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 22:30:05,484 - easytorch-training - INFO - train:: [train_loss: 2.6608, train_MAPE: 0.1233, train_RMSE: 8.1036, train_time: 307.56 (s), lr: 6.25e-04] -2022-02-02 22:30:53,784 - easytorch-training - INFO - val:: [val_time: 48.30 (s), val_loss: 4.7848, val_MAPE: 0.1257, val_RMSE: 7.8311] -2022-02-02 22:32:33,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1543, Test RMSE: 3.7387, Test MAPE: 0.0517 -2022-02-02 22:32:33,214 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4268, Test RMSE: 4.4826, Test MAPE: 0.0605 -2022-02-02 22:32:33,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6059, Test RMSE: 4.9685, Test MAPE: 0.0668 -2022-02-02 22:32:33,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7468, Test RMSE: 5.3721, Test MAPE: 0.0715 -2022-02-02 22:32:33,216 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8632, Test RMSE: 5.6906, Test MAPE: 0.0763 -2022-02-02 22:32:33,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9626, Test RMSE: 5.9597, Test MAPE: 0.0800 -2022-02-02 22:32:33,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0494, Test RMSE: 6.1835, Test MAPE: 0.0834 -2022-02-02 22:32:33,218 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1262, Test RMSE: 6.3788, Test MAPE: 0.0865 -2022-02-02 22:32:33,219 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2004, Test RMSE: 6.5364, Test MAPE: 0.0893 -2022-02-02 22:32:33,219 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:32:33,220 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:32:33,221 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:32:33,221 - easytorch-training - INFO - test:: [test_time: -99.43 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:32:34,473 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_051.pt saved -2022-02-02 22:32:34,473 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:35 -2022-02-02 22:32:34,473 - easytorch-training - INFO - epoch 52 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-02 22:37:38,112 - easytorch-training - INFO - train:: [train_loss: 2.6384, train_MAPE: 0.1219, train_RMSE: 8.0544, train_time: 303.64 (s), lr: 6.25e-04] -2022-02-02 22:38:26,673 - easytorch-training - INFO - val:: [val_time: 48.56 (s), val_loss: 4.7903, val_MAPE: 0.1252, val_RMSE: 7.8428] -2022-02-02 22:40:17,057 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1603, Test RMSE: 3.7616, Test MAPE: 0.0510 -2022-02-02 22:40:17,065 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4375, Test RMSE: 4.5136, Test MAPE: 0.0597 -2022-02-02 22:40:17,066 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6182, Test RMSE: 5.0123, Test MAPE: 0.0659 -2022-02-02 22:40:17,067 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7599, Test RMSE: 5.4067, Test MAPE: 0.0711 -2022-02-02 22:40:17,068 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8750, Test RMSE: 5.7229, Test MAPE: 0.0755 -2022-02-02 22:40:17,069 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9751, Test RMSE: 5.9893, Test MAPE: 0.0793 -2022-02-02 22:40:17,070 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0595, Test RMSE: 6.2072, Test MAPE: 0.0829 -2022-02-02 22:40:17,072 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1421, Test RMSE: 6.4105, Test MAPE: 0.0858 -2022-02-02 22:40:17,073 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2210, Test RMSE: 6.5807, Test MAPE: 0.0888 -2022-02-02 22:40:17,074 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:40:17,075 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:40:17,076 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:40:17,076 - easytorch-training - INFO - test:: [test_time: -110.40 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:40:18,787 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_052.pt saved -2022-02-02 22:40:18,788 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:47 -2022-02-02 22:40:18,788 - easytorch-training - INFO - epoch 53 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 22:45:26,434 - easytorch-training - INFO - train:: [train_loss: 2.6396, train_MAPE: 0.1222, train_RMSE: 8.0638, train_time: 307.65 (s), lr: 6.25e-04] -2022-02-02 22:46:14,578 - easytorch-training - INFO - val:: [val_time: 48.14 (s), val_loss: 4.7856, val_MAPE: 0.1258, val_RMSE: 7.8357] -2022-02-02 22:47:55,665 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1514, Test RMSE: 3.7289, Test MAPE: 0.0515 -2022-02-02 22:47:55,666 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4239, Test RMSE: 4.4761, Test MAPE: 0.0606 -2022-02-02 22:47:55,667 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6049, Test RMSE: 4.9728, Test MAPE: 0.0671 -2022-02-02 22:47:55,667 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7417, Test RMSE: 5.3687, Test MAPE: 0.0721 -2022-02-02 22:47:55,668 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8583, Test RMSE: 5.6901, Test MAPE: 0.0764 -2022-02-02 22:47:55,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9595, Test RMSE: 5.9551, Test MAPE: 0.0801 -2022-02-02 22:47:55,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0472, Test RMSE: 6.1921, Test MAPE: 0.0836 -2022-02-02 22:47:55,670 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1290, Test RMSE: 6.3955, Test MAPE: 0.0866 -2022-02-02 22:47:55,671 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2069, Test RMSE: 6.5687, Test MAPE: 0.0896 -2022-02-02 22:47:55,671 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:47:55,672 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:47:55,672 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:47:55,673 - easytorch-training - INFO - test:: [test_time: -101.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:47:56,960 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_053.pt saved -2022-02-02 22:47:56,960 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:47 -2022-02-02 22:47:56,960 - easytorch-training - INFO - epoch 54 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 22:53:02,635 - easytorch-training - INFO - train:: [train_loss: 2.6272, train_MAPE: 0.1215, train_RMSE: 8.0418, train_time: 305.67 (s), lr: 6.25e-04] -2022-02-02 22:53:49,683 - easytorch-training - INFO - val:: [val_time: 47.04 (s), val_loss: 4.7811, val_MAPE: 0.1257, val_RMSE: 7.8356] -2022-02-02 22:55:31,404 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1495, Test RMSE: 3.7319, Test MAPE: 0.0513 -2022-02-02 22:55:31,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4240, Test RMSE: 4.4837, Test MAPE: 0.0598 -2022-02-02 22:55:31,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6061, Test RMSE: 4.9940, Test MAPE: 0.0662 -2022-02-02 22:55:31,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7479, Test RMSE: 5.3937, Test MAPE: 0.0715 -2022-02-02 22:55:31,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8651, Test RMSE: 5.7182, Test MAPE: 0.0763 -2022-02-02 22:55:31,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9646, Test RMSE: 5.9797, Test MAPE: 0.0804 -2022-02-02 22:55:31,408 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0564, Test RMSE: 6.2111, Test MAPE: 0.0843 -2022-02-02 22:55:31,409 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1359, Test RMSE: 6.4077, Test MAPE: 0.0876 -2022-02-02 22:55:31,409 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2093, Test RMSE: 6.5709, Test MAPE: 0.0902 -2022-02-02 22:55:31,410 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 11.5003, Test RMSE: 14.0482, Test MAPE: 0.3135 -2022-02-02 22:55:31,411 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 22:55:31,411 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 22:55:31,411 - easytorch-training - INFO - test:: [test_time: -101.73 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 22:55:32,727 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_054.pt saved -2022-02-02 22:55:32,727 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:43 -2022-02-02 22:55:32,727 - easytorch-training - INFO - epoch 55 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 23:00:36,850 - easytorch-training - INFO - train:: [train_loss: 2.7058, train_MAPE: 0.1056, train_RMSE: 7.2840, train_time: 304.12 (s), lr: 3.13e-04] -2022-02-02 23:01:24,182 - easytorch-training - INFO - val:: [val_time: 47.33 (s), val_loss: 4.0990, val_MAPE: 0.1084, val_RMSE: 7.0606] -2022-02-02 23:03:10,205 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1512, Test RMSE: 3.7353, Test MAPE: 0.0509 -2022-02-02 23:03:10,212 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4277, Test RMSE: 4.4893, Test MAPE: 0.0597 -2022-02-02 23:03:10,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6098, Test RMSE: 4.9984, Test MAPE: 0.0663 -2022-02-02 23:03:10,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7504, Test RMSE: 5.3939, Test MAPE: 0.0718 -2022-02-02 23:03:10,214 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8697, Test RMSE: 5.7239, Test MAPE: 0.0766 -2022-02-02 23:03:10,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9692, Test RMSE: 5.9892, Test MAPE: 0.0809 -2022-02-02 23:03:10,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0584, Test RMSE: 6.2141, Test MAPE: 0.0846 -2022-02-02 23:03:10,216 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1367, Test RMSE: 6.4127, Test MAPE: 0.0878 -2022-02-02 23:03:10,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2069, Test RMSE: 6.5762, Test MAPE: 0.0908 -2022-02-02 23:03:10,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2876, Test RMSE: 6.6745, Test MAPE: 0.0939 -2022-02-02 23:03:10,218 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 23:03:10,219 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:03:10,219 - easytorch-training - INFO - test:: [test_time: -106.03 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:03:11,471 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_055.pt saved -2022-02-02 23:03:11,471 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:44 -2022-02-02 23:03:11,471 - easytorch-training - INFO - epoch 56 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.23it/s] -2022-02-02 23:08:15,134 - easytorch-training - INFO - train:: [train_loss: 2.6583, train_MAPE: 0.1046, train_RMSE: 7.2475, train_time: 303.66 (s), lr: 3.13e-04] -2022-02-02 23:09:03,878 - easytorch-training - INFO - val:: [val_time: 48.74 (s), val_loss: 4.0928, val_MAPE: 0.1084, val_RMSE: 7.0616] -2022-02-02 23:10:44,442 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1512, Test RMSE: 3.7395, Test MAPE: 0.0507 -2022-02-02 23:10:44,443 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4248, Test RMSE: 4.4899, Test MAPE: 0.0597 -2022-02-02 23:10:44,444 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6052, Test RMSE: 4.9933, Test MAPE: 0.0663 -2022-02-02 23:10:44,445 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7472, Test RMSE: 5.3967, Test MAPE: 0.0718 -2022-02-02 23:10:44,446 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8662, Test RMSE: 5.7275, Test MAPE: 0.0766 -2022-02-02 23:10:44,448 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9638, Test RMSE: 5.9882, Test MAPE: 0.0809 -2022-02-02 23:10:44,449 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0526, Test RMSE: 6.2175, Test MAPE: 0.0845 -2022-02-02 23:10:44,450 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1314, Test RMSE: 6.4202, Test MAPE: 0.0878 -2022-02-02 23:10:44,451 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2014, Test RMSE: 6.5820, Test MAPE: 0.0908 -2022-02-02 23:10:44,452 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2732, Test RMSE: 6.6901, Test MAPE: 0.0942 -2022-02-02 23:10:44,453 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 23:10:44,454 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:10:44,454 - easytorch-training - INFO - test:: [test_time: -100.57 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:10:46,248 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_056.pt saved -2022-02-02 23:10:46,248 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:38 -2022-02-02 23:10:46,248 - easytorch-training - INFO - epoch 57 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-02 23:15:53,705 - easytorch-training - INFO - train:: [train_loss: 2.6594, train_MAPE: 0.1047, train_RMSE: 7.2449, train_time: 307.46 (s), lr: 3.13e-04] -2022-02-02 23:16:41,238 - easytorch-training - INFO - val:: [val_time: 47.53 (s), val_loss: 4.0934, val_MAPE: 0.1089, val_RMSE: 7.0627] -2022-02-02 23:18:22,058 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1510, Test RMSE: 3.7275, Test MAPE: 0.0512 -2022-02-02 23:18:22,059 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4259, Test RMSE: 4.4844, Test MAPE: 0.0603 -2022-02-02 23:18:22,060 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6071, Test RMSE: 4.9930, Test MAPE: 0.0672 -2022-02-02 23:18:22,060 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7506, Test RMSE: 5.3994, Test MAPE: 0.0730 -2022-02-02 23:18:22,061 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8676, Test RMSE: 5.7299, Test MAPE: 0.0777 -2022-02-02 23:18:22,062 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9702, Test RMSE: 6.0100, Test MAPE: 0.0820 -2022-02-02 23:18:22,062 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0611, Test RMSE: 6.2475, Test MAPE: 0.0857 -2022-02-02 23:18:22,063 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1406, Test RMSE: 6.4596, Test MAPE: 0.0890 -2022-02-02 23:18:22,064 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2095, Test RMSE: 6.6176, Test MAPE: 0.0920 -2022-02-02 23:18:22,064 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2763, Test RMSE: 6.7326, Test MAPE: 0.0948 -2022-02-02 23:18:22,065 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 23:18:22,066 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:18:22,066 - easytorch-training - INFO - test:: [test_time: -100.83 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:18:23,342 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_057.pt saved -2022-02-02 23:18:23,342 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:36 -2022-02-02 23:18:23,342 - easytorch-training - INFO - epoch 58 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:02<00:00, 1.24it/s] -2022-02-02 23:23:26,223 - easytorch-training - INFO - train:: [train_loss: 2.6568, train_MAPE: 0.1044, train_RMSE: 7.2421, train_time: 302.88 (s), lr: 3.13e-04] -2022-02-02 23:24:13,377 - easytorch-training - INFO - val:: [val_time: 47.14 (s), val_loss: 4.0924, val_MAPE: 0.1085, val_RMSE: 7.0646] -2022-02-02 23:25:59,995 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1495, Test RMSE: 3.7349, Test MAPE: 0.0510 -2022-02-02 23:25:59,997 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4243, Test RMSE: 4.4815, Test MAPE: 0.0600 -2022-02-02 23:25:59,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6061, Test RMSE: 4.9850, Test MAPE: 0.0666 -2022-02-02 23:25:59,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7479, Test RMSE: 5.3835, Test MAPE: 0.0720 -2022-02-02 23:26:00,001 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8661, Test RMSE: 5.7118, Test MAPE: 0.0768 -2022-02-02 23:26:00,002 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9673, Test RMSE: 5.9878, Test MAPE: 0.0807 -2022-02-02 23:26:00,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0556, Test RMSE: 6.2167, Test MAPE: 0.0845 -2022-02-02 23:26:00,004 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1328, Test RMSE: 6.4167, Test MAPE: 0.0876 -2022-02-02 23:26:00,006 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2010, Test RMSE: 6.5738, Test MAPE: 0.0907 -2022-02-02 23:26:00,007 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2706, Test RMSE: 6.6980, Test MAPE: 0.0938 -2022-02-02 23:26:00,008 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 23:26:00,009 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:26:00,009 - easytorch-training - INFO - test:: [test_time: -106.63 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:26:01,771 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_058.pt saved -2022-02-02 23:26:01,772 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:37 -2022-02-02 23:26:01,772 - easytorch-training - INFO - epoch 59 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 23:31:06,722 - easytorch-training - INFO - train:: [train_loss: 2.6654, train_MAPE: 0.1045, train_RMSE: 7.2494, train_time: 304.95 (s), lr: 3.13e-04] -2022-02-02 23:31:57,709 - easytorch-training - INFO - val:: [val_time: 50.98 (s), val_loss: 4.0889, val_MAPE: 0.1083, val_RMSE: 7.0561] -2022-02-02 23:33:40,871 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1544, Test RMSE: 3.7429, Test MAPE: 0.0507 -2022-02-02 23:33:40,873 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4276, Test RMSE: 4.4952, Test MAPE: 0.0596 -2022-02-02 23:33:40,874 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6071, Test RMSE: 4.9995, Test MAPE: 0.0663 -2022-02-02 23:33:40,875 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7505, Test RMSE: 5.3975, Test MAPE: 0.0718 -2022-02-02 23:33:40,876 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8662, Test RMSE: 5.7237, Test MAPE: 0.0768 -2022-02-02 23:33:40,877 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9664, Test RMSE: 5.9969, Test MAPE: 0.0810 -2022-02-02 23:33:40,878 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0569, Test RMSE: 6.2366, Test MAPE: 0.0851 -2022-02-02 23:33:40,879 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1335, Test RMSE: 6.4416, Test MAPE: 0.0882 -2022-02-02 23:33:40,880 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2011, Test RMSE: 6.6029, Test MAPE: 0.0911 -2022-02-02 23:33:40,881 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2682, Test RMSE: 6.7292, Test MAPE: 0.0938 -2022-02-02 23:33:40,883 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 23:33:40,884 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:33:40,884 - easytorch-training - INFO - test:: [test_time: -103.17 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:33:42,660 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_059.pt saved -2022-02-02 23:33:42,661 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:42 -2022-02-02 23:33:42,661 - easytorch-training - INFO - epoch 60 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 23:38:46,747 - easytorch-training - INFO - train:: [train_loss: 2.6694, train_MAPE: 0.1053, train_RMSE: 7.2670, train_time: 304.09 (s), lr: 3.13e-04] -2022-02-02 23:39:33,518 - easytorch-training - INFO - val:: [val_time: 46.77 (s), val_loss: 4.0901, val_MAPE: 0.1086, val_RMSE: 7.0616] -2022-02-02 23:41:13,588 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1497, Test RMSE: 3.7363, Test MAPE: 0.0511 -2022-02-02 23:41:13,595 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4244, Test RMSE: 4.4938, Test MAPE: 0.0601 -2022-02-02 23:41:13,596 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6031, Test RMSE: 4.9932, Test MAPE: 0.0667 -2022-02-02 23:41:13,597 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7441, Test RMSE: 5.3867, Test MAPE: 0.0722 -2022-02-02 23:41:13,597 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8611, Test RMSE: 5.7131, Test MAPE: 0.0770 -2022-02-02 23:41:13,598 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9616, Test RMSE: 5.9881, Test MAPE: 0.0813 -2022-02-02 23:41:13,599 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0508, Test RMSE: 6.2195, Test MAPE: 0.0850 -2022-02-02 23:41:13,599 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1276, Test RMSE: 6.4208, Test MAPE: 0.0881 -2022-02-02 23:41:13,600 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1950, Test RMSE: 6.5844, Test MAPE: 0.0909 -2022-02-02 23:41:13,601 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2610, Test RMSE: 6.7158, Test MAPE: 0.0935 -2022-02-02 23:41:13,601 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 11.5005, Test RMSE: 14.0483, Test MAPE: 0.3135 -2022-02-02 23:41:13,602 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:41:13,602 - easytorch-training - INFO - test:: [test_time: -100.08 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:41:14,915 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_060.pt saved -2022-02-02 23:41:14,917 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:32 -2022-02-02 23:41:14,917 - easytorch-training - INFO - epoch 61 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-02 23:46:19,468 - easytorch-training - INFO - train:: [train_loss: 2.7379, train_MAPE: 0.0892, train_RMSE: 6.4192, train_time: 304.55 (s), lr: 3.13e-04] -2022-02-02 23:47:07,471 - easytorch-training - INFO - val:: [val_time: 48.00 (s), val_loss: 3.4096, val_MAPE: 0.0904, val_RMSE: 6.1904] -2022-02-02 23:48:49,588 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1545, Test RMSE: 3.7437, Test MAPE: 0.0508 -2022-02-02 23:48:49,589 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4280, Test RMSE: 4.4928, Test MAPE: 0.0595 -2022-02-02 23:48:49,590 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6077, Test RMSE: 4.9957, Test MAPE: 0.0660 -2022-02-02 23:48:49,590 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7515, Test RMSE: 5.4028, Test MAPE: 0.0712 -2022-02-02 23:48:49,591 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8676, Test RMSE: 5.7245, Test MAPE: 0.0759 -2022-02-02 23:48:49,592 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9676, Test RMSE: 5.9933, Test MAPE: 0.0798 -2022-02-02 23:48:49,592 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0550, Test RMSE: 6.2181, Test MAPE: 0.0831 -2022-02-02 23:48:49,593 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1305, Test RMSE: 6.4154, Test MAPE: 0.0862 -2022-02-02 23:48:49,594 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1953, Test RMSE: 6.5755, Test MAPE: 0.0887 -2022-02-02 23:48:49,594 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2575, Test RMSE: 6.7038, Test MAPE: 0.0912 -2022-02-02 23:48:49,595 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3336, Test RMSE: 6.8075, Test MAPE: 0.0945 -2022-02-02 23:48:49,596 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:48:49,596 - easytorch-training - INFO - test:: [test_time: -102.12 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:48:50,889 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_061.pt saved -2022-02-02 23:48:50,890 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:29 -2022-02-02 23:48:50,890 - easytorch-training - INFO - epoch 62 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-02 23:53:56,818 - easytorch-training - INFO - train:: [train_loss: 2.6982, train_MAPE: 0.0879, train_RMSE: 6.3618, train_time: 305.93 (s), lr: 3.13e-04] -2022-02-02 23:54:47,287 - easytorch-training - INFO - val:: [val_time: 50.46 (s), val_loss: 3.4131, val_MAPE: 0.0910, val_RMSE: 6.1900] -2022-02-02 23:56:27,642 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1520, Test RMSE: 3.7379, Test MAPE: 0.0512 -2022-02-02 23:56:27,643 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4261, Test RMSE: 4.4890, Test MAPE: 0.0597 -2022-02-02 23:56:27,644 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6093, Test RMSE: 4.9982, Test MAPE: 0.0660 -2022-02-02 23:56:27,645 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7519, Test RMSE: 5.3966, Test MAPE: 0.0714 -2022-02-02 23:56:27,646 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8689, Test RMSE: 5.7184, Test MAPE: 0.0761 -2022-02-02 23:56:27,648 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9702, Test RMSE: 5.9916, Test MAPE: 0.0803 -2022-02-02 23:56:27,649 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0594, Test RMSE: 6.2252, Test MAPE: 0.0839 -2022-02-02 23:56:27,650 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1371, Test RMSE: 6.4280, Test MAPE: 0.0870 -2022-02-02 23:56:27,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2042, Test RMSE: 6.5930, Test MAPE: 0.0898 -2022-02-02 23:56:27,652 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2675, Test RMSE: 6.7187, Test MAPE: 0.0926 -2022-02-02 23:56:27,653 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3368, Test RMSE: 6.8269, Test MAPE: 0.0955 -2022-02-02 23:56:27,654 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-02 23:56:27,655 - easytorch-training - INFO - test:: [test_time: -100.36 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 23:56:29,430 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_062.pt saved -2022-02-02 23:56:29,431 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:30 -2022-02-02 23:56:29,431 - easytorch-training - INFO - epoch 63 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-03 00:01:37,407 - easytorch-training - INFO - train:: [train_loss: 2.6861, train_MAPE: 0.0874, train_RMSE: 6.3509, train_time: 307.98 (s), lr: 3.13e-04] -2022-02-03 00:02:25,172 - easytorch-training - INFO - val:: [val_time: 47.76 (s), val_loss: 3.4097, val_MAPE: 0.0911, val_RMSE: 6.1935] -2022-02-03 00:04:04,918 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1541, Test RMSE: 3.7479, Test MAPE: 0.0513 -2022-02-03 00:04:04,920 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4254, Test RMSE: 4.4922, Test MAPE: 0.0600 -2022-02-03 00:04:04,921 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6054, Test RMSE: 4.9930, Test MAPE: 0.0664 -2022-02-03 00:04:04,922 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7466, Test RMSE: 5.3859, Test MAPE: 0.0717 -2022-02-03 00:04:04,923 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8648, Test RMSE: 5.7108, Test MAPE: 0.0764 -2022-02-03 00:04:04,925 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9651, Test RMSE: 5.9842, Test MAPE: 0.0805 -2022-02-03 00:04:04,926 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0542, Test RMSE: 6.2180, Test MAPE: 0.0840 -2022-02-03 00:04:04,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1322, Test RMSE: 6.4251, Test MAPE: 0.0870 -2022-02-03 00:04:04,928 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2007, Test RMSE: 6.5963, Test MAPE: 0.0897 -2022-02-03 00:04:04,929 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2666, Test RMSE: 6.7401, Test MAPE: 0.0922 -2022-02-03 00:04:04,930 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3331, Test RMSE: 6.8614, Test MAPE: 0.0949 -2022-02-03 00:04:04,932 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-03 00:04:04,932 - easytorch-training - INFO - test:: [test_time: -99.76 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:04:06,745 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_063.pt saved -2022-02-03 00:04:06,746 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:29 -2022-02-03 00:04:06,746 - easytorch-training - INFO - epoch 64 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-03 00:09:13,075 - easytorch-training - INFO - train:: [train_loss: 2.6817, train_MAPE: 0.0871, train_RMSE: 6.3384, train_time: 306.33 (s), lr: 3.13e-04] -2022-02-03 00:10:01,288 - easytorch-training - INFO - val:: [val_time: 48.21 (s), val_loss: 3.4154, val_MAPE: 0.0918, val_RMSE: 6.2158] -2022-02-03 00:11:42,269 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1544, Test RMSE: 3.7408, Test MAPE: 0.0517 -2022-02-03 00:11:42,270 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4306, Test RMSE: 4.4994, Test MAPE: 0.0607 -2022-02-03 00:11:42,271 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6131, Test RMSE: 5.0079, Test MAPE: 0.0676 -2022-02-03 00:11:42,271 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7566, Test RMSE: 5.4107, Test MAPE: 0.0729 -2022-02-03 00:11:42,272 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8768, Test RMSE: 5.7509, Test MAPE: 0.0776 -2022-02-03 00:11:42,272 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9787, Test RMSE: 6.0287, Test MAPE: 0.0818 -2022-02-03 00:11:42,273 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0673, Test RMSE: 6.2612, Test MAPE: 0.0852 -2022-02-03 00:11:42,274 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1444, Test RMSE: 6.4612, Test MAPE: 0.0883 -2022-02-03 00:11:42,274 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2121, Test RMSE: 6.6292, Test MAPE: 0.0910 -2022-02-03 00:11:42,275 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2743, Test RMSE: 6.7689, Test MAPE: 0.0936 -2022-02-03 00:11:42,276 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3376, Test RMSE: 6.8860, Test MAPE: 0.0963 -2022-02-03 00:11:42,276 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-03 00:11:42,276 - easytorch-training - INFO - test:: [test_time: -100.99 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:11:43,987 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_064.pt saved -2022-02-03 00:11:43,988 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:28 -2022-02-03 00:11:43,988 - easytorch-training - INFO - epoch 65 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-03 00:16:47,434 - easytorch-training - INFO - train:: [train_loss: 2.6905, train_MAPE: 0.0878, train_RMSE: 6.3651, train_time: 303.45 (s), lr: 3.13e-04] -2022-02-03 00:17:36,591 - easytorch-training - INFO - val:: [val_time: 49.15 (s), val_loss: 3.4151, val_MAPE: 0.0918, val_RMSE: 6.1969] -2022-02-03 00:19:18,276 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1572, Test RMSE: 3.7357, Test MAPE: 0.0519 -2022-02-03 00:19:18,276 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4305, Test RMSE: 4.4856, Test MAPE: 0.0608 -2022-02-03 00:19:18,277 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6117, Test RMSE: 4.9904, Test MAPE: 0.0675 -2022-02-03 00:19:18,278 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7527, Test RMSE: 5.3921, Test MAPE: 0.0727 -2022-02-03 00:19:18,278 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8710, Test RMSE: 5.7229, Test MAPE: 0.0774 -2022-02-03 00:19:18,279 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9717, Test RMSE: 6.0006, Test MAPE: 0.0813 -2022-02-03 00:19:18,280 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0574, Test RMSE: 6.2247, Test MAPE: 0.0847 -2022-02-03 00:19:18,280 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1334, Test RMSE: 6.4228, Test MAPE: 0.0876 -2022-02-03 00:19:18,281 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1989, Test RMSE: 6.5834, Test MAPE: 0.0901 -2022-02-03 00:19:18,282 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2604, Test RMSE: 6.7160, Test MAPE: 0.0925 -2022-02-03 00:19:18,282 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3218, Test RMSE: 6.8246, Test MAPE: 0.0949 -2022-02-03 00:19:18,283 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-03 00:19:18,283 - easytorch-training - INFO - test:: [test_time: -101.69 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:19:20,037 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_065.pt saved -2022-02-03 00:19:20,037 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:25 -2022-02-03 00:19:20,037 - easytorch-training - INFO - epoch 66 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:08<00:00, 1.22it/s] -2022-02-03 00:24:28,062 - easytorch-training - INFO - train:: [train_loss: 2.6789, train_MAPE: 0.0873, train_RMSE: 6.3463, train_time: 308.02 (s), lr: 3.13e-04] -2022-02-03 00:25:18,423 - easytorch-training - INFO - val:: [val_time: 50.36 (s), val_loss: 3.4137, val_MAPE: 0.0916, val_RMSE: 6.1951] -2022-02-03 00:27:00,508 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1581, Test RMSE: 3.7339, Test MAPE: 0.0520 -2022-02-03 00:27:00,515 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4314, Test RMSE: 4.4769, Test MAPE: 0.0608 -2022-02-03 00:27:00,516 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6077, Test RMSE: 4.9731, Test MAPE: 0.0669 -2022-02-03 00:27:00,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7483, Test RMSE: 5.3691, Test MAPE: 0.0722 -2022-02-03 00:27:00,519 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8667, Test RMSE: 5.7009, Test MAPE: 0.0769 -2022-02-03 00:27:00,520 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9700, Test RMSE: 5.9879, Test MAPE: 0.0810 -2022-02-03 00:27:00,521 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0593, Test RMSE: 6.2222, Test MAPE: 0.0846 -2022-02-03 00:27:00,522 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1369, Test RMSE: 6.4291, Test MAPE: 0.0876 -2022-02-03 00:27:00,523 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2033, Test RMSE: 6.6002, Test MAPE: 0.0903 -2022-02-03 00:27:00,524 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2629, Test RMSE: 6.7326, Test MAPE: 0.0926 -2022-02-03 00:27:00,525 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3258, Test RMSE: 6.8616, Test MAPE: 0.0951 -2022-02-03 00:27:00,526 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 11.5007, Test RMSE: 14.0485, Test MAPE: 0.3135 -2022-02-03 00:27:00,527 - easytorch-training - INFO - test:: [test_time: -102.10 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:27:02,318 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_066.pt saved -2022-02-03 00:27:02,319 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:32 -2022-02-03 00:27:02,319 - easytorch-training - INFO - epoch 67 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-03 00:32:09,288 - easytorch-training - INFO - train:: [train_loss: 2.7418, train_MAPE: 0.0712, train_RMSE: 5.3516, train_time: 306.97 (s), lr: 3.13e-04] -2022-02-03 00:32:56,387 - easytorch-training - INFO - val:: [val_time: 47.09 (s), val_loss: 2.6993, val_MAPE: 0.0733, val_RMSE: 5.1393] -2022-02-03 00:34:39,876 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1549, Test RMSE: 3.7410, Test MAPE: 0.0515 -2022-02-03 00:34:39,878 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4287, Test RMSE: 4.4837, Test MAPE: 0.0604 -2022-02-03 00:34:39,878 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6080, Test RMSE: 4.9820, Test MAPE: 0.0666 -2022-02-03 00:34:39,879 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7523, Test RMSE: 5.3844, Test MAPE: 0.0719 -2022-02-03 00:34:39,880 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8712, Test RMSE: 5.7140, Test MAPE: 0.0765 -2022-02-03 00:34:39,881 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9729, Test RMSE: 5.9851, Test MAPE: 0.0804 -2022-02-03 00:34:39,882 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0630, Test RMSE: 6.2125, Test MAPE: 0.0841 -2022-02-03 00:34:39,882 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1415, Test RMSE: 6.4184, Test MAPE: 0.0869 -2022-02-03 00:34:39,883 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2077, Test RMSE: 6.5876, Test MAPE: 0.0896 -2022-02-03 00:34:39,884 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2674, Test RMSE: 6.7200, Test MAPE: 0.0920 -2022-02-03 00:34:39,885 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3274, Test RMSE: 6.8400, Test MAPE: 0.0944 -2022-02-03 00:34:39,886 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3942, Test RMSE: 6.9264, Test MAPE: 0.0972 -2022-02-03 00:34:39,886 - easytorch-training - INFO - test:: [test_time: -103.50 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:34:41,544 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_067.pt saved -2022-02-03 00:34:41,544 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:34 -2022-02-03 00:34:41,544 - easytorch-training - INFO - epoch 68 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 00:39:45,786 - easytorch-training - INFO - train:: [train_loss: 2.7102, train_MAPE: 0.0705, train_RMSE: 5.3213, train_time: 304.24 (s), lr: 3.13e-04] -2022-02-03 00:40:32,952 - easytorch-training - INFO - val:: [val_time: 47.16 (s), val_loss: 2.6856, val_MAPE: 0.0731, val_RMSE: 5.1101] -2022-02-03 00:42:12,449 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1541, Test RMSE: 3.7440, Test MAPE: 0.0513 -2022-02-03 00:42:12,450 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4268, Test RMSE: 4.4922, Test MAPE: 0.0600 -2022-02-03 00:42:12,450 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6046, Test RMSE: 4.9860, Test MAPE: 0.0665 -2022-02-03 00:42:12,451 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7462, Test RMSE: 5.3794, Test MAPE: 0.0717 -2022-02-03 00:42:12,452 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8637, Test RMSE: 5.7039, Test MAPE: 0.0762 -2022-02-03 00:42:12,452 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9640, Test RMSE: 5.9704, Test MAPE: 0.0802 -2022-02-03 00:42:12,453 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0502, Test RMSE: 6.1924, Test MAPE: 0.0837 -2022-02-03 00:42:12,454 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1262, Test RMSE: 6.3887, Test MAPE: 0.0867 -2022-02-03 00:42:12,454 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1930, Test RMSE: 6.5556, Test MAPE: 0.0894 -2022-02-03 00:42:12,455 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2529, Test RMSE: 6.6906, Test MAPE: 0.0921 -2022-02-03 00:42:12,455 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3136, Test RMSE: 6.8129, Test MAPE: 0.0949 -2022-02-03 00:42:12,456 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3787, Test RMSE: 6.9164, Test MAPE: 0.0976 -2022-02-03 00:42:12,456 - easytorch-training - INFO - test:: [test_time: -99.50 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:42:13,783 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_068.pt saved -2022-02-03 00:42:13,783 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:25 -2022-02-03 00:42:13,783 - easytorch-training - INFO - epoch 69 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 00:47:18,222 - easytorch-training - INFO - train:: [train_loss: 2.7069, train_MAPE: 0.0704, train_RMSE: 5.3171, train_time: 304.44 (s), lr: 3.13e-04] -2022-02-03 00:48:06,044 - easytorch-training - INFO - val:: [val_time: 47.82 (s), val_loss: 2.7007, val_MAPE: 0.0727, val_RMSE: 5.1451] -2022-02-03 00:49:45,969 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1583, Test RMSE: 3.7456, Test MAPE: 0.0510 -2022-02-03 00:49:45,970 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4330, Test RMSE: 4.4934, Test MAPE: 0.0595 -2022-02-03 00:49:45,970 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6146, Test RMSE: 4.9909, Test MAPE: 0.0659 -2022-02-03 00:49:45,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7572, Test RMSE: 5.3956, Test MAPE: 0.0712 -2022-02-03 00:49:45,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8722, Test RMSE: 5.7143, Test MAPE: 0.0756 -2022-02-03 00:49:45,972 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9711, Test RMSE: 5.9786, Test MAPE: 0.0795 -2022-02-03 00:49:45,973 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0572, Test RMSE: 6.2001, Test MAPE: 0.0829 -2022-02-03 00:49:45,973 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1358, Test RMSE: 6.3965, Test MAPE: 0.0861 -2022-02-03 00:49:45,974 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2025, Test RMSE: 6.5749, Test MAPE: 0.0886 -2022-02-03 00:49:45,975 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2628, Test RMSE: 6.7126, Test MAPE: 0.0910 -2022-02-03 00:49:45,975 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3197, Test RMSE: 6.8298, Test MAPE: 0.0935 -2022-02-03 00:49:45,976 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3809, Test RMSE: 6.9350, Test MAPE: 0.0961 -2022-02-03 00:49:45,976 - easytorch-training - INFO - test:: [test_time: -99.93 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:49:47,247 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_069.pt saved -2022-02-03 00:49:47,247 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:19 -2022-02-03 00:49:47,247 - easytorch-training - INFO - epoch 70 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:01<00:00, 1.24it/s] -2022-02-03 00:54:48,810 - easytorch-training - INFO - train:: [train_loss: 2.7048, train_MAPE: 0.0702, train_RMSE: 5.2988, train_time: 301.56 (s), lr: 3.13e-04] -2022-02-03 00:55:36,738 - easytorch-training - INFO - val:: [val_time: 47.92 (s), val_loss: 2.6921, val_MAPE: 0.0732, val_RMSE: 5.1357] -2022-02-03 00:57:16,036 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1559, Test RMSE: 3.7423, Test MAPE: 0.0509 -2022-02-03 00:57:16,037 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4269, Test RMSE: 4.4841, Test MAPE: 0.0596 -2022-02-03 00:57:16,037 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6062, Test RMSE: 4.9874, Test MAPE: 0.0660 -2022-02-03 00:57:16,038 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7458, Test RMSE: 5.3793, Test MAPE: 0.0713 -2022-02-03 00:57:16,038 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8639, Test RMSE: 5.7087, Test MAPE: 0.0760 -2022-02-03 00:57:16,039 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9660, Test RMSE: 5.9807, Test MAPE: 0.0799 -2022-02-03 00:57:16,040 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0550, Test RMSE: 6.2143, Test MAPE: 0.0835 -2022-02-03 00:57:16,040 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1301, Test RMSE: 6.4122, Test MAPE: 0.0867 -2022-02-03 00:57:16,041 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1963, Test RMSE: 6.5851, Test MAPE: 0.0894 -2022-02-03 00:57:16,042 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2556, Test RMSE: 6.7258, Test MAPE: 0.0920 -2022-02-03 00:57:16,042 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3154, Test RMSE: 6.8543, Test MAPE: 0.0944 -2022-02-03 00:57:16,043 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3743, Test RMSE: 6.9658, Test MAPE: 0.0970 -2022-02-03 00:57:16,043 - easytorch-training - INFO - test:: [test_time: -99.30 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 00:57:17,645 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_070.pt saved -2022-02-03 00:57:17,648 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:08 -2022-02-03 00:57:17,648 - easytorch-training - INFO - epoch 71 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:00<00:00, 1.25it/s] -2022-02-03 01:02:17,859 - easytorch-training - INFO - train:: [train_loss: 2.6993, train_MAPE: 0.0700, train_RMSE: 5.2951, train_time: 300.21 (s), lr: 3.13e-04] -2022-02-03 01:03:07,754 - easytorch-training - INFO - val:: [val_time: 49.89 (s), val_loss: 2.6938, val_MAPE: 0.0731, val_RMSE: 5.1331] -2022-02-03 01:04:47,688 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1561, Test RMSE: 3.7420, Test MAPE: 0.0514 -2022-02-03 01:04:47,689 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4287, Test RMSE: 4.4926, Test MAPE: 0.0599 -2022-02-03 01:04:47,690 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6081, Test RMSE: 4.9927, Test MAPE: 0.0662 -2022-02-03 01:04:47,692 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7502, Test RMSE: 5.3876, Test MAPE: 0.0716 -2022-02-03 01:04:47,693 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8682, Test RMSE: 5.7126, Test MAPE: 0.0760 -2022-02-03 01:04:47,694 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9678, Test RMSE: 5.9799, Test MAPE: 0.0801 -2022-02-03 01:04:47,695 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0552, Test RMSE: 6.2071, Test MAPE: 0.0835 -2022-02-03 01:04:47,696 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1327, Test RMSE: 6.4101, Test MAPE: 0.0866 -2022-02-03 01:04:47,697 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2026, Test RMSE: 6.5915, Test MAPE: 0.0892 -2022-02-03 01:04:47,698 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2619, Test RMSE: 6.7304, Test MAPE: 0.0916 -2022-02-03 01:04:47,700 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3213, Test RMSE: 6.8568, Test MAPE: 0.0941 -2022-02-03 01:04:47,701 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3771, Test RMSE: 6.9553, Test MAPE: 0.0965 -2022-02-03 01:04:47,701 - easytorch-training - INFO - test:: [test_time: -99.94 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:04:49,495 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_071.pt saved -2022-02-03 01:04:49,495 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:00 -2022-02-03 01:04:49,496 - easytorch-training - INFO - epoch 72 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-03 01:09:54,853 - easytorch-training - INFO - train:: [train_loss: 2.7037, train_MAPE: 0.0701, train_RMSE: 5.2924, train_time: 305.36 (s), lr: 3.13e-04] -2022-02-03 01:10:44,057 - easytorch-training - INFO - val:: [val_time: 49.20 (s), val_loss: 2.6984, val_MAPE: 0.0744, val_RMSE: 5.1595] -2022-02-03 01:12:24,923 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1586, Test RMSE: 3.7547, Test MAPE: 0.0517 -2022-02-03 01:12:24,924 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4342, Test RMSE: 4.5088, Test MAPE: 0.0609 -2022-02-03 01:12:24,925 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6171, Test RMSE: 5.0178, Test MAPE: 0.0676 -2022-02-03 01:12:24,926 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7611, Test RMSE: 5.4210, Test MAPE: 0.0732 -2022-02-03 01:12:24,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8794, Test RMSE: 5.7502, Test MAPE: 0.0778 -2022-02-03 01:12:24,929 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9806, Test RMSE: 6.0241, Test MAPE: 0.0819 -2022-02-03 01:12:24,930 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0699, Test RMSE: 6.2601, Test MAPE: 0.0855 -2022-02-03 01:12:24,931 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1463, Test RMSE: 6.4639, Test MAPE: 0.0885 -2022-02-03 01:12:24,932 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2102, Test RMSE: 6.6296, Test MAPE: 0.0909 -2022-02-03 01:12:24,933 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2681, Test RMSE: 6.7667, Test MAPE: 0.0932 -2022-02-03 01:12:24,934 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3254, Test RMSE: 6.8885, Test MAPE: 0.0954 -2022-02-03 01:12:24,935 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3804, Test RMSE: 6.9899, Test MAPE: 0.0974 -2022-02-03 01:12:24,936 - easytorch-training - INFO - test:: [test_time: -100.88 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:12:26,782 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_072.pt saved -2022-02-03 01:12:26,783 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:46:00 -2022-02-03 01:12:26,783 - easytorch-training - INFO - epoch 73 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-03 01:17:33,698 - easytorch-training - INFO - train:: [train_loss: 2.7005, train_MAPE: 0.0703, train_RMSE: 5.2971, train_time: 306.92 (s), lr: 1.56e-04] -2022-02-03 01:18:20,765 - easytorch-training - INFO - val:: [val_time: 47.06 (s), val_loss: 2.6953, val_MAPE: 0.0736, val_RMSE: 5.1458] -2022-02-03 01:20:00,475 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1556, Test RMSE: 3.7454, Test MAPE: 0.0511 -2022-02-03 01:20:00,482 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4293, Test RMSE: 4.4906, Test MAPE: 0.0599 -2022-02-03 01:20:00,482 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6098, Test RMSE: 4.9959, Test MAPE: 0.0664 -2022-02-03 01:20:00,483 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7537, Test RMSE: 5.3986, Test MAPE: 0.0717 -2022-02-03 01:20:00,484 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8695, Test RMSE: 5.7233, Test MAPE: 0.0764 -2022-02-03 01:20:00,484 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9695, Test RMSE: 5.9950, Test MAPE: 0.0806 -2022-02-03 01:20:00,485 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0555, Test RMSE: 6.2237, Test MAPE: 0.0842 -2022-02-03 01:20:00,486 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1310, Test RMSE: 6.4197, Test MAPE: 0.0873 -2022-02-03 01:20:00,486 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1974, Test RMSE: 6.5885, Test MAPE: 0.0900 -2022-02-03 01:20:00,487 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2565, Test RMSE: 6.7252, Test MAPE: 0.0925 -2022-02-03 01:20:00,488 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3153, Test RMSE: 6.8505, Test MAPE: 0.0949 -2022-02-03 01:20:00,488 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3735, Test RMSE: 6.9634, Test MAPE: 0.0973 -2022-02-03 01:20:00,488 - easytorch-training - INFO - test:: [test_time: -99.72 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:20:02,214 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_073.pt saved -2022-02-03 01:20:02,215 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:57 -2022-02-03 01:20:02,215 - easytorch-training - INFO - epoch 74 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 01:25:06,356 - easytorch-training - INFO - train:: [train_loss: 2.6898, train_MAPE: 0.0700, train_RMSE: 5.2773, train_time: 304.14 (s), lr: 1.56e-04] -2022-02-03 01:25:54,261 - easytorch-training - INFO - val:: [val_time: 47.90 (s), val_loss: 2.6950, val_MAPE: 0.0730, val_RMSE: 5.1411] -2022-02-03 01:27:35,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1549, Test RMSE: 3.7397, Test MAPE: 0.0512 -2022-02-03 01:27:35,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4290, Test RMSE: 4.4867, Test MAPE: 0.0598 -2022-02-03 01:27:35,995 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6087, Test RMSE: 4.9903, Test MAPE: 0.0663 -2022-02-03 01:27:35,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7521, Test RMSE: 5.3940, Test MAPE: 0.0715 -2022-02-03 01:27:35,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8692, Test RMSE: 5.7156, Test MAPE: 0.0761 -2022-02-03 01:27:35,997 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9701, Test RMSE: 5.9875, Test MAPE: 0.0801 -2022-02-03 01:27:35,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0593, Test RMSE: 6.2200, Test MAPE: 0.0835 -2022-02-03 01:27:35,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1359, Test RMSE: 6.4231, Test MAPE: 0.0865 -2022-02-03 01:27:35,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2028, Test RMSE: 6.5961, Test MAPE: 0.0891 -2022-02-03 01:27:36,000 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2626, Test RMSE: 6.7379, Test MAPE: 0.0915 -2022-02-03 01:27:36,000 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3197, Test RMSE: 6.8599, Test MAPE: 0.0941 -2022-02-03 01:27:36,001 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3766, Test RMSE: 6.9688, Test MAPE: 0.0966 -2022-02-03 01:27:36,001 - easytorch-training - INFO - test:: [test_time: -101.74 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:27:37,635 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_074.pt saved -2022-02-03 01:27:37,636 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:54 -2022-02-03 01:27:37,636 - easytorch-training - INFO - epoch 75 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 01:32:41,640 - easytorch-training - INFO - train:: [train_loss: 2.6915, train_MAPE: 0.0700, train_RMSE: 5.2727, train_time: 304.00 (s), lr: 1.56e-04] -2022-02-03 01:33:29,294 - easytorch-training - INFO - val:: [val_time: 47.65 (s), val_loss: 2.6931, val_MAPE: 0.0727, val_RMSE: 5.1542] -2022-02-03 01:35:10,704 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1570, Test RMSE: 3.7526, Test MAPE: 0.0510 -2022-02-03 01:35:10,705 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4297, Test RMSE: 4.4967, Test MAPE: 0.0597 -2022-02-03 01:35:10,705 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6105, Test RMSE: 5.0013, Test MAPE: 0.0660 -2022-02-03 01:35:10,706 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7532, Test RMSE: 5.4044, Test MAPE: 0.0712 -2022-02-03 01:35:10,707 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8704, Test RMSE: 5.7312, Test MAPE: 0.0758 -2022-02-03 01:35:10,707 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9694, Test RMSE: 5.9994, Test MAPE: 0.0797 -2022-02-03 01:35:10,708 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0543, Test RMSE: 6.2216, Test MAPE: 0.0831 -2022-02-03 01:35:10,709 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1280, Test RMSE: 6.4134, Test MAPE: 0.0862 -2022-02-03 01:35:10,709 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1939, Test RMSE: 6.5794, Test MAPE: 0.0888 -2022-02-03 01:35:10,710 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2535, Test RMSE: 6.7199, Test MAPE: 0.0913 -2022-02-03 01:35:10,711 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3110, Test RMSE: 6.8443, Test MAPE: 0.0938 -2022-02-03 01:35:10,711 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3709, Test RMSE: 6.9642, Test MAPE: 0.0961 -2022-02-03 01:35:10,712 - easytorch-training - INFO - test:: [test_time: -101.41 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:35:11,970 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_075.pt saved -2022-02-03 01:35:11,971 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:49 -2022-02-03 01:35:11,971 - easytorch-training - INFO - epoch 76 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-03 01:40:17,269 - easytorch-training - INFO - train:: [train_loss: 2.7001, train_MAPE: 0.0704, train_RMSE: 5.2899, train_time: 305.30 (s), lr: 1.56e-04] -2022-02-03 01:41:06,331 - easytorch-training - INFO - val:: [val_time: 49.05 (s), val_loss: 2.6954, val_MAPE: 0.0737, val_RMSE: 5.1512] -2022-02-03 01:42:45,243 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1568, Test RMSE: 3.7430, Test MAPE: 0.0515 -2022-02-03 01:42:45,244 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4295, Test RMSE: 4.4873, Test MAPE: 0.0604 -2022-02-03 01:42:45,244 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6109, Test RMSE: 4.9912, Test MAPE: 0.0670 -2022-02-03 01:42:45,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7539, Test RMSE: 5.3926, Test MAPE: 0.0725 -2022-02-03 01:42:45,246 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8725, Test RMSE: 5.7276, Test MAPE: 0.0771 -2022-02-03 01:42:45,246 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9747, Test RMSE: 6.0090, Test MAPE: 0.0811 -2022-02-03 01:42:45,247 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0631, Test RMSE: 6.2424, Test MAPE: 0.0845 -2022-02-03 01:42:45,247 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1397, Test RMSE: 6.4450, Test MAPE: 0.0876 -2022-02-03 01:42:45,248 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2044, Test RMSE: 6.6065, Test MAPE: 0.0901 -2022-02-03 01:42:45,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2617, Test RMSE: 6.7415, Test MAPE: 0.0924 -2022-02-03 01:42:45,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3164, Test RMSE: 6.8576, Test MAPE: 0.0948 -2022-02-03 01:42:45,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3719, Test RMSE: 6.9585, Test MAPE: 0.0969 -2022-02-03 01:42:45,250 - easytorch-training - INFO - test:: [test_time: -98.92 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:42:46,583 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_076.pt saved -2022-02-03 01:42:46,583 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:46 -2022-02-03 01:42:46,583 - easytorch-training - INFO - epoch 77 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-03 01:47:54,174 - easytorch-training - INFO - train:: [train_loss: 2.7005, train_MAPE: 0.0703, train_RMSE: 5.2886, train_time: 307.59 (s), lr: 1.56e-04] -2022-02-03 01:48:41,337 - easytorch-training - INFO - val:: [val_time: 47.16 (s), val_loss: 2.6935, val_MAPE: 0.0725, val_RMSE: 5.1448] -2022-02-03 01:50:21,243 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1546, Test RMSE: 3.7369, Test MAPE: 0.0510 -2022-02-03 01:50:21,244 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4278, Test RMSE: 4.4871, Test MAPE: 0.0595 -2022-02-03 01:50:21,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6068, Test RMSE: 4.9908, Test MAPE: 0.0659 -2022-02-03 01:50:21,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7494, Test RMSE: 5.3875, Test MAPE: 0.0711 -2022-02-03 01:50:21,246 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8674, Test RMSE: 5.7188, Test MAPE: 0.0757 -2022-02-03 01:50:21,246 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9683, Test RMSE: 5.9944, Test MAPE: 0.0796 -2022-02-03 01:50:21,247 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0569, Test RMSE: 6.2255, Test MAPE: 0.0830 -2022-02-03 01:50:21,248 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1341, Test RMSE: 6.4256, Test MAPE: 0.0860 -2022-02-03 01:50:21,248 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2024, Test RMSE: 6.5998, Test MAPE: 0.0885 -2022-02-03 01:50:21,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2634, Test RMSE: 6.7422, Test MAPE: 0.0911 -2022-02-03 01:50:21,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3211, Test RMSE: 6.8672, Test MAPE: 0.0935 -2022-02-03 01:50:21,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3769, Test RMSE: 6.9821, Test MAPE: 0.0957 -2022-02-03 01:50:21,250 - easytorch-training - INFO - test:: [test_time: -99.91 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:50:22,533 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_077.pt saved -2022-02-03 01:50:22,533 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:44 -2022-02-03 01:50:22,533 - easytorch-training - INFO - epoch 78 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-03 01:55:28,181 - easytorch-training - INFO - train:: [train_loss: 2.6863, train_MAPE: 0.0699, train_RMSE: 5.2656, train_time: 305.65 (s), lr: 1.56e-04] -2022-02-03 01:56:15,160 - easytorch-training - INFO - val:: [val_time: 46.97 (s), val_loss: 2.6911, val_MAPE: 0.0742, val_RMSE: 5.1424] -2022-02-03 01:57:57,015 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1539, Test RMSE: 3.7448, Test MAPE: 0.0514 -2022-02-03 01:57:57,016 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4284, Test RMSE: 4.4886, Test MAPE: 0.0605 -2022-02-03 01:57:57,017 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6084, Test RMSE: 4.9925, Test MAPE: 0.0670 -2022-02-03 01:57:57,017 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7492, Test RMSE: 5.3882, Test MAPE: 0.0726 -2022-02-03 01:57:57,018 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8672, Test RMSE: 5.7168, Test MAPE: 0.0775 -2022-02-03 01:57:57,019 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9675, Test RMSE: 5.9890, Test MAPE: 0.0816 -2022-02-03 01:57:57,019 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0539, Test RMSE: 6.2145, Test MAPE: 0.0851 -2022-02-03 01:57:57,020 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1299, Test RMSE: 6.4166, Test MAPE: 0.0882 -2022-02-03 01:57:57,020 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1966, Test RMSE: 6.5887, Test MAPE: 0.0910 -2022-02-03 01:57:57,021 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2559, Test RMSE: 6.7308, Test MAPE: 0.0935 -2022-02-03 01:57:57,022 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3129, Test RMSE: 6.8560, Test MAPE: 0.0957 -2022-02-03 01:57:57,022 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3692, Test RMSE: 6.9733, Test MAPE: 0.0979 -2022-02-03 01:57:57,022 - easytorch-training - INFO - test:: [test_time: -101.85 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 01:57:58,273 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_078.pt saved -2022-02-03 01:57:58,274 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:41 -2022-02-03 01:57:58,274 - easytorch-training - INFO - epoch 79 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:08<00:00, 1.22it/s] -2022-02-03 02:03:06,295 - easytorch-training - INFO - train:: [train_loss: 2.6821, train_MAPE: 0.0697, train_RMSE: 5.2569, train_time: 308.02 (s), lr: 1.56e-04] -2022-02-03 02:03:53,847 - easytorch-training - INFO - val:: [val_time: 47.55 (s), val_loss: 2.6913, val_MAPE: 0.0733, val_RMSE: 5.1385] -2022-02-03 02:05:36,740 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1558, Test RMSE: 3.7406, Test MAPE: 0.0511 -2022-02-03 02:05:36,748 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4294, Test RMSE: 4.4911, Test MAPE: 0.0597 -2022-02-03 02:05:36,748 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6099, Test RMSE: 4.9923, Test MAPE: 0.0664 -2022-02-03 02:05:36,749 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7524, Test RMSE: 5.3920, Test MAPE: 0.0718 -2022-02-03 02:05:36,750 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8710, Test RMSE: 5.7210, Test MAPE: 0.0765 -2022-02-03 02:05:36,750 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9727, Test RMSE: 5.9970, Test MAPE: 0.0807 -2022-02-03 02:05:36,751 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0610, Test RMSE: 6.2287, Test MAPE: 0.0842 -2022-02-03 02:05:36,752 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1377, Test RMSE: 6.4288, Test MAPE: 0.0871 -2022-02-03 02:05:36,752 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2032, Test RMSE: 6.5986, Test MAPE: 0.0897 -2022-02-03 02:05:36,753 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2642, Test RMSE: 6.7485, Test MAPE: 0.0921 -2022-02-03 02:05:36,754 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3220, Test RMSE: 6.8800, Test MAPE: 0.0945 -2022-02-03 02:05:36,754 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3775, Test RMSE: 6.9893, Test MAPE: 0.0967 -2022-02-03 02:05:36,754 - easytorch-training - INFO - test:: [test_time: -102.90 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:05:38,099 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_079.pt saved -2022-02-03 02:05:38,099 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:44 -2022-02-03 02:05:38,099 - easytorch-training - INFO - epoch 80 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:02<00:00, 1.24it/s] -2022-02-03 02:10:40,481 - easytorch-training - INFO - train:: [train_loss: 2.6788, train_MAPE: 0.0696, train_RMSE: 5.2492, train_time: 302.38 (s), lr: 1.56e-04] -2022-02-03 02:11:27,406 - easytorch-training - INFO - val:: [val_time: 46.92 (s), val_loss: 2.6957, val_MAPE: 0.0738, val_RMSE: 5.1542] -2022-02-03 02:13:11,384 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1555, Test RMSE: 3.7461, Test MAPE: 0.0514 -2022-02-03 02:13:11,385 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4294, Test RMSE: 4.4930, Test MAPE: 0.0599 -2022-02-03 02:13:11,385 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6119, Test RMSE: 4.9999, Test MAPE: 0.0664 -2022-02-03 02:13:11,386 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7576, Test RMSE: 5.4036, Test MAPE: 0.0719 -2022-02-03 02:13:11,387 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8761, Test RMSE: 5.7345, Test MAPE: 0.0766 -2022-02-03 02:13:11,387 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9771, Test RMSE: 6.0073, Test MAPE: 0.0809 -2022-02-03 02:13:11,388 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0669, Test RMSE: 6.2455, Test MAPE: 0.0846 -2022-02-03 02:13:11,389 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1428, Test RMSE: 6.4494, Test MAPE: 0.0877 -2022-02-03 02:13:11,389 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2096, Test RMSE: 6.6215, Test MAPE: 0.0905 -2022-02-03 02:13:11,390 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2698, Test RMSE: 6.7650, Test MAPE: 0.0931 -2022-02-03 02:13:11,390 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3275, Test RMSE: 6.8951, Test MAPE: 0.0956 -2022-02-03 02:13:11,391 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3837, Test RMSE: 7.0061, Test MAPE: 0.0980 -2022-02-03 02:13:11,391 - easytorch-training - INFO - test:: [test_time: -103.97 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:13:13,070 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_080.pt saved -2022-02-03 02:13:13,073 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:41 -2022-02-03 02:13:13,073 - easytorch-training - INFO - epoch 81 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 02:18:17,532 - easytorch-training - INFO - train:: [train_loss: 2.6968, train_MAPE: 0.0703, train_RMSE: 5.2849, train_time: 304.46 (s), lr: 1.56e-04] -2022-02-03 02:19:04,893 - easytorch-training - INFO - val:: [val_time: 47.35 (s), val_loss: 2.7007, val_MAPE: 0.0744, val_RMSE: 5.1729] -2022-02-03 02:20:46,585 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1546, Test RMSE: 3.7374, Test MAPE: 0.0514 -2022-02-03 02:20:46,585 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4291, Test RMSE: 4.4917, Test MAPE: 0.0603 -2022-02-03 02:20:46,586 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6132, Test RMSE: 5.0067, Test MAPE: 0.0672 -2022-02-03 02:20:46,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7606, Test RMSE: 5.4282, Test MAPE: 0.0729 -2022-02-03 02:20:46,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8801, Test RMSE: 5.7645, Test MAPE: 0.0778 -2022-02-03 02:20:46,588 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9840, Test RMSE: 6.0490, Test MAPE: 0.0821 -2022-02-03 02:20:46,589 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0746, Test RMSE: 6.2903, Test MAPE: 0.0859 -2022-02-03 02:20:46,589 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1522, Test RMSE: 6.4986, Test MAPE: 0.0891 -2022-02-03 02:20:46,590 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2175, Test RMSE: 6.6669, Test MAPE: 0.0918 -2022-02-03 02:20:46,590 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2747, Test RMSE: 6.8047, Test MAPE: 0.0943 -2022-02-03 02:20:46,591 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3312, Test RMSE: 6.9259, Test MAPE: 0.0966 -2022-02-03 02:20:46,592 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3838, Test RMSE: 7.0310, Test MAPE: 0.0988 -2022-02-03 02:20:46,592 - easytorch-training - INFO - test:: [test_time: -101.69 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:20:47,798 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_081.pt saved -2022-02-03 02:20:47,798 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:38 -2022-02-03 02:20:47,798 - easytorch-training - INFO - epoch 82 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-03 02:25:53,229 - easytorch-training - INFO - train:: [train_loss: 2.6941, train_MAPE: 0.0699, train_RMSE: 5.2687, train_time: 305.43 (s), lr: 1.56e-04] -2022-02-03 02:26:40,472 - easytorch-training - INFO - val:: [val_time: 47.24 (s), val_loss: 2.6968, val_MAPE: 0.0736, val_RMSE: 5.1554] -2022-02-03 02:28:23,326 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1543, Test RMSE: 3.7469, Test MAPE: 0.0511 -2022-02-03 02:28:23,327 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4281, Test RMSE: 4.4952, Test MAPE: 0.0599 -2022-02-03 02:28:23,328 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6096, Test RMSE: 4.9996, Test MAPE: 0.0664 -2022-02-03 02:28:23,329 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7538, Test RMSE: 5.4039, Test MAPE: 0.0719 -2022-02-03 02:28:23,329 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8726, Test RMSE: 5.7336, Test MAPE: 0.0766 -2022-02-03 02:28:23,330 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9749, Test RMSE: 6.0115, Test MAPE: 0.0806 -2022-02-03 02:28:23,331 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0630, Test RMSE: 6.2463, Test MAPE: 0.0844 -2022-02-03 02:28:23,331 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1406, Test RMSE: 6.4475, Test MAPE: 0.0875 -2022-02-03 02:28:23,332 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2071, Test RMSE: 6.6165, Test MAPE: 0.0902 -2022-02-03 02:28:23,333 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2686, Test RMSE: 6.7612, Test MAPE: 0.0928 -2022-02-03 02:28:23,333 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3251, Test RMSE: 6.8836, Test MAPE: 0.0952 -2022-02-03 02:28:23,334 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3822, Test RMSE: 7.0005, Test MAPE: 0.0975 -2022-02-03 02:28:23,334 - easytorch-training - INFO - test:: [test_time: -102.85 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:28:24,616 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_082.pt saved -2022-02-03 02:28:24,617 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:37 -2022-02-03 02:28:24,617 - easytorch-training - INFO - epoch 83 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-03 02:33:31,151 - easytorch-training - INFO - train:: [train_loss: 2.6866, train_MAPE: 0.0699, train_RMSE: 5.2561, train_time: 306.53 (s), lr: 1.56e-04] -2022-02-03 02:34:19,916 - easytorch-training - INFO - val:: [val_time: 48.76 (s), val_loss: 2.6967, val_MAPE: 0.0741, val_RMSE: 5.1549] -2022-02-03 02:36:01,781 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1543, Test RMSE: 3.7449, Test MAPE: 0.0515 -2022-02-03 02:36:01,789 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4293, Test RMSE: 4.4960, Test MAPE: 0.0605 -2022-02-03 02:36:01,790 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6113, Test RMSE: 5.0071, Test MAPE: 0.0671 -2022-02-03 02:36:01,791 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7539, Test RMSE: 5.4086, Test MAPE: 0.0727 -2022-02-03 02:36:01,793 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8719, Test RMSE: 5.7360, Test MAPE: 0.0775 -2022-02-03 02:36:01,794 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9737, Test RMSE: 6.0145, Test MAPE: 0.0818 -2022-02-03 02:36:01,795 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0626, Test RMSE: 6.2482, Test MAPE: 0.0854 -2022-02-03 02:36:01,796 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1399, Test RMSE: 6.4526, Test MAPE: 0.0885 -2022-02-03 02:36:01,797 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2093, Test RMSE: 6.6309, Test MAPE: 0.0913 -2022-02-03 02:36:01,798 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2688, Test RMSE: 6.7759, Test MAPE: 0.0938 -2022-02-03 02:36:01,799 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3291, Test RMSE: 6.9048, Test MAPE: 0.0962 -2022-02-03 02:36:01,801 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3830, Test RMSE: 7.0151, Test MAPE: 0.0981 -2022-02-03 02:36:01,801 - easytorch-training - INFO - test:: [test_time: -101.88 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:36:03,593 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_083.pt saved -2022-02-03 02:36:03,594 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:39 -2022-02-03 02:36:03,594 - easytorch-training - INFO - epoch 84 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:02<00:00, 1.24it/s] -2022-02-03 02:41:06,170 - easytorch-training - INFO - train:: [train_loss: 2.6752, train_MAPE: 0.0694, train_RMSE: 5.2439, train_time: 302.58 (s), lr: 1.56e-04] -2022-02-03 02:41:54,460 - easytorch-training - INFO - val:: [val_time: 48.29 (s), val_loss: 2.7034, val_MAPE: 0.0733, val_RMSE: 5.1776] -2022-02-03 02:43:36,542 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1561, Test RMSE: 3.7449, Test MAPE: 0.0514 -2022-02-03 02:43:36,543 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4309, Test RMSE: 4.4947, Test MAPE: 0.0602 -2022-02-03 02:43:36,544 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6139, Test RMSE: 5.0061, Test MAPE: 0.0665 -2022-02-03 02:43:36,544 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7597, Test RMSE: 5.4187, Test MAPE: 0.0719 -2022-02-03 02:43:36,545 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8806, Test RMSE: 5.7571, Test MAPE: 0.0764 -2022-02-03 02:43:36,546 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9826, Test RMSE: 6.0373, Test MAPE: 0.0804 -2022-02-03 02:43:36,546 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0713, Test RMSE: 6.2707, Test MAPE: 0.0837 -2022-02-03 02:43:36,547 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1488, Test RMSE: 6.4734, Test MAPE: 0.0870 -2022-02-03 02:43:36,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2168, Test RMSE: 6.6486, Test MAPE: 0.0896 -2022-02-03 02:43:36,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2759, Test RMSE: 6.7917, Test MAPE: 0.0919 -2022-02-03 02:43:36,549 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3327, Test RMSE: 6.9143, Test MAPE: 0.0943 -2022-02-03 02:43:36,550 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3881, Test RMSE: 7.0261, Test MAPE: 0.0964 -2022-02-03 02:43:36,550 - easytorch-training - INFO - test:: [test_time: -102.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:43:37,748 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_084.pt saved -2022-02-03 02:43:37,748 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:35 -2022-02-03 02:43:37,749 - easytorch-training - INFO - epoch 85 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:09<00:00, 1.21it/s] -2022-02-03 02:48:47,544 - easytorch-training - INFO - train:: [train_loss: 2.6800, train_MAPE: 0.0695, train_RMSE: 5.2498, train_time: 309.80 (s), lr: 1.56e-04] -2022-02-03 02:49:34,413 - easytorch-training - INFO - val:: [val_time: 46.86 (s), val_loss: 2.7005, val_MAPE: 0.0737, val_RMSE: 5.1613] -2022-02-03 02:51:14,544 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1545, Test RMSE: 3.7414, Test MAPE: 0.0514 -2022-02-03 02:51:14,544 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4285, Test RMSE: 4.4904, Test MAPE: 0.0601 -2022-02-03 02:51:14,545 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6096, Test RMSE: 4.9967, Test MAPE: 0.0666 -2022-02-03 02:51:14,546 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7547, Test RMSE: 5.4048, Test MAPE: 0.0719 -2022-02-03 02:51:14,546 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8753, Test RMSE: 5.7442, Test MAPE: 0.0766 -2022-02-03 02:51:14,547 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9764, Test RMSE: 6.0180, Test MAPE: 0.0806 -2022-02-03 02:51:14,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0634, Test RMSE: 6.2482, Test MAPE: 0.0842 -2022-02-03 02:51:14,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1395, Test RMSE: 6.4431, Test MAPE: 0.0874 -2022-02-03 02:51:14,549 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2065, Test RMSE: 6.6162, Test MAPE: 0.0902 -2022-02-03 02:51:14,550 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2658, Test RMSE: 6.7549, Test MAPE: 0.0927 -2022-02-03 02:51:14,550 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3220, Test RMSE: 6.8754, Test MAPE: 0.0952 -2022-02-03 02:51:14,551 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3768, Test RMSE: 6.9863, Test MAPE: 0.0975 -2022-02-03 02:51:14,551 - easytorch-training - INFO - test:: [test_time: -100.14 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:51:16,000 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_085.pt saved -2022-02-03 02:51:16,001 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:36 -2022-02-03 02:51:16,001 - easytorch-training - INFO - epoch 86 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 02:56:20,690 - easytorch-training - INFO - train:: [train_loss: 2.6758, train_MAPE: 0.0693, train_RMSE: 5.2323, train_time: 304.69 (s), lr: 1.56e-04] -2022-02-03 02:57:09,677 - easytorch-training - INFO - val:: [val_time: 48.98 (s), val_loss: 2.6942, val_MAPE: 0.0739, val_RMSE: 5.1445] -2022-02-03 02:58:52,022 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1531, Test RMSE: 3.7395, Test MAPE: 0.0513 -2022-02-03 02:58:52,023 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4247, Test RMSE: 4.4789, Test MAPE: 0.0601 -2022-02-03 02:58:52,024 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6058, Test RMSE: 4.9818, Test MAPE: 0.0667 -2022-02-03 02:58:52,025 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7485, Test RMSE: 5.3841, Test MAPE: 0.0723 -2022-02-03 02:58:52,025 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8675, Test RMSE: 5.7145, Test MAPE: 0.0771 -2022-02-03 02:58:52,026 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9673, Test RMSE: 5.9866, Test MAPE: 0.0813 -2022-02-03 02:58:52,026 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0559, Test RMSE: 6.2183, Test MAPE: 0.0849 -2022-02-03 02:58:52,027 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1326, Test RMSE: 6.4207, Test MAPE: 0.0880 -2022-02-03 02:58:52,028 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2002, Test RMSE: 6.5936, Test MAPE: 0.0909 -2022-02-03 02:58:52,028 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2598, Test RMSE: 6.7400, Test MAPE: 0.0932 -2022-02-03 02:58:52,029 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3154, Test RMSE: 6.8641, Test MAPE: 0.0954 -2022-02-03 02:58:52,030 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3689, Test RMSE: 6.9778, Test MAPE: 0.0976 -2022-02-03 02:58:52,030 - easytorch-training - INFO - test:: [test_time: -102.35 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 02:58:53,308 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_086.pt saved -2022-02-03 02:58:53,309 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:36 -2022-02-03 02:58:53,309 - easytorch-training - INFO - epoch 87 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:01<00:00, 1.24it/s] -2022-02-03 03:03:54,614 - easytorch-training - INFO - train:: [train_loss: 2.6865, train_MAPE: 0.0700, train_RMSE: 5.2613, train_time: 301.30 (s), lr: 1.56e-04] -2022-02-03 03:04:42,090 - easytorch-training - INFO - val:: [val_time: 47.47 (s), val_loss: 2.7018, val_MAPE: 0.0738, val_RMSE: 5.1745] -2022-02-03 03:06:25,410 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1548, Test RMSE: 3.7431, Test MAPE: 0.0514 -2022-02-03 03:06:25,411 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4282, Test RMSE: 4.4913, Test MAPE: 0.0602 -2022-02-03 03:06:25,412 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6105, Test RMSE: 5.0005, Test MAPE: 0.0668 -2022-02-03 03:06:25,412 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7554, Test RMSE: 5.4125, Test MAPE: 0.0722 -2022-02-03 03:06:25,413 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8747, Test RMSE: 5.7472, Test MAPE: 0.0769 -2022-02-03 03:06:25,413 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9756, Test RMSE: 6.0240, Test MAPE: 0.0810 -2022-02-03 03:06:25,414 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0635, Test RMSE: 6.2567, Test MAPE: 0.0844 -2022-02-03 03:06:25,415 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1403, Test RMSE: 6.4572, Test MAPE: 0.0876 -2022-02-03 03:06:25,415 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2088, Test RMSE: 6.6357, Test MAPE: 0.0902 -2022-02-03 03:06:25,416 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2688, Test RMSE: 6.7822, Test MAPE: 0.0927 -2022-02-03 03:06:25,417 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3261, Test RMSE: 6.9104, Test MAPE: 0.0950 -2022-02-03 03:06:25,417 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3803, Test RMSE: 7.0256, Test MAPE: 0.0970 -2022-02-03 03:06:25,417 - easytorch-training - INFO - test:: [test_time: -103.32 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:06:26,635 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_087.pt saved -2022-02-03 03:06:26,635 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:32 -2022-02-03 03:06:26,635 - easytorch-training - INFO - epoch 88 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-03 03:11:34,501 - easytorch-training - INFO - train:: [train_loss: 2.6826, train_MAPE: 0.0693, train_RMSE: 5.2423, train_time: 307.87 (s), lr: 1.56e-04] -2022-02-03 03:12:22,276 - easytorch-training - INFO - val:: [val_time: 47.77 (s), val_loss: 2.6988, val_MAPE: 0.0738, val_RMSE: 5.1610] -2022-02-03 03:14:06,181 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1546, Test RMSE: 3.7387, Test MAPE: 0.0511 -2022-02-03 03:14:06,182 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4289, Test RMSE: 4.4879, Test MAPE: 0.0598 -2022-02-03 03:14:06,182 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6105, Test RMSE: 4.9958, Test MAPE: 0.0665 -2022-02-03 03:14:06,183 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7562, Test RMSE: 5.4050, Test MAPE: 0.0722 -2022-02-03 03:14:06,183 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8758, Test RMSE: 5.7427, Test MAPE: 0.0771 -2022-02-03 03:14:06,184 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9785, Test RMSE: 6.0253, Test MAPE: 0.0813 -2022-02-03 03:14:06,185 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0668, Test RMSE: 6.2620, Test MAPE: 0.0849 -2022-02-03 03:14:06,185 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1463, Test RMSE: 6.4740, Test MAPE: 0.0879 -2022-02-03 03:14:06,186 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2123, Test RMSE: 6.6447, Test MAPE: 0.0907 -2022-02-03 03:14:06,187 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2710, Test RMSE: 6.7881, Test MAPE: 0.0932 -2022-02-03 03:14:06,187 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3256, Test RMSE: 6.9086, Test MAPE: 0.0955 -2022-02-03 03:14:06,188 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3784, Test RMSE: 7.0149, Test MAPE: 0.0979 -2022-02-03 03:14:06,188 - easytorch-training - INFO - test:: [test_time: -103.91 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:14:08,029 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_088.pt saved -2022-02-03 03:14:08,030 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:36 -2022-02-03 03:14:08,030 - easytorch-training - INFO - epoch 89 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-03 03:19:13,565 - easytorch-training - INFO - train:: [train_loss: 2.6787, train_MAPE: 0.0696, train_RMSE: 5.2483, train_time: 305.53 (s), lr: 1.56e-04] -2022-02-03 03:20:01,466 - easytorch-training - INFO - val:: [val_time: 47.90 (s), val_loss: 2.6963, val_MAPE: 0.0734, val_RMSE: 5.1502] -2022-02-03 03:21:43,582 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1550, Test RMSE: 3.7371, Test MAPE: 0.0513 -2022-02-03 03:21:43,583 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4276, Test RMSE: 4.4868, Test MAPE: 0.0601 -2022-02-03 03:21:43,585 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6091, Test RMSE: 4.9897, Test MAPE: 0.0666 -2022-02-03 03:21:43,586 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7550, Test RMSE: 5.3994, Test MAPE: 0.0720 -2022-02-03 03:21:43,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8749, Test RMSE: 5.7311, Test MAPE: 0.0766 -2022-02-03 03:21:43,588 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9763, Test RMSE: 6.0087, Test MAPE: 0.0804 -2022-02-03 03:21:43,589 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0665, Test RMSE: 6.2488, Test MAPE: 0.0839 -2022-02-03 03:21:43,590 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1451, Test RMSE: 6.4565, Test MAPE: 0.0871 -2022-02-03 03:21:43,592 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2124, Test RMSE: 6.6308, Test MAPE: 0.0897 -2022-02-03 03:21:43,593 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2701, Test RMSE: 6.7676, Test MAPE: 0.0922 -2022-02-03 03:21:43,594 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3254, Test RMSE: 6.8913, Test MAPE: 0.0944 -2022-02-03 03:21:43,595 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3774, Test RMSE: 6.9980, Test MAPE: 0.0965 -2022-02-03 03:21:43,595 - easytorch-training - INFO - test:: [test_time: -102.13 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:21:44,990 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_089.pt saved -2022-02-03 03:21:44,990 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:36 -2022-02-03 03:21:44,990 - easytorch-training - INFO - epoch 90 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-03 03:26:52,001 - easytorch-training - INFO - train:: [train_loss: 2.6665, train_MAPE: 0.0689, train_RMSE: 5.2153, train_time: 307.01 (s), lr: 1.56e-04] -2022-02-03 03:27:41,545 - easytorch-training - INFO - val:: [val_time: 49.54 (s), val_loss: 2.6913, val_MAPE: 0.0736, val_RMSE: 5.1500] -2022-02-03 03:29:24,657 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1554, Test RMSE: 3.7423, Test MAPE: 0.0513 -2022-02-03 03:29:24,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4297, Test RMSE: 4.4928, Test MAPE: 0.0603 -2022-02-03 03:29:24,659 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6105, Test RMSE: 5.0005, Test MAPE: 0.0668 -2022-02-03 03:29:24,660 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7549, Test RMSE: 5.4096, Test MAPE: 0.0723 -2022-02-03 03:29:24,661 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8723, Test RMSE: 5.7358, Test MAPE: 0.0769 -2022-02-03 03:29:24,662 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9744, Test RMSE: 6.0118, Test MAPE: 0.0813 -2022-02-03 03:29:24,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0626, Test RMSE: 6.2477, Test MAPE: 0.0848 -2022-02-03 03:29:24,665 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1399, Test RMSE: 6.4542, Test MAPE: 0.0881 -2022-02-03 03:29:24,666 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2072, Test RMSE: 6.6289, Test MAPE: 0.0904 -2022-02-03 03:29:24,667 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2654, Test RMSE: 6.7702, Test MAPE: 0.0929 -2022-02-03 03:29:24,668 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3205, Test RMSE: 6.8900, Test MAPE: 0.0952 -2022-02-03 03:29:24,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3739, Test RMSE: 7.0046, Test MAPE: 0.0973 -2022-02-03 03:29:24,669 - easytorch-training - INFO - test:: [test_time: -103.12 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:29:26,457 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_090.pt saved -2022-02-03 03:29:26,460 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:40 -2022-02-03 03:29:26,460 - easytorch-training - INFO - epoch 91 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-03 03:34:29,928 - easytorch-training - INFO - train:: [train_loss: 2.6660, train_MAPE: 0.0688, train_RMSE: 5.2117, train_time: 303.47 (s), lr: 1.56e-04] -2022-02-03 03:35:18,136 - easytorch-training - INFO - val:: [val_time: 48.20 (s), val_loss: 2.7004, val_MAPE: 0.0739, val_RMSE: 5.1763] -2022-02-03 03:36:57,766 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1558, Test RMSE: 3.7474, Test MAPE: 0.0517 -2022-02-03 03:36:57,767 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4317, Test RMSE: 4.4992, Test MAPE: 0.0604 -2022-02-03 03:36:57,768 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6148, Test RMSE: 5.0093, Test MAPE: 0.0670 -2022-02-03 03:36:57,769 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7611, Test RMSE: 5.4235, Test MAPE: 0.0726 -2022-02-03 03:36:57,769 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8800, Test RMSE: 5.7532, Test MAPE: 0.0771 -2022-02-03 03:36:57,770 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9811, Test RMSE: 6.0311, Test MAPE: 0.0811 -2022-02-03 03:36:57,770 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0712, Test RMSE: 6.2735, Test MAPE: 0.0845 -2022-02-03 03:36:57,771 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1496, Test RMSE: 6.4813, Test MAPE: 0.0876 -2022-02-03 03:36:57,772 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2182, Test RMSE: 6.6615, Test MAPE: 0.0900 -2022-02-03 03:36:57,772 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2770, Test RMSE: 6.8032, Test MAPE: 0.0923 -2022-02-03 03:36:57,773 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3331, Test RMSE: 6.9255, Test MAPE: 0.0944 -2022-02-03 03:36:57,774 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3861, Test RMSE: 7.0312, Test MAPE: 0.0964 -2022-02-03 03:36:57,774 - easytorch-training - INFO - test:: [test_time: -99.63 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:36:59,123 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_091.pt saved -2022-02-03 03:36:59,123 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:35 -2022-02-03 03:36:59,124 - easytorch-training - INFO - epoch 92 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-03 03:42:02,395 - easytorch-training - INFO - train:: [train_loss: 2.6674, train_MAPE: 0.0691, train_RMSE: 5.2139, train_time: 303.27 (s), lr: 1.56e-04] -2022-02-03 03:42:50,567 - easytorch-training - INFO - val:: [val_time: 48.17 (s), val_loss: 2.7076, val_MAPE: 0.0729, val_RMSE: 5.1733] -2022-02-03 03:44:30,500 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1585, Test RMSE: 3.7464, Test MAPE: 0.0509 -2022-02-03 03:44:30,501 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4334, Test RMSE: 4.5001, Test MAPE: 0.0597 -2022-02-03 03:44:30,502 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6169, Test RMSE: 5.0124, Test MAPE: 0.0660 -2022-02-03 03:44:30,503 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7639, Test RMSE: 5.4233, Test MAPE: 0.0714 -2022-02-03 03:44:30,503 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8850, Test RMSE: 5.7612, Test MAPE: 0.0759 -2022-02-03 03:44:30,504 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9892, Test RMSE: 6.0425, Test MAPE: 0.0797 -2022-02-03 03:44:30,505 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0775, Test RMSE: 6.2692, Test MAPE: 0.0831 -2022-02-03 03:44:30,505 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1556, Test RMSE: 6.4708, Test MAPE: 0.0863 -2022-02-03 03:44:30,506 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2226, Test RMSE: 6.6410, Test MAPE: 0.0889 -2022-02-03 03:44:30,506 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2796, Test RMSE: 6.7751, Test MAPE: 0.0913 -2022-02-03 03:44:30,507 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3343, Test RMSE: 6.8894, Test MAPE: 0.0936 -2022-02-03 03:44:30,508 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3872, Test RMSE: 6.9950, Test MAPE: 0.0955 -2022-02-03 03:44:30,508 - easytorch-training - INFO - test:: [test_time: -99.94 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:44:31,831 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_092.pt saved -2022-02-03 03:44:31,831 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:30 -2022-02-03 03:44:31,831 - easytorch-training - INFO - epoch 93 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:06<00:00, 1.22it/s] -2022-02-03 03:49:38,578 - easytorch-training - INFO - train:: [train_loss: 2.6782, train_MAPE: 0.0695, train_RMSE: 5.2453, train_time: 306.75 (s), lr: 1.56e-04] -2022-02-03 03:50:26,686 - easytorch-training - INFO - val:: [val_time: 48.10 (s), val_loss: 2.6981, val_MAPE: 0.0733, val_RMSE: 5.1561] -2022-02-03 03:52:07,200 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1538, Test RMSE: 3.7377, Test MAPE: 0.0511 -2022-02-03 03:52:07,201 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4270, Test RMSE: 4.4844, Test MAPE: 0.0597 -2022-02-03 03:52:07,201 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6076, Test RMSE: 4.9869, Test MAPE: 0.0661 -2022-02-03 03:52:07,202 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7518, Test RMSE: 5.3905, Test MAPE: 0.0715 -2022-02-03 03:52:07,203 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8711, Test RMSE: 5.7193, Test MAPE: 0.0761 -2022-02-03 03:52:07,203 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9731, Test RMSE: 5.9974, Test MAPE: 0.0802 -2022-02-03 03:52:07,204 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0630, Test RMSE: 6.2324, Test MAPE: 0.0838 -2022-02-03 03:52:07,205 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1418, Test RMSE: 6.4373, Test MAPE: 0.0869 -2022-02-03 03:52:07,205 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2097, Test RMSE: 6.6181, Test MAPE: 0.0898 -2022-02-03 03:52:07,206 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2701, Test RMSE: 6.7637, Test MAPE: 0.0921 -2022-02-03 03:52:07,207 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3249, Test RMSE: 6.8873, Test MAPE: 0.0945 -2022-02-03 03:52:07,207 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3760, Test RMSE: 6.9942, Test MAPE: 0.0966 -2022-02-03 03:52:07,207 - easytorch-training - INFO - test:: [test_time: -100.52 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:52:08,634 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_093.pt saved -2022-02-03 03:52:08,634 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:29 -2022-02-03 03:52:08,634 - easytorch-training - INFO - epoch 94 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 03:57:12,851 - easytorch-training - INFO - train:: [train_loss: 2.6629, train_MAPE: 0.0688, train_RMSE: 5.2120, train_time: 304.22 (s), lr: 1.56e-04] -2022-02-03 03:58:01,375 - easytorch-training - INFO - val:: [val_time: 48.51 (s), val_loss: 2.7007, val_MAPE: 0.0733, val_RMSE: 5.1672] -2022-02-03 03:59:44,040 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1560, Test RMSE: 3.7474, Test MAPE: 0.0511 -2022-02-03 03:59:44,041 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4315, Test RMSE: 4.4985, Test MAPE: 0.0599 -2022-02-03 03:59:44,042 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6140, Test RMSE: 5.0049, Test MAPE: 0.0665 -2022-02-03 03:59:44,043 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7609, Test RMSE: 5.4156, Test MAPE: 0.0719 -2022-02-03 03:59:44,043 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8815, Test RMSE: 5.7515, Test MAPE: 0.0764 -2022-02-03 03:59:44,044 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9832, Test RMSE: 6.0338, Test MAPE: 0.0802 -2022-02-03 03:59:44,044 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0740, Test RMSE: 6.2726, Test MAPE: 0.0837 -2022-02-03 03:59:44,045 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1531, Test RMSE: 6.4794, Test MAPE: 0.0867 -2022-02-03 03:59:44,046 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2209, Test RMSE: 6.6591, Test MAPE: 0.0894 -2022-02-03 03:59:44,046 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2780, Test RMSE: 6.7974, Test MAPE: 0.0919 -2022-02-03 03:59:44,047 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3326, Test RMSE: 6.9177, Test MAPE: 0.0942 -2022-02-03 03:59:44,048 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3860, Test RMSE: 7.0260, Test MAPE: 0.0964 -2022-02-03 03:59:44,048 - easytorch-training - INFO - test:: [test_time: -102.67 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 03:59:45,331 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_094.pt saved -2022-02-03 03:59:45,332 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:29 -2022-02-03 03:59:45,332 - easytorch-training - INFO - epoch 95 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:02<00:00, 1.24it/s] -2022-02-03 04:04:47,508 - easytorch-training - INFO - train:: [train_loss: 2.6712, train_MAPE: 0.0690, train_RMSE: 5.2196, train_time: 302.18 (s), lr: 1.56e-04] -2022-02-03 04:05:39,350 - easytorch-training - INFO - val:: [val_time: 51.84 (s), val_loss: 2.7036, val_MAPE: 0.0740, val_RMSE: 5.1692] -2022-02-03 04:07:20,007 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1538, Test RMSE: 3.7426, Test MAPE: 0.0511 -2022-02-03 04:07:20,008 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4279, Test RMSE: 4.4900, Test MAPE: 0.0599 -2022-02-03 04:07:20,009 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6077, Test RMSE: 4.9965, Test MAPE: 0.0664 -2022-02-03 04:07:20,010 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7535, Test RMSE: 5.4032, Test MAPE: 0.0721 -2022-02-03 04:07:20,010 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8708, Test RMSE: 5.7296, Test MAPE: 0.0769 -2022-02-03 04:07:20,011 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9721, Test RMSE: 6.0009, Test MAPE: 0.0811 -2022-02-03 04:07:20,011 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0603, Test RMSE: 6.2356, Test MAPE: 0.0846 -2022-02-03 04:07:20,012 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1391, Test RMSE: 6.4465, Test MAPE: 0.0880 -2022-02-03 04:07:20,013 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2077, Test RMSE: 6.6295, Test MAPE: 0.0907 -2022-02-03 04:07:20,013 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2678, Test RMSE: 6.7732, Test MAPE: 0.0933 -2022-02-03 04:07:20,014 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3229, Test RMSE: 6.8989, Test MAPE: 0.0956 -2022-02-03 04:07:20,015 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3766, Test RMSE: 7.0136, Test MAPE: 0.0979 -2022-02-03 04:07:20,015 - easytorch-training - INFO - test:: [test_time: -100.66 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 04:07:21,746 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_095.pt saved -2022-02-03 04:07:21,747 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:28 -2022-02-03 04:07:21,747 - easytorch-training - INFO - epoch 96 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:03<00:00, 1.24it/s] -2022-02-03 04:12:25,371 - easytorch-training - INFO - train:: [train_loss: 2.6664, train_MAPE: 0.0690, train_RMSE: 5.2052, train_time: 303.62 (s), lr: 1.56e-04] -2022-02-03 04:13:13,708 - easytorch-training - INFO - val:: [val_time: 48.33 (s), val_loss: 2.6974, val_MAPE: 0.0741, val_RMSE: 5.1734] -2022-02-03 04:14:58,968 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1546, Test RMSE: 3.7492, Test MAPE: 0.0512 -2022-02-03 04:14:58,969 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4303, Test RMSE: 4.5034, Test MAPE: 0.0600 -2022-02-03 04:14:58,970 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6117, Test RMSE: 5.0087, Test MAPE: 0.0667 -2022-02-03 04:14:58,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7565, Test RMSE: 5.4108, Test MAPE: 0.0723 -2022-02-03 04:14:58,972 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8788, Test RMSE: 5.7523, Test MAPE: 0.0773 -2022-02-03 04:14:58,973 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9826, Test RMSE: 6.0378, Test MAPE: 0.0817 -2022-02-03 04:14:58,974 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0702, Test RMSE: 6.2729, Test MAPE: 0.0852 -2022-02-03 04:14:58,975 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1479, Test RMSE: 6.4800, Test MAPE: 0.0883 -2022-02-03 04:14:58,976 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2187, Test RMSE: 6.6668, Test MAPE: 0.0912 -2022-02-03 04:14:58,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2771, Test RMSE: 6.8080, Test MAPE: 0.0937 -2022-02-03 04:14:58,978 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3329, Test RMSE: 6.9312, Test MAPE: 0.0960 -2022-02-03 04:14:58,979 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3863, Test RMSE: 7.0460, Test MAPE: 0.0981 -2022-02-03 04:14:58,979 - easytorch-training - INFO - test:: [test_time: -105.27 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 04:15:00,759 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_096.pt saved -2022-02-03 04:15:00,760 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:30 -2022-02-03 04:15:00,760 - easytorch-training - INFO - epoch 97 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:08<00:00, 1.22it/s] -2022-02-03 04:20:08,796 - easytorch-training - INFO - train:: [train_loss: 2.6601, train_MAPE: 0.0688, train_RMSE: 5.1990, train_time: 308.04 (s), lr: 1.56e-04] -2022-02-03 04:20:56,555 - easytorch-training - INFO - val:: [val_time: 47.75 (s), val_loss: 2.7020, val_MAPE: 0.0732, val_RMSE: 5.1745] -2022-02-03 04:22:37,058 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1566, Test RMSE: 3.7490, Test MAPE: 0.0512 -2022-02-03 04:22:37,059 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4273, Test RMSE: 4.4884, Test MAPE: 0.0598 -2022-02-03 04:22:37,059 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6069, Test RMSE: 4.9910, Test MAPE: 0.0662 -2022-02-03 04:22:37,060 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7512, Test RMSE: 5.3935, Test MAPE: 0.0717 -2022-02-03 04:22:37,061 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8695, Test RMSE: 5.7249, Test MAPE: 0.0761 -2022-02-03 04:22:37,061 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9696, Test RMSE: 5.9955, Test MAPE: 0.0800 -2022-02-03 04:22:37,062 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0574, Test RMSE: 6.2246, Test MAPE: 0.0833 -2022-02-03 04:22:37,063 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1353, Test RMSE: 6.4302, Test MAPE: 0.0863 -2022-02-03 04:22:37,063 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2025, Test RMSE: 6.6026, Test MAPE: 0.0891 -2022-02-03 04:22:37,064 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2621, Test RMSE: 6.7462, Test MAPE: 0.0915 -2022-02-03 04:22:37,065 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3165, Test RMSE: 6.8673, Test MAPE: 0.0938 -2022-02-03 04:22:37,065 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3690, Test RMSE: 6.9785, Test MAPE: 0.0961 -2022-02-03 04:22:37,065 - easytorch-training - INFO - test:: [test_time: -100.51 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 04:22:38,375 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_097.pt saved -2022-02-03 04:22:38,376 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:30 -2022-02-03 04:22:38,376 - easytorch-training - INFO - epoch 98 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:07<00:00, 1.22it/s] -2022-02-03 04:27:46,097 - easytorch-training - INFO - train:: [train_loss: 2.6744, train_MAPE: 0.0695, train_RMSE: 5.2302, train_time: 307.72 (s), lr: 1.56e-04] -2022-02-03 04:28:32,475 - easytorch-training - INFO - val:: [val_time: 46.37 (s), val_loss: 2.6993, val_MAPE: 0.0729, val_RMSE: 5.1698] -2022-02-03 04:30:22,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1544, Test RMSE: 3.7401, Test MAPE: 0.0511 -2022-02-03 04:30:22,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4280, Test RMSE: 4.4918, Test MAPE: 0.0597 -2022-02-03 04:30:22,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6088, Test RMSE: 4.9985, Test MAPE: 0.0661 -2022-02-03 04:30:22,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7543, Test RMSE: 5.4101, Test MAPE: 0.0715 -2022-02-03 04:30:22,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8743, Test RMSE: 5.7449, Test MAPE: 0.0761 -2022-02-03 04:30:22,252 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9742, Test RMSE: 6.0126, Test MAPE: 0.0798 -2022-02-03 04:30:22,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0618, Test RMSE: 6.2419, Test MAPE: 0.0831 -2022-02-03 04:30:22,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1404, Test RMSE: 6.4466, Test MAPE: 0.0861 -2022-02-03 04:30:22,254 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2071, Test RMSE: 6.6149, Test MAPE: 0.0886 -2022-02-03 04:30:22,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2666, Test RMSE: 6.7580, Test MAPE: 0.0910 -2022-02-03 04:30:22,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3238, Test RMSE: 6.8801, Test MAPE: 0.0931 -2022-02-03 04:30:22,256 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3790, Test RMSE: 6.9998, Test MAPE: 0.0952 -2022-02-03 04:30:22,256 - easytorch-training - INFO - test:: [test_time: -109.78 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 04:30:23,533 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_098.pt saved -2022-02-03 04:30:23,533 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:38 -2022-02-03 04:30:23,533 - easytorch-training - INFO - epoch 99 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:04<00:00, 1.23it/s] -2022-02-03 04:35:27,810 - easytorch-training - INFO - train:: [train_loss: 2.6621, train_MAPE: 0.0686, train_RMSE: 5.1930, train_time: 304.28 (s), lr: 1.56e-04] -2022-02-03 04:36:16,608 - easytorch-training - INFO - val:: [val_time: 48.79 (s), val_loss: 2.7053, val_MAPE: 0.0747, val_RMSE: 5.1937] -2022-02-03 04:37:58,442 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1561, Test RMSE: 3.7539, Test MAPE: 0.0514 -2022-02-03 04:37:58,443 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4298, Test RMSE: 4.5064, Test MAPE: 0.0604 -2022-02-03 04:37:58,443 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6112, Test RMSE: 5.0144, Test MAPE: 0.0671 -2022-02-03 04:37:58,444 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7570, Test RMSE: 5.4234, Test MAPE: 0.0729 -2022-02-03 04:37:58,445 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8755, Test RMSE: 5.7540, Test MAPE: 0.0775 -2022-02-03 04:37:58,445 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9765, Test RMSE: 6.0325, Test MAPE: 0.0816 -2022-02-03 04:37:58,446 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0650, Test RMSE: 6.2721, Test MAPE: 0.0853 -2022-02-03 04:37:58,447 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1423, Test RMSE: 6.4803, Test MAPE: 0.0885 -2022-02-03 04:37:58,447 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2105, Test RMSE: 6.6594, Test MAPE: 0.0914 -2022-02-03 04:37:58,448 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2672, Test RMSE: 6.7959, Test MAPE: 0.0940 -2022-02-03 04:37:58,449 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3229, Test RMSE: 6.9186, Test MAPE: 0.0965 -2022-02-03 04:37:58,449 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3755, Test RMSE: 7.0302, Test MAPE: 0.0990 -2022-02-03 04:37:58,449 - easytorch-training - INFO - test:: [test_time: -101.84 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 04:38:00,109 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_099.pt saved -2022-02-03 04:38:00,110 - easytorch-training - INFO - The estimated training finish time is 2022-02-03 04:45:37 -2022-02-03 04:38:00,110 - easytorch-training - INFO - epoch 100 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 375/375 [05:05<00:00, 1.23it/s] -2022-02-03 04:43:06,028 - easytorch-training - INFO - train:: [train_loss: 2.6688, train_MAPE: 0.0693, train_RMSE: 5.2197, train_time: 305.92 (s), lr: 1.56e-04] -2022-02-03 04:43:54,860 - easytorch-training - INFO - val:: [val_time: 48.83 (s), val_loss: 2.7047, val_MAPE: 0.0752, val_RMSE: 5.1853] -2022-02-03 04:45:34,955 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 2.1543, Test RMSE: 3.7428, Test MAPE: 0.0513 -2022-02-03 04:45:34,956 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 2.4295, Test RMSE: 4.4984, Test MAPE: 0.0604 -2022-02-03 04:45:34,956 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 2.6133, Test RMSE: 5.0084, Test MAPE: 0.0675 -2022-02-03 04:45:34,957 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 2.7592, Test RMSE: 5.4222, Test MAPE: 0.0734 -2022-02-03 04:45:34,958 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.8775, Test RMSE: 5.7548, Test MAPE: 0.0783 -2022-02-03 04:45:34,958 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.9765, Test RMSE: 6.0302, Test MAPE: 0.0824 -2022-02-03 04:45:34,959 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 3.0656, Test RMSE: 6.2684, Test MAPE: 0.0862 -2022-02-03 04:45:34,960 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.1435, Test RMSE: 6.4724, Test MAPE: 0.0894 -2022-02-03 04:45:34,960 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.2111, Test RMSE: 6.6477, Test MAPE: 0.0923 -2022-02-03 04:45:34,961 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2681, Test RMSE: 6.7898, Test MAPE: 0.0946 -2022-02-03 04:45:34,961 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3238, Test RMSE: 6.9159, Test MAPE: 0.0971 -2022-02-03 04:45:34,962 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3756, Test RMSE: 7.0319, Test MAPE: 0.0993 -2022-02-03 04:45:34,962 - easytorch-training - INFO - test:: [test_time: -100.10 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-03 04:45:35,998 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/a93193644bbd26407ab0b3c09282f79c/FullModel_100.pt saved -2022-02-03 04:45:36,000 - easytorch-training - INFO - The training finished at 2022-02-03 04:45:35 /3.2s \ No newline at end of file diff --git a/train_logs/Backend_PEMS-BAY.log b/train_logs/Backend_PEMS-BAY.log deleted file mode 100644 index 545e8c4..0000000 --- a/train_logs/Backend_PEMS-BAY.log +++ /dev/null @@ -1,1628 +0,0 @@ -2022-02-07 21:28:41,895 - easytorch-env - INFO - Enable TF32 mode -2022-02-07 21:28:41,898 - easytorch - INFO - ckpt save dir: 'checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d' -2022-02-07 21:28:52,661 - easytorch-training - INFO - set optim: Adam ( -Parameter Group 0 - amsgrad: False - betas: (0.9, 0.999) - eps: 1e-08 - lr: 0.001 - weight_decay: 1e-05 -) -2022-02-07 21:28:52,664 - easytorch-training - INFO - set lr_scheduler: -2022-02-07 21:28:53,555 - easytorch-training - INFO - epoch 1 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:45<00:00, 1.13s/it] -2022-02-07 21:39:39,324 - easytorch-training - INFO - train:: [train_loss: 1.9006, train_MAPE: 0.0413, train_RMSE: 3.8933, train_time: 645.77 (s), lr: 1.00e-03] -2022-02-07 21:41:20,191 - easytorch-training - INFO - val:: [val_time: 100.86 (s), val_loss: 1.6996, val_MAPE: 0.0412, val_RMSE: 3.4439] -2022-02-07 21:44:43,794 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8759, Test RMSE: 1.7122, Test MAPE: 0.0170 -2022-02-07 21:44:43,803 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1557, Test RMSE: 2.3927, Test MAPE: 0.0237 -2022-02-07 21:44:43,804 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3502, Test RMSE: 2.9184, Test MAPE: 0.0289 -2022-02-07 21:44:43,805 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4959, Test RMSE: 3.3207, Test MAPE: 0.0333 -2022-02-07 21:44:43,806 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.6026, Test RMSE: 3.6163, Test MAPE: 0.0367 -2022-02-07 21:44:43,807 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6859, Test RMSE: 3.8338, Test MAPE: 0.0394 -2022-02-07 21:44:43,808 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.7542, Test RMSE: 3.9975, Test MAPE: 0.0418 -2022-02-07 21:44:43,809 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.8081, Test RMSE: 4.1315, Test MAPE: 0.0437 -2022-02-07 21:44:43,810 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.8580, Test RMSE: 4.2427, Test MAPE: 0.0456 -2022-02-07 21:44:43,811 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.9011, Test RMSE: 4.3377, Test MAPE: 0.0473 -2022-02-07 21:44:43,812 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.9556, Test RMSE: 4.4499, Test MAPE: 0.0494 -2022-02-07 21:44:43,813 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.9932, Test RMSE: 4.5242, Test MAPE: 0.0507 -2022-02-07 21:44:43,814 - easytorch-training - INFO - test:: [test_time: -203.61 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 21:44:45,156 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_001.pt saved -2022-02-07 21:44:45,156 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:54:53 -2022-02-07 21:44:45,157 - easytorch-training - INFO - epoch 2 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:39<00:00, 1.12s/it] -2022-02-07 21:55:24,700 - easytorch-training - INFO - train:: [train_loss: 1.6627, train_MAPE: 0.0352, train_RMSE: 3.5072, train_time: 639.54 (s), lr: 5.00e-04] -2022-02-07 21:57:06,503 - easytorch-training - INFO - val:: [val_time: 101.80 (s), val_loss: 1.6798, val_MAPE: 0.0406, val_RMSE: 3.3934] -2022-02-07 22:00:25,615 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.9024, Test RMSE: 1.7248, Test MAPE: 0.0185 -2022-02-07 22:00:25,617 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1724, Test RMSE: 2.3913, Test MAPE: 0.0250 -2022-02-07 22:00:25,618 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3619, Test RMSE: 2.9094, Test MAPE: 0.0301 -2022-02-07 22:00:25,619 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.5000, Test RMSE: 3.3015, Test MAPE: 0.0342 -2022-02-07 22:00:25,620 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.6015, Test RMSE: 3.5891, Test MAPE: 0.0374 -2022-02-07 22:00:25,621 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6782, Test RMSE: 3.7966, Test MAPE: 0.0397 -2022-02-07 22:00:25,622 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.7367, Test RMSE: 3.9529, Test MAPE: 0.0415 -2022-02-07 22:00:25,623 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7821, Test RMSE: 4.0697, Test MAPE: 0.0428 -2022-02-07 22:00:25,624 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.8212, Test RMSE: 4.1710, Test MAPE: 0.0441 -2022-02-07 22:00:25,625 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.8548, Test RMSE: 4.2495, Test MAPE: 0.0449 -2022-02-07 22:00:25,627 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8871, Test RMSE: 4.3274, Test MAPE: 0.0460 -2022-02-07 22:00:25,628 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.9188, Test RMSE: 4.3982, Test MAPE: 0.0467 -2022-02-07 22:00:25,628 - easytorch-training - INFO - test:: [test_time: -199.11 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 22:00:27,737 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_002.pt saved -2022-02-07 22:00:27,738 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:22 -2022-02-07 22:00:27,738 - easytorch-training - INFO - epoch 3 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.13s/it] -2022-02-07 22:11:09,390 - easytorch-training - INFO - train:: [train_loss: 1.6411, train_MAPE: 0.0346, train_RMSE: 3.4808, train_time: 641.65 (s), lr: 5.00e-04] -2022-02-07 22:12:51,071 - easytorch-training - INFO - val:: [val_time: 101.67 (s), val_loss: 1.6468, val_MAPE: 0.0380, val_RMSE: 3.3806] -2022-02-07 22:16:10,372 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8662, Test RMSE: 1.6756, Test MAPE: 0.0166 -2022-02-07 22:16:10,373 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1383, Test RMSE: 2.3499, Test MAPE: 0.0229 -2022-02-07 22:16:10,375 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3265, Test RMSE: 2.8705, Test MAPE: 0.0277 -2022-02-07 22:16:10,376 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4647, Test RMSE: 3.2606, Test MAPE: 0.0316 -2022-02-07 22:16:10,377 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5659, Test RMSE: 3.5498, Test MAPE: 0.0345 -2022-02-07 22:16:10,378 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6459, Test RMSE: 3.7718, Test MAPE: 0.0370 -2022-02-07 22:16:10,379 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.7069, Test RMSE: 3.9385, Test MAPE: 0.0390 -2022-02-07 22:16:10,380 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7567, Test RMSE: 4.0664, Test MAPE: 0.0405 -2022-02-07 22:16:10,381 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7997, Test RMSE: 4.1710, Test MAPE: 0.0419 -2022-02-07 22:16:10,382 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.8370, Test RMSE: 4.2587, Test MAPE: 0.0430 -2022-02-07 22:16:10,383 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8717, Test RMSE: 4.3375, Test MAPE: 0.0440 -2022-02-07 22:16:10,384 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.9061, Test RMSE: 4.4145, Test MAPE: 0.0450 -2022-02-07 22:16:10,384 - easytorch-training - INFO - test:: [test_time: -199.31 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 22:16:11,759 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_003.pt saved -2022-02-07 22:16:11,759 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:40 -2022-02-07 22:16:11,759 - easytorch-training - INFO - epoch 4 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-07 22:26:54,863 - easytorch-training - INFO - train:: [train_loss: 1.6340, train_MAPE: 0.0345, train_RMSE: 3.4701, train_time: 643.10 (s), lr: 5.00e-04] -2022-02-07 22:28:36,218 - easytorch-training - INFO - val:: [val_time: 101.35 (s), val_loss: 1.6423, val_MAPE: 0.0383, val_RMSE: 3.3530] -2022-02-07 22:31:57,132 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8802, Test RMSE: 1.6760, Test MAPE: 0.0176 -2022-02-07 22:31:57,134 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1530, Test RMSE: 2.3469, Test MAPE: 0.0241 -2022-02-07 22:31:57,135 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3371, Test RMSE: 2.8630, Test MAPE: 0.0287 -2022-02-07 22:31:57,136 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4764, Test RMSE: 3.2703, Test MAPE: 0.0327 -2022-02-07 22:31:57,137 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5770, Test RMSE: 3.5625, Test MAPE: 0.0356 -2022-02-07 22:31:57,138 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6566, Test RMSE: 3.7826, Test MAPE: 0.0381 -2022-02-07 22:31:57,139 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.7185, Test RMSE: 3.9452, Test MAPE: 0.0399 -2022-02-07 22:31:57,140 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7681, Test RMSE: 4.0768, Test MAPE: 0.0413 -2022-02-07 22:31:57,141 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.8100, Test RMSE: 4.1792, Test MAPE: 0.0427 -2022-02-07 22:31:57,142 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.8425, Test RMSE: 4.2575, Test MAPE: 0.0435 -2022-02-07 22:31:57,143 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8729, Test RMSE: 4.3276, Test MAPE: 0.0443 -2022-02-07 22:31:57,144 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.9021, Test RMSE: 4.3969, Test MAPE: 0.0452 -2022-02-07 22:31:57,145 - easytorch-training - INFO - test:: [test_time: -200.92 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 22:31:58,506 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_004.pt saved -2022-02-07 22:31:58,507 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:57 -2022-02-07 22:31:58,507 - easytorch-training - INFO - epoch 5 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-07 22:42:40,941 - easytorch-training - INFO - train:: [train_loss: 1.6282, train_MAPE: 0.0344, train_RMSE: 3.4622, train_time: 642.43 (s), lr: 5.00e-04] -2022-02-07 22:44:23,121 - easytorch-training - INFO - val:: [val_time: 102.17 (s), val_loss: 1.6327, val_MAPE: 0.0374, val_RMSE: 3.3308] -2022-02-07 22:47:43,240 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8710, Test RMSE: 1.6485, Test MAPE: 0.0169 -2022-02-07 22:47:43,248 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1383, Test RMSE: 2.3165, Test MAPE: 0.0230 -2022-02-07 22:47:43,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3234, Test RMSE: 2.8300, Test MAPE: 0.0277 -2022-02-07 22:47:43,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4585, Test RMSE: 3.2181, Test MAPE: 0.0314 -2022-02-07 22:47:43,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5601, Test RMSE: 3.5083, Test MAPE: 0.0344 -2022-02-07 22:47:43,252 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6389, Test RMSE: 3.7234, Test MAPE: 0.0368 -2022-02-07 22:47:43,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.7035, Test RMSE: 3.8847, Test MAPE: 0.0387 -2022-02-07 22:47:43,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7534, Test RMSE: 4.0128, Test MAPE: 0.0402 -2022-02-07 22:47:43,256 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7948, Test RMSE: 4.1160, Test MAPE: 0.0415 -2022-02-07 22:47:43,257 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.8295, Test RMSE: 4.2037, Test MAPE: 0.0426 -2022-02-07 22:47:43,258 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8572, Test RMSE: 4.2835, Test MAPE: 0.0435 -2022-02-07 22:47:43,259 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8906, Test RMSE: 4.3632, Test MAPE: 0.0445 -2022-02-07 22:47:43,259 - easytorch-training - INFO - test:: [test_time: -200.13 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 22:47:45,325 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_005.pt saved -2022-02-07 22:47:45,325 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:08 -2022-02-07 22:47:45,325 - easytorch-training - INFO - epoch 6 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-07 22:58:29,012 - easytorch-training - INFO - train:: [train_loss: 1.5841, train_MAPE: 0.0340, train_RMSE: 3.4463, train_time: 643.69 (s), lr: 5.00e-04] -2022-02-07 23:00:12,116 - easytorch-training - INFO - val:: [val_time: 103.10 (s), val_loss: 1.6169, val_MAPE: 0.0369, val_RMSE: 3.3261] -2022-02-07 23:03:32,953 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8567, Test RMSE: 1.6472, Test MAPE: 0.0164 -2022-02-07 23:03:32,955 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1264, Test RMSE: 2.3179, Test MAPE: 0.0227 -2022-02-07 23:03:32,956 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3117, Test RMSE: 2.8288, Test MAPE: 0.0274 -2022-02-07 23:03:32,957 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4449, Test RMSE: 3.2091, Test MAPE: 0.0311 -2022-02-07 23:03:32,958 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5450, Test RMSE: 3.4911, Test MAPE: 0.0342 -2022-02-07 23:03:32,959 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6201, Test RMSE: 3.7062, Test MAPE: 0.0365 -2022-02-07 23:03:32,960 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6812, Test RMSE: 3.8705, Test MAPE: 0.0382 -2022-02-07 23:03:32,961 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7295, Test RMSE: 4.0006, Test MAPE: 0.0396 -2022-02-07 23:03:32,962 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7703, Test RMSE: 4.1043, Test MAPE: 0.0407 -2022-02-07 23:03:32,963 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.8054, Test RMSE: 4.1914, Test MAPE: 0.0416 -2022-02-07 23:03:32,965 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8377, Test RMSE: 4.2745, Test MAPE: 0.0423 -2022-02-07 23:03:32,966 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8737, Test RMSE: 4.3624, Test MAPE: 0.0431 -2022-02-07 23:03:32,966 - easytorch-training - INFO - test:: [test_time: -200.84 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 23:03:34,403 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_006.pt saved -2022-02-07 23:03:34,403 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:54 -2022-02-07 23:03:34,403 - easytorch-training - INFO - epoch 7 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-07 23:14:17,643 - easytorch-training - INFO - train:: [train_loss: 1.5694, train_MAPE: 0.0336, train_RMSE: 3.4118, train_time: 643.24 (s), lr: 5.00e-04] -2022-02-07 23:16:00,613 - easytorch-training - INFO - val:: [val_time: 102.96 (s), val_loss: 1.6193, val_MAPE: 0.0364, val_RMSE: 3.3207] -2022-02-07 23:19:25,945 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8558, Test RMSE: 1.6524, Test MAPE: 0.0164 -2022-02-07 23:19:25,946 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1283, Test RMSE: 2.3350, Test MAPE: 0.0226 -2022-02-07 23:19:25,947 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3151, Test RMSE: 2.8540, Test MAPE: 0.0272 -2022-02-07 23:19:25,948 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4520, Test RMSE: 3.2446, Test MAPE: 0.0308 -2022-02-07 23:19:25,949 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5564, Test RMSE: 3.5348, Test MAPE: 0.0338 -2022-02-07 23:19:25,950 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6324, Test RMSE: 3.7478, Test MAPE: 0.0359 -2022-02-07 23:19:25,952 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6944, Test RMSE: 3.9064, Test MAPE: 0.0377 -2022-02-07 23:19:25,953 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7482, Test RMSE: 4.0410, Test MAPE: 0.0392 -2022-02-07 23:19:25,954 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7829, Test RMSE: 4.1224, Test MAPE: 0.0404 -2022-02-07 23:19:25,955 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.8200, Test RMSE: 4.2079, Test MAPE: 0.0415 -2022-02-07 23:19:25,956 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8485, Test RMSE: 4.2770, Test MAPE: 0.0424 -2022-02-07 23:19:25,957 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8799, Test RMSE: 4.3482, Test MAPE: 0.0433 -2022-02-07 23:19:25,957 - easytorch-training - INFO - test:: [test_time: -205.34 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 23:19:28,041 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_007.pt saved -2022-02-07 23:19:28,041 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:48:31 -2022-02-07 23:19:28,041 - easytorch-training - INFO - epoch 8 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-07 23:30:08,782 - easytorch-training - INFO - train:: [train_loss: 1.5648, train_MAPE: 0.0334, train_RMSE: 3.3981, train_time: 640.74 (s), lr: 5.00e-04] -2022-02-07 23:31:50,064 - easytorch-training - INFO - val:: [val_time: 101.28 (s), val_loss: 1.6236, val_MAPE: 0.0384, val_RMSE: 3.3440] -2022-02-07 23:35:08,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8708, Test RMSE: 1.6655, Test MAPE: 0.0172 -2022-02-07 23:35:08,218 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1402, Test RMSE: 2.3359, Test MAPE: 0.0236 -2022-02-07 23:35:08,219 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3225, Test RMSE: 2.8468, Test MAPE: 0.0283 -2022-02-07 23:35:08,220 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4535, Test RMSE: 3.2280, Test MAPE: 0.0320 -2022-02-07 23:35:08,221 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5536, Test RMSE: 3.5218, Test MAPE: 0.0352 -2022-02-07 23:35:08,222 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6316, Test RMSE: 3.7450, Test MAPE: 0.0378 -2022-02-07 23:35:08,223 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6915, Test RMSE: 3.9134, Test MAPE: 0.0397 -2022-02-07 23:35:08,224 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7413, Test RMSE: 4.0493, Test MAPE: 0.0412 -2022-02-07 23:35:08,225 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7874, Test RMSE: 4.1726, Test MAPE: 0.0429 -2022-02-07 23:35:08,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.8247, Test RMSE: 4.2694, Test MAPE: 0.0441 -2022-02-07 23:35:08,227 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8572, Test RMSE: 4.3521, Test MAPE: 0.0451 -2022-02-07 23:35:08,228 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8862, Test RMSE: 4.4196, Test MAPE: 0.0460 -2022-02-07 23:35:08,229 - easytorch-training - INFO - test:: [test_time: -198.16 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 23:35:09,613 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_008.pt saved -2022-02-07 23:35:09,614 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:14 -2022-02-07 23:35:09,614 - easytorch-training - INFO - epoch 9 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-07 23:45:53,409 - easytorch-training - INFO - train:: [train_loss: 1.5596, train_MAPE: 0.0333, train_RMSE: 3.3910, train_time: 643.79 (s), lr: 5.00e-04] -2022-02-07 23:47:35,323 - easytorch-training - INFO - val:: [val_time: 101.90 (s), val_loss: 1.6060, val_MAPE: 0.0366, val_RMSE: 3.3101] -2022-02-07 23:50:54,391 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8657, Test RMSE: 1.6604, Test MAPE: 0.0167 -2022-02-07 23:50:54,393 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1274, Test RMSE: 2.3266, Test MAPE: 0.0226 -2022-02-07 23:50:54,394 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3067, Test RMSE: 2.8346, Test MAPE: 0.0271 -2022-02-07 23:50:54,395 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4391, Test RMSE: 3.2187, Test MAPE: 0.0307 -2022-02-07 23:50:54,396 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5360, Test RMSE: 3.4968, Test MAPE: 0.0336 -2022-02-07 23:50:54,397 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6127, Test RMSE: 3.7045, Test MAPE: 0.0360 -2022-02-07 23:50:54,398 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6733, Test RMSE: 3.8648, Test MAPE: 0.0379 -2022-02-07 23:50:54,399 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7233, Test RMSE: 3.9901, Test MAPE: 0.0394 -2022-02-07 23:50:54,400 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7648, Test RMSE: 4.0933, Test MAPE: 0.0408 -2022-02-07 23:50:54,402 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7984, Test RMSE: 4.1799, Test MAPE: 0.0420 -2022-02-07 23:50:54,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8295, Test RMSE: 4.2596, Test MAPE: 0.0429 -2022-02-07 23:50:54,404 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8573, Test RMSE: 4.3271, Test MAPE: 0.0438 -2022-02-07 23:50:54,404 - easytorch-training - INFO - test:: [test_time: -199.08 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-07 23:50:56,376 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_009.pt saved -2022-02-07 23:50:56,376 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:11 -2022-02-07 23:50:56,376 - easytorch-training - INFO - epoch 10 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:38<00:00, 1.12s/it] -2022-02-08 00:01:34,778 - easytorch-training - INFO - train:: [train_loss: 1.5623, train_MAPE: 0.0334, train_RMSE: 3.3992, train_time: 638.40 (s), lr: 5.00e-04] -2022-02-08 00:03:16,775 - easytorch-training - INFO - val:: [val_time: 101.99 (s), val_loss: 1.6069, val_MAPE: 0.0373, val_RMSE: 3.3082] -2022-02-08 00:06:34,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8576, Test RMSE: 1.6455, Test MAPE: 0.0166 -2022-02-08 00:06:34,997 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1262, Test RMSE: 2.3143, Test MAPE: 0.0227 -2022-02-08 00:06:34,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3078, Test RMSE: 2.8259, Test MAPE: 0.0273 -2022-02-08 00:06:34,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4415, Test RMSE: 3.2080, Test MAPE: 0.0310 -2022-02-08 00:06:35,000 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5380, Test RMSE: 3.4899, Test MAPE: 0.0340 -2022-02-08 00:06:35,002 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6144, Test RMSE: 3.6995, Test MAPE: 0.0364 -2022-02-08 00:06:35,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6741, Test RMSE: 3.8624, Test MAPE: 0.0385 -2022-02-08 00:06:35,004 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7234, Test RMSE: 3.9886, Test MAPE: 0.0402 -2022-02-08 00:06:35,005 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7639, Test RMSE: 4.0912, Test MAPE: 0.0417 -2022-02-08 00:06:35,006 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7994, Test RMSE: 4.1804, Test MAPE: 0.0430 -2022-02-08 00:06:35,007 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8281, Test RMSE: 4.2571, Test MAPE: 0.0440 -2022-02-08 00:06:35,008 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8581, Test RMSE: 4.3295, Test MAPE: 0.0449 -2022-02-08 00:06:35,008 - easytorch-training - INFO - test:: [test_time: -198.23 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 00:06:36,416 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_010.pt saved -2022-02-08 00:06:36,420 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:02 -2022-02-08 00:06:36,420 - easytorch-training - INFO - epoch 11 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 00:17:19,028 - easytorch-training - INFO - train:: [train_loss: 1.5509, train_MAPE: 0.0330, train_RMSE: 3.3722, train_time: 642.61 (s), lr: 5.00e-04] -2022-02-08 00:18:59,957 - easytorch-training - INFO - val:: [val_time: 100.92 (s), val_loss: 1.5962, val_MAPE: 0.0368, val_RMSE: 3.2960] -2022-02-08 00:22:19,592 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8544, Test RMSE: 1.6392, Test MAPE: 0.0163 -2022-02-08 00:22:19,600 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1209, Test RMSE: 2.3140, Test MAPE: 0.0224 -2022-02-08 00:22:19,601 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3017, Test RMSE: 2.8237, Test MAPE: 0.0270 -2022-02-08 00:22:19,602 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4332, Test RMSE: 3.2033, Test MAPE: 0.0308 -2022-02-08 00:22:19,603 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5328, Test RMSE: 3.4868, Test MAPE: 0.0338 -2022-02-08 00:22:19,604 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6068, Test RMSE: 3.7035, Test MAPE: 0.0361 -2022-02-08 00:22:19,606 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6667, Test RMSE: 3.8664, Test MAPE: 0.0381 -2022-02-08 00:22:19,607 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7174, Test RMSE: 3.9969, Test MAPE: 0.0398 -2022-02-08 00:22:19,608 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7578, Test RMSE: 4.0924, Test MAPE: 0.0412 -2022-02-08 00:22:19,609 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7917, Test RMSE: 4.1734, Test MAPE: 0.0424 -2022-02-08 00:22:19,610 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8263, Test RMSE: 4.2461, Test MAPE: 0.0436 -2022-02-08 00:22:19,611 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8587, Test RMSE: 4.3135, Test MAPE: 0.0447 -2022-02-08 00:22:19,611 - easytorch-training - INFO - test:: [test_time: -199.65 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 00:22:20,970 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_011.pt saved -2022-02-08 00:22:20,970 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:46 -2022-02-08 00:22:20,970 - easytorch-training - INFO - epoch 12 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:46<00:00, 1.13s/it] -2022-02-08 00:33:07,748 - easytorch-training - INFO - train:: [train_loss: 1.5264, train_MAPE: 0.0327, train_RMSE: 3.3422, train_time: 646.78 (s), lr: 5.00e-04] -2022-02-08 00:34:50,235 - easytorch-training - INFO - val:: [val_time: 102.48 (s), val_loss: 1.5986, val_MAPE: 0.0369, val_RMSE: 3.3096] -2022-02-08 00:38:09,001 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8625, Test RMSE: 1.6518, Test MAPE: 0.0167 -2022-02-08 00:38:09,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1247, Test RMSE: 2.3185, Test MAPE: 0.0227 -2022-02-08 00:38:09,004 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3044, Test RMSE: 2.8284, Test MAPE: 0.0273 -2022-02-08 00:38:09,005 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4369, Test RMSE: 3.2122, Test MAPE: 0.0310 -2022-02-08 00:38:09,006 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5328, Test RMSE: 3.4950, Test MAPE: 0.0340 -2022-02-08 00:38:09,007 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6047, Test RMSE: 3.7052, Test MAPE: 0.0361 -2022-02-08 00:38:09,008 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6635, Test RMSE: 3.8666, Test MAPE: 0.0380 -2022-02-08 00:38:09,009 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7124, Test RMSE: 3.9899, Test MAPE: 0.0396 -2022-02-08 00:38:09,010 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7529, Test RMSE: 4.0903, Test MAPE: 0.0409 -2022-02-08 00:38:09,012 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7885, Test RMSE: 4.1764, Test MAPE: 0.0421 -2022-02-08 00:38:09,013 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8193, Test RMSE: 4.2517, Test MAPE: 0.0430 -2022-02-08 00:38:09,014 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8501, Test RMSE: 4.3229, Test MAPE: 0.0438 -2022-02-08 00:38:09,014 - easytorch-training - INFO - test:: [test_time: -198.77 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 00:38:11,053 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_012.pt saved -2022-02-08 00:38:11,053 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:19 -2022-02-08 00:38:11,054 - easytorch-training - INFO - epoch 13 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:38<00:00, 1.12s/it] -2022-02-08 00:48:50,026 - easytorch-training - INFO - train:: [train_loss: 1.5388, train_MAPE: 0.0331, train_RMSE: 3.3645, train_time: 638.97 (s), lr: 5.00e-04] -2022-02-08 00:50:33,607 - easytorch-training - INFO - val:: [val_time: 103.58 (s), val_loss: 1.5882, val_MAPE: 0.0369, val_RMSE: 3.2909] -2022-02-08 00:53:52,072 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8519, Test RMSE: 1.6383, Test MAPE: 0.0164 -2022-02-08 00:53:52,074 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1188, Test RMSE: 2.3087, Test MAPE: 0.0225 -2022-02-08 00:53:52,075 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3005, Test RMSE: 2.8237, Test MAPE: 0.0272 -2022-02-08 00:53:52,076 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4316, Test RMSE: 3.2082, Test MAPE: 0.0311 -2022-02-08 00:53:52,077 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5279, Test RMSE: 3.4911, Test MAPE: 0.0341 -2022-02-08 00:53:52,078 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6033, Test RMSE: 3.7022, Test MAPE: 0.0366 -2022-02-08 00:53:52,079 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6600, Test RMSE: 3.8603, Test MAPE: 0.0384 -2022-02-08 00:53:52,080 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7052, Test RMSE: 3.9807, Test MAPE: 0.0398 -2022-02-08 00:53:52,081 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7435, Test RMSE: 4.0716, Test MAPE: 0.0411 -2022-02-08 00:53:52,082 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7746, Test RMSE: 4.1453, Test MAPE: 0.0420 -2022-02-08 00:53:52,083 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8034, Test RMSE: 4.2080, Test MAPE: 0.0429 -2022-02-08 00:53:52,084 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8332, Test RMSE: 4.2688, Test MAPE: 0.0438 -2022-02-08 00:53:52,085 - easytorch-training - INFO - test:: [test_time: -198.47 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 00:53:54,055 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_013.pt saved -2022-02-08 00:53:54,055 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:52 -2022-02-08 00:53:54,055 - easytorch-training - INFO - epoch 14 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 01:04:37,755 - easytorch-training - INFO - train:: [train_loss: 1.5309, train_MAPE: 0.0329, train_RMSE: 3.3531, train_time: 643.70 (s), lr: 5.00e-04] -2022-02-08 01:06:19,032 - easytorch-training - INFO - val:: [val_time: 101.27 (s), val_loss: 1.6026, val_MAPE: 0.0369, val_RMSE: 3.2670] -2022-02-08 01:09:38,700 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8681, Test RMSE: 1.6460, Test MAPE: 0.0170 -2022-02-08 01:09:38,702 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1350, Test RMSE: 2.3096, Test MAPE: 0.0233 -2022-02-08 01:09:38,703 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3142, Test RMSE: 2.8099, Test MAPE: 0.0278 -2022-02-08 01:09:38,704 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4394, Test RMSE: 3.1801, Test MAPE: 0.0312 -2022-02-08 01:09:38,705 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5344, Test RMSE: 3.4507, Test MAPE: 0.0341 -2022-02-08 01:09:38,706 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6092, Test RMSE: 3.6503, Test MAPE: 0.0362 -2022-02-08 01:09:38,707 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6646, Test RMSE: 3.8053, Test MAPE: 0.0380 -2022-02-08 01:09:38,708 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7128, Test RMSE: 3.9276, Test MAPE: 0.0395 -2022-02-08 01:09:38,709 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7550, Test RMSE: 4.0227, Test MAPE: 0.0405 -2022-02-08 01:09:38,710 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7903, Test RMSE: 4.1055, Test MAPE: 0.0414 -2022-02-08 01:09:38,711 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8178, Test RMSE: 4.1825, Test MAPE: 0.0421 -2022-02-08 01:09:38,713 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8499, Test RMSE: 4.2580, Test MAPE: 0.0429 -2022-02-08 01:09:38,713 - easytorch-training - INFO - test:: [test_time: -199.68 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 01:09:40,801 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_014.pt saved -2022-02-08 01:09:40,802 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:56 -2022-02-08 01:09:40,802 - easytorch-training - INFO - epoch 15 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:37<00:00, 1.12s/it] -2022-02-08 01:20:18,763 - easytorch-training - INFO - train:: [train_loss: 1.5165, train_MAPE: 0.0324, train_RMSE: 3.3061, train_time: 637.96 (s), lr: 5.00e-04] -2022-02-08 01:21:59,406 - easytorch-training - INFO - val:: [val_time: 100.64 (s), val_loss: 1.5849, val_MAPE: 0.0359, val_RMSE: 3.2666] -2022-02-08 01:25:18,421 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8678, Test RMSE: 1.6627, Test MAPE: 0.0167 -2022-02-08 01:25:18,429 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1285, Test RMSE: 2.3227, Test MAPE: 0.0226 -2022-02-08 01:25:18,430 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3079, Test RMSE: 2.8282, Test MAPE: 0.0269 -2022-02-08 01:25:18,431 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4355, Test RMSE: 3.2034, Test MAPE: 0.0304 -2022-02-08 01:25:18,432 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5322, Test RMSE: 3.4765, Test MAPE: 0.0331 -2022-02-08 01:25:18,433 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6045, Test RMSE: 3.6770, Test MAPE: 0.0353 -2022-02-08 01:25:18,434 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6580, Test RMSE: 3.8295, Test MAPE: 0.0371 -2022-02-08 01:25:18,435 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7034, Test RMSE: 3.9499, Test MAPE: 0.0385 -2022-02-08 01:25:18,437 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7431, Test RMSE: 4.0423, Test MAPE: 0.0397 -2022-02-08 01:25:18,438 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7754, Test RMSE: 4.1182, Test MAPE: 0.0408 -2022-02-08 01:25:18,439 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8059, Test RMSE: 4.1855, Test MAPE: 0.0418 -2022-02-08 01:25:18,440 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8364, Test RMSE: 4.2553, Test MAPE: 0.0426 -2022-02-08 01:25:18,440 - easytorch-training - INFO - test:: [test_time: -199.03 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 01:25:19,828 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_015.pt saved -2022-02-08 01:25:19,828 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:08 -2022-02-08 01:25:19,828 - easytorch-training - INFO - epoch 16 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 01:36:02,859 - easytorch-training - INFO - train:: [train_loss: 1.5109, train_MAPE: 0.0323, train_RMSE: 3.3008, train_time: 643.03 (s), lr: 5.00e-04] -2022-02-08 01:37:43,879 - easytorch-training - INFO - val:: [val_time: 101.01 (s), val_loss: 1.5957, val_MAPE: 0.0360, val_RMSE: 3.2784] -2022-02-08 01:41:05,960 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8581, Test RMSE: 1.6479, Test MAPE: 0.0164 -2022-02-08 01:41:05,961 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1228, Test RMSE: 2.3211, Test MAPE: 0.0224 -2022-02-08 01:41:05,962 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3042, Test RMSE: 2.8333, Test MAPE: 0.0269 -2022-02-08 01:41:05,964 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4338, Test RMSE: 3.2054, Test MAPE: 0.0304 -2022-02-08 01:41:05,965 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5265, Test RMSE: 3.4750, Test MAPE: 0.0331 -2022-02-08 01:41:05,966 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6003, Test RMSE: 3.6750, Test MAPE: 0.0353 -2022-02-08 01:41:05,967 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6630, Test RMSE: 3.8339, Test MAPE: 0.0372 -2022-02-08 01:41:05,968 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.7145, Test RMSE: 3.9564, Test MAPE: 0.0387 -2022-02-08 01:41:05,969 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7584, Test RMSE: 4.0552, Test MAPE: 0.0401 -2022-02-08 01:41:05,970 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7959, Test RMSE: 4.1428, Test MAPE: 0.0413 -2022-02-08 01:41:05,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8299, Test RMSE: 4.2218, Test MAPE: 0.0423 -2022-02-08 01:41:05,972 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8642, Test RMSE: 4.3041, Test MAPE: 0.0432 -2022-02-08 01:41:05,972 - easytorch-training - INFO - test:: [test_time: -202.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 01:41:07,734 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_016.pt saved -2022-02-08 01:41:07,734 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:22 -2022-02-08 01:41:07,734 - easytorch-training - INFO - epoch 17 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 01:51:49,950 - easytorch-training - INFO - train:: [train_loss: 1.5104, train_MAPE: 0.0322, train_RMSE: 3.2961, train_time: 642.22 (s), lr: 5.00e-04] -2022-02-08 01:53:30,516 - easytorch-training - INFO - val:: [val_time: 100.56 (s), val_loss: 1.5858, val_MAPE: 0.0357, val_RMSE: 3.2853] -2022-02-08 01:56:50,478 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8697, Test RMSE: 1.6753, Test MAPE: 0.0169 -2022-02-08 01:56:50,486 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1301, Test RMSE: 2.3412, Test MAPE: 0.0226 -2022-02-08 01:56:50,487 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.3076, Test RMSE: 2.8473, Test MAPE: 0.0269 -2022-02-08 01:56:50,488 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4331, Test RMSE: 3.2162, Test MAPE: 0.0302 -2022-02-08 01:56:50,489 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5281, Test RMSE: 3.4878, Test MAPE: 0.0329 -2022-02-08 01:56:50,490 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.6003, Test RMSE: 3.6878, Test MAPE: 0.0350 -2022-02-08 01:56:50,491 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6552, Test RMSE: 3.8384, Test MAPE: 0.0368 -2022-02-08 01:56:50,492 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6990, Test RMSE: 3.9566, Test MAPE: 0.0382 -2022-02-08 01:56:50,494 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7391, Test RMSE: 4.0542, Test MAPE: 0.0395 -2022-02-08 01:56:50,495 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7724, Test RMSE: 4.1348, Test MAPE: 0.0406 -2022-02-08 01:56:50,496 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8028, Test RMSE: 4.2042, Test MAPE: 0.0415 -2022-02-08 01:56:50,497 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8342, Test RMSE: 4.2773, Test MAPE: 0.0424 -2022-02-08 01:56:50,497 - easytorch-training - INFO - test:: [test_time: -199.98 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 01:56:51,872 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_017.pt saved -2022-02-08 01:56:51,872 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:11 -2022-02-08 01:56:51,872 - easytorch-training - INFO - epoch 18 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:36<00:00, 1.12s/it] -2022-02-08 02:07:28,107 - easytorch-training - INFO - train:: [train_loss: 1.5027, train_MAPE: 0.0323, train_RMSE: 3.3003, train_time: 636.23 (s), lr: 5.00e-04] -2022-02-08 02:09:19,476 - easytorch-training - INFO - val:: [val_time: 111.36 (s), val_loss: 1.5778, val_MAPE: 0.0367, val_RMSE: 3.2672] -2022-02-08 02:12:38,577 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8545, Test RMSE: 1.6415, Test MAPE: 0.0165 -2022-02-08 02:12:38,579 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1173, Test RMSE: 2.3060, Test MAPE: 0.0226 -2022-02-08 02:12:38,580 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2956, Test RMSE: 2.8175, Test MAPE: 0.0272 -2022-02-08 02:12:38,582 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4259, Test RMSE: 3.1966, Test MAPE: 0.0309 -2022-02-08 02:12:38,583 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5218, Test RMSE: 3.4750, Test MAPE: 0.0339 -2022-02-08 02:12:38,584 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5940, Test RMSE: 3.6792, Test MAPE: 0.0362 -2022-02-08 02:12:38,585 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6517, Test RMSE: 3.8352, Test MAPE: 0.0381 -2022-02-08 02:12:38,586 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6986, Test RMSE: 3.9583, Test MAPE: 0.0397 -2022-02-08 02:12:38,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7357, Test RMSE: 4.0530, Test MAPE: 0.0410 -2022-02-08 02:12:38,588 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7692, Test RMSE: 4.1344, Test MAPE: 0.0420 -2022-02-08 02:12:38,589 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8028, Test RMSE: 4.2094, Test MAPE: 0.0432 -2022-02-08 02:12:38,590 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8344, Test RMSE: 4.2795, Test MAPE: 0.0441 -2022-02-08 02:12:38,590 - easytorch-training - INFO - test:: [test_time: -199.11 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 02:12:40,003 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_018.pt saved -2022-02-08 02:12:40,003 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:24 -2022-02-08 02:12:40,003 - easytorch-training - INFO - epoch 19 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:38<00:00, 1.12s/it] -2022-02-08 02:23:18,488 - easytorch-training - INFO - train:: [train_loss: 1.5046, train_MAPE: 0.0323, train_RMSE: 3.2963, train_time: 638.48 (s), lr: 2.50e-04] -2022-02-08 02:25:01,837 - easytorch-training - INFO - val:: [val_time: 103.34 (s), val_loss: 1.5675, val_MAPE: 0.0363, val_RMSE: 3.2544] -2022-02-08 02:28:22,033 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8504, Test RMSE: 1.6344, Test MAPE: 0.0164 -2022-02-08 02:28:22,034 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1150, Test RMSE: 2.2956, Test MAPE: 0.0226 -2022-02-08 02:28:22,035 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2945, Test RMSE: 2.8025, Test MAPE: 0.0273 -2022-02-08 02:28:22,036 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4242, Test RMSE: 3.1819, Test MAPE: 0.0311 -2022-02-08 02:28:22,037 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5193, Test RMSE: 3.4639, Test MAPE: 0.0340 -2022-02-08 02:28:22,038 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5894, Test RMSE: 3.6668, Test MAPE: 0.0362 -2022-02-08 02:28:22,039 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6447, Test RMSE: 3.8223, Test MAPE: 0.0379 -2022-02-08 02:28:22,041 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6885, Test RMSE: 3.9399, Test MAPE: 0.0393 -2022-02-08 02:28:22,042 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7268, Test RMSE: 4.0341, Test MAPE: 0.0406 -2022-02-08 02:28:22,043 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7587, Test RMSE: 4.1121, Test MAPE: 0.0415 -2022-02-08 02:28:22,044 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7875, Test RMSE: 4.1793, Test MAPE: 0.0424 -2022-02-08 02:28:22,045 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8154, Test RMSE: 4.2408, Test MAPE: 0.0431 -2022-02-08 02:28:22,045 - easytorch-training - INFO - test:: [test_time: -200.20 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 02:28:23,462 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_019.pt saved -2022-02-08 02:28:23,462 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:12 -2022-02-08 02:28:23,462 - easytorch-training - INFO - epoch 20 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 02:39:06,128 - easytorch-training - INFO - train:: [train_loss: 1.4924, train_MAPE: 0.0320, train_RMSE: 3.2694, train_time: 642.67 (s), lr: 2.50e-04] -2022-02-08 02:40:47,194 - easytorch-training - INFO - val:: [val_time: 101.06 (s), val_loss: 1.5676, val_MAPE: 0.0354, val_RMSE: 3.2410] -2022-02-08 02:44:14,655 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8534, Test RMSE: 1.6401, Test MAPE: 0.0163 -2022-02-08 02:44:14,663 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1157, Test RMSE: 2.2992, Test MAPE: 0.0222 -2022-02-08 02:44:14,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2948, Test RMSE: 2.8055, Test MAPE: 0.0267 -2022-02-08 02:44:14,665 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4220, Test RMSE: 3.1799, Test MAPE: 0.0302 -2022-02-08 02:44:14,666 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5172, Test RMSE: 3.4561, Test MAPE: 0.0330 -2022-02-08 02:44:14,667 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5886, Test RMSE: 3.6559, Test MAPE: 0.0352 -2022-02-08 02:44:14,668 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6458, Test RMSE: 3.8108, Test MAPE: 0.0369 -2022-02-08 02:44:14,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6922, Test RMSE: 3.9357, Test MAPE: 0.0384 -2022-02-08 02:44:14,670 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7304, Test RMSE: 4.0320, Test MAPE: 0.0396 -2022-02-08 02:44:14,672 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7675, Test RMSE: 4.1192, Test MAPE: 0.0407 -2022-02-08 02:44:14,673 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7986, Test RMSE: 4.1929, Test MAPE: 0.0416 -2022-02-08 02:44:14,674 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8265, Test RMSE: 4.2606, Test MAPE: 0.0424 -2022-02-08 02:44:14,674 - easytorch-training - INFO - test:: [test_time: -207.47 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 02:44:16,185 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_020.pt saved -2022-02-08 02:44:16,188 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:46 -2022-02-08 02:44:16,189 - easytorch-training - INFO - epoch 21 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:37<00:00, 1.12s/it] -2022-02-08 02:54:54,133 - easytorch-training - INFO - train:: [train_loss: 1.4898, train_MAPE: 0.0319, train_RMSE: 3.2684, train_time: 637.94 (s), lr: 2.50e-04] -2022-02-08 02:56:40,977 - easytorch-training - INFO - val:: [val_time: 106.84 (s), val_loss: 1.5611, val_MAPE: 0.0356, val_RMSE: 3.2395] -2022-02-08 03:00:01,529 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8500, Test RMSE: 1.6380, Test MAPE: 0.0162 -2022-02-08 03:00:01,537 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1126, Test RMSE: 2.2964, Test MAPE: 0.0222 -2022-02-08 03:00:01,538 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2904, Test RMSE: 2.8000, Test MAPE: 0.0267 -2022-02-08 03:00:01,539 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4172, Test RMSE: 3.1735, Test MAPE: 0.0303 -2022-02-08 03:00:01,540 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5108, Test RMSE: 3.4489, Test MAPE: 0.0331 -2022-02-08 03:00:01,541 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5808, Test RMSE: 3.6495, Test MAPE: 0.0354 -2022-02-08 03:00:01,542 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6365, Test RMSE: 3.8055, Test MAPE: 0.0372 -2022-02-08 03:00:01,543 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6806, Test RMSE: 3.9223, Test MAPE: 0.0386 -2022-02-08 03:00:01,544 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7179, Test RMSE: 4.0151, Test MAPE: 0.0399 -2022-02-08 03:00:01,546 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7513, Test RMSE: 4.0920, Test MAPE: 0.0409 -2022-02-08 03:00:01,547 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7807, Test RMSE: 4.1622, Test MAPE: 0.0418 -2022-02-08 03:00:01,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8091, Test RMSE: 4.2270, Test MAPE: 0.0425 -2022-02-08 03:00:01,548 - easytorch-training - INFO - test:: [test_time: -200.56 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 03:00:03,539 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_021.pt saved -2022-02-08 03:00:03,540 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:52 -2022-02-08 03:00:03,540 - easytorch-training - INFO - epoch 22 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:37<00:00, 1.12s/it] -2022-02-08 03:10:40,551 - easytorch-training - INFO - train:: [train_loss: 1.4886, train_MAPE: 0.0319, train_RMSE: 3.2579, train_time: 637.01 (s), lr: 2.50e-04] -2022-02-08 03:12:21,923 - easytorch-training - INFO - val:: [val_time: 101.37 (s), val_loss: 1.5586, val_MAPE: 0.0354, val_RMSE: 3.2237] -2022-02-08 03:15:41,105 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8496, Test RMSE: 1.6344, Test MAPE: 0.0161 -2022-02-08 03:15:41,106 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1137, Test RMSE: 2.2947, Test MAPE: 0.0222 -2022-02-08 03:15:41,107 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2901, Test RMSE: 2.7946, Test MAPE: 0.0266 -2022-02-08 03:15:41,108 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4179, Test RMSE: 3.1674, Test MAPE: 0.0301 -2022-02-08 03:15:41,109 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5107, Test RMSE: 3.4420, Test MAPE: 0.0329 -2022-02-08 03:15:41,110 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5825, Test RMSE: 3.6443, Test MAPE: 0.0351 -2022-02-08 03:15:41,112 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6388, Test RMSE: 3.7967, Test MAPE: 0.0368 -2022-02-08 03:15:41,113 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6840, Test RMSE: 3.9155, Test MAPE: 0.0383 -2022-02-08 03:15:41,114 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7222, Test RMSE: 4.0086, Test MAPE: 0.0396 -2022-02-08 03:15:41,115 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7552, Test RMSE: 4.0906, Test MAPE: 0.0406 -2022-02-08 03:15:41,116 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7839, Test RMSE: 4.1661, Test MAPE: 0.0416 -2022-02-08 03:15:41,117 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8129, Test RMSE: 4.2394, Test MAPE: 0.0424 -2022-02-08 03:15:41,117 - easytorch-training - INFO - test:: [test_time: -199.19 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 03:15:43,071 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_022.pt saved -2022-02-08 03:15:43,072 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:22 -2022-02-08 03:15:43,072 - easytorch-training - INFO - epoch 23 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 03:26:26,600 - easytorch-training - INFO - train:: [train_loss: 1.4798, train_MAPE: 0.0316, train_RMSE: 3.2386, train_time: 643.53 (s), lr: 2.50e-04] -2022-02-08 03:28:07,654 - easytorch-training - INFO - val:: [val_time: 101.05 (s), val_loss: 1.5660, val_MAPE: 0.0362, val_RMSE: 3.2254] -2022-02-08 03:31:25,853 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8578, Test RMSE: 1.6404, Test MAPE: 0.0168 -2022-02-08 03:31:25,861 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1204, Test RMSE: 2.2910, Test MAPE: 0.0229 -2022-02-08 03:31:25,863 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2992, Test RMSE: 2.7925, Test MAPE: 0.0276 -2022-02-08 03:31:25,864 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4252, Test RMSE: 3.1649, Test MAPE: 0.0311 -2022-02-08 03:31:25,865 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5205, Test RMSE: 3.4404, Test MAPE: 0.0339 -2022-02-08 03:31:25,866 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5936, Test RMSE: 3.6467, Test MAPE: 0.0362 -2022-02-08 03:31:25,867 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6505, Test RMSE: 3.8036, Test MAPE: 0.0380 -2022-02-08 03:31:25,868 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6952, Test RMSE: 3.9209, Test MAPE: 0.0393 -2022-02-08 03:31:25,869 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7329, Test RMSE: 4.0160, Test MAPE: 0.0405 -2022-02-08 03:31:25,870 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7642, Test RMSE: 4.0926, Test MAPE: 0.0414 -2022-02-08 03:31:25,871 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7937, Test RMSE: 4.1589, Test MAPE: 0.0422 -2022-02-08 03:31:25,872 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8217, Test RMSE: 4.2245, Test MAPE: 0.0430 -2022-02-08 03:31:25,872 - easytorch-training - INFO - test:: [test_time: -198.21 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 03:31:27,788 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_023.pt saved -2022-02-08 03:31:27,789 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:17 -2022-02-08 03:31:27,789 - easytorch-training - INFO - epoch 24 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 03:42:10,158 - easytorch-training - INFO - train:: [train_loss: 1.4760, train_MAPE: 0.0316, train_RMSE: 3.2378, train_time: 642.37 (s), lr: 2.50e-04] -2022-02-08 03:43:55,348 - easytorch-training - INFO - val:: [val_time: 105.18 (s), val_loss: 1.5563, val_MAPE: 0.0355, val_RMSE: 3.2212] -2022-02-08 03:47:15,924 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8504, Test RMSE: 1.6293, Test MAPE: 0.0163 -2022-02-08 03:47:15,932 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1118, Test RMSE: 2.2865, Test MAPE: 0.0224 -2022-02-08 03:47:15,933 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2878, Test RMSE: 2.7883, Test MAPE: 0.0269 -2022-02-08 03:47:15,934 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4147, Test RMSE: 3.1596, Test MAPE: 0.0303 -2022-02-08 03:47:15,935 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5073, Test RMSE: 3.4307, Test MAPE: 0.0330 -2022-02-08 03:47:15,937 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5790, Test RMSE: 3.6302, Test MAPE: 0.0352 -2022-02-08 03:47:15,938 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6350, Test RMSE: 3.7825, Test MAPE: 0.0370 -2022-02-08 03:47:15,939 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6802, Test RMSE: 3.9035, Test MAPE: 0.0384 -2022-02-08 03:47:15,940 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7175, Test RMSE: 4.0015, Test MAPE: 0.0396 -2022-02-08 03:47:15,941 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7507, Test RMSE: 4.0862, Test MAPE: 0.0407 -2022-02-08 03:47:15,942 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7807, Test RMSE: 4.1597, Test MAPE: 0.0416 -2022-02-08 03:47:15,943 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8094, Test RMSE: 4.2321, Test MAPE: 0.0425 -2022-02-08 03:47:15,943 - easytorch-training - INFO - test:: [test_time: -200.58 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 03:47:17,958 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_024.pt saved -2022-02-08 03:47:17,958 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:35 -2022-02-08 03:47:17,958 - easytorch-training - INFO - epoch 25 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:45<00:00, 1.13s/it] -2022-02-08 03:58:03,359 - easytorch-training - INFO - train:: [train_loss: 1.4759, train_MAPE: 0.0317, train_RMSE: 3.2431, train_time: 645.40 (s), lr: 2.50e-04] -2022-02-08 03:59:49,607 - easytorch-training - INFO - val:: [val_time: 106.24 (s), val_loss: 1.5586, val_MAPE: 0.0350, val_RMSE: 3.2327] -2022-02-08 04:03:10,895 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8479, Test RMSE: 1.6321, Test MAPE: 0.0162 -2022-02-08 04:03:10,897 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1102, Test RMSE: 2.2934, Test MAPE: 0.0222 -2022-02-08 04:03:10,898 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2875, Test RMSE: 2.7952, Test MAPE: 0.0266 -2022-02-08 04:03:10,899 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4147, Test RMSE: 3.1684, Test MAPE: 0.0301 -2022-02-08 04:03:10,900 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5088, Test RMSE: 3.4442, Test MAPE: 0.0327 -2022-02-08 04:03:10,901 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5804, Test RMSE: 3.6474, Test MAPE: 0.0348 -2022-02-08 04:03:10,902 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6384, Test RMSE: 3.8056, Test MAPE: 0.0365 -2022-02-08 04:03:10,903 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6863, Test RMSE: 3.9321, Test MAPE: 0.0378 -2022-02-08 04:03:10,904 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7285, Test RMSE: 4.0355, Test MAPE: 0.0390 -2022-02-08 04:03:10,905 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7642, Test RMSE: 4.1217, Test MAPE: 0.0400 -2022-02-08 04:03:10,907 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7962, Test RMSE: 4.1999, Test MAPE: 0.0409 -2022-02-08 04:03:10,908 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8287, Test RMSE: 4.2801, Test MAPE: 0.0417 -2022-02-08 04:03:10,908 - easytorch-training - INFO - test:: [test_time: -201.30 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 04:03:12,347 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_025.pt saved -2022-02-08 04:03:12,347 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:08 -2022-02-08 04:03:12,347 - easytorch-training - INFO - epoch 26 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:47<00:00, 1.14s/it] -2022-02-08 04:14:00,024 - easytorch-training - INFO - train:: [train_loss: 1.4754, train_MAPE: 0.0316, train_RMSE: 3.2344, train_time: 647.68 (s), lr: 2.50e-04] -2022-02-08 04:15:42,114 - easytorch-training - INFO - val:: [val_time: 102.09 (s), val_loss: 1.5508, val_MAPE: 0.0352, val_RMSE: 3.2267] -2022-02-08 04:19:03,170 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8465, Test RMSE: 1.6329, Test MAPE: 0.0161 -2022-02-08 04:19:03,171 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1087, Test RMSE: 2.2901, Test MAPE: 0.0221 -2022-02-08 04:19:03,172 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2838, Test RMSE: 2.7841, Test MAPE: 0.0266 -2022-02-08 04:19:03,173 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4090, Test RMSE: 3.1499, Test MAPE: 0.0301 -2022-02-08 04:19:03,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5014, Test RMSE: 3.4233, Test MAPE: 0.0329 -2022-02-08 04:19:03,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5712, Test RMSE: 3.6295, Test MAPE: 0.0351 -2022-02-08 04:19:03,176 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6265, Test RMSE: 3.7862, Test MAPE: 0.0368 -2022-02-08 04:19:03,177 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6709, Test RMSE: 3.9067, Test MAPE: 0.0382 -2022-02-08 04:19:03,178 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7087, Test RMSE: 4.0014, Test MAPE: 0.0394 -2022-02-08 04:19:03,180 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7409, Test RMSE: 4.0789, Test MAPE: 0.0404 -2022-02-08 04:19:03,181 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7702, Test RMSE: 4.1505, Test MAPE: 0.0414 -2022-02-08 04:19:03,182 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7994, Test RMSE: 4.2201, Test MAPE: 0.0422 -2022-02-08 04:19:03,182 - easytorch-training - INFO - test:: [test_time: -201.06 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 04:19:05,165 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_026.pt saved -2022-02-08 04:19:05,165 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:33 -2022-02-08 04:19:05,165 - easytorch-training - INFO - epoch 27 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:44<00:00, 1.13s/it] -2022-02-08 04:29:49,985 - easytorch-training - INFO - train:: [train_loss: 1.4707, train_MAPE: 0.0314, train_RMSE: 3.2255, train_time: 644.82 (s), lr: 2.50e-04] -2022-02-08 04:31:31,618 - easytorch-training - INFO - val:: [val_time: 101.63 (s), val_loss: 1.5645, val_MAPE: 0.0364, val_RMSE: 3.2554] -2022-02-08 04:34:50,134 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8475, Test RMSE: 1.6330, Test MAPE: 0.0162 -2022-02-08 04:34:50,135 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1115, Test RMSE: 2.2932, Test MAPE: 0.0224 -2022-02-08 04:34:50,136 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2892, Test RMSE: 2.7956, Test MAPE: 0.0269 -2022-02-08 04:34:50,138 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4187, Test RMSE: 3.1707, Test MAPE: 0.0307 -2022-02-08 04:34:50,139 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5144, Test RMSE: 3.4473, Test MAPE: 0.0338 -2022-02-08 04:34:50,140 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5888, Test RMSE: 3.6582, Test MAPE: 0.0362 -2022-02-08 04:34:50,141 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6463, Test RMSE: 3.8184, Test MAPE: 0.0381 -2022-02-08 04:34:50,142 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6911, Test RMSE: 3.9395, Test MAPE: 0.0396 -2022-02-08 04:34:50,143 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7294, Test RMSE: 4.0376, Test MAPE: 0.0409 -2022-02-08 04:34:50,144 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7619, Test RMSE: 4.1193, Test MAPE: 0.0420 -2022-02-08 04:34:50,145 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7896, Test RMSE: 4.1895, Test MAPE: 0.0429 -2022-02-08 04:34:50,146 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8193, Test RMSE: 4.2600, Test MAPE: 0.0438 -2022-02-08 04:34:50,146 - easytorch-training - INFO - test:: [test_time: -198.52 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 04:34:52,254 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_027.pt saved -2022-02-08 04:34:52,254 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:35 -2022-02-08 04:34:52,254 - easytorch-training - INFO - epoch 28 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:39<00:00, 1.12s/it] -2022-02-08 04:45:31,681 - easytorch-training - INFO - train:: [train_loss: 1.4728, train_MAPE: 0.0317, train_RMSE: 3.2321, train_time: 639.43 (s), lr: 2.50e-04] -2022-02-08 04:47:14,213 - easytorch-training - INFO - val:: [val_time: 102.53 (s), val_loss: 1.5677, val_MAPE: 0.0348, val_RMSE: 3.2480] -2022-02-08 04:50:33,356 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8523, Test RMSE: 1.6423, Test MAPE: 0.0162 -2022-02-08 04:50:33,357 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1126, Test RMSE: 2.3016, Test MAPE: 0.0221 -2022-02-08 04:50:33,358 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2878, Test RMSE: 2.8027, Test MAPE: 0.0264 -2022-02-08 04:50:33,360 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4139, Test RMSE: 3.1719, Test MAPE: 0.0297 -2022-02-08 04:50:33,361 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5086, Test RMSE: 3.4470, Test MAPE: 0.0324 -2022-02-08 04:50:33,362 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5835, Test RMSE: 3.6577, Test MAPE: 0.0345 -2022-02-08 04:50:33,363 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6427, Test RMSE: 3.8163, Test MAPE: 0.0362 -2022-02-08 04:50:33,364 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6924, Test RMSE: 3.9441, Test MAPE: 0.0376 -2022-02-08 04:50:33,365 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7364, Test RMSE: 4.0498, Test MAPE: 0.0388 -2022-02-08 04:50:33,366 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7730, Test RMSE: 4.1378, Test MAPE: 0.0399 -2022-02-08 04:50:33,367 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8030, Test RMSE: 4.2132, Test MAPE: 0.0407 -2022-02-08 04:50:33,368 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8366, Test RMSE: 4.2938, Test MAPE: 0.0416 -2022-02-08 04:50:33,368 - easytorch-training - INFO - test:: [test_time: -199.15 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 04:50:34,747 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_028.pt saved -2022-02-08 04:50:34,748 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:20 -2022-02-08 04:50:34,748 - easytorch-training - INFO - epoch 29 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 05:01:15,641 - easytorch-training - INFO - train:: [train_loss: 1.4697, train_MAPE: 0.0315, train_RMSE: 3.2217, train_time: 640.89 (s), lr: 2.50e-04] -2022-02-08 05:02:56,777 - easytorch-training - INFO - val:: [val_time: 101.13 (s), val_loss: 1.5585, val_MAPE: 0.0353, val_RMSE: 3.2319] -2022-02-08 05:06:16,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8521, Test RMSE: 1.6416, Test MAPE: 0.0163 -2022-02-08 05:06:16,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1147, Test RMSE: 2.2970, Test MAPE: 0.0222 -2022-02-08 05:06:16,408 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2902, Test RMSE: 2.7948, Test MAPE: 0.0266 -2022-02-08 05:06:16,409 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4185, Test RMSE: 3.1688, Test MAPE: 0.0301 -2022-02-08 05:06:16,410 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5109, Test RMSE: 3.4422, Test MAPE: 0.0329 -2022-02-08 05:06:16,411 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5825, Test RMSE: 3.6458, Test MAPE: 0.0350 -2022-02-08 05:06:16,412 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6384, Test RMSE: 3.8035, Test MAPE: 0.0368 -2022-02-08 05:06:16,414 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6838, Test RMSE: 3.9245, Test MAPE: 0.0383 -2022-02-08 05:06:16,415 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7216, Test RMSE: 4.0210, Test MAPE: 0.0395 -2022-02-08 05:06:16,416 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7545, Test RMSE: 4.1030, Test MAPE: 0.0406 -2022-02-08 05:06:16,417 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7824, Test RMSE: 4.1737, Test MAPE: 0.0414 -2022-02-08 05:06:16,418 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8103, Test RMSE: 4.2417, Test MAPE: 0.0423 -2022-02-08 05:06:16,418 - easytorch-training - INFO - test:: [test_time: -199.64 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 05:06:18,393 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_029.pt saved -2022-02-08 05:06:18,394 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:10 -2022-02-08 05:06:18,394 - easytorch-training - INFO - epoch 30 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.13s/it] -2022-02-08 05:16:59,866 - easytorch-training - INFO - train:: [train_loss: 1.4679, train_MAPE: 0.0315, train_RMSE: 3.2228, train_time: 641.47 (s), lr: 2.50e-04] -2022-02-08 05:18:43,367 - easytorch-training - INFO - val:: [val_time: 103.50 (s), val_loss: 1.5567, val_MAPE: 0.0359, val_RMSE: 3.2309] -2022-02-08 05:22:03,647 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8462, Test RMSE: 1.6309, Test MAPE: 0.0161 -2022-02-08 05:22:03,649 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1090, Test RMSE: 2.2860, Test MAPE: 0.0222 -2022-02-08 05:22:03,650 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2853, Test RMSE: 2.7837, Test MAPE: 0.0267 -2022-02-08 05:22:03,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4129, Test RMSE: 3.1533, Test MAPE: 0.0303 -2022-02-08 05:22:03,652 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5058, Test RMSE: 3.4280, Test MAPE: 0.0332 -2022-02-08 05:22:03,653 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5776, Test RMSE: 3.6374, Test MAPE: 0.0356 -2022-02-08 05:22:03,654 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6344, Test RMSE: 3.7957, Test MAPE: 0.0375 -2022-02-08 05:22:03,655 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6798, Test RMSE: 3.9181, Test MAPE: 0.0390 -2022-02-08 05:22:03,656 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7187, Test RMSE: 4.0203, Test MAPE: 0.0404 -2022-02-08 05:22:03,657 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7522, Test RMSE: 4.1056, Test MAPE: 0.0415 -2022-02-08 05:22:03,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7809, Test RMSE: 4.1793, Test MAPE: 0.0425 -2022-02-08 05:22:03,659 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8081, Test RMSE: 4.2421, Test MAPE: 0.0433 -2022-02-08 05:22:03,660 - easytorch-training - INFO - test:: [test_time: -200.29 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 05:22:05,151 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_030.pt saved -2022-02-08 05:22:05,155 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:12 -2022-02-08 05:22:05,155 - easytorch-training - INFO - epoch 31 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 05:32:45,801 - easytorch-training - INFO - train:: [train_loss: 0.8588, train_MAPE: 0.0509, train_RMSE: 4.2957, train_time: 640.65 (s), lr: 2.50e-04] -2022-02-08 05:34:27,043 - easytorch-training - INFO - val:: [val_time: 101.24 (s), val_loss: 2.1969, val_MAPE: 0.0622, val_RMSE: 4.1548] -2022-02-08 05:37:44,991 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8448, Test RMSE: 1.6355, Test MAPE: 0.0162 -2022-02-08 05:37:44,993 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.2712, Test RMSE: 2.5118, Test MAPE: 0.0280 -2022-02-08 05:37:44,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.4897, Test RMSE: 3.1095, Test MAPE: 0.0346 -2022-02-08 05:37:44,995 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.7471, Test RMSE: 3.7233, Test MAPE: 0.0435 -2022-02-08 05:37:44,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.9548, Test RMSE: 4.2207, Test MAPE: 0.0513 -2022-02-08 05:37:44,997 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.0391, Test RMSE: 4.4695, Test MAPE: 0.0548 -2022-02-08 05:37:44,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.1493, Test RMSE: 4.6849, Test MAPE: 0.0581 -2022-02-08 05:37:44,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.3275, Test RMSE: 5.0610, Test MAPE: 0.0647 -2022-02-08 05:37:45,001 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.3943, Test RMSE: 5.3115, Test MAPE: 0.0681 -2022-02-08 05:37:45,002 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.5693, Test RMSE: 5.6497, Test MAPE: 0.0737 -2022-02-08 05:37:45,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.6185, Test RMSE: 5.8692, Test MAPE: 0.0763 -2022-02-08 05:37:45,004 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 2.7347, Test RMSE: 6.2563, Test MAPE: 0.0813 -2022-02-08 05:37:45,004 - easytorch-training - INFO - test:: [test_time: -197.96 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 05:37:46,392 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_031.pt saved -2022-02-08 05:37:46,392 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:55 -2022-02-08 05:37:46,393 - easytorch-training - INFO - epoch 32 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 05:48:28,907 - easytorch-training - INFO - train:: [train_loss: 0.8291, train_MAPE: 0.0529, train_RMSE: 4.4538, train_time: 642.51 (s), lr: 1.00e-03] -2022-02-08 05:50:13,716 - easytorch-training - INFO - val:: [val_time: 104.80 (s), val_loss: 2.2616, val_MAPE: 0.0637, val_RMSE: 4.2255] -2022-02-08 05:53:33,391 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8492, Test RMSE: 1.6357, Test MAPE: 0.0162 -2022-02-08 05:53:33,392 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.2568, Test RMSE: 2.5115, Test MAPE: 0.0283 -2022-02-08 05:53:33,393 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.5093, Test RMSE: 3.1102, Test MAPE: 0.0354 -2022-02-08 05:53:33,394 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.7448, Test RMSE: 3.7268, Test MAPE: 0.0439 -2022-02-08 05:53:33,395 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.9713, Test RMSE: 4.2292, Test MAPE: 0.0518 -2022-02-08 05:53:33,396 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.0605, Test RMSE: 4.4912, Test MAPE: 0.0553 -2022-02-08 05:53:33,398 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.1916, Test RMSE: 4.7219, Test MAPE: 0.0589 -2022-02-08 05:53:33,399 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.4071, Test RMSE: 5.1132, Test MAPE: 0.0660 -2022-02-08 05:53:33,400 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.4801, Test RMSE: 5.3728, Test MAPE: 0.0696 -2022-02-08 05:53:33,401 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.7037, Test RMSE: 5.7358, Test MAPE: 0.0760 -2022-02-08 05:53:33,402 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.7423, Test RMSE: 5.9640, Test MAPE: 0.0786 -2022-02-08 05:53:33,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 2.8366, Test RMSE: 6.3648, Test MAPE: 0.0834 -2022-02-08 05:53:33,403 - easytorch-training - INFO - test:: [test_time: -199.68 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 05:53:34,795 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_032.pt saved -2022-02-08 05:53:34,796 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:02 -2022-02-08 05:53:34,796 - easytorch-training - INFO - epoch 33 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 06:04:18,555 - easytorch-training - INFO - train:: [train_loss: 0.8331, train_MAPE: 0.0551, train_RMSE: 4.6088, train_time: 643.76 (s), lr: 1.00e-03] -2022-02-08 06:05:59,389 - easytorch-training - INFO - val:: [val_time: 100.83 (s), val_loss: 2.3757, val_MAPE: 0.0677, val_RMSE: 4.4183] -2022-02-08 06:09:19,129 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8412, Test RMSE: 1.6212, Test MAPE: 0.0162 -2022-02-08 06:09:19,130 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.2835, Test RMSE: 2.5509, Test MAPE: 0.0294 -2022-02-08 06:09:19,131 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.5700, Test RMSE: 3.1831, Test MAPE: 0.0372 -2022-02-08 06:09:19,132 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.7941, Test RMSE: 3.8094, Test MAPE: 0.0454 -2022-02-08 06:09:19,133 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.0472, Test RMSE: 4.3698, Test MAPE: 0.0541 -2022-02-08 06:09:19,135 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1263, Test RMSE: 4.6340, Test MAPE: 0.0573 -2022-02-08 06:09:19,136 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.2896, Test RMSE: 4.9269, Test MAPE: 0.0620 -2022-02-08 06:09:19,137 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.5294, Test RMSE: 5.3804, Test MAPE: 0.0700 -2022-02-08 06:09:19,138 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6170, Test RMSE: 5.6777, Test MAPE: 0.0741 -2022-02-08 06:09:19,139 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.8864, Test RMSE: 6.1012, Test MAPE: 0.0815 -2022-02-08 06:09:19,140 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.9226, Test RMSE: 6.3498, Test MAPE: 0.0842 -2022-02-08 06:09:19,141 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.0042, Test RMSE: 6.8175, Test MAPE: 0.0894 -2022-02-08 06:09:19,141 - easytorch-training - INFO - test:: [test_time: -199.74 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 06:09:21,091 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_033.pt saved -2022-02-08 06:09:21,092 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:02 -2022-02-08 06:09:21,092 - easytorch-training - INFO - epoch 34 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:47<00:00, 1.14s/it] -2022-02-08 06:20:08,482 - easytorch-training - INFO - train:: [train_loss: 0.9587, train_MAPE: 0.0551, train_RMSE: 4.6047, train_time: 647.39 (s), lr: 1.00e-03] -2022-02-08 06:21:50,166 - easytorch-training - INFO - val:: [val_time: 101.68 (s), val_loss: 2.3578, val_MAPE: 0.0665, val_RMSE: 4.3704] -2022-02-08 06:25:09,381 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8416, Test RMSE: 1.6187, Test MAPE: 0.0161 -2022-02-08 06:25:09,382 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1075, Test RMSE: 2.2792, Test MAPE: 0.0222 -2022-02-08 06:25:09,383 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.5823, Test RMSE: 3.1331, Test MAPE: 0.0377 -2022-02-08 06:25:09,385 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.8002, Test RMSE: 3.7532, Test MAPE: 0.0459 -2022-02-08 06:25:09,386 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.0809, Test RMSE: 4.3751, Test MAPE: 0.0555 -2022-02-08 06:25:09,387 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1164, Test RMSE: 4.5770, Test MAPE: 0.0573 -2022-02-08 06:25:09,388 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3003, Test RMSE: 4.8668, Test MAPE: 0.0621 -2022-02-08 06:25:09,389 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.5386, Test RMSE: 5.2988, Test MAPE: 0.0696 -2022-02-08 06:25:09,390 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6170, Test RMSE: 5.5562, Test MAPE: 0.0731 -2022-02-08 06:25:09,391 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.8998, Test RMSE: 5.9551, Test MAPE: 0.0805 -2022-02-08 06:25:09,392 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.9243, Test RMSE: 6.1758, Test MAPE: 0.0827 -2022-02-08 06:25:09,393 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.0111, Test RMSE: 6.6924, Test MAPE: 0.0885 -2022-02-08 06:25:09,393 - easytorch-training - INFO - test:: [test_time: -199.22 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 06:25:10,744 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_034.pt saved -2022-02-08 06:25:10,744 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:12 -2022-02-08 06:25:10,745 - easytorch-training - INFO - epoch 35 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.12s/it] -2022-02-08 06:35:51,841 - easytorch-training - INFO - train:: [train_loss: 0.9587, train_MAPE: 0.0563, train_RMSE: 4.6549, train_time: 641.10 (s), lr: 1.00e-03] -2022-02-08 06:37:35,516 - easytorch-training - INFO - val:: [val_time: 103.67 (s), val_loss: 2.3791, val_MAPE: 0.0671, val_RMSE: 4.4178] -2022-02-08 06:40:55,753 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8366, Test RMSE: 1.6213, Test MAPE: 0.0159 -2022-02-08 06:40:55,754 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1020, Test RMSE: 2.2784, Test MAPE: 0.0219 -2022-02-08 06:40:55,755 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.5685, Test RMSE: 3.1084, Test MAPE: 0.0370 -2022-02-08 06:40:55,756 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.7874, Test RMSE: 3.7315, Test MAPE: 0.0452 -2022-02-08 06:40:55,757 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.0877, Test RMSE: 4.3735, Test MAPE: 0.0553 -2022-02-08 06:40:55,759 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1100, Test RMSE: 4.5682, Test MAPE: 0.0568 -2022-02-08 06:40:55,760 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3101, Test RMSE: 4.9092, Test MAPE: 0.0623 -2022-02-08 06:40:55,761 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.5566, Test RMSE: 5.3493, Test MAPE: 0.0701 -2022-02-08 06:40:55,762 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6485, Test RMSE: 5.6394, Test MAPE: 0.0741 -2022-02-08 06:40:55,763 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.9552, Test RMSE: 6.0785, Test MAPE: 0.0822 -2022-02-08 06:40:55,764 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.9829, Test RMSE: 6.3337, Test MAPE: 0.0848 -2022-02-08 06:40:55,765 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.0663, Test RMSE: 6.8730, Test MAPE: 0.0907 -2022-02-08 06:40:55,765 - easytorch-training - INFO - test:: [test_time: -200.24 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 06:40:57,168 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_035.pt saved -2022-02-08 06:40:57,168 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:12 -2022-02-08 06:40:57,168 - easytorch-training - INFO - epoch 36 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:45<00:00, 1.13s/it] -2022-02-08 06:51:42,829 - easytorch-training - INFO - train:: [train_loss: 0.9562, train_MAPE: 0.0566, train_RMSE: 4.7061, train_time: 645.66 (s), lr: 1.00e-03] -2022-02-08 06:53:23,711 - easytorch-training - INFO - val:: [val_time: 100.87 (s), val_loss: 2.4179, val_MAPE: 0.0685, val_RMSE: 4.4937] -2022-02-08 06:56:47,824 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8372, Test RMSE: 1.6247, Test MAPE: 0.0160 -2022-02-08 06:56:47,826 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1017, Test RMSE: 2.2823, Test MAPE: 0.0220 -2022-02-08 06:56:47,827 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.5772, Test RMSE: 3.1158, Test MAPE: 0.0372 -2022-02-08 06:56:47,828 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.7970, Test RMSE: 3.7431, Test MAPE: 0.0455 -2022-02-08 06:56:47,829 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.1219, Test RMSE: 4.4207, Test MAPE: 0.0561 -2022-02-08 06:56:47,830 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1298, Test RMSE: 4.6147, Test MAPE: 0.0575 -2022-02-08 06:56:47,831 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3410, Test RMSE: 4.9847, Test MAPE: 0.0634 -2022-02-08 06:56:47,832 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6130, Test RMSE: 5.4607, Test MAPE: 0.0718 -2022-02-08 06:56:47,833 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6979, Test RMSE: 5.7552, Test MAPE: 0.0757 -2022-02-08 06:56:47,834 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.0167, Test RMSE: 6.2061, Test MAPE: 0.0841 -2022-02-08 06:56:47,836 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.0390, Test RMSE: 6.4646, Test MAPE: 0.0867 -2022-02-08 06:56:47,837 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.1293, Test RMSE: 7.0237, Test MAPE: 0.0928 -2022-02-08 06:56:47,837 - easytorch-training - INFO - test:: [test_time: -204.12 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 06:56:49,774 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_036.pt saved -2022-02-08 06:56:49,774 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:29 -2022-02-08 06:56:49,774 - easytorch-training - INFO - epoch 37 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.13s/it] -2022-02-08 07:07:31,438 - easytorch-training - INFO - train:: [train_loss: 1.0448, train_MAPE: 0.0549, train_RMSE: 4.6174, train_time: 641.66 (s), lr: 5.00e-04] -2022-02-08 07:09:14,996 - easytorch-training - INFO - val:: [val_time: 103.55 (s), val_loss: 2.3492, val_MAPE: 0.0668, val_RMSE: 4.4147] -2022-02-08 07:12:34,879 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8355, Test RMSE: 1.6082, Test MAPE: 0.0160 -2022-02-08 07:12:34,881 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0998, Test RMSE: 2.2554, Test MAPE: 0.0222 -2022-02-08 07:12:34,882 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2811, Test RMSE: 2.7640, Test MAPE: 0.0271 -2022-02-08 07:12:34,883 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.7828, Test RMSE: 3.7221, Test MAPE: 0.0460 -2022-02-08 07:12:34,884 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.0992, Test RMSE: 4.3843, Test MAPE: 0.0562 -2022-02-08 07:12:34,885 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.0958, Test RMSE: 4.5604, Test MAPE: 0.0573 -2022-02-08 07:12:34,886 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3089, Test RMSE: 4.9385, Test MAPE: 0.0632 -2022-02-08 07:12:34,887 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.5720, Test RMSE: 5.3990, Test MAPE: 0.0711 -2022-02-08 07:12:34,888 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6475, Test RMSE: 5.6983, Test MAPE: 0.0750 -2022-02-08 07:12:34,889 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.9539, Test RMSE: 6.1146, Test MAPE: 0.0828 -2022-02-08 07:12:34,891 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.9642, Test RMSE: 6.3292, Test MAPE: 0.0847 -2022-02-08 07:12:34,892 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.0666, Test RMSE: 6.8639, Test MAPE: 0.0907 -2022-02-08 07:12:34,892 - easytorch-training - INFO - test:: [test_time: -199.89 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 07:12:36,987 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_037.pt saved -2022-02-08 07:12:36,988 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:31 -2022-02-08 07:12:36,988 - easytorch-training - INFO - epoch 38 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:48<00:00, 1.14s/it] -2022-02-08 07:23:25,759 - easytorch-training - INFO - train:: [train_loss: 1.0400, train_MAPE: 0.0548, train_RMSE: 4.6192, train_time: 648.77 (s), lr: 5.00e-04] -2022-02-08 07:25:06,577 - easytorch-training - INFO - val:: [val_time: 100.81 (s), val_loss: 2.3673, val_MAPE: 0.0672, val_RMSE: 4.4532] -2022-02-08 07:28:35,121 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8325, Test RMSE: 1.6099, Test MAPE: 0.0159 -2022-02-08 07:28:35,122 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0924, Test RMSE: 2.2510, Test MAPE: 0.0218 -2022-02-08 07:28:35,124 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2685, Test RMSE: 2.7464, Test MAPE: 0.0262 -2022-02-08 07:28:35,125 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.7902, Test RMSE: 3.7181, Test MAPE: 0.0457 -2022-02-08 07:28:35,126 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.1122, Test RMSE: 4.3935, Test MAPE: 0.0563 -2022-02-08 07:28:35,127 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1161, Test RMSE: 4.5877, Test MAPE: 0.0576 -2022-02-08 07:28:35,128 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3320, Test RMSE: 4.9604, Test MAPE: 0.0636 -2022-02-08 07:28:35,129 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6037, Test RMSE: 5.4411, Test MAPE: 0.0719 -2022-02-08 07:28:35,130 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6762, Test RMSE: 5.7461, Test MAPE: 0.0758 -2022-02-08 07:28:35,131 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.9905, Test RMSE: 6.1958, Test MAPE: 0.0840 -2022-02-08 07:28:35,132 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.0040, Test RMSE: 6.4173, Test MAPE: 0.0861 -2022-02-08 07:28:35,133 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.1113, Test RMSE: 6.9782, Test MAPE: 0.0924 -2022-02-08 07:28:35,133 - easytorch-training - INFO - test:: [test_time: -208.55 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 07:28:36,546 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_038.pt saved -2022-02-08 07:28:36,547 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:05 -2022-02-08 07:28:36,547 - easytorch-training - INFO - epoch 39 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 07:39:18,586 - easytorch-training - INFO - train:: [train_loss: 1.0460, train_MAPE: 0.0558, train_RMSE: 4.6785, train_time: 642.04 (s), lr: 5.00e-04] -2022-02-08 07:40:59,114 - easytorch-training - INFO - val:: [val_time: 100.52 (s), val_loss: 2.3908, val_MAPE: 0.0681, val_RMSE: 4.5020] -2022-02-08 07:44:17,779 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8317, Test RMSE: 1.6070, Test MAPE: 0.0158 -2022-02-08 07:44:17,781 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0926, Test RMSE: 2.2481, Test MAPE: 0.0219 -2022-02-08 07:44:17,782 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2700, Test RMSE: 2.7493, Test MAPE: 0.0265 -2022-02-08 07:44:17,783 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.8040, Test RMSE: 3.7586, Test MAPE: 0.0465 -2022-02-08 07:44:17,784 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.1377, Test RMSE: 4.4508, Test MAPE: 0.0573 -2022-02-08 07:44:17,785 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1339, Test RMSE: 4.6374, Test MAPE: 0.0584 -2022-02-08 07:44:17,786 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3579, Test RMSE: 5.0247, Test MAPE: 0.0646 -2022-02-08 07:44:17,787 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6251, Test RMSE: 5.5029, Test MAPE: 0.0727 -2022-02-08 07:44:17,788 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.7017, Test RMSE: 5.8147, Test MAPE: 0.0766 -2022-02-08 07:44:17,790 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.0221, Test RMSE: 6.2720, Test MAPE: 0.0849 -2022-02-08 07:44:17,791 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.0349, Test RMSE: 6.4996, Test MAPE: 0.0871 -2022-02-08 07:44:17,792 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.1484, Test RMSE: 7.0728, Test MAPE: 0.0935 -2022-02-08 07:44:17,792 - easytorch-training - INFO - test:: [test_time: -198.67 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 07:44:19,231 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_039.pt saved -2022-02-08 07:44:19,231 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:54 -2022-02-08 07:44:19,231 - easytorch-training - INFO - epoch 40 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.13s/it] -2022-02-08 07:55:00,883 - easytorch-training - INFO - train:: [train_loss: 1.1255, train_MAPE: 0.0542, train_RMSE: 4.5867, train_time: 641.65 (s), lr: 5.00e-04] -2022-02-08 07:56:42,309 - easytorch-training - INFO - val:: [val_time: 101.42 (s), val_loss: 2.3096, val_MAPE: 0.0646, val_RMSE: 4.3601] -2022-02-08 08:00:01,169 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8359, Test RMSE: 1.6028, Test MAPE: 0.0159 -2022-02-08 08:00:01,171 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0940, Test RMSE: 2.2434, Test MAPE: 0.0218 -2022-02-08 08:00:01,172 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2685, Test RMSE: 2.7375, Test MAPE: 0.0262 -2022-02-08 08:00:01,173 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3990, Test RMSE: 3.1174, Test MAPE: 0.0298 -2022-02-08 08:00:01,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.1330, Test RMSE: 4.3883, Test MAPE: 0.0569 -2022-02-08 08:00:01,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1029, Test RMSE: 4.5392, Test MAPE: 0.0575 -2022-02-08 08:00:01,176 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3171, Test RMSE: 4.9023, Test MAPE: 0.0632 -2022-02-08 08:00:01,177 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.5914, Test RMSE: 5.3630, Test MAPE: 0.0711 -2022-02-08 08:00:01,178 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6549, Test RMSE: 5.6506, Test MAPE: 0.0747 -2022-02-08 08:00:01,179 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.9676, Test RMSE: 6.0490, Test MAPE: 0.0824 -2022-02-08 08:00:01,181 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.9636, Test RMSE: 6.2651, Test MAPE: 0.0842 -2022-02-08 08:00:01,182 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.0795, Test RMSE: 6.7764, Test MAPE: 0.0903 -2022-02-08 08:00:01,182 - easytorch-training - INFO - test:: [test_time: -198.87 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 08:00:02,614 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_040.pt saved -2022-02-08 08:00:02,618 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:46 -2022-02-08 08:00:02,618 - easytorch-training - INFO - epoch 41 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:46<00:00, 1.13s/it] -2022-02-08 08:10:48,820 - easytorch-training - INFO - train:: [train_loss: 1.1235, train_MAPE: 0.0542, train_RMSE: 4.5885, train_time: 646.20 (s), lr: 5.00e-04] -2022-02-08 08:12:30,489 - easytorch-training - INFO - val:: [val_time: 101.66 (s), val_loss: 2.3259, val_MAPE: 0.0660, val_RMSE: 4.4308] -2022-02-08 08:15:51,699 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8342, Test RMSE: 1.6050, Test MAPE: 0.0160 -2022-02-08 08:15:51,701 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0934, Test RMSE: 2.2412, Test MAPE: 0.0221 -2022-02-08 08:15:51,702 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2687, Test RMSE: 2.7324, Test MAPE: 0.0266 -2022-02-08 08:15:51,703 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4025, Test RMSE: 3.1166, Test MAPE: 0.0305 -2022-02-08 08:15:51,704 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.1524, Test RMSE: 4.4831, Test MAPE: 0.0582 -2022-02-08 08:15:51,705 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1232, Test RMSE: 4.6359, Test MAPE: 0.0589 -2022-02-08 08:15:51,706 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3335, Test RMSE: 5.0013, Test MAPE: 0.0646 -2022-02-08 08:15:51,707 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6066, Test RMSE: 5.4839, Test MAPE: 0.0726 -2022-02-08 08:15:51,708 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6687, Test RMSE: 5.7744, Test MAPE: 0.0761 -2022-02-08 08:15:51,709 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 2.9788, Test RMSE: 6.1727, Test MAPE: 0.0837 -2022-02-08 08:15:51,710 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 2.9701, Test RMSE: 6.3885, Test MAPE: 0.0854 -2022-02-08 08:15:51,712 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.0986, Test RMSE: 6.9172, Test MAPE: 0.0917 -2022-02-08 08:15:51,712 - easytorch-training - INFO - test:: [test_time: -201.22 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 08:15:53,140 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_041.pt saved -2022-02-08 08:15:53,140 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:55 -2022-02-08 08:15:53,140 - easytorch-training - INFO - epoch 42 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.13s/it] -2022-02-08 08:26:35,116 - easytorch-training - INFO - train:: [train_loss: 1.1142, train_MAPE: 0.0543, train_RMSE: 4.6041, train_time: 641.98 (s), lr: 5.00e-04] -2022-02-08 08:28:17,549 - easytorch-training - INFO - val:: [val_time: 102.43 (s), val_loss: 2.3483, val_MAPE: 0.0663, val_RMSE: 4.4455] -2022-02-08 08:31:40,697 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8376, Test RMSE: 1.6055, Test MAPE: 0.0163 -2022-02-08 08:31:40,699 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0934, Test RMSE: 2.2396, Test MAPE: 0.0221 -2022-02-08 08:31:40,700 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2660, Test RMSE: 2.7321, Test MAPE: 0.0264 -2022-02-08 08:31:40,701 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3955, Test RMSE: 3.1082, Test MAPE: 0.0300 -2022-02-08 08:31:40,702 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 2.1881, Test RMSE: 4.5005, Test MAPE: 0.0588 -2022-02-08 08:31:40,703 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1455, Test RMSE: 4.6367, Test MAPE: 0.0591 -2022-02-08 08:31:40,704 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3622, Test RMSE: 5.0115, Test MAPE: 0.0649 -2022-02-08 08:31:40,705 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6340, Test RMSE: 5.4884, Test MAPE: 0.0729 -2022-02-08 08:31:40,706 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.6976, Test RMSE: 5.7881, Test MAPE: 0.0765 -2022-02-08 08:31:40,708 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.0167, Test RMSE: 6.1919, Test MAPE: 0.0842 -2022-02-08 08:31:40,709 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.0085, Test RMSE: 6.4132, Test MAPE: 0.0860 -2022-02-08 08:31:40,710 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.1273, Test RMSE: 6.9431, Test MAPE: 0.0922 -2022-02-08 08:31:40,710 - easytorch-training - INFO - test:: [test_time: -203.16 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 08:31:42,111 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_042.pt saved -2022-02-08 08:31:42,111 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:00 -2022-02-08 08:31:42,111 - easytorch-training - INFO - epoch 43 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 08:42:25,765 - easytorch-training - INFO - train:: [train_loss: 1.1951, train_MAPE: 0.0533, train_RMSE: 4.5750, train_time: 643.65 (s), lr: 5.00e-04] -2022-02-08 08:44:07,673 - easytorch-training - INFO - val:: [val_time: 101.90 (s), val_loss: 2.2982, val_MAPE: 0.0639, val_RMSE: 4.3872] -2022-02-08 08:47:27,925 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8370, Test RMSE: 1.5970, Test MAPE: 0.0160 -2022-02-08 08:47:27,926 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0948, Test RMSE: 2.2314, Test MAPE: 0.0219 -2022-02-08 08:47:27,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2681, Test RMSE: 2.7156, Test MAPE: 0.0262 -2022-02-08 08:47:27,929 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3973, Test RMSE: 3.0846, Test MAPE: 0.0298 -2022-02-08 08:47:27,930 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4951, Test RMSE: 3.3709, Test MAPE: 0.0327 -2022-02-08 08:47:27,931 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1631, Test RMSE: 4.6159, Test MAPE: 0.0593 -2022-02-08 08:47:27,932 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3874, Test RMSE: 5.0105, Test MAPE: 0.0655 -2022-02-08 08:47:27,933 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6746, Test RMSE: 5.4937, Test MAPE: 0.0737 -2022-02-08 08:47:27,934 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.7457, Test RMSE: 5.8179, Test MAPE: 0.0776 -2022-02-08 08:47:27,935 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.0581, Test RMSE: 6.1979, Test MAPE: 0.0849 -2022-02-08 08:47:27,936 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.0571, Test RMSE: 6.4269, Test MAPE: 0.0869 -2022-02-08 08:47:27,937 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.1637, Test RMSE: 6.9541, Test MAPE: 0.0929 -2022-02-08 08:47:27,937 - easytorch-training - INFO - test:: [test_time: -200.26 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 08:47:30,185 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_043.pt saved -2022-02-08 08:47:30,185 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:03 -2022-02-08 08:47:30,185 - easytorch-training - INFO - epoch 44 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:44<00:00, 1.13s/it] -2022-02-08 08:58:15,065 - easytorch-training - INFO - train:: [train_loss: 1.1822, train_MAPE: 0.0533, train_RMSE: 4.5841, train_time: 644.88 (s), lr: 5.00e-04] -2022-02-08 08:59:55,717 - easytorch-training - INFO - val:: [val_time: 100.65 (s), val_loss: 2.2810, val_MAPE: 0.0634, val_RMSE: 4.3693] -2022-02-08 09:03:15,257 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8376, Test RMSE: 1.6127, Test MAPE: 0.0159 -2022-02-08 09:03:15,258 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0932, Test RMSE: 2.2409, Test MAPE: 0.0216 -2022-02-08 09:03:15,259 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2639, Test RMSE: 2.7197, Test MAPE: 0.0259 -2022-02-08 09:03:15,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3931, Test RMSE: 3.0894, Test MAPE: 0.0295 -2022-02-08 09:03:15,262 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4922, Test RMSE: 3.3795, Test MAPE: 0.0325 -2022-02-08 09:03:15,263 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1539, Test RMSE: 4.6050, Test MAPE: 0.0592 -2022-02-08 09:03:15,264 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3711, Test RMSE: 4.9986, Test MAPE: 0.0653 -2022-02-08 09:03:15,265 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6562, Test RMSE: 5.4878, Test MAPE: 0.0735 -2022-02-08 09:03:15,266 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.7339, Test RMSE: 5.8094, Test MAPE: 0.0774 -2022-02-08 09:03:15,267 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.0397, Test RMSE: 6.1805, Test MAPE: 0.0846 -2022-02-08 09:03:15,268 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.0344, Test RMSE: 6.4076, Test MAPE: 0.0864 -2022-02-08 09:03:15,269 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.1460, Test RMSE: 6.9484, Test MAPE: 0.0926 -2022-02-08 09:03:15,269 - easytorch-training - INFO - test:: [test_time: -199.54 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 09:03:16,657 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_044.pt saved -2022-02-08 09:03:16,658 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:02 -2022-02-08 09:03:16,658 - easytorch-training - INFO - epoch 45 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.13s/it] -2022-02-08 09:13:58,478 - easytorch-training - INFO - train:: [train_loss: 1.1790, train_MAPE: 0.0533, train_RMSE: 4.5924, train_time: 641.82 (s), lr: 5.00e-04] -2022-02-08 09:15:40,721 - easytorch-training - INFO - val:: [val_time: 102.24 (s), val_loss: 2.2883, val_MAPE: 0.0631, val_RMSE: 4.3533] -2022-02-08 09:19:02,232 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8501, Test RMSE: 1.6346, Test MAPE: 0.0164 -2022-02-08 09:19:02,234 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1102, Test RMSE: 2.2868, Test MAPE: 0.0221 -2022-02-08 09:19:02,235 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2822, Test RMSE: 2.7814, Test MAPE: 0.0261 -2022-02-08 09:19:02,236 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4112, Test RMSE: 3.1620, Test MAPE: 0.0293 -2022-02-08 09:19:02,237 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5098, Test RMSE: 3.4522, Test MAPE: 0.0319 -2022-02-08 09:19:02,238 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 2.1596, Test RMSE: 4.5713, Test MAPE: 0.0588 -2022-02-08 09:19:02,239 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.3674, Test RMSE: 4.9364, Test MAPE: 0.0645 -2022-02-08 09:19:02,240 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.6531, Test RMSE: 5.4097, Test MAPE: 0.0727 -2022-02-08 09:19:02,241 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.7326, Test RMSE: 5.7327, Test MAPE: 0.0767 -2022-02-08 09:19:02,242 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.0386, Test RMSE: 6.0991, Test MAPE: 0.0838 -2022-02-08 09:19:02,244 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.0250, Test RMSE: 6.3230, Test MAPE: 0.0856 -2022-02-08 09:19:02,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.1375, Test RMSE: 6.8538, Test MAPE: 0.0917 -2022-02-08 09:19:02,245 - easytorch-training - INFO - test:: [test_time: -201.52 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 09:19:03,678 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_045.pt saved -2022-02-08 09:19:03,679 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:47:02 -2022-02-08 09:19:03,679 - easytorch-training - INFO - epoch 46 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:39<00:00, 1.12s/it] -2022-02-08 09:29:42,776 - easytorch-training - INFO - train:: [train_loss: 1.2331, train_MAPE: 0.0514, train_RMSE: 4.5165, train_time: 639.10 (s), lr: 5.00e-04] -2022-02-08 09:31:23,780 - easytorch-training - INFO - val:: [val_time: 101.00 (s), val_loss: 2.2616, val_MAPE: 0.0623, val_RMSE: 4.3869] -2022-02-08 09:34:43,836 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8331, Test RMSE: 1.6034, Test MAPE: 0.0159 -2022-02-08 09:34:43,837 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0913, Test RMSE: 2.2446, Test MAPE: 0.0218 -2022-02-08 09:34:43,839 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2639, Test RMSE: 2.7386, Test MAPE: 0.0262 -2022-02-08 09:34:43,840 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3913, Test RMSE: 3.1097, Test MAPE: 0.0298 -2022-02-08 09:34:43,841 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4887, Test RMSE: 3.3946, Test MAPE: 0.0327 -2022-02-08 09:34:43,842 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5689, Test RMSE: 3.6122, Test MAPE: 0.0353 -2022-02-08 09:34:43,843 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.4705, Test RMSE: 5.2172, Test MAPE: 0.0687 -2022-02-08 09:34:43,844 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.7562, Test RMSE: 5.6932, Test MAPE: 0.0767 -2022-02-08 09:34:43,845 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.8187, Test RMSE: 5.9652, Test MAPE: 0.0799 -2022-02-08 09:34:43,846 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.1103, Test RMSE: 6.2908, Test MAPE: 0.0864 -2022-02-08 09:34:43,847 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.1023, Test RMSE: 6.5038, Test MAPE: 0.0881 -2022-02-08 09:34:43,848 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.2105, Test RMSE: 7.0130, Test MAPE: 0.0939 -2022-02-08 09:34:43,849 - easytorch-training - INFO - test:: [test_time: -200.06 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 09:34:45,251 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_046.pt saved -2022-02-08 09:34:45,251 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:51 -2022-02-08 09:34:45,251 - easytorch-training - INFO - epoch 47 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 09:45:29,065 - easytorch-training - INFO - train:: [train_loss: 1.2349, train_MAPE: 0.0521, train_RMSE: 4.5716, train_time: 643.81 (s), lr: 5.00e-04] -2022-02-08 09:47:10,280 - easytorch-training - INFO - val:: [val_time: 101.21 (s), val_loss: 2.2758, val_MAPE: 0.0625, val_RMSE: 4.4068] -2022-02-08 09:50:28,579 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8333, Test RMSE: 1.6037, Test MAPE: 0.0159 -2022-02-08 09:50:28,581 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0891, Test RMSE: 2.2319, Test MAPE: 0.0217 -2022-02-08 09:50:28,582 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2610, Test RMSE: 2.7180, Test MAPE: 0.0259 -2022-02-08 09:50:28,583 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3863, Test RMSE: 3.0871, Test MAPE: 0.0292 -2022-02-08 09:50:28,584 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4814, Test RMSE: 3.3657, Test MAPE: 0.0320 -2022-02-08 09:50:28,585 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5598, Test RMSE: 3.5782, Test MAPE: 0.0343 -2022-02-08 09:50:28,586 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.5059, Test RMSE: 5.2950, Test MAPE: 0.0699 -2022-02-08 09:50:28,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.7910, Test RMSE: 5.7583, Test MAPE: 0.0777 -2022-02-08 09:50:28,588 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.8444, Test RMSE: 6.0225, Test MAPE: 0.0807 -2022-02-08 09:50:28,589 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.1386, Test RMSE: 6.3414, Test MAPE: 0.0872 -2022-02-08 09:50:28,590 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.1239, Test RMSE: 6.5389, Test MAPE: 0.0886 -2022-02-08 09:50:28,591 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.2216, Test RMSE: 7.0307, Test MAPE: 0.0942 -2022-02-08 09:50:28,592 - easytorch-training - INFO - test:: [test_time: -198.31 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 09:50:30,306 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_047.pt saved -2022-02-08 09:50:30,307 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:47 -2022-02-08 09:50:30,307 - easytorch-training - INFO - epoch 48 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 10:01:13,404 - easytorch-training - INFO - train:: [train_loss: 1.2294, train_MAPE: 0.0532, train_RMSE: 4.6500, train_time: 643.10 (s), lr: 5.00e-04] -2022-02-08 10:02:55,105 - easytorch-training - INFO - val:: [val_time: 101.70 (s), val_loss: 2.3414, val_MAPE: 0.0653, val_RMSE: 4.5393] -2022-02-08 10:06:14,516 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8433, Test RMSE: 1.6172, Test MAPE: 0.0164 -2022-02-08 10:06:14,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1038, Test RMSE: 2.2606, Test MAPE: 0.0226 -2022-02-08 10:06:14,518 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2812, Test RMSE: 2.7651, Test MAPE: 0.0273 -2022-02-08 10:06:14,519 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4140, Test RMSE: 3.1565, Test MAPE: 0.0312 -2022-02-08 10:06:14,521 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.5115, Test RMSE: 3.4551, Test MAPE: 0.0342 -2022-02-08 10:06:14,522 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5889, Test RMSE: 3.6790, Test MAPE: 0.0365 -2022-02-08 10:06:14,523 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 2.6195, Test RMSE: 5.5720, Test MAPE: 0.0739 -2022-02-08 10:06:14,524 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 2.8986, Test RMSE: 6.0240, Test MAPE: 0.0815 -2022-02-08 10:06:14,525 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 2.9420, Test RMSE: 6.2461, Test MAPE: 0.0840 -2022-02-08 10:06:14,526 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.2232, Test RMSE: 6.5307, Test MAPE: 0.0899 -2022-02-08 10:06:14,527 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.2057, Test RMSE: 6.7039, Test MAPE: 0.0911 -2022-02-08 10:06:14,528 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.2999, Test RMSE: 7.1997, Test MAPE: 0.0965 -2022-02-08 10:06:14,528 - easytorch-training - INFO - test:: [test_time: -199.42 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 10:06:15,886 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_048.pt saved -2022-02-08 10:06:15,886 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:45 -2022-02-08 10:06:15,886 - easytorch-training - INFO - epoch 49 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:39<00:00, 1.12s/it] -2022-02-08 10:16:55,554 - easytorch-training - INFO - train:: [train_loss: 1.2817, train_MAPE: 0.0513, train_RMSE: 4.5936, train_time: 639.67 (s), lr: 5.00e-04] -2022-02-08 10:18:36,721 - easytorch-training - INFO - val:: [val_time: 101.16 (s), val_loss: 2.2851, val_MAPE: 0.0625, val_RMSE: 4.4791] -2022-02-08 10:21:54,575 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8513, Test RMSE: 1.6238, Test MAPE: 0.0170 -2022-02-08 10:21:54,577 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1083, Test RMSE: 2.2609, Test MAPE: 0.0229 -2022-02-08 10:21:54,578 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2794, Test RMSE: 2.7515, Test MAPE: 0.0272 -2022-02-08 10:21:54,579 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.4026, Test RMSE: 3.1191, Test MAPE: 0.0306 -2022-02-08 10:21:54,580 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4947, Test RMSE: 3.3972, Test MAPE: 0.0333 -2022-02-08 10:21:54,581 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5693, Test RMSE: 3.6149, Test MAPE: 0.0358 -2022-02-08 10:21:54,582 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6291, Test RMSE: 3.7747, Test MAPE: 0.0376 -2022-02-08 10:21:54,583 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.0162, Test RMSE: 6.2072, Test MAPE: 0.0846 -2022-02-08 10:21:54,584 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.0594, Test RMSE: 6.4089, Test MAPE: 0.0869 -2022-02-08 10:21:54,585 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.3333, Test RMSE: 6.6669, Test MAPE: 0.0925 -2022-02-08 10:21:54,586 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.2977, Test RMSE: 6.8317, Test MAPE: 0.0934 -2022-02-08 10:21:54,588 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.3924, Test RMSE: 7.3096, Test MAPE: 0.0987 -2022-02-08 10:21:54,588 - easytorch-training - INFO - test:: [test_time: -197.86 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 10:21:56,590 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_049.pt saved -2022-02-08 10:21:56,590 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:32 -2022-02-08 10:21:56,591 - easytorch-training - INFO - epoch 50 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:39<00:00, 1.12s/it] -2022-02-08 10:32:36,295 - easytorch-training - INFO - train:: [train_loss: 1.2761, train_MAPE: 0.0522, train_RMSE: 4.6725, train_time: 639.70 (s), lr: 5.00e-04] -2022-02-08 10:34:17,322 - easytorch-training - INFO - val:: [val_time: 101.02 (s), val_loss: 2.3040, val_MAPE: 0.0627, val_RMSE: 4.5255] -2022-02-08 10:37:36,660 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8469, Test RMSE: 1.6204, Test MAPE: 0.0165 -2022-02-08 10:37:36,661 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0971, Test RMSE: 2.2442, Test MAPE: 0.0222 -2022-02-08 10:37:36,662 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2669, Test RMSE: 2.7307, Test MAPE: 0.0264 -2022-02-08 10:37:36,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3922, Test RMSE: 3.0978, Test MAPE: 0.0298 -2022-02-08 10:37:36,665 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4868, Test RMSE: 3.3757, Test MAPE: 0.0325 -2022-02-08 10:37:36,666 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5614, Test RMSE: 3.5905, Test MAPE: 0.0346 -2022-02-08 10:37:36,667 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6262, Test RMSE: 3.7595, Test MAPE: 0.0364 -2022-02-08 10:37:36,668 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.0911, Test RMSE: 6.3531, Test MAPE: 0.0867 -2022-02-08 10:37:36,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.1248, Test RMSE: 6.5362, Test MAPE: 0.0887 -2022-02-08 10:37:36,670 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.3883, Test RMSE: 6.7719, Test MAPE: 0.0940 -2022-02-08 10:37:36,671 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.3543, Test RMSE: 6.9270, Test MAPE: 0.0948 -2022-02-08 10:37:36,672 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.4330, Test RMSE: 7.3817, Test MAPE: 0.0997 -2022-02-08 10:37:36,672 - easytorch-training - INFO - test:: [test_time: -199.35 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 10:37:38,051 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_050.pt saved -2022-02-08 10:37:38,055 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:22 -2022-02-08 10:37:38,055 - easytorch-training - INFO - epoch 51 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 10:48:18,601 - easytorch-training - INFO - train:: [train_loss: 1.2727, train_MAPE: 0.0534, train_RMSE: 4.7886, train_time: 640.55 (s), lr: 5.00e-04] -2022-02-08 10:49:59,790 - easytorch-training - INFO - val:: [val_time: 101.18 (s), val_loss: 2.3868, val_MAPE: 0.0647, val_RMSE: 4.6465] -2022-02-08 10:53:21,216 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8436, Test RMSE: 1.6119, Test MAPE: 0.0161 -2022-02-08 10:53:21,224 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0967, Test RMSE: 2.2397, Test MAPE: 0.0218 -2022-02-08 10:53:21,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2676, Test RMSE: 2.7220, Test MAPE: 0.0261 -2022-02-08 10:53:21,227 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3937, Test RMSE: 3.0885, Test MAPE: 0.0297 -2022-02-08 10:53:21,228 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4890, Test RMSE: 3.3681, Test MAPE: 0.0327 -2022-02-08 10:53:21,229 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5664, Test RMSE: 3.5857, Test MAPE: 0.0350 -2022-02-08 10:53:21,230 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6298, Test RMSE: 3.7561, Test MAPE: 0.0370 -2022-02-08 10:53:21,231 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 3.2931, Test RMSE: 6.6399, Test MAPE: 0.0916 -2022-02-08 10:53:21,232 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.3218, Test RMSE: 6.7965, Test MAPE: 0.0933 -2022-02-08 10:53:21,233 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.5747, Test RMSE: 7.0033, Test MAPE: 0.0981 -2022-02-08 10:53:21,234 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.5328, Test RMSE: 7.1535, Test MAPE: 0.0989 -2022-02-08 10:53:21,235 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.5991, Test RMSE: 7.5721, Test MAPE: 0.1033 -2022-02-08 10:53:21,235 - easytorch-training - INFO - test:: [test_time: -201.44 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 10:53:22,681 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_051.pt saved -2022-02-08 10:53:22,682 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:18 -2022-02-08 10:53:22,682 - easytorch-training - INFO - epoch 52 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:37<00:00, 1.12s/it] -2022-02-08 11:04:00,596 - easytorch-training - INFO - train:: [train_loss: 1.3291, train_MAPE: 0.0513, train_RMSE: 4.7057, train_time: 637.91 (s), lr: 5.00e-04] -2022-02-08 11:05:41,501 - easytorch-training - INFO - val:: [val_time: 100.90 (s), val_loss: 2.2633, val_MAPE: 0.0599, val_RMSE: 4.5191] -2022-02-08 11:09:00,926 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8403, Test RMSE: 1.6124, Test MAPE: 0.0159 -2022-02-08 11:09:00,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0950, Test RMSE: 2.2479, Test MAPE: 0.0216 -2022-02-08 11:09:00,928 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2659, Test RMSE: 2.7378, Test MAPE: 0.0258 -2022-02-08 11:09:00,929 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3888, Test RMSE: 3.1076, Test MAPE: 0.0291 -2022-02-08 11:09:00,930 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4806, Test RMSE: 3.3845, Test MAPE: 0.0318 -2022-02-08 11:09:00,931 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5530, Test RMSE: 3.5973, Test MAPE: 0.0341 -2022-02-08 11:09:00,933 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6130, Test RMSE: 3.7648, Test MAPE: 0.0360 -2022-02-08 11:09:00,934 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6668, Test RMSE: 3.8988, Test MAPE: 0.0378 -2022-02-08 11:09:00,935 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.4617, Test RMSE: 7.0293, Test MAPE: 0.0971 -2022-02-08 11:09:00,936 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.7001, Test RMSE: 7.2051, Test MAPE: 0.1014 -2022-02-08 11:09:00,937 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.6473, Test RMSE: 7.3413, Test MAPE: 0.1019 -2022-02-08 11:09:00,938 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.6936, Test RMSE: 7.7334, Test MAPE: 0.1058 -2022-02-08 11:09:00,938 - easytorch-training - INFO - test:: [test_time: -199.43 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 11:09:02,390 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_052.pt saved -2022-02-08 11:09:02,390 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:05 -2022-02-08 11:09:02,390 - easytorch-training - INFO - epoch 53 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:36<00:00, 1.12s/it] -2022-02-08 11:19:39,007 - easytorch-training - INFO - train:: [train_loss: 1.3117, train_MAPE: 0.0516, train_RMSE: 4.7662, train_time: 636.62 (s), lr: 5.00e-04] -2022-02-08 11:21:19,743 - easytorch-training - INFO - val:: [val_time: 100.73 (s), val_loss: 2.3464, val_MAPE: 0.0628, val_RMSE: 4.6660] -2022-02-08 11:24:39,137 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8557, Test RMSE: 1.6305, Test MAPE: 0.0171 -2022-02-08 11:24:39,138 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.1070, Test RMSE: 2.2571, Test MAPE: 0.0227 -2022-02-08 11:24:39,139 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2755, Test RMSE: 2.7391, Test MAPE: 0.0269 -2022-02-08 11:24:39,141 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3981, Test RMSE: 3.0961, Test MAPE: 0.0302 -2022-02-08 11:24:39,142 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4916, Test RMSE: 3.3616, Test MAPE: 0.0329 -2022-02-08 11:24:39,143 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5672, Test RMSE: 3.5686, Test MAPE: 0.0352 -2022-02-08 11:24:39,144 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6276, Test RMSE: 3.7375, Test MAPE: 0.0370 -2022-02-08 11:24:39,145 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6807, Test RMSE: 3.8732, Test MAPE: 0.0387 -2022-02-08 11:24:39,146 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.6849, Test RMSE: 7.4263, Test MAPE: 0.1031 -2022-02-08 11:24:39,147 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 3.9023, Test RMSE: 7.5581, Test MAPE: 0.1068 -2022-02-08 11:24:39,148 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 3.8360, Test RMSE: 7.6702, Test MAPE: 0.1069 -2022-02-08 11:24:39,149 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 3.8687, Test RMSE: 8.0057, Test MAPE: 0.1102 -2022-02-08 11:24:39,149 - easytorch-training - INFO - test:: [test_time: -199.40 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 11:24:40,576 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_053.pt saved -2022-02-08 11:24:40,576 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:50 -2022-02-08 11:24:40,576 - easytorch-training - INFO - epoch 54 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:36<00:00, 1.12s/it] -2022-02-08 11:35:17,274 - easytorch-training - INFO - train:: [train_loss: 1.3084, train_MAPE: 0.0529, train_RMSE: 4.8989, train_time: 636.70 (s), lr: 5.00e-04] -2022-02-08 11:36:58,229 - easytorch-training - INFO - val:: [val_time: 100.95 (s), val_loss: 2.3991, val_MAPE: 0.0638, val_RMSE: 4.7855] -2022-02-08 11:40:19,012 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8346, Test RMSE: 1.6049, Test MAPE: 0.0158 -2022-02-08 11:40:19,014 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0913, Test RMSE: 2.2403, Test MAPE: 0.0217 -2022-02-08 11:40:19,015 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2632, Test RMSE: 2.7296, Test MAPE: 0.0261 -2022-02-08 11:40:19,016 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3896, Test RMSE: 3.1025, Test MAPE: 0.0296 -2022-02-08 11:40:19,017 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4851, Test RMSE: 3.3865, Test MAPE: 0.0325 -2022-02-08 11:40:19,018 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5610, Test RMSE: 3.6092, Test MAPE: 0.0349 -2022-02-08 11:40:19,019 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6244, Test RMSE: 3.7863, Test MAPE: 0.0369 -2022-02-08 11:40:19,020 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6783, Test RMSE: 3.9263, Test MAPE: 0.0386 -2022-02-08 11:40:19,021 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 3.8906, Test RMSE: 7.7193, Test MAPE: 0.1081 -2022-02-08 11:40:19,022 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 4.0854, Test RMSE: 7.8207, Test MAPE: 0.1112 -2022-02-08 11:40:19,023 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 4.0191, Test RMSE: 7.9203, Test MAPE: 0.1112 -2022-02-08 11:40:19,024 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 4.0376, Test RMSE: 8.2057, Test MAPE: 0.1139 -2022-02-08 11:40:19,025 - easytorch-training - INFO - test:: [test_time: -200.79 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 11:40:20,457 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_054.pt saved -2022-02-08 11:40:20,458 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:38 -2022-02-08 11:40:20,458 - easytorch-training - INFO - epoch 55 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:37<00:00, 1.12s/it] -2022-02-08 11:50:57,900 - easytorch-training - INFO - train:: [train_loss: 1.3435, train_MAPE: 0.0484, train_RMSE: 4.6265, train_time: 637.44 (s), lr: 2.50e-04] -2022-02-08 11:52:38,919 - easytorch-training - INFO - val:: [val_time: 101.01 (s), val_loss: 2.2185, val_MAPE: 0.0577, val_RMSE: 4.5337] -2022-02-08 11:55:57,521 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8346, Test RMSE: 1.6051, Test MAPE: 0.0159 -2022-02-08 11:55:57,522 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0894, Test RMSE: 2.2355, Test MAPE: 0.0217 -2022-02-08 11:55:57,524 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2602, Test RMSE: 2.7245, Test MAPE: 0.0262 -2022-02-08 11:55:57,525 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3863, Test RMSE: 3.0958, Test MAPE: 0.0298 -2022-02-08 11:55:57,526 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4803, Test RMSE: 3.3785, Test MAPE: 0.0327 -2022-02-08 11:55:57,527 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5558, Test RMSE: 3.6025, Test MAPE: 0.0352 -2022-02-08 11:55:57,528 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6169, Test RMSE: 3.7752, Test MAPE: 0.0372 -2022-02-08 11:55:57,529 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6690, Test RMSE: 3.9073, Test MAPE: 0.0389 -2022-02-08 11:55:57,530 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7173, Test RMSE: 4.0032, Test MAPE: 0.0405 -2022-02-08 11:55:57,531 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 4.2037, Test RMSE: 7.9965, Test MAPE: 0.1141 -2022-02-08 11:55:57,532 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 4.1392, Test RMSE: 8.0824, Test MAPE: 0.1140 -2022-02-08 11:55:57,533 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 4.1414, Test RMSE: 8.3295, Test MAPE: 0.1161 -2022-02-08 11:55:57,533 - easytorch-training - INFO - test:: [test_time: -198.61 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 11:55:58,968 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_055.pt saved -2022-02-08 11:55:58,969 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:25 -2022-02-08 11:55:58,969 - easytorch-training - INFO - epoch 56 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:35<00:00, 1.12s/it] -2022-02-08 12:06:34,840 - easytorch-training - INFO - train:: [train_loss: 1.3368, train_MAPE: 0.0489, train_RMSE: 4.6910, train_time: 635.87 (s), lr: 2.50e-04] -2022-02-08 12:08:15,493 - easytorch-training - INFO - val:: [val_time: 100.65 (s), val_loss: 2.2553, val_MAPE: 0.0589, val_RMSE: 4.6050] -2022-02-08 12:11:35,204 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8389, Test RMSE: 1.6088, Test MAPE: 0.0163 -2022-02-08 12:11:35,212 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0938, Test RMSE: 2.2355, Test MAPE: 0.0222 -2022-02-08 12:11:35,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2659, Test RMSE: 2.7245, Test MAPE: 0.0267 -2022-02-08 12:11:35,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3916, Test RMSE: 3.1020, Test MAPE: 0.0303 -2022-02-08 12:11:35,216 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4851, Test RMSE: 3.3856, Test MAPE: 0.0332 -2022-02-08 12:11:35,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5598, Test RMSE: 3.6069, Test MAPE: 0.0355 -2022-02-08 12:11:35,219 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6212, Test RMSE: 3.7816, Test MAPE: 0.0375 -2022-02-08 12:11:35,220 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6719, Test RMSE: 3.9125, Test MAPE: 0.0390 -2022-02-08 12:11:35,221 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7194, Test RMSE: 4.0097, Test MAPE: 0.0406 -2022-02-08 12:11:35,223 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 4.3438, Test RMSE: 8.2125, Test MAPE: 0.1175 -2022-02-08 12:11:35,224 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 4.2781, Test RMSE: 8.2847, Test MAPE: 0.1174 -2022-02-08 12:11:35,225 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 4.2681, Test RMSE: 8.4922, Test MAPE: 0.1190 -2022-02-08 12:11:35,226 - easytorch-training - INFO - test:: [test_time: -199.73 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 12:11:37,327 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_056.pt saved -2022-02-08 12:11:37,328 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:11 -2022-02-08 12:11:37,328 - easytorch-training - INFO - epoch 57 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:44<00:00, 1.13s/it] -2022-02-08 12:22:21,929 - easytorch-training - INFO - train:: [train_loss: 1.3360, train_MAPE: 0.0499, train_RMSE: 4.7838, train_time: 644.60 (s), lr: 2.50e-04] -2022-02-08 12:24:05,240 - easytorch-training - INFO - val:: [val_time: 103.31 (s), val_loss: 2.2900, val_MAPE: 0.0591, val_RMSE: 4.6725] -2022-02-08 12:27:24,452 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8353, Test RMSE: 1.6033, Test MAPE: 0.0161 -2022-02-08 12:27:24,462 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0894, Test RMSE: 2.2308, Test MAPE: 0.0218 -2022-02-08 12:27:24,464 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2592, Test RMSE: 2.7136, Test MAPE: 0.0260 -2022-02-08 12:27:24,465 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3835, Test RMSE: 3.0796, Test MAPE: 0.0293 -2022-02-08 12:27:24,466 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4764, Test RMSE: 3.3521, Test MAPE: 0.0320 -2022-02-08 12:27:24,467 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5502, Test RMSE: 3.5594, Test MAPE: 0.0343 -2022-02-08 12:27:24,468 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6116, Test RMSE: 3.7240, Test MAPE: 0.0363 -2022-02-08 12:27:24,469 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6615, Test RMSE: 3.8541, Test MAPE: 0.0378 -2022-02-08 12:27:24,470 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7089, Test RMSE: 3.9587, Test MAPE: 0.0392 -2022-02-08 12:27:24,471 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 4.5043, Test RMSE: 8.4208, Test MAPE: 0.1212 -2022-02-08 12:27:24,472 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 4.4356, Test RMSE: 8.4790, Test MAPE: 0.1209 -2022-02-08 12:27:24,473 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 4.4141, Test RMSE: 8.6474, Test MAPE: 0.1220 -2022-02-08 12:27:24,473 - easytorch-training - INFO - test:: [test_time: -199.23 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 12:27:26,596 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_057.pt saved -2022-02-08 12:27:26,597 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:17 -2022-02-08 12:27:26,597 - easytorch-training - INFO - epoch 58 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 12:38:07,130 - easytorch-training - INFO - train:: [train_loss: 1.3737, train_MAPE: 0.0439, train_RMSE: 4.3641, train_time: 640.53 (s), lr: 2.50e-04] -2022-02-08 12:39:49,182 - easytorch-training - INFO - val:: [val_time: 102.05 (s), val_loss: 2.0708, val_MAPE: 0.0525, val_RMSE: 4.3313] -2022-02-08 12:43:08,139 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8354, Test RMSE: 1.6061, Test MAPE: 0.0161 -2022-02-08 12:43:08,147 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0933, Test RMSE: 2.2394, Test MAPE: 0.0220 -2022-02-08 12:43:08,149 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2675, Test RMSE: 2.7333, Test MAPE: 0.0266 -2022-02-08 12:43:08,150 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3953, Test RMSE: 3.1124, Test MAPE: 0.0303 -2022-02-08 12:43:08,151 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4922, Test RMSE: 3.4040, Test MAPE: 0.0333 -2022-02-08 12:43:08,152 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5678, Test RMSE: 3.6296, Test MAPE: 0.0358 -2022-02-08 12:43:08,153 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6317, Test RMSE: 3.8154, Test MAPE: 0.0379 -2022-02-08 12:43:08,154 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6832, Test RMSE: 3.9552, Test MAPE: 0.0394 -2022-02-08 12:43:08,155 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7282, Test RMSE: 4.0565, Test MAPE: 0.0409 -2022-02-08 12:43:08,156 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7650, Test RMSE: 4.1230, Test MAPE: 0.0421 -2022-02-08 12:43:08,157 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 4.6151, Test RMSE: 8.7017, Test MAPE: 0.1248 -2022-02-08 12:43:08,158 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 4.5823, Test RMSE: 8.8235, Test MAPE: 0.1254 -2022-02-08 12:43:08,158 - easytorch-training - INFO - test:: [test_time: -198.97 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 12:43:09,565 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_058.pt saved -2022-02-08 12:43:09,566 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:12 -2022-02-08 12:43:09,566 - easytorch-training - INFO - epoch 59 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:46<00:00, 1.13s/it] -2022-02-08 12:53:56,365 - easytorch-training - INFO - train:: [train_loss: 1.3598, train_MAPE: 0.0442, train_RMSE: 4.4121, train_time: 646.80 (s), lr: 2.50e-04] -2022-02-08 12:55:46,352 - easytorch-training - INFO - val:: [val_time: 109.98 (s), val_loss: 2.0966, val_MAPE: 0.0530, val_RMSE: 4.3787] -2022-02-08 12:59:06,541 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8378, Test RMSE: 1.6093, Test MAPE: 0.0162 -2022-02-08 12:59:06,542 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0933, Test RMSE: 2.2368, Test MAPE: 0.0221 -2022-02-08 12:59:06,544 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2658, Test RMSE: 2.7207, Test MAPE: 0.0266 -2022-02-08 12:59:06,545 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3904, Test RMSE: 3.0888, Test MAPE: 0.0301 -2022-02-08 12:59:06,546 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4831, Test RMSE: 3.3657, Test MAPE: 0.0330 -2022-02-08 12:59:06,547 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5564, Test RMSE: 3.5780, Test MAPE: 0.0353 -2022-02-08 12:59:06,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6163, Test RMSE: 3.7480, Test MAPE: 0.0372 -2022-02-08 12:59:06,549 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6658, Test RMSE: 3.8814, Test MAPE: 0.0388 -2022-02-08 12:59:06,550 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7098, Test RMSE: 3.9813, Test MAPE: 0.0401 -2022-02-08 12:59:06,551 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7495, Test RMSE: 4.0673, Test MAPE: 0.0413 -2022-02-08 12:59:06,552 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 4.8132, Test RMSE: 8.9197, Test MAPE: 0.1289 -2022-02-08 12:59:06,553 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 4.7713, Test RMSE: 9.0021, Test MAPE: 0.1291 -2022-02-08 12:59:06,554 - easytorch-training - INFO - test:: [test_time: -200.20 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 12:59:08,204 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_059.pt saved -2022-02-08 12:59:08,204 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:34 -2022-02-08 12:59:08,204 - easytorch-training - INFO - epoch 60 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.12s/it] -2022-02-08 13:09:49,451 - easytorch-training - INFO - train:: [train_loss: 1.3623, train_MAPE: 0.0449, train_RMSE: 4.4770, train_time: 641.25 (s), lr: 2.50e-04] -2022-02-08 13:11:37,627 - easytorch-training - INFO - val:: [val_time: 108.17 (s), val_loss: 2.1255, val_MAPE: 0.0530, val_RMSE: 4.4346] -2022-02-08 13:14:58,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8346, Test RMSE: 1.6080, Test MAPE: 0.0159 -2022-02-08 13:14:58,413 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0904, Test RMSE: 2.2365, Test MAPE: 0.0217 -2022-02-08 13:14:58,414 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2606, Test RMSE: 2.7150, Test MAPE: 0.0259 -2022-02-08 13:14:58,416 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3848, Test RMSE: 3.0760, Test MAPE: 0.0294 -2022-02-08 13:14:58,417 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4773, Test RMSE: 3.3476, Test MAPE: 0.0321 -2022-02-08 13:14:58,418 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5514, Test RMSE: 3.5561, Test MAPE: 0.0345 -2022-02-08 13:14:58,420 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6111, Test RMSE: 3.7201, Test MAPE: 0.0364 -2022-02-08 13:14:58,421 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6606, Test RMSE: 3.8526, Test MAPE: 0.0380 -2022-02-08 13:14:58,422 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7043, Test RMSE: 3.9576, Test MAPE: 0.0395 -2022-02-08 13:14:58,424 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7443, Test RMSE: 4.0433, Test MAPE: 0.0407 -2022-02-08 13:14:58,425 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 5.0140, Test RMSE: 9.1265, Test MAPE: 0.1330 -2022-02-08 13:14:58,426 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 4.9684, Test RMSE: 9.1772, Test MAPE: 0.1329 -2022-02-08 13:14:58,427 - easytorch-training - INFO - test:: [test_time: -200.79 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 13:15:00,538 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_060.pt saved -2022-02-08 13:15:00,545 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:45 -2022-02-08 13:15:00,545 - easytorch-training - INFO - epoch 61 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:44<00:00, 1.13s/it] -2022-02-08 13:25:45,503 - easytorch-training - INFO - train:: [train_loss: 1.3999, train_MAPE: 0.0380, train_RMSE: 3.9077, train_time: 644.96 (s), lr: 2.50e-04] -2022-02-08 13:27:26,355 - easytorch-training - INFO - val:: [val_time: 100.84 (s), val_loss: 1.8470, val_MAPE: 0.0436, val_RMSE: 3.9040] -2022-02-08 13:30:46,032 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8342, Test RMSE: 1.6064, Test MAPE: 0.0158 -2022-02-08 13:30:46,035 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0908, Test RMSE: 2.2384, Test MAPE: 0.0216 -2022-02-08 13:30:46,036 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2625, Test RMSE: 2.7204, Test MAPE: 0.0259 -2022-02-08 13:30:46,037 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3887, Test RMSE: 3.0884, Test MAPE: 0.0292 -2022-02-08 13:30:46,039 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4826, Test RMSE: 3.3646, Test MAPE: 0.0319 -2022-02-08 13:30:46,040 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5593, Test RMSE: 3.5782, Test MAPE: 0.0340 -2022-02-08 13:30:46,041 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6217, Test RMSE: 3.7472, Test MAPE: 0.0357 -2022-02-08 13:30:46,042 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6728, Test RMSE: 3.8815, Test MAPE: 0.0372 -2022-02-08 13:30:46,043 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7176, Test RMSE: 3.9887, Test MAPE: 0.0385 -2022-02-08 13:30:46,044 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7598, Test RMSE: 4.0813, Test MAPE: 0.0396 -2022-02-08 13:30:46,045 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.8033, Test RMSE: 4.1596, Test MAPE: 0.0410 -2022-02-08 13:30:46,046 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 5.1541, Test RMSE: 9.3249, Test MAPE: 0.1362 -2022-02-08 13:30:46,046 - easytorch-training - INFO - test:: [test_time: -199.68 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 13:30:47,446 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_061.pt saved -2022-02-08 13:30:47,447 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:46 -2022-02-08 13:30:47,447 - easytorch-training - INFO - epoch 62 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 13:41:28,232 - easytorch-training - INFO - train:: [train_loss: 1.3855, train_MAPE: 0.0379, train_RMSE: 3.9016, train_time: 640.78 (s), lr: 2.50e-04] -2022-02-08 13:43:09,490 - easytorch-training - INFO - val:: [val_time: 101.25 (s), val_loss: 1.8669, val_MAPE: 0.0453, val_RMSE: 3.9536] -2022-02-08 13:46:28,863 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8409, Test RMSE: 1.6121, Test MAPE: 0.0163 -2022-02-08 13:46:28,872 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0962, Test RMSE: 2.2396, Test MAPE: 0.0222 -2022-02-08 13:46:28,873 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2683, Test RMSE: 2.7285, Test MAPE: 0.0266 -2022-02-08 13:46:28,874 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3968, Test RMSE: 3.1065, Test MAPE: 0.0303 -2022-02-08 13:46:28,875 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4931, Test RMSE: 3.3941, Test MAPE: 0.0333 -2022-02-08 13:46:28,876 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5657, Test RMSE: 3.6071, Test MAPE: 0.0356 -2022-02-08 13:46:28,877 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6266, Test RMSE: 3.7791, Test MAPE: 0.0375 -2022-02-08 13:46:28,878 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6766, Test RMSE: 3.9145, Test MAPE: 0.0392 -2022-02-08 13:46:28,879 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7206, Test RMSE: 4.0206, Test MAPE: 0.0407 -2022-02-08 13:46:28,881 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7560, Test RMSE: 4.0997, Test MAPE: 0.0418 -2022-02-08 13:46:28,882 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7904, Test RMSE: 4.1641, Test MAPE: 0.0430 -2022-02-08 13:46:28,883 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 5.3265, Test RMSE: 9.4618, Test MAPE: 0.1393 -2022-02-08 13:46:28,883 - easytorch-training - INFO - test:: [test_time: -199.39 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 13:46:30,975 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_062.pt saved -2022-02-08 13:46:30,976 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:42 -2022-02-08 13:46:30,976 - easytorch-training - INFO - epoch 63 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 13:57:13,880 - easytorch-training - INFO - train:: [train_loss: 1.3893, train_MAPE: 0.0383, train_RMSE: 3.9362, train_time: 642.90 (s), lr: 2.50e-04] -2022-02-08 13:58:56,279 - easytorch-training - INFO - val:: [val_time: 102.39 (s), val_loss: 1.8661, val_MAPE: 0.0449, val_RMSE: 3.9647] -2022-02-08 14:02:17,104 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8373, Test RMSE: 1.6064, Test MAPE: 0.0162 -2022-02-08 14:02:17,112 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0931, Test RMSE: 2.2368, Test MAPE: 0.0221 -2022-02-08 14:02:17,113 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2658, Test RMSE: 2.7269, Test MAPE: 0.0265 -2022-02-08 14:02:17,114 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3922, Test RMSE: 3.1037, Test MAPE: 0.0300 -2022-02-08 14:02:17,115 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4862, Test RMSE: 3.3886, Test MAPE: 0.0329 -2022-02-08 14:02:17,116 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5594, Test RMSE: 3.6060, Test MAPE: 0.0352 -2022-02-08 14:02:17,117 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6189, Test RMSE: 3.7766, Test MAPE: 0.0371 -2022-02-08 14:02:17,118 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6672, Test RMSE: 3.9104, Test MAPE: 0.0386 -2022-02-08 14:02:17,120 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7074, Test RMSE: 4.0119, Test MAPE: 0.0399 -2022-02-08 14:02:17,121 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7425, Test RMSE: 4.0928, Test MAPE: 0.0409 -2022-02-08 14:02:17,122 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7753, Test RMSE: 4.1557, Test MAPE: 0.0419 -2022-02-08 14:02:17,123 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 5.4663, Test RMSE: 9.5545, Test MAPE: 0.1416 -2022-02-08 14:02:17,123 - easytorch-training - INFO - test:: [test_time: -200.83 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 14:02:18,611 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_063.pt saved -2022-02-08 14:02:18,612 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:44 -2022-02-08 14:02:18,612 - easytorch-training - INFO - epoch 64 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:46<00:00, 1.13s/it] -2022-02-08 14:13:04,763 - easytorch-training - INFO - train:: [train_loss: 1.4296, train_MAPE: 0.0307, train_RMSE: 3.1308, train_time: 646.15 (s), lr: 2.50e-04] -2022-02-08 14:14:47,445 - easytorch-training - INFO - val:: [val_time: 102.68 (s), val_loss: 1.5350, val_MAPE: 0.0344, val_RMSE: 3.1823] -2022-02-08 14:18:06,065 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8378, Test RMSE: 1.6105, Test MAPE: 0.0159 -2022-02-08 14:18:06,066 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0957, Test RMSE: 2.2478, Test MAPE: 0.0218 -2022-02-08 14:18:06,067 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2669, Test RMSE: 2.7377, Test MAPE: 0.0261 -2022-02-08 14:18:06,068 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3937, Test RMSE: 3.1115, Test MAPE: 0.0295 -2022-02-08 14:18:06,069 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4875, Test RMSE: 3.3898, Test MAPE: 0.0322 -2022-02-08 14:18:06,070 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5597, Test RMSE: 3.5991, Test MAPE: 0.0344 -2022-02-08 14:18:06,072 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6188, Test RMSE: 3.7628, Test MAPE: 0.0362 -2022-02-08 14:18:06,073 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6674, Test RMSE: 3.8913, Test MAPE: 0.0377 -2022-02-08 14:18:06,074 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7097, Test RMSE: 3.9958, Test MAPE: 0.0389 -2022-02-08 14:18:06,075 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7458, Test RMSE: 4.0802, Test MAPE: 0.0399 -2022-02-08 14:18:06,076 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7805, Test RMSE: 4.1526, Test MAPE: 0.0409 -2022-02-08 14:18:06,077 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8191, Test RMSE: 4.2227, Test MAPE: 0.0422 -2022-02-08 14:18:06,077 - easytorch-training - INFO - test:: [test_time: -198.63 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 14:18:07,845 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_064.pt saved -2022-02-08 14:18:07,846 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:49 -2022-02-08 14:18:07,846 - easytorch-training - INFO - epoch 65 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 14:28:48,423 - easytorch-training - INFO - train:: [train_loss: 1.4093, train_MAPE: 0.0300, train_RMSE: 3.0821, train_time: 640.58 (s), lr: 2.50e-04] -2022-02-08 14:30:32,759 - easytorch-training - INFO - val:: [val_time: 104.33 (s), val_loss: 1.5348, val_MAPE: 0.0349, val_RMSE: 3.1691] -2022-02-08 14:34:06,561 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8375, Test RMSE: 1.6048, Test MAPE: 0.0160 -2022-02-08 14:34:06,563 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0967, Test RMSE: 2.2386, Test MAPE: 0.0220 -2022-02-08 14:34:06,564 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2719, Test RMSE: 2.7329, Test MAPE: 0.0266 -2022-02-08 14:34:06,565 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3999, Test RMSE: 3.1105, Test MAPE: 0.0302 -2022-02-08 14:34:06,566 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4931, Test RMSE: 3.3896, Test MAPE: 0.0330 -2022-02-08 14:34:06,567 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5665, Test RMSE: 3.6027, Test MAPE: 0.0352 -2022-02-08 14:34:06,568 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6269, Test RMSE: 3.7698, Test MAPE: 0.0371 -2022-02-08 14:34:06,569 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6780, Test RMSE: 3.9036, Test MAPE: 0.0385 -2022-02-08 14:34:06,570 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7202, Test RMSE: 4.0142, Test MAPE: 0.0398 -2022-02-08 14:34:06,571 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7580, Test RMSE: 4.1037, Test MAPE: 0.0408 -2022-02-08 14:34:06,572 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7906, Test RMSE: 4.1718, Test MAPE: 0.0417 -2022-02-08 14:34:06,574 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8217, Test RMSE: 4.2260, Test MAPE: 0.0427 -2022-02-08 14:34:06,574 - easytorch-training - INFO - test:: [test_time: -213.81 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 14:34:07,990 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_065.pt saved -2022-02-08 14:34:07,990 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:11 -2022-02-08 14:34:07,990 - easytorch-training - INFO - epoch 66 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 14:44:51,156 - easytorch-training - INFO - train:: [train_loss: 1.4060, train_MAPE: 0.0299, train_RMSE: 3.0711, train_time: 643.17 (s), lr: 2.50e-04] -2022-02-08 14:46:33,218 - easytorch-training - INFO - val:: [val_time: 102.06 (s), val_loss: 1.5293, val_MAPE: 0.0342, val_RMSE: 3.1655] -2022-02-08 14:49:53,202 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8345, Test RMSE: 1.6080, Test MAPE: 0.0159 -2022-02-08 14:49:53,204 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0898, Test RMSE: 2.2375, Test MAPE: 0.0217 -2022-02-08 14:49:53,205 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2604, Test RMSE: 2.7201, Test MAPE: 0.0259 -2022-02-08 14:49:53,206 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3854, Test RMSE: 3.0860, Test MAPE: 0.0293 -2022-02-08 14:49:53,207 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4788, Test RMSE: 3.3587, Test MAPE: 0.0319 -2022-02-08 14:49:53,208 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5529, Test RMSE: 3.5655, Test MAPE: 0.0341 -2022-02-08 14:49:53,209 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6138, Test RMSE: 3.7294, Test MAPE: 0.0359 -2022-02-08 14:49:53,210 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6633, Test RMSE: 3.8606, Test MAPE: 0.0374 -2022-02-08 14:49:53,211 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7049, Test RMSE: 3.9647, Test MAPE: 0.0386 -2022-02-08 14:49:53,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7419, Test RMSE: 4.0530, Test MAPE: 0.0397 -2022-02-08 14:49:53,214 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7759, Test RMSE: 4.1285, Test MAPE: 0.0406 -2022-02-08 14:49:53,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8158, Test RMSE: 4.2058, Test MAPE: 0.0416 -2022-02-08 14:49:53,215 - easytorch-training - INFO - test:: [test_time: -199.99 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 14:49:54,618 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_066.pt saved -2022-02-08 14:49:54,618 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:11 -2022-02-08 14:49:54,618 - easytorch-training - INFO - epoch 67 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 15:00:35,619 - easytorch-training - INFO - train:: [train_loss: 1.4061, train_MAPE: 0.0299, train_RMSE: 3.0773, train_time: 641.00 (s), lr: 2.50e-04] -2022-02-08 15:02:18,263 - easytorch-training - INFO - val:: [val_time: 102.64 (s), val_loss: 1.5237, val_MAPE: 0.0342, val_RMSE: 3.1709] -2022-02-08 15:05:36,346 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8343, Test RMSE: 1.6096, Test MAPE: 0.0159 -2022-02-08 15:05:36,347 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0912, Test RMSE: 2.2470, Test MAPE: 0.0217 -2022-02-08 15:05:36,348 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2636, Test RMSE: 2.7375, Test MAPE: 0.0261 -2022-02-08 15:05:36,349 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3895, Test RMSE: 3.1084, Test MAPE: 0.0296 -2022-02-08 15:05:36,350 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4824, Test RMSE: 3.3855, Test MAPE: 0.0323 -2022-02-08 15:05:36,351 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5557, Test RMSE: 3.5999, Test MAPE: 0.0346 -2022-02-08 15:05:36,352 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6154, Test RMSE: 3.7675, Test MAPE: 0.0364 -2022-02-08 15:05:36,353 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6646, Test RMSE: 3.8995, Test MAPE: 0.0379 -2022-02-08 15:05:36,355 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7067, Test RMSE: 4.0046, Test MAPE: 0.0391 -2022-02-08 15:05:36,356 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7429, Test RMSE: 4.0891, Test MAPE: 0.0401 -2022-02-08 15:05:36,357 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7763, Test RMSE: 4.1590, Test MAPE: 0.0410 -2022-02-08 15:05:36,358 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8110, Test RMSE: 4.2235, Test MAPE: 0.0420 -2022-02-08 15:05:36,358 - easytorch-training - INFO - test:: [test_time: -198.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 15:05:37,732 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_067.pt saved -2022-02-08 15:05:37,732 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:06 -2022-02-08 15:05:37,732 - easytorch-training - INFO - epoch 68 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 15:16:21,238 - easytorch-training - INFO - train:: [train_loss: 1.4036, train_MAPE: 0.0299, train_RMSE: 3.0699, train_time: 643.51 (s), lr: 2.50e-04] -2022-02-08 15:18:02,923 - easytorch-training - INFO - val:: [val_time: 101.68 (s), val_loss: 1.5300, val_MAPE: 0.0352, val_RMSE: 3.1815] -2022-02-08 15:21:22,656 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8382, Test RMSE: 1.6119, Test MAPE: 0.0160 -2022-02-08 15:21:22,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0955, Test RMSE: 2.2458, Test MAPE: 0.0219 -2022-02-08 15:21:22,659 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2679, Test RMSE: 2.7343, Test MAPE: 0.0263 -2022-02-08 15:21:22,660 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3969, Test RMSE: 3.1142, Test MAPE: 0.0300 -2022-02-08 15:21:22,661 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4932, Test RMSE: 3.4062, Test MAPE: 0.0330 -2022-02-08 15:21:22,662 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5709, Test RMSE: 3.6348, Test MAPE: 0.0355 -2022-02-08 15:21:22,663 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6311, Test RMSE: 3.8090, Test MAPE: 0.0375 -2022-02-08 15:21:22,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6793, Test RMSE: 3.9404, Test MAPE: 0.0391 -2022-02-08 15:21:22,665 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7186, Test RMSE: 4.0401, Test MAPE: 0.0403 -2022-02-08 15:21:22,667 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7527, Test RMSE: 4.1213, Test MAPE: 0.0414 -2022-02-08 15:21:22,668 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7850, Test RMSE: 4.1870, Test MAPE: 0.0425 -2022-02-08 15:21:22,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8157, Test RMSE: 4.2424, Test MAPE: 0.0435 -2022-02-08 15:21:22,669 - easytorch-training - INFO - test:: [test_time: -199.74 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 15:21:24,799 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_068.pt saved -2022-02-08 15:21:24,800 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:07 -2022-02-08 15:21:24,800 - easytorch-training - INFO - epoch 69 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 15:32:08,737 - easytorch-training - INFO - train:: [train_loss: 1.4115, train_MAPE: 0.0302, train_RMSE: 3.0932, train_time: 643.94 (s), lr: 2.50e-04] -2022-02-08 15:33:50,748 - easytorch-training - INFO - val:: [val_time: 102.01 (s), val_loss: 1.5265, val_MAPE: 0.0342, val_RMSE: 3.1562] -2022-02-08 15:37:13,893 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8360, Test RMSE: 1.6092, Test MAPE: 0.0159 -2022-02-08 15:37:13,894 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0928, Test RMSE: 2.2414, Test MAPE: 0.0217 -2022-02-08 15:37:13,895 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2651, Test RMSE: 2.7245, Test MAPE: 0.0260 -2022-02-08 15:37:13,896 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3920, Test RMSE: 3.0900, Test MAPE: 0.0294 -2022-02-08 15:37:13,897 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4856, Test RMSE: 3.3649, Test MAPE: 0.0321 -2022-02-08 15:37:13,898 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5599, Test RMSE: 3.5763, Test MAPE: 0.0343 -2022-02-08 15:37:13,899 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6199, Test RMSE: 3.7419, Test MAPE: 0.0361 -2022-02-08 15:37:13,901 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6699, Test RMSE: 3.8730, Test MAPE: 0.0376 -2022-02-08 15:37:13,902 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7121, Test RMSE: 3.9775, Test MAPE: 0.0389 -2022-02-08 15:37:13,903 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7486, Test RMSE: 4.0620, Test MAPE: 0.0399 -2022-02-08 15:37:13,904 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7815, Test RMSE: 4.1358, Test MAPE: 0.0408 -2022-02-08 15:37:13,905 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8152, Test RMSE: 4.2025, Test MAPE: 0.0417 -2022-02-08 15:37:13,905 - easytorch-training - INFO - test:: [test_time: -203.15 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 15:37:15,341 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_069.pt saved -2022-02-08 15:37:15,342 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:13 -2022-02-08 15:37:15,342 - easytorch-training - INFO - epoch 70 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:37<00:00, 1.12s/it] -2022-02-08 15:47:52,737 - easytorch-training - INFO - train:: [train_loss: 1.4135, train_MAPE: 0.0302, train_RMSE: 3.0919, train_time: 637.40 (s), lr: 2.50e-04] -2022-02-08 15:49:33,548 - easytorch-training - INFO - val:: [val_time: 100.81 (s), val_loss: 1.5293, val_MAPE: 0.0351, val_RMSE: 3.1639] -2022-02-08 15:52:57,500 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8401, Test RMSE: 1.6102, Test MAPE: 0.0162 -2022-02-08 15:52:57,507 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0966, Test RMSE: 2.2388, Test MAPE: 0.0221 -2022-02-08 15:52:57,508 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2684, Test RMSE: 2.7229, Test MAPE: 0.0265 -2022-02-08 15:52:57,510 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3946, Test RMSE: 3.0935, Test MAPE: 0.0301 -2022-02-08 15:52:57,511 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4883, Test RMSE: 3.3731, Test MAPE: 0.0330 -2022-02-08 15:52:57,512 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5605, Test RMSE: 3.5843, Test MAPE: 0.0353 -2022-02-08 15:52:57,513 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6185, Test RMSE: 3.7458, Test MAPE: 0.0371 -2022-02-08 15:52:57,514 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6658, Test RMSE: 3.8708, Test MAPE: 0.0385 -2022-02-08 15:52:57,515 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7061, Test RMSE: 3.9709, Test MAPE: 0.0397 -2022-02-08 15:52:57,516 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7409, Test RMSE: 4.0537, Test MAPE: 0.0407 -2022-02-08 15:52:57,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7720, Test RMSE: 4.1246, Test MAPE: 0.0415 -2022-02-08 15:52:57,518 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8047, Test RMSE: 4.1896, Test MAPE: 0.0425 -2022-02-08 15:52:57,518 - easytorch-training - INFO - test:: [test_time: -203.97 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 15:52:59,453 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_070.pt saved -2022-02-08 15:52:59,457 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:10 -2022-02-08 15:52:59,457 - easytorch-training - INFO - epoch 71 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 16:03:42,261 - easytorch-training - INFO - train:: [train_loss: 1.4078, train_MAPE: 0.0301, train_RMSE: 3.0768, train_time: 642.80 (s), lr: 2.50e-04] -2022-02-08 16:05:23,070 - easytorch-training - INFO - val:: [val_time: 100.80 (s), val_loss: 1.5218, val_MAPE: 0.0346, val_RMSE: 3.1815] -2022-02-08 16:08:41,981 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8349, Test RMSE: 1.6108, Test MAPE: 0.0159 -2022-02-08 16:08:41,989 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0913, Test RMSE: 2.2464, Test MAPE: 0.0217 -2022-02-08 16:08:41,990 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2628, Test RMSE: 2.7373, Test MAPE: 0.0260 -2022-02-08 16:08:41,991 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3886, Test RMSE: 3.1110, Test MAPE: 0.0296 -2022-02-08 16:08:41,992 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4830, Test RMSE: 3.3943, Test MAPE: 0.0324 -2022-02-08 16:08:41,993 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5583, Test RMSE: 3.6141, Test MAPE: 0.0348 -2022-02-08 16:08:41,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6189, Test RMSE: 3.7869, Test MAPE: 0.0368 -2022-02-08 16:08:41,995 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6689, Test RMSE: 3.9254, Test MAPE: 0.0384 -2022-02-08 16:08:41,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7102, Test RMSE: 4.0324, Test MAPE: 0.0397 -2022-02-08 16:08:41,997 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7459, Test RMSE: 4.1202, Test MAPE: 0.0409 -2022-02-08 16:08:41,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7792, Test RMSE: 4.1965, Test MAPE: 0.0419 -2022-02-08 16:08:42,000 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8117, Test RMSE: 4.2614, Test MAPE: 0.0429 -2022-02-08 16:08:42,000 - easytorch-training - INFO - test:: [test_time: -198.92 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 16:08:44,022 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_071.pt saved -2022-02-08 16:08:44,022 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:08 -2022-02-08 16:08:44,023 - easytorch-training - INFO - epoch 72 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:46<00:00, 1.13s/it] -2022-02-08 16:19:30,087 - easytorch-training - INFO - train:: [train_loss: 1.3964, train_MAPE: 0.0297, train_RMSE: 3.0582, train_time: 646.06 (s), lr: 2.50e-04] -2022-02-08 16:21:11,251 - easytorch-training - INFO - val:: [val_time: 101.16 (s), val_loss: 1.5227, val_MAPE: 0.0339, val_RMSE: 3.1575] -2022-02-08 16:24:32,564 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8363, Test RMSE: 1.6059, Test MAPE: 0.0159 -2022-02-08 16:24:32,572 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0913, Test RMSE: 2.2400, Test MAPE: 0.0216 -2022-02-08 16:24:32,573 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2620, Test RMSE: 2.7278, Test MAPE: 0.0258 -2022-02-08 16:24:32,574 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3881, Test RMSE: 3.0989, Test MAPE: 0.0292 -2022-02-08 16:24:32,575 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4812, Test RMSE: 3.3727, Test MAPE: 0.0318 -2022-02-08 16:24:32,576 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5543, Test RMSE: 3.5820, Test MAPE: 0.0340 -2022-02-08 16:24:32,577 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6152, Test RMSE: 3.7473, Test MAPE: 0.0357 -2022-02-08 16:24:32,578 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6638, Test RMSE: 3.8742, Test MAPE: 0.0372 -2022-02-08 16:24:32,579 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7066, Test RMSE: 3.9783, Test MAPE: 0.0385 -2022-02-08 16:24:32,581 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7431, Test RMSE: 4.0656, Test MAPE: 0.0396 -2022-02-08 16:24:32,582 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7777, Test RMSE: 4.1444, Test MAPE: 0.0406 -2022-02-08 16:24:32,583 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8127, Test RMSE: 4.2200, Test MAPE: 0.0415 -2022-02-08 16:24:32,583 - easytorch-training - INFO - test:: [test_time: -201.32 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 16:24:33,979 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_072.pt saved -2022-02-08 16:24:33,980 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:13 -2022-02-08 16:24:33,980 - easytorch-training - INFO - epoch 73 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.12s/it] -2022-02-08 16:35:15,209 - easytorch-training - INFO - train:: [train_loss: 1.3984, train_MAPE: 0.0298, train_RMSE: 3.0631, train_time: 641.23 (s), lr: 1.25e-04] -2022-02-08 16:36:56,603 - easytorch-training - INFO - val:: [val_time: 101.39 (s), val_loss: 1.5280, val_MAPE: 0.0352, val_RMSE: 3.1840] -2022-02-08 16:40:15,397 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8376, Test RMSE: 1.6075, Test MAPE: 0.0161 -2022-02-08 16:40:15,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0966, Test RMSE: 2.2448, Test MAPE: 0.0222 -2022-02-08 16:40:15,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2705, Test RMSE: 2.7438, Test MAPE: 0.0267 -2022-02-08 16:40:15,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3990, Test RMSE: 3.1300, Test MAPE: 0.0304 -2022-02-08 16:40:15,408 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4951, Test RMSE: 3.4206, Test MAPE: 0.0334 -2022-02-08 16:40:15,409 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5702, Test RMSE: 3.6429, Test MAPE: 0.0357 -2022-02-08 16:40:15,410 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6306, Test RMSE: 3.8182, Test MAPE: 0.0376 -2022-02-08 16:40:15,411 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6797, Test RMSE: 3.9530, Test MAPE: 0.0392 -2022-02-08 16:40:15,412 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7195, Test RMSE: 4.0527, Test MAPE: 0.0403 -2022-02-08 16:40:15,413 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7529, Test RMSE: 4.1307, Test MAPE: 0.0413 -2022-02-08 16:40:15,414 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7816, Test RMSE: 4.1939, Test MAPE: 0.0421 -2022-02-08 16:40:15,415 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8111, Test RMSE: 4.2498, Test MAPE: 0.0430 -2022-02-08 16:40:15,416 - easytorch-training - INFO - test:: [test_time: -198.81 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 16:40:16,848 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_073.pt saved -2022-02-08 16:40:16,848 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:08 -2022-02-08 16:40:16,848 - easytorch-training - INFO - epoch 74 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:45<00:00, 1.13s/it] -2022-02-08 16:51:02,395 - easytorch-training - INFO - train:: [train_loss: 1.3905, train_MAPE: 0.0295, train_RMSE: 3.0421, train_time: 645.55 (s), lr: 1.25e-04] -2022-02-08 16:52:43,631 - easytorch-training - INFO - val:: [val_time: 101.23 (s), val_loss: 1.5184, val_MAPE: 0.0347, val_RMSE: 3.1595] -2022-02-08 16:56:03,139 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8343, Test RMSE: 1.6051, Test MAPE: 0.0159 -2022-02-08 16:56:03,140 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0903, Test RMSE: 2.2378, Test MAPE: 0.0218 -2022-02-08 16:56:03,141 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2607, Test RMSE: 2.7234, Test MAPE: 0.0262 -2022-02-08 16:56:03,142 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3849, Test RMSE: 3.0897, Test MAPE: 0.0297 -2022-02-08 16:56:03,143 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4772, Test RMSE: 3.3638, Test MAPE: 0.0326 -2022-02-08 16:56:03,144 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5491, Test RMSE: 3.5734, Test MAPE: 0.0348 -2022-02-08 16:56:03,146 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6073, Test RMSE: 3.7386, Test MAPE: 0.0367 -2022-02-08 16:56:03,147 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6555, Test RMSE: 3.8682, Test MAPE: 0.0383 -2022-02-08 16:56:03,148 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.6959, Test RMSE: 3.9721, Test MAPE: 0.0396 -2022-02-08 16:56:03,149 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7306, Test RMSE: 4.0563, Test MAPE: 0.0406 -2022-02-08 16:56:03,150 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7617, Test RMSE: 4.1275, Test MAPE: 0.0415 -2022-02-08 16:56:03,151 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7934, Test RMSE: 4.1931, Test MAPE: 0.0424 -2022-02-08 16:56:03,151 - easytorch-training - INFO - test:: [test_time: -199.52 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 16:56:05,142 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_074.pt saved -2022-02-08 16:56:05,143 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:10 -2022-02-08 16:56:05,143 - easytorch-training - INFO - epoch 75 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:39<00:00, 1.12s/it] -2022-02-08 17:06:44,587 - easytorch-training - INFO - train:: [train_loss: 1.3935, train_MAPE: 0.0296, train_RMSE: 3.0429, train_time: 639.44 (s), lr: 1.25e-04] -2022-02-08 17:08:25,524 - easytorch-training - INFO - val:: [val_time: 100.93 (s), val_loss: 1.5188, val_MAPE: 0.0345, val_RMSE: 3.1595] -2022-02-08 17:11:46,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8361, Test RMSE: 1.6068, Test MAPE: 0.0160 -2022-02-08 17:11:46,254 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0928, Test RMSE: 2.2391, Test MAPE: 0.0220 -2022-02-08 17:11:46,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2642, Test RMSE: 2.7295, Test MAPE: 0.0264 -2022-02-08 17:11:46,256 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3898, Test RMSE: 3.1037, Test MAPE: 0.0299 -2022-02-08 17:11:46,258 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4827, Test RMSE: 3.3822, Test MAPE: 0.0327 -2022-02-08 17:11:46,259 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5557, Test RMSE: 3.5949, Test MAPE: 0.0350 -2022-02-08 17:11:46,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6143, Test RMSE: 3.7617, Test MAPE: 0.0368 -2022-02-08 17:11:46,261 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6623, Test RMSE: 3.8905, Test MAPE: 0.0383 -2022-02-08 17:11:46,262 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7026, Test RMSE: 3.9921, Test MAPE: 0.0395 -2022-02-08 17:11:46,263 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7373, Test RMSE: 4.0767, Test MAPE: 0.0405 -2022-02-08 17:11:46,264 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7689, Test RMSE: 4.1490, Test MAPE: 0.0414 -2022-02-08 17:11:46,265 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8010, Test RMSE: 4.2160, Test MAPE: 0.0423 -2022-02-08 17:11:46,265 - easytorch-training - INFO - test:: [test_time: -200.72 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 17:11:47,648 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_075.pt saved -2022-02-08 17:11:47,648 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:05 -2022-02-08 17:11:47,648 - easytorch-training - INFO - epoch 76 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:38<00:00, 1.12s/it] -2022-02-08 17:22:25,899 - easytorch-training - INFO - train:: [train_loss: 1.3905, train_MAPE: 0.0296, train_RMSE: 3.0395, train_time: 638.25 (s), lr: 1.25e-04] -2022-02-08 17:24:09,223 - easytorch-training - INFO - val:: [val_time: 103.32 (s), val_loss: 1.5169, val_MAPE: 0.0341, val_RMSE: 3.1535] -2022-02-08 17:27:29,147 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8339, Test RMSE: 1.6070, Test MAPE: 0.0158 -2022-02-08 17:27:29,149 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0899, Test RMSE: 2.2399, Test MAPE: 0.0216 -2022-02-08 17:27:29,150 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2597, Test RMSE: 2.7231, Test MAPE: 0.0259 -2022-02-08 17:27:29,151 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3840, Test RMSE: 3.0886, Test MAPE: 0.0294 -2022-02-08 17:27:29,152 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4768, Test RMSE: 3.3652, Test MAPE: 0.0321 -2022-02-08 17:27:29,153 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5492, Test RMSE: 3.5755, Test MAPE: 0.0343 -2022-02-08 17:27:29,154 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6083, Test RMSE: 3.7399, Test MAPE: 0.0361 -2022-02-08 17:27:29,155 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6564, Test RMSE: 3.8669, Test MAPE: 0.0375 -2022-02-08 17:27:29,156 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.6974, Test RMSE: 3.9686, Test MAPE: 0.0388 -2022-02-08 17:27:29,157 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7332, Test RMSE: 4.0529, Test MAPE: 0.0398 -2022-02-08 17:27:29,159 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7647, Test RMSE: 4.1244, Test MAPE: 0.0408 -2022-02-08 17:27:29,160 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7975, Test RMSE: 4.1920, Test MAPE: 0.0416 -2022-02-08 17:27:29,160 - easytorch-training - INFO - test:: [test_time: -199.93 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 17:27:30,569 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_076.pt saved -2022-02-08 17:27:30,570 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:01 -2022-02-08 17:27:30,570 - easytorch-training - INFO - epoch 77 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 17:38:12,726 - easytorch-training - INFO - train:: [train_loss: 1.3928, train_MAPE: 0.0296, train_RMSE: 3.0468, train_time: 642.16 (s), lr: 1.25e-04] -2022-02-08 17:39:54,034 - easytorch-training - INFO - val:: [val_time: 101.30 (s), val_loss: 1.5224, val_MAPE: 0.0350, val_RMSE: 3.1790] -2022-02-08 17:43:13,874 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8356, Test RMSE: 1.6052, Test MAPE: 0.0159 -2022-02-08 17:43:13,882 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0932, Test RMSE: 2.2423, Test MAPE: 0.0220 -2022-02-08 17:43:13,883 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2661, Test RMSE: 2.7395, Test MAPE: 0.0265 -2022-02-08 17:43:13,884 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3933, Test RMSE: 3.1209, Test MAPE: 0.0302 -2022-02-08 17:43:13,885 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4873, Test RMSE: 3.4080, Test MAPE: 0.0331 -2022-02-08 17:43:13,886 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5597, Test RMSE: 3.6197, Test MAPE: 0.0353 -2022-02-08 17:43:13,888 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6171, Test RMSE: 3.7819, Test MAPE: 0.0372 -2022-02-08 17:43:13,889 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6650, Test RMSE: 3.9068, Test MAPE: 0.0386 -2022-02-08 17:43:13,890 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7058, Test RMSE: 4.0064, Test MAPE: 0.0399 -2022-02-08 17:43:13,891 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7415, Test RMSE: 4.0891, Test MAPE: 0.0409 -2022-02-08 17:43:13,892 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7741, Test RMSE: 4.1608, Test MAPE: 0.0419 -2022-02-08 17:43:13,893 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8056, Test RMSE: 4.2229, Test MAPE: 0.0427 -2022-02-08 17:43:13,893 - easytorch-training - INFO - test:: [test_time: -199.85 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 17:43:15,275 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_077.pt saved -2022-02-08 17:43:15,276 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:59 -2022-02-08 17:43:15,276 - easytorch-training - INFO - epoch 78 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:37<00:00, 1.12s/it] -2022-02-08 17:53:52,657 - easytorch-training - INFO - train:: [train_loss: 1.3876, train_MAPE: 0.0295, train_RMSE: 3.0297, train_time: 637.38 (s), lr: 1.25e-04] -2022-02-08 17:55:33,576 - easytorch-training - INFO - val:: [val_time: 100.91 (s), val_loss: 1.5201, val_MAPE: 0.0347, val_RMSE: 3.1768] -2022-02-08 17:58:52,565 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8353, Test RMSE: 1.6127, Test MAPE: 0.0159 -2022-02-08 17:58:52,566 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0911, Test RMSE: 2.2471, Test MAPE: 0.0217 -2022-02-08 17:58:52,567 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2621, Test RMSE: 2.7365, Test MAPE: 0.0261 -2022-02-08 17:58:52,568 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3880, Test RMSE: 3.1085, Test MAPE: 0.0297 -2022-02-08 17:58:52,570 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4809, Test RMSE: 3.3877, Test MAPE: 0.0326 -2022-02-08 17:58:52,571 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5543, Test RMSE: 3.6025, Test MAPE: 0.0350 -2022-02-08 17:58:52,572 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6142, Test RMSE: 3.7727, Test MAPE: 0.0369 -2022-02-08 17:58:52,573 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6638, Test RMSE: 3.9079, Test MAPE: 0.0385 -2022-02-08 17:58:52,574 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7050, Test RMSE: 4.0148, Test MAPE: 0.0398 -2022-02-08 17:58:52,575 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7398, Test RMSE: 4.1006, Test MAPE: 0.0409 -2022-02-08 17:58:52,576 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7703, Test RMSE: 4.1712, Test MAPE: 0.0418 -2022-02-08 17:58:52,577 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8002, Test RMSE: 4.2311, Test MAPE: 0.0426 -2022-02-08 17:58:52,577 - easytorch-training - INFO - test:: [test_time: -199.00 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 17:58:54,537 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_078.pt saved -2022-02-08 17:58:54,538 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:50 -2022-02-08 17:58:54,538 - easytorch-training - INFO - epoch 79 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:42<00:00, 1.13s/it] -2022-02-08 18:09:37,484 - easytorch-training - INFO - train:: [train_loss: 1.3897, train_MAPE: 0.0295, train_RMSE: 3.0424, train_time: 642.95 (s), lr: 1.25e-04] -2022-02-08 18:11:20,551 - easytorch-training - INFO - val:: [val_time: 103.06 (s), val_loss: 1.5168, val_MAPE: 0.0344, val_RMSE: 3.1633] -2022-02-08 18:14:40,028 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8339, Test RMSE: 1.6076, Test MAPE: 0.0159 -2022-02-08 18:14:40,029 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0904, Test RMSE: 2.2413, Test MAPE: 0.0218 -2022-02-08 18:14:40,030 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2612, Test RMSE: 2.7292, Test MAPE: 0.0262 -2022-02-08 18:14:40,031 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3864, Test RMSE: 3.0995, Test MAPE: 0.0297 -2022-02-08 18:14:40,033 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4791, Test RMSE: 3.3789, Test MAPE: 0.0326 -2022-02-08 18:14:40,034 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5514, Test RMSE: 3.5904, Test MAPE: 0.0348 -2022-02-08 18:14:40,035 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6096, Test RMSE: 3.7559, Test MAPE: 0.0366 -2022-02-08 18:14:40,036 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6570, Test RMSE: 3.8849, Test MAPE: 0.0381 -2022-02-08 18:14:40,037 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.6969, Test RMSE: 3.9866, Test MAPE: 0.0393 -2022-02-08 18:14:40,038 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7318, Test RMSE: 4.0706, Test MAPE: 0.0403 -2022-02-08 18:14:40,039 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7633, Test RMSE: 4.1420, Test MAPE: 0.0411 -2022-02-08 18:14:40,040 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7957, Test RMSE: 4.2106, Test MAPE: 0.0420 -2022-02-08 18:14:40,040 - easytorch-training - INFO - test:: [test_time: -199.48 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 18:14:42,002 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_079.pt saved -2022-02-08 18:14:42,003 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:51 -2022-02-08 18:14:42,003 - easytorch-training - INFO - epoch 80 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:46<00:00, 1.13s/it] -2022-02-08 18:25:28,673 - easytorch-training - INFO - train:: [train_loss: 1.3902, train_MAPE: 0.0296, train_RMSE: 3.0367, train_time: 646.67 (s), lr: 1.25e-04] -2022-02-08 18:27:13,136 - easytorch-training - INFO - val:: [val_time: 104.46 (s), val_loss: 1.5203, val_MAPE: 0.0342, val_RMSE: 3.1720] -2022-02-08 18:30:32,618 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8344, Test RMSE: 1.6104, Test MAPE: 0.0159 -2022-02-08 18:30:32,620 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0913, Test RMSE: 2.2471, Test MAPE: 0.0217 -2022-02-08 18:30:32,621 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2632, Test RMSE: 2.7373, Test MAPE: 0.0260 -2022-02-08 18:30:32,622 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3891, Test RMSE: 3.1086, Test MAPE: 0.0295 -2022-02-08 18:30:32,623 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4823, Test RMSE: 3.3892, Test MAPE: 0.0322 -2022-02-08 18:30:32,625 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5548, Test RMSE: 3.6021, Test MAPE: 0.0344 -2022-02-08 18:30:32,626 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6135, Test RMSE: 3.7699, Test MAPE: 0.0363 -2022-02-08 18:30:32,627 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6616, Test RMSE: 3.9018, Test MAPE: 0.0377 -2022-02-08 18:30:32,628 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7030, Test RMSE: 4.0080, Test MAPE: 0.0390 -2022-02-08 18:30:32,629 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7382, Test RMSE: 4.0931, Test MAPE: 0.0400 -2022-02-08 18:30:32,630 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7699, Test RMSE: 4.1659, Test MAPE: 0.0409 -2022-02-08 18:30:32,631 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8014, Test RMSE: 4.2333, Test MAPE: 0.0417 -2022-02-08 18:30:32,631 - easytorch-training - INFO - test:: [test_time: -199.49 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 18:30:34,019 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_080.pt saved -2022-02-08 18:30:34,022 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:45:59 -2022-02-08 18:30:34,022 - easytorch-training - INFO - epoch 81 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:47<00:00, 1.14s/it] -2022-02-08 18:41:21,293 - easytorch-training - INFO - train:: [train_loss: 1.3898, train_MAPE: 0.0296, train_RMSE: 3.0364, train_time: 647.27 (s), lr: 1.25e-04] -2022-02-08 18:43:02,791 - easytorch-training - INFO - val:: [val_time: 101.49 (s), val_loss: 1.5183, val_MAPE: 0.0346, val_RMSE: 3.1625] -2022-02-08 18:46:26,446 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8370, Test RMSE: 1.6069, Test MAPE: 0.0159 -2022-02-08 18:46:26,448 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0931, Test RMSE: 2.2394, Test MAPE: 0.0218 -2022-02-08 18:46:26,449 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2645, Test RMSE: 2.7254, Test MAPE: 0.0262 -2022-02-08 18:46:26,450 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3896, Test RMSE: 3.0964, Test MAPE: 0.0298 -2022-02-08 18:46:26,451 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4824, Test RMSE: 3.3775, Test MAPE: 0.0326 -2022-02-08 18:46:26,452 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5554, Test RMSE: 3.5946, Test MAPE: 0.0349 -2022-02-08 18:46:26,453 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6140, Test RMSE: 3.7625, Test MAPE: 0.0368 -2022-02-08 18:46:26,454 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6613, Test RMSE: 3.8912, Test MAPE: 0.0382 -2022-02-08 18:46:26,455 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7015, Test RMSE: 3.9902, Test MAPE: 0.0394 -2022-02-08 18:46:26,456 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7358, Test RMSE: 4.0718, Test MAPE: 0.0404 -2022-02-08 18:46:26,457 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7666, Test RMSE: 4.1420, Test MAPE: 0.0413 -2022-02-08 18:46:26,459 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7987, Test RMSE: 4.2091, Test MAPE: 0.0422 -2022-02-08 18:46:26,459 - easytorch-training - INFO - test:: [test_time: -203.66 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 18:46:27,829 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_081.pt saved -2022-02-08 18:46:27,829 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:08 -2022-02-08 18:46:27,830 - easytorch-training - INFO - epoch 82 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:41<00:00, 1.13s/it] -2022-02-08 18:57:09,713 - easytorch-training - INFO - train:: [train_loss: 1.3899, train_MAPE: 0.0296, train_RMSE: 3.0429, train_time: 641.88 (s), lr: 1.25e-04] -2022-02-08 18:58:51,451 - easytorch-training - INFO - val:: [val_time: 101.73 (s), val_loss: 1.5214, val_MAPE: 0.0340, val_RMSE: 3.1685] -2022-02-08 19:02:11,677 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8351, Test RMSE: 1.6113, Test MAPE: 0.0159 -2022-02-08 19:02:11,678 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0914, Test RMSE: 2.2467, Test MAPE: 0.0216 -2022-02-08 19:02:11,679 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2626, Test RMSE: 2.7345, Test MAPE: 0.0258 -2022-02-08 19:02:11,680 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3872, Test RMSE: 3.1030, Test MAPE: 0.0292 -2022-02-08 19:02:11,681 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4797, Test RMSE: 3.3801, Test MAPE: 0.0319 -2022-02-08 19:02:11,682 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5526, Test RMSE: 3.5914, Test MAPE: 0.0341 -2022-02-08 19:02:11,684 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6122, Test RMSE: 3.7582, Test MAPE: 0.0359 -2022-02-08 19:02:11,685 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6609, Test RMSE: 3.8897, Test MAPE: 0.0374 -2022-02-08 19:02:11,686 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7020, Test RMSE: 3.9941, Test MAPE: 0.0386 -2022-02-08 19:02:11,687 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7370, Test RMSE: 4.0793, Test MAPE: 0.0397 -2022-02-08 19:02:11,688 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7676, Test RMSE: 4.1507, Test MAPE: 0.0406 -2022-02-08 19:02:11,689 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7975, Test RMSE: 4.2156, Test MAPE: 0.0415 -2022-02-08 19:02:11,689 - easytorch-training - INFO - test:: [test_time: -200.23 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 19:02:14,105 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_082.pt saved -2022-02-08 19:02:14,105 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:08 -2022-02-08 19:02:14,105 - easytorch-training - INFO - epoch 83 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:40<00:00, 1.12s/it] -2022-02-08 19:12:55,001 - easytorch-training - INFO - train:: [train_loss: 1.3893, train_MAPE: 0.0296, train_RMSE: 3.0393, train_time: 640.90 (s), lr: 1.25e-04] -2022-02-08 19:14:35,844 - easytorch-training - INFO - val:: [val_time: 100.84 (s), val_loss: 1.5173, val_MAPE: 0.0344, val_RMSE: 3.1601] -2022-02-08 19:17:55,732 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8340, Test RMSE: 1.6072, Test MAPE: 0.0159 -2022-02-08 19:17:55,734 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0905, Test RMSE: 2.2398, Test MAPE: 0.0218 -2022-02-08 19:17:55,735 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2617, Test RMSE: 2.7276, Test MAPE: 0.0261 -2022-02-08 19:17:55,736 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3869, Test RMSE: 3.0984, Test MAPE: 0.0297 -2022-02-08 19:17:55,737 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4796, Test RMSE: 3.3787, Test MAPE: 0.0325 -2022-02-08 19:17:55,738 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5525, Test RMSE: 3.5910, Test MAPE: 0.0347 -2022-02-08 19:17:55,739 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6114, Test RMSE: 3.7579, Test MAPE: 0.0365 -2022-02-08 19:17:55,740 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6595, Test RMSE: 3.8863, Test MAPE: 0.0380 -2022-02-08 19:17:55,741 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7002, Test RMSE: 3.9913, Test MAPE: 0.0392 -2022-02-08 19:17:55,742 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7357, Test RMSE: 4.0788, Test MAPE: 0.0402 -2022-02-08 19:17:55,743 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7671, Test RMSE: 4.1535, Test MAPE: 0.0411 -2022-02-08 19:17:55,744 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7977, Test RMSE: 4.2186, Test MAPE: 0.0419 -2022-02-08 19:17:55,745 - easytorch-training - INFO - test:: [test_time: -199.89 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 19:17:57,725 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_083.pt saved -2022-02-08 19:17:57,725 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:05 -2022-02-08 19:17:57,725 - easytorch-training - INFO - epoch 84 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:43<00:00, 1.13s/it] -2022-02-08 19:28:41,100 - easytorch-training - INFO - train:: [train_loss: 1.3890, train_MAPE: 0.0296, train_RMSE: 3.0374, train_time: 643.37 (s), lr: 1.25e-04] -2022-02-08 19:30:21,837 - easytorch-training - INFO - val:: [val_time: 100.73 (s), val_loss: 1.5145, val_MAPE: 0.0340, val_RMSE: 3.1560] -2022-02-08 19:33:51,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8359, Test RMSE: 1.6096, Test MAPE: 0.0159 -2022-02-08 19:33:51,252 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0914, Test RMSE: 2.2432, Test MAPE: 0.0217 -2022-02-08 19:33:51,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2625, Test RMSE: 2.7309, Test MAPE: 0.0259 -2022-02-08 19:33:51,254 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3867, Test RMSE: 3.0994, Test MAPE: 0.0294 -2022-02-08 19:33:51,256 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4792, Test RMSE: 3.3790, Test MAPE: 0.0321 -2022-02-08 19:33:51,257 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5512, Test RMSE: 3.5893, Test MAPE: 0.0343 -2022-02-08 19:33:51,258 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6096, Test RMSE: 3.7543, Test MAPE: 0.0361 -2022-02-08 19:33:51,259 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6565, Test RMSE: 3.8814, Test MAPE: 0.0376 -2022-02-08 19:33:51,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.6972, Test RMSE: 3.9849, Test MAPE: 0.0388 -2022-02-08 19:33:51,261 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7314, Test RMSE: 4.0670, Test MAPE: 0.0399 -2022-02-08 19:33:51,262 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7622, Test RMSE: 4.1389, Test MAPE: 0.0409 -2022-02-08 19:33:51,263 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.7930, Test RMSE: 4.2043, Test MAPE: 0.0418 -2022-02-08 19:33:51,264 - easytorch-training - INFO - test:: [test_time: -209.42 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 19:33:53,309 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_084.pt saved -2022-02-08 19:33:53,310 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:16 -2022-02-08 19:33:53,310 - easytorch-training - INFO - epoch 85 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 570/570 [10:44<00:00, 1.13s/it] -2022-02-08 19:44:38,239 - easytorch-training - INFO - train:: [train_loss: 1.3833, train_MAPE: 0.0294, train_RMSE: 3.0263, train_time: 644.93 (s), lr: 1.25e-04] -2022-02-08 19:46:19,989 - easytorch-training - INFO - val:: [val_time: 101.74 (s), val_loss: 1.5174, val_MAPE: 0.0347, val_RMSE: 3.1603] -2022-02-08 19:49:39,078 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 0.8345, Test RMSE: 1.6082, Test MAPE: 0.0159 -2022-02-08 19:49:39,079 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 1.0914, Test RMSE: 2.2408, Test MAPE: 0.0219 -2022-02-08 19:49:39,080 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 1.2632, Test RMSE: 2.7315, Test MAPE: 0.0264 -2022-02-08 19:49:39,081 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 1.3894, Test RMSE: 3.1075, Test MAPE: 0.0300 -2022-02-08 19:49:39,082 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 1.4827, Test RMSE: 3.3898, Test MAPE: 0.0329 -2022-02-08 19:49:39,083 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 1.5557, Test RMSE: 3.6048, Test MAPE: 0.0351 -2022-02-08 19:49:39,085 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 1.6149, Test RMSE: 3.7732, Test MAPE: 0.0370 -2022-02-08 19:49:39,086 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 1.6627, Test RMSE: 3.9035, Test MAPE: 0.0385 -2022-02-08 19:49:39,087 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 1.7041, Test RMSE: 4.0081, Test MAPE: 0.0397 -2022-02-08 19:49:39,088 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 1.7399, Test RMSE: 4.0939, Test MAPE: 0.0408 -2022-02-08 19:49:39,089 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 1.7715, Test RMSE: 4.1664, Test MAPE: 0.0416 -2022-02-08 19:49:39,090 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 1.8027, Test RMSE: 4.2308, Test MAPE: 0.0425 -2022-02-08 19:49:39,090 - easytorch-training - INFO - test:: [test_time: -199.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-08 19:49:40,481 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/9cb9c7052d88d896f87f9f9a36cfa66d/FullModel_085.pt saved -2022-02-08 19:49:40,481 - easytorch-training - INFO - The estimated training finish time is 2022-02-08 23:46:16 -2022-02-08 19:49:40,481 - easytorch-training - INFO - epoch 86 / 100 - 10%|โ–ˆ | 58/570 [01:08<10:01, 1.18s/it]% \ No newline at end of file diff --git a/train_logs/Backend_PEMS04.log b/train_logs/Backend_PEMS04.log deleted file mode 100644 index c3ed7f7..0000000 --- a/train_logs/Backend_PEMS04.log +++ /dev/null @@ -1,1925 +0,0 @@ - /0.0s -(S22) -# wangyuhao @ Login-Node0 in /workspace/S/wangyuhao/S22/pretrain on git:exp/ablation x [16:17:24] -$ cat ret/62365.err -Currently Loaded Modulefiles: - 1) git/2.17.1 2) slurm-tools/v1.0 -Currently Loaded Modulefiles: - 1) git/2.17.1 5) openssl/1.1.0g - 2) slurm-tools/v1.0 6) vim/8.1.2424 - 3) cluster-tools/v1.0 7) python3/3.6.8 - 4) cmake/3.15.7 8) cuda-cudnn/11.1-8.1.1 -2022-02-01 22:39:57,613 - easytorch-env - INFO - Enable TF32 mode -2022-02-01 22:39:57,619 - easytorch - INFO - ckpt save dir: 'checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050' -2022-02-01 22:40:02,453 - easytorch-training - INFO - set optim: Adam ( -Parameter Group 0 - amsgrad: False - betas: (0.9, 0.999) - eps: 1e-08 - lr: 0.002 - weight_decay: 1e-05 -) -2022-02-01 22:40:02,456 - easytorch-training - INFO - set lr_scheduler: -2022-02-01 22:40:02,781 - easytorch-training - INFO - epoch 1 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:20<00:00, 1.27it/s] -2022-02-01 22:48:23,656 - easytorch-training - INFO - train:: [train_loss: 34.8663, train_MAPE: 0.4796, train_RMSE: 46.3298, train_time: 500.87 (s), lr: 2.00e-03] -2022-02-01 22:50:35,190 - easytorch-training - INFO - val:: [val_time: 131.53 (s), val_loss: 25.1137, val_MAPE: 0.2978, val_RMSE: 34.7713] -2022-02-01 22:52:52,091 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 23.1651, Test RMSE: 31.4826, Test MAPE: 0.3215 -2022-02-01 22:52:52,096 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 23.3039, Test RMSE: 32.2087, Test MAPE: 0.3161 -2022-02-01 22:52:52,101 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 23.2421, Test RMSE: 32.8782, Test MAPE: 0.2922 -2022-02-01 22:52:52,106 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 24.2367, Test RMSE: 33.9046, Test MAPE: 0.3040 -2022-02-01 22:52:52,111 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 25.8388, Test RMSE: 35.4587, Test MAPE: 0.3359 -2022-02-01 22:52:52,116 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 25.8231, Test RMSE: 35.7418, Test MAPE: 0.3214 -2022-02-01 22:52:52,119 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 26.5275, Test RMSE: 36.7239, Test MAPE: 0.3152 -2022-02-01 22:52:52,123 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 23.8094, Test RMSE: 35.1382, Test MAPE: 0.2331 -2022-02-01 22:52:52,127 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 26.8522, Test RMSE: 37.5705, Test MAPE: 0.3009 -2022-02-01 22:52:52,131 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 27.6523, Test RMSE: 38.7226, Test MAPE: 0.2998 -2022-02-01 22:52:52,135 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 24.2814, Test RMSE: 37.1141, Test MAPE: 0.1771 -2022-02-01 22:52:52,139 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 25.2269, Test RMSE: 38.3278, Test MAPE: 0.1838 -2022-02-01 22:52:52,139 - easytorch-training - INFO - test:: [test_time: -136.95 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-01 22:52:52,500 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_001.pt saved -2022-02-01 22:52:52,501 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 20:02:54 -2022-02-01 22:52:52,501 - easytorch-training - INFO - epoch 2 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:30<00:00, 1.25it/s] -2022-02-01 23:01:23,306 - easytorch-training - INFO - train:: [train_loss: 23.2202, train_MAPE: 0.2051, train_RMSE: 35.2570, train_time: 510.80 (s), lr: 1.00e-03] -2022-02-01 23:03:25,134 - easytorch-training - INFO - val:: [val_time: 121.82 (s), val_loss: 20.3772, val_MAPE: 0.1531, val_RMSE: 30.3452] -2022-02-01 23:05:35,809 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 18.1789, Test RMSE: 28.3386, Test MAPE: 0.1315 -2022-02-01 23:05:35,821 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.4206, Test RMSE: 29.1649, Test MAPE: 0.1263 -2022-02-01 23:05:35,826 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.8767, Test RMSE: 29.8097, Test MAPE: 0.1384 -2022-02-01 23:05:35,831 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 19.2995, Test RMSE: 30.4480, Test MAPE: 0.1344 -2022-02-01 23:05:35,837 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.6519, Test RMSE: 30.8053, Test MAPE: 0.1472 -2022-02-01 23:05:35,844 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 20.2222, Test RMSE: 31.2415, Test MAPE: 0.1667 -2022-02-01 23:05:35,851 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 20.0731, Test RMSE: 31.5298, Test MAPE: 0.1430 -2022-02-01 23:05:35,857 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.6487, Test RMSE: 32.0480, Test MAPE: 0.1600 -2022-02-01 23:05:35,864 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.6571, Test RMSE: 32.2380, Test MAPE: 0.1522 -2022-02-01 23:05:35,871 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 21.0061, Test RMSE: 32.6136, Test MAPE: 0.1588 -2022-02-01 23:05:35,878 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 21.7509, Test RMSE: 33.2370, Test MAPE: 0.1806 -2022-02-01 23:05:35,885 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 22.0996, Test RMSE: 33.7707, Test MAPE: 0.1799 -2022-02-01 23:05:35,885 - easytorch-training - INFO - test:: [test_time: -130.75 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-01 23:05:36,436 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_002.pt saved -2022-02-01 23:05:36,437 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:05 -2022-02-01 23:05:36,437 - easytorch-training - INFO - epoch 3 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:36<00:00, 1.23it/s] -2022-02-01 23:14:12,966 - easytorch-training - INFO - train:: [train_loss: 22.2832, train_MAPE: 0.1882, train_RMSE: 34.2115, train_time: 516.53 (s), lr: 1.00e-03] -2022-02-01 23:16:34,314 - easytorch-training - INFO - val:: [val_time: 141.34 (s), val_loss: 19.7247, val_MAPE: 0.1495, val_RMSE: 29.8218] -2022-02-01 23:18:45,372 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.2269, Test RMSE: 27.6734, Test MAPE: 0.1174 -2022-02-01 23:18:45,376 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.8622, Test RMSE: 28.7179, Test MAPE: 0.1242 -2022-02-01 23:18:45,379 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.4399, Test RMSE: 29.5504, Test MAPE: 0.1268 -2022-02-01 23:18:45,383 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.8948, Test RMSE: 30.1648, Test MAPE: 0.1321 -2022-02-01 23:18:45,387 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.2313, Test RMSE: 30.6131, Test MAPE: 0.1382 -2022-02-01 23:18:45,391 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.4526, Test RMSE: 30.9749, Test MAPE: 0.1383 -2022-02-01 23:18:45,395 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.7793, Test RMSE: 31.3563, Test MAPE: 0.1456 -2022-02-01 23:18:45,398 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.1582, Test RMSE: 31.7774, Test MAPE: 0.1540 -2022-02-01 23:18:45,402 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.6118, Test RMSE: 32.1095, Test MAPE: 0.1681 -2022-02-01 23:18:45,406 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.9948, Test RMSE: 32.4760, Test MAPE: 0.1790 -2022-02-01 23:18:45,410 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 21.2802, Test RMSE: 32.7864, Test MAPE: 0.1831 -2022-02-01 23:18:45,413 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 21.8761, Test RMSE: 33.4003, Test MAPE: 0.1911 -2022-02-01 23:18:45,414 - easytorch-training - INFO - test:: [test_time: -131.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-01 23:18:45,754 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_003.pt saved -2022-02-01 23:18:45,755 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 20:10:35 -2022-02-01 23:18:45,755 - easytorch-training - INFO - epoch 4 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:05<00:00, 1.31it/s] -2022-02-01 23:26:51,695 - easytorch-training - INFO - train:: [train_loss: 21.8652, train_MAPE: 0.1828, train_RMSE: 33.6265, train_time: 485.94 (s), lr: 1.00e-03] -2022-02-01 23:28:52,968 - easytorch-training - INFO - val:: [val_time: 121.27 (s), val_loss: 19.8979, val_MAPE: 0.1386, val_RMSE: 29.9018] -2022-02-01 23:31:01,561 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.9348, Test RMSE: 27.8734, Test MAPE: 0.1292 -2022-02-01 23:31:01,572 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.3386, Test RMSE: 28.7496, Test MAPE: 0.1306 -2022-02-01 23:31:01,575 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 19.0026, Test RMSE: 29.6004, Test MAPE: 0.1393 -2022-02-01 23:31:01,579 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.9353, Test RMSE: 29.9886, Test MAPE: 0.1307 -2022-02-01 23:31:01,583 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.5685, Test RMSE: 30.6043, Test MAPE: 0.1405 -2022-02-01 23:31:01,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.4486, Test RMSE: 30.8360, Test MAPE: 0.1329 -2022-02-01 23:31:01,591 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.8690, Test RMSE: 31.3586, Test MAPE: 0.1353 -2022-02-01 23:31:01,594 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.1572, Test RMSE: 31.7144, Test MAPE: 0.1381 -2022-02-01 23:31:01,598 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.3818, Test RMSE: 32.0375, Test MAPE: 0.1391 -2022-02-01 23:31:01,602 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.2906, Test RMSE: 32.1300, Test MAPE: 0.1400 -2022-02-01 23:31:01,606 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.6433, Test RMSE: 32.5647, Test MAPE: 0.1425 -2022-02-01 23:31:01,609 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 21.2220, Test RMSE: 33.2330, Test MAPE: 0.1457 -2022-02-01 23:31:01,610 - easytorch-training - INFO - test:: [test_time: -128.64 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-01 23:31:01,946 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_004.pt saved -2022-02-01 23:31:01,947 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:41 -2022-02-01 23:31:01,947 - easytorch-training - INFO - epoch 5 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:29<00:00, 1.25it/s] -2022-02-01 23:39:31,883 - easytorch-training - INFO - train:: [train_loss: 21.5922, train_MAPE: 0.1806, train_RMSE: 33.2534, train_time: 509.94 (s), lr: 1.00e-03] -2022-02-01 23:41:39,636 - easytorch-training - INFO - val:: [val_time: 127.74 (s), val_loss: 20.2801, val_MAPE: 0.1429, val_RMSE: 30.5194] -2022-02-01 23:43:49,907 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.5411, Test RMSE: 27.7963, Test MAPE: 0.1255 -2022-02-01 23:43:49,912 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.2417, Test RMSE: 28.8773, Test MAPE: 0.1215 -2022-02-01 23:43:49,917 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.5637, Test RMSE: 29.5173, Test MAPE: 0.1263 -2022-02-01 23:43:49,922 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.8837, Test RMSE: 30.0176, Test MAPE: 0.1270 -2022-02-01 23:43:49,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.2673, Test RMSE: 30.4945, Test MAPE: 0.1309 -2022-02-01 23:43:49,931 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.4734, Test RMSE: 30.8074, Test MAPE: 0.1353 -2022-02-01 23:43:49,936 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.9662, Test RMSE: 31.3424, Test MAPE: 0.1402 -2022-02-01 23:43:49,939 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.7217, Test RMSE: 32.0420, Test MAPE: 0.1516 -2022-02-01 23:43:49,943 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.7861, Test RMSE: 32.3213, Test MAPE: 0.1461 -2022-02-01 23:43:49,947 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 21.0859, Test RMSE: 32.6790, Test MAPE: 0.1484 -2022-02-01 23:43:49,951 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 21.6306, Test RMSE: 33.2419, Test MAPE: 0.1558 -2022-02-01 23:43:49,955 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 22.0188, Test RMSE: 33.8166, Test MAPE: 0.1592 -2022-02-01 23:43:49,955 - easytorch-training - INFO - test:: [test_time: -130.31 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-01 23:43:50,321 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_005.pt saved -2022-02-01 23:43:50,321 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:55:53 -2022-02-01 23:43:50,321 - easytorch-training - INFO - epoch 6 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:51<00:00, 1.20it/s] -2022-02-01 23:52:41,886 - easytorch-training - INFO - train:: [train_loss: 21.2816, train_MAPE: 0.1787, train_RMSE: 32.8954, train_time: 531.56 (s), lr: 1.00e-03] -2022-02-01 23:54:54,409 - easytorch-training - INFO - val:: [val_time: 132.52 (s), val_loss: 20.9897, val_MAPE: 0.1746, val_RMSE: 30.8345] -2022-02-01 23:56:51,337 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 18.1778, Test RMSE: 27.8437, Test MAPE: 0.1492 -2022-02-01 23:56:51,341 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.8420, Test RMSE: 28.8720, Test MAPE: 0.1531 -2022-02-01 23:56:51,345 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 19.4285, Test RMSE: 29.6919, Test MAPE: 0.1609 -2022-02-01 23:56:51,349 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 19.8119, Test RMSE: 30.3052, Test MAPE: 0.1610 -2022-02-01 23:56:51,353 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 20.1886, Test RMSE: 30.7909, Test MAPE: 0.1674 -2022-02-01 23:56:51,357 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 20.1712, Test RMSE: 31.0413, Test MAPE: 0.1619 -2022-02-01 23:56:51,361 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 20.7515, Test RMSE: 31.6307, Test MAPE: 0.1704 -2022-02-01 23:56:51,364 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 21.0773, Test RMSE: 32.0218, Test MAPE: 0.1741 -2022-02-01 23:56:51,368 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 21.6987, Test RMSE: 32.5815, Test MAPE: 0.1827 -2022-02-01 23:56:51,372 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 21.5910, Test RMSE: 32.7586, Test MAPE: 0.1730 -2022-02-01 23:56:51,376 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 21.5821, Test RMSE: 32.9973, Test MAPE: 0.1636 -2022-02-01 23:56:51,380 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 21.9458, Test RMSE: 33.5374, Test MAPE: 0.1631 -2022-02-01 23:56:51,380 - easytorch-training - INFO - test:: [test_time: -116.97 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-01 23:56:51,715 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_006.pt saved -2022-02-01 23:56:51,715 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 20:00:18 -2022-02-01 23:56:51,715 - easytorch-training - INFO - epoch 7 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:28<00:00, 1.25it/s] -2022-02-02 00:05:20,070 - easytorch-training - INFO - train:: [train_loss: 20.9032, train_MAPE: 0.1706, train_RMSE: 32.5072, train_time: 508.36 (s), lr: 1.00e-03] -2022-02-02 00:07:23,790 - easytorch-training - INFO - val:: [val_time: 123.72 (s), val_loss: 19.8940, val_MAPE: 0.1413, val_RMSE: 30.0959] -2022-02-02 00:09:33,109 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.3064, Test RMSE: 27.7701, Test MAPE: 0.1204 -2022-02-02 00:09:33,113 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.9439, Test RMSE: 28.8331, Test MAPE: 0.1288 -2022-02-02 00:09:33,117 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.4264, Test RMSE: 29.5484, Test MAPE: 0.1359 -2022-02-02 00:09:33,121 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.8886, Test RMSE: 30.1682, Test MAPE: 0.1369 -2022-02-02 00:09:33,125 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.1847, Test RMSE: 30.6961, Test MAPE: 0.1312 -2022-02-02 00:09:33,129 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.4992, Test RMSE: 31.1816, Test MAPE: 0.1342 -2022-02-02 00:09:33,133 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.7784, Test RMSE: 31.4949, Test MAPE: 0.1412 -2022-02-02 00:09:33,137 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.9792, Test RMSE: 31.8112, Test MAPE: 0.1405 -2022-02-02 00:09:33,140 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.2482, Test RMSE: 32.0243, Test MAPE: 0.1551 -2022-02-02 00:09:33,144 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.4419, Test RMSE: 32.3771, Test MAPE: 0.1500 -2022-02-02 00:09:33,148 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.7922, Test RMSE: 32.7310, Test MAPE: 0.1583 -2022-02-02 00:09:33,152 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 21.0688, Test RMSE: 33.2086, Test MAPE: 0.1536 -2022-02-02 00:09:33,152 - easytorch-training - INFO - test:: [test_time: -129.36 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 00:09:33,736 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_007.pt saved -2022-02-02 00:09:33,737 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:50 -2022-02-02 00:09:33,737 - easytorch-training - INFO - epoch 8 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:08<00:00, 1.30it/s] -2022-02-02 00:17:42,466 - easytorch-training - INFO - train:: [train_loss: 20.7727, train_MAPE: 0.1700, train_RMSE: 32.3282, train_time: 488.73 (s), lr: 1.00e-03] -2022-02-02 00:20:01,826 - easytorch-training - INFO - val:: [val_time: 139.35 (s), val_loss: 21.9154, val_MAPE: 0.2071, val_RMSE: 31.1533] -2022-02-02 00:22:01,270 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 18.2039, Test RMSE: 27.8430, Test MAPE: 0.1477 -2022-02-02 00:22:01,275 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.8840, Test RMSE: 28.8780, Test MAPE: 0.1527 -2022-02-02 00:22:01,279 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 19.9695, Test RMSE: 29.9571, Test MAPE: 0.1730 -2022-02-02 00:22:01,283 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 21.1531, Test RMSE: 30.9678, Test MAPE: 0.1972 -2022-02-02 00:22:01,287 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 21.6483, Test RMSE: 31.4834, Test MAPE: 0.2089 -2022-02-02 00:22:01,291 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 21.7346, Test RMSE: 31.7881, Test MAPE: 0.2051 -2022-02-02 00:22:01,295 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 22.1214, Test RMSE: 32.2410, Test MAPE: 0.2097 -2022-02-02 00:22:01,299 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 22.1438, Test RMSE: 32.4929, Test MAPE: 0.2030 -2022-02-02 00:22:01,304 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 22.5035, Test RMSE: 32.8967, Test MAPE: 0.2079 -2022-02-02 00:22:01,308 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 23.1207, Test RMSE: 33.4179, Test MAPE: 0.2202 -2022-02-02 00:22:01,312 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 22.9021, Test RMSE: 33.4652, Test MAPE: 0.2109 -2022-02-02 00:22:01,316 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 23.1062, Test RMSE: 33.8499, Test MAPE: 0.2111 -2022-02-02 00:22:01,316 - easytorch-training - INFO - test:: [test_time: -119.49 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 00:22:01,664 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_008.pt saved -2022-02-02 00:22:01,665 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:48 -2022-02-02 00:22:01,665 - easytorch-training - INFO - epoch 9 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:25<00:00, 1.26it/s] -2022-02-02 00:30:27,049 - easytorch-training - INFO - train:: [train_loss: 20.7015, train_MAPE: 0.1709, train_RMSE: 32.1610, train_time: 505.38 (s), lr: 1.00e-03] -2022-02-02 00:32:33,653 - easytorch-training - INFO - val:: [val_time: 126.60 (s), val_loss: 19.2660, val_MAPE: 0.1348, val_RMSE: 29.3319] -2022-02-02 00:34:35,529 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.0579, Test RMSE: 27.3539, Test MAPE: 0.1142 -2022-02-02 00:34:35,533 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.5274, Test RMSE: 28.1945, Test MAPE: 0.1234 -2022-02-02 00:34:35,537 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.0823, Test RMSE: 29.0128, Test MAPE: 0.1265 -2022-02-02 00:34:35,541 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.5469, Test RMSE: 29.6831, Test MAPE: 0.1279 -2022-02-02 00:34:35,545 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.8213, Test RMSE: 30.1147, Test MAPE: 0.1264 -2022-02-02 00:34:35,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.1237, Test RMSE: 30.5480, Test MAPE: 0.1284 -2022-02-02 00:34:35,552 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.3951, Test RMSE: 30.9156, Test MAPE: 0.1333 -2022-02-02 00:34:35,556 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.6503, Test RMSE: 31.2300, Test MAPE: 0.1399 -2022-02-02 00:34:35,560 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.8497, Test RMSE: 31.5386, Test MAPE: 0.1408 -2022-02-02 00:34:35,564 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.2790, Test RMSE: 31.9639, Test MAPE: 0.1529 -2022-02-02 00:34:35,567 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.2926, Test RMSE: 32.2491, Test MAPE: 0.1408 -2022-02-02 00:34:35,571 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.8429, Test RMSE: 32.8204, Test MAPE: 0.1567 -2022-02-02 00:34:35,572 - easytorch-training - INFO - test:: [test_time: -121.91 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 00:34:36,082 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_009.pt saved -2022-02-02 00:34:36,083 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:52:52 -2022-02-02 00:34:36,083 - easytorch-training - INFO - epoch 10 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:25<00:00, 1.26it/s] -2022-02-02 00:43:01,796 - easytorch-training - INFO - train:: [train_loss: 20.4115, train_MAPE: 0.1611, train_RMSE: 32.0168, train_time: 505.71 (s), lr: 1.00e-03] -2022-02-02 00:45:13,911 - easytorch-training - INFO - val:: [val_time: 132.11 (s), val_loss: 19.7148, val_MAPE: 0.1639, val_RMSE: 29.6241] -2022-02-02 00:47:29,597 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.4408, Test RMSE: 27.6051, Test MAPE: 0.1344 -2022-02-02 00:47:29,604 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.3510, Test RMSE: 28.6052, Test MAPE: 0.1572 -2022-02-02 00:47:29,609 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.4565, Test RMSE: 29.2210, Test MAPE: 0.1449 -2022-02-02 00:47:29,613 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 19.3601, Test RMSE: 30.0434, Test MAPE: 0.1689 -2022-02-02 00:47:29,618 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.4109, Test RMSE: 30.4269, Test MAPE: 0.1591 -2022-02-02 00:47:29,623 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.6960, Test RMSE: 30.8703, Test MAPE: 0.1596 -2022-02-02 00:47:29,627 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 20.1635, Test RMSE: 31.3284, Test MAPE: 0.1705 -2022-02-02 00:47:29,631 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.1088, Test RMSE: 31.5783, Test MAPE: 0.1610 -2022-02-02 00:47:29,634 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.4338, Test RMSE: 31.9845, Test MAPE: 0.1674 -2022-02-02 00:47:29,638 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.8662, Test RMSE: 32.3052, Test MAPE: 0.1817 -2022-02-02 00:47:29,642 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.5875, Test RMSE: 32.2958, Test MAPE: 0.1651 -2022-02-02 00:47:29,646 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 21.2943, Test RMSE: 32.9099, Test MAPE: 0.1846 -2022-02-02 00:47:29,646 - easytorch-training - INFO - test:: [test_time: -135.73 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 00:47:30,025 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_010.pt saved -2022-02-02 00:47:30,028 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:35 -2022-02-02 00:47:30,028 - easytorch-training - INFO - epoch 11 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:39<00:00, 1.23it/s] -2022-02-02 00:56:09,543 - easytorch-training - INFO - train:: [train_loss: 20.4754, train_MAPE: 0.1666, train_RMSE: 31.9148, train_time: 519.52 (s), lr: 1.00e-03] -2022-02-02 00:58:30,833 - easytorch-training - INFO - val:: [val_time: 141.29 (s), val_loss: 19.5566, val_MAPE: 0.1497, val_RMSE: 29.6252] -2022-02-02 01:00:42,312 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.0984, Test RMSE: 27.5550, Test MAPE: 0.1215 -2022-02-02 01:00:42,316 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.9281, Test RMSE: 28.6268, Test MAPE: 0.1345 -2022-02-02 01:00:42,320 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.3596, Test RMSE: 29.3952, Test MAPE: 0.1327 -2022-02-02 01:00:42,324 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.9451, Test RMSE: 30.0828, Test MAPE: 0.1415 -2022-02-02 01:00:42,328 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.1856, Test RMSE: 30.5732, Test MAPE: 0.1398 -2022-02-02 01:00:42,332 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.4174, Test RMSE: 30.8935, Test MAPE: 0.1422 -2022-02-02 01:00:42,336 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.8768, Test RMSE: 31.3897, Test MAPE: 0.1495 -2022-02-02 01:00:42,340 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.6055, Test RMSE: 32.0078, Test MAPE: 0.1686 -2022-02-02 01:00:42,344 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.8496, Test RMSE: 32.3119, Test MAPE: 0.1739 -2022-02-02 01:00:42,348 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 21.0697, Test RMSE: 32.5794, Test MAPE: 0.1790 -2022-02-02 01:00:42,352 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.2997, Test RMSE: 32.3629, Test MAPE: 0.1435 -2022-02-02 01:00:42,356 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.7674, Test RMSE: 32.8468, Test MAPE: 0.1536 -2022-02-02 01:00:42,356 - easytorch-training - INFO - test:: [test_time: -131.52 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 01:00:42,706 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_011.pt saved -2022-02-02 01:00:42,707 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:49 -2022-02-02 01:00:42,707 - easytorch-training - INFO - epoch 12 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:19<00:00, 1.27it/s] -2022-02-02 01:09:02,323 - easytorch-training - INFO - train:: [train_loss: 20.1832, train_MAPE: 0.1584, train_RMSE: 31.7706, train_time: 499.62 (s), lr: 1.00e-03] -2022-02-02 01:11:13,093 - easytorch-training - INFO - val:: [val_time: 130.76 (s), val_loss: 19.0691, val_MAPE: 0.1285, val_RMSE: 29.2171] -2022-02-02 01:13:23,579 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.8694, Test RMSE: 27.1645, Test MAPE: 0.1138 -2022-02-02 01:13:23,584 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.3843, Test RMSE: 28.0932, Test MAPE: 0.1180 -2022-02-02 01:13:23,589 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.8170, Test RMSE: 28.8172, Test MAPE: 0.1206 -2022-02-02 01:13:23,594 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.2897, Test RMSE: 29.4479, Test MAPE: 0.1252 -2022-02-02 01:13:23,599 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.6153, Test RMSE: 29.9100, Test MAPE: 0.1277 -2022-02-02 01:13:23,604 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.8474, Test RMSE: 30.2868, Test MAPE: 0.1286 -2022-02-02 01:13:23,608 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.9792, Test RMSE: 30.5913, Test MAPE: 0.1276 -2022-02-02 01:13:23,611 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.2589, Test RMSE: 30.9661, Test MAPE: 0.1304 -2022-02-02 01:13:23,615 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.5017, Test RMSE: 31.3055, Test MAPE: 0.1314 -2022-02-02 01:13:23,619 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.7761, Test RMSE: 31.6859, Test MAPE: 0.1344 -2022-02-02 01:13:23,623 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.0615, Test RMSE: 32.0855, Test MAPE: 0.1370 -2022-02-02 01:13:23,627 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.3374, Test RMSE: 32.4610, Test MAPE: 0.1397 -2022-02-02 01:13:23,627 - easytorch-training - INFO - test:: [test_time: -130.53 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 01:13:24,175 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_012.pt saved -2022-02-02 01:13:24,175 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:01 -2022-02-02 01:13:24,175 - easytorch-training - INFO - epoch 13 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:18<00:00, 1.28it/s] -2022-02-02 01:21:42,686 - easytorch-training - INFO - train:: [train_loss: 20.0497, train_MAPE: 0.1574, train_RMSE: 31.5932, train_time: 498.51 (s), lr: 1.00e-03] -2022-02-02 01:23:54,962 - easytorch-training - INFO - val:: [val_time: 132.27 (s), val_loss: 19.8768, val_MAPE: 0.1466, val_RMSE: 29.7786] -2022-02-02 01:26:10,526 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.5234, Test RMSE: 27.4737, Test MAPE: 0.1286 -2022-02-02 01:26:10,531 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.2023, Test RMSE: 28.4647, Test MAPE: 0.1379 -2022-02-02 01:26:10,535 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.1896, Test RMSE: 29.0150, Test MAPE: 0.1277 -2022-02-02 01:26:10,539 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.9168, Test RMSE: 29.7454, Test MAPE: 0.1406 -2022-02-02 01:26:10,543 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.1551, Test RMSE: 30.1810, Test MAPE: 0.1411 -2022-02-02 01:26:10,547 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.0115, Test RMSE: 30.3936, Test MAPE: 0.1304 -2022-02-02 01:26:10,551 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.6255, Test RMSE: 30.9533, Test MAPE: 0.1396 -2022-02-02 01:26:10,555 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.9614, Test RMSE: 31.3301, Test MAPE: 0.1448 -2022-02-02 01:26:10,559 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.1199, Test RMSE: 31.5814, Test MAPE: 0.1461 -2022-02-02 01:26:10,563 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.4325, Test RMSE: 31.9003, Test MAPE: 0.1526 -2022-02-02 01:26:10,567 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.2487, Test RMSE: 32.0471, Test MAPE: 0.1401 -2022-02-02 01:26:10,571 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 21.3130, Test RMSE: 32.8926, Test MAPE: 0.1613 -2022-02-02 01:26:10,572 - easytorch-training - INFO - test:: [test_time: -135.60 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 01:26:11,214 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_013.pt saved -2022-02-02 01:26:11,214 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:03 -2022-02-02 01:26:11,214 - easytorch-training - INFO - epoch 14 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:40<00:00, 1.22it/s] -2022-02-02 01:34:52,114 - easytorch-training - INFO - train:: [train_loss: 19.9877, train_MAPE: 0.1575, train_RMSE: 31.4786, train_time: 520.90 (s), lr: 1.00e-03] -2022-02-02 01:37:11,048 - easytorch-training - INFO - val:: [val_time: 138.93 (s), val_loss: 20.1112, val_MAPE: 0.1543, val_RMSE: 30.2778] -2022-02-02 01:39:18,316 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.4209, Test RMSE: 27.5159, Test MAPE: 0.1330 -2022-02-02 01:39:18,327 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.0928, Test RMSE: 28.5276, Test MAPE: 0.1410 -2022-02-02 01:39:18,331 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.6664, Test RMSE: 29.3784, Test MAPE: 0.1460 -2022-02-02 01:39:18,335 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 19.0130, Test RMSE: 29.9879, Test MAPE: 0.1455 -2022-02-02 01:39:18,339 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.4235, Test RMSE: 30.5528, Test MAPE: 0.1504 -2022-02-02 01:39:18,342 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.7914, Test RMSE: 31.0285, Test MAPE: 0.1536 -2022-02-02 01:39:18,346 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.9583, Test RMSE: 31.4200, Test MAPE: 0.1478 -2022-02-02 01:39:18,350 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.4531, Test RMSE: 31.9318, Test MAPE: 0.1547 -2022-02-02 01:39:18,354 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.5449, Test RMSE: 32.2857, Test MAPE: 0.1477 -2022-02-02 01:39:18,358 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 21.0276, Test RMSE: 32.7374, Test MAPE: 0.1547 -2022-02-02 01:39:18,362 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 21.2979, Test RMSE: 33.1653, Test MAPE: 0.1536 -2022-02-02 01:39:18,365 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 21.7178, Test RMSE: 33.7263, Test MAPE: 0.1562 -2022-02-02 01:39:18,366 - easytorch-training - INFO - test:: [test_time: -127.31 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 01:39:18,932 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_014.pt saved -2022-02-02 01:39:18,932 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 20:00:32 -2022-02-02 01:39:18,932 - easytorch-training - INFO - epoch 15 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:08<00:00, 1.30it/s] -2022-02-02 01:47:27,575 - easytorch-training - INFO - train:: [train_loss: 20.0133, train_MAPE: 0.1587, train_RMSE: 31.4644, train_time: 488.64 (s), lr: 1.00e-03] -2022-02-02 01:49:36,458 - easytorch-training - INFO - val:: [val_time: 128.88 (s), val_loss: 19.3778, val_MAPE: 0.1580, val_RMSE: 29.1819] -2022-02-02 01:51:42,476 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 18.5428, Test RMSE: 27.7889, Test MAPE: 0.1900 -2022-02-02 01:51:42,481 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 18.8335, Test RMSE: 28.5882, Test MAPE: 0.1843 -2022-02-02 01:51:42,486 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.8734, Test RMSE: 29.1545, Test MAPE: 0.1706 -2022-02-02 01:51:42,491 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 19.1323, Test RMSE: 29.6818, Test MAPE: 0.1690 -2022-02-02 01:51:42,496 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.0572, Test RMSE: 30.0431, Test MAPE: 0.1540 -2022-02-02 01:51:42,501 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.3640, Test RMSE: 30.4660, Test MAPE: 0.1566 -2022-02-02 01:51:42,506 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.4900, Test RMSE: 30.7487, Test MAPE: 0.1513 -2022-02-02 01:51:42,510 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.4109, Test RMSE: 30.9785, Test MAPE: 0.1392 -2022-02-02 01:51:42,514 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.6861, Test RMSE: 31.3153, Test MAPE: 0.1434 -2022-02-02 01:51:42,518 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.8347, Test RMSE: 31.5717, Test MAPE: 0.1429 -2022-02-02 01:51:42,522 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.2909, Test RMSE: 31.9229, Test MAPE: 0.1564 -2022-02-02 01:51:42,526 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.3091, Test RMSE: 32.2721, Test MAPE: 0.1437 -2022-02-02 01:51:42,526 - easytorch-training - INFO - test:: [test_time: -126.06 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 01:51:42,900 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_015.pt saved -2022-02-02 01:51:42,900 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:50 -2022-02-02 01:51:42,900 - easytorch-training - INFO - epoch 16 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:32<00:00, 1.24it/s] -2022-02-02 02:00:15,865 - easytorch-training - INFO - train:: [train_loss: 19.8291, train_MAPE: 0.1537, train_RMSE: 31.3350, train_time: 512.96 (s), lr: 1.00e-03] -2022-02-02 02:02:24,968 - easytorch-training - INFO - val:: [val_time: 129.10 (s), val_loss: 19.5948, val_MAPE: 0.1354, val_RMSE: 29.7074] -2022-02-02 02:04:24,335 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.9744, Test RMSE: 27.4749, Test MAPE: 0.1143 -2022-02-02 02:04:24,340 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.7173, Test RMSE: 28.5783, Test MAPE: 0.1203 -2022-02-02 02:04:24,343 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.3762, Test RMSE: 29.4080, Test MAPE: 0.1273 -2022-02-02 02:04:24,347 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.8063, Test RMSE: 30.1527, Test MAPE: 0.1280 -2022-02-02 02:04:24,351 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.1547, Test RMSE: 30.6800, Test MAPE: 0.1306 -2022-02-02 02:04:24,355 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.3163, Test RMSE: 30.9376, Test MAPE: 0.1314 -2022-02-02 02:04:24,359 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.7217, Test RMSE: 31.3566, Test MAPE: 0.1371 -2022-02-02 02:04:24,363 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.0898, Test RMSE: 31.8299, Test MAPE: 0.1411 -2022-02-02 02:04:24,366 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.2330, Test RMSE: 32.0513, Test MAPE: 0.1396 -2022-02-02 02:04:24,370 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.5286, Test RMSE: 32.3529, Test MAPE: 0.1437 -2022-02-02 02:04:24,374 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.6711, Test RMSE: 32.5990, Test MAPE: 0.1450 -2022-02-02 02:04:24,378 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.9211, Test RMSE: 32.9445, Test MAPE: 0.1458 -2022-02-02 02:04:24,378 - easytorch-training - INFO - test:: [test_time: -119.41 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 02:04:24,735 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_016.pt saved -2022-02-02 02:04:24,736 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:20 -2022-02-02 02:04:24,736 - easytorch-training - INFO - epoch 17 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:23<00:00, 1.26it/s] -2022-02-02 02:12:48,717 - easytorch-training - INFO - train:: [train_loss: 19.8237, train_MAPE: 0.1548, train_RMSE: 31.2800, train_time: 503.98 (s), lr: 1.00e-03] -2022-02-02 02:15:07,817 - easytorch-training - INFO - val:: [val_time: 139.09 (s), val_loss: 19.2850, val_MAPE: 0.1477, val_RMSE: 29.3191] -2022-02-02 02:17:17,769 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.1859, Test RMSE: 27.2022, Test MAPE: 0.1373 -2022-02-02 02:17:17,774 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.9896, Test RMSE: 28.2848, Test MAPE: 0.1482 -2022-02-02 02:17:17,778 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.4024, Test RMSE: 29.0813, Test MAPE: 0.1465 -2022-02-02 02:17:17,782 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.8286, Test RMSE: 29.7685, Test MAPE: 0.1489 -2022-02-02 02:17:17,786 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.7332, Test RMSE: 30.1357, Test MAPE: 0.1340 -2022-02-02 02:17:17,790 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.9433, Test RMSE: 30.5148, Test MAPE: 0.1344 -2022-02-02 02:17:17,794 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.2378, Test RMSE: 30.9779, Test MAPE: 0.1371 -2022-02-02 02:17:17,797 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.7526, Test RMSE: 31.4195, Test MAPE: 0.1505 -2022-02-02 02:17:17,801 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.2857, Test RMSE: 31.9420, Test MAPE: 0.1617 -2022-02-02 02:17:17,805 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.4627, Test RMSE: 32.2244, Test MAPE: 0.1641 -2022-02-02 02:17:17,809 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.0922, Test RMSE: 32.2304, Test MAPE: 0.1441 -2022-02-02 02:17:17,813 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.5368, Test RMSE: 32.6882, Test MAPE: 0.1532 -2022-02-02 02:17:17,813 - easytorch-training - INFO - test:: [test_time: -129.99 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 02:17:18,367 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_017.pt saved -2022-02-02 02:17:18,368 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:02 -2022-02-02 02:17:18,368 - easytorch-training - INFO - epoch 18 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:21<00:00, 1.27it/s] -2022-02-02 02:25:40,260 - easytorch-training - INFO - train:: [train_loss: 19.7491, train_MAPE: 0.1551, train_RMSE: 31.1848, train_time: 501.89 (s), lr: 1.00e-03] -2022-02-02 02:27:53,491 - easytorch-training - INFO - val:: [val_time: 133.23 (s), val_loss: 19.1177, val_MAPE: 0.1437, val_RMSE: 29.1029] -2022-02-02 02:30:12,937 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.2981, Test RMSE: 27.2209, Test MAPE: 0.1432 -2022-02-02 02:30:12,942 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.9036, Test RMSE: 28.1969, Test MAPE: 0.1474 -2022-02-02 02:30:12,948 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.5826, Test RMSE: 29.0167, Test MAPE: 0.1590 -2022-02-02 02:30:12,953 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.3371, Test RMSE: 29.3836, Test MAPE: 0.1359 -2022-02-02 02:30:12,959 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.6732, Test RMSE: 29.8333, Test MAPE: 0.1418 -2022-02-02 02:30:12,964 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.7537, Test RMSE: 30.1853, Test MAPE: 0.1336 -2022-02-02 02:30:12,969 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.2671, Test RMSE: 30.6330, Test MAPE: 0.1479 -2022-02-02 02:30:12,975 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.4654, Test RMSE: 30.9503, Test MAPE: 0.1473 -2022-02-02 02:30:12,980 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.4620, Test RMSE: 31.2425, Test MAPE: 0.1374 -2022-02-02 02:30:12,986 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.6448, Test RMSE: 31.5089, Test MAPE: 0.1390 -2022-02-02 02:30:12,991 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.7864, Test RMSE: 31.8017, Test MAPE: 0.1350 -2022-02-02 02:30:12,997 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.0952, Test RMSE: 32.2195, Test MAPE: 0.1367 -2022-02-02 02:30:12,997 - easytorch-training - INFO - test:: [test_time: -139.50 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 02:30:13,708 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_018.pt saved -2022-02-02 02:30:13,708 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:50 -2022-02-02 02:30:13,709 - easytorch-training - INFO - epoch 19 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:18<00:00, 1.28it/s] -2022-02-02 02:38:32,363 - easytorch-training - INFO - train:: [train_loss: 19.2889, train_MAPE: 0.1449, train_RMSE: 30.7802, train_time: 498.65 (s), lr: 5.00e-04] -2022-02-02 02:40:45,557 - easytorch-training - INFO - val:: [val_time: 133.19 (s), val_loss: 18.7798, val_MAPE: 0.1319, val_RMSE: 28.8578] -2022-02-02 02:42:58,035 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.7112, Test RMSE: 27.0063, Test MAPE: 0.1218 -2022-02-02 02:42:58,040 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1638, Test RMSE: 27.9319, Test MAPE: 0.1176 -2022-02-02 02:42:58,045 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.6489, Test RMSE: 28.6893, Test MAPE: 0.1188 -2022-02-02 02:42:58,050 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.0373, Test RMSE: 29.2389, Test MAPE: 0.1265 -2022-02-02 02:42:58,055 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.3113, Test RMSE: 29.6640, Test MAPE: 0.1277 -2022-02-02 02:42:58,059 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.5547, Test RMSE: 30.0458, Test MAPE: 0.1288 -2022-02-02 02:42:58,064 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.9082, Test RMSE: 30.4321, Test MAPE: 0.1369 -2022-02-02 02:42:58,068 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.1288, Test RMSE: 30.7562, Test MAPE: 0.1376 -2022-02-02 02:42:58,071 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.2376, Test RMSE: 31.0175, Test MAPE: 0.1326 -2022-02-02 02:42:58,075 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.4473, Test RMSE: 31.2843, Test MAPE: 0.1349 -2022-02-02 02:42:58,079 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.7170, Test RMSE: 31.5748, Test MAPE: 0.1403 -2022-02-02 02:42:58,083 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.1039, Test RMSE: 31.9885, Test MAPE: 0.1490 -2022-02-02 02:42:58,083 - easytorch-training - INFO - test:: [test_time: -132.52 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 02:42:58,593 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_019.pt saved -2022-02-02 02:42:58,593 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:58:37 -2022-02-02 02:42:58,593 - easytorch-training - INFO - epoch 20 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:38<00:00, 1.23it/s] -2022-02-02 02:51:36,839 - easytorch-training - INFO - train:: [train_loss: 19.1843, train_MAPE: 0.1433, train_RMSE: 30.6625, train_time: 518.25 (s), lr: 5.00e-04] -2022-02-02 02:53:49,597 - easytorch-training - INFO - val:: [val_time: 132.75 (s), val_loss: 18.8182, val_MAPE: 0.1318, val_RMSE: 28.8864] -2022-02-02 02:55:51,196 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6966, Test RMSE: 26.9632, Test MAPE: 0.1201 -2022-02-02 02:55:51,200 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.2906, Test RMSE: 27.9122, Test MAPE: 0.1268 -2022-02-02 02:55:51,204 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.7524, Test RMSE: 28.6748, Test MAPE: 0.1290 -2022-02-02 02:55:51,208 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.0698, Test RMSE: 29.2371, Test MAPE: 0.1280 -2022-02-02 02:55:51,212 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.3222, Test RMSE: 29.6909, Test MAPE: 0.1263 -2022-02-02 02:55:51,216 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.6250, Test RMSE: 30.0902, Test MAPE: 0.1308 -2022-02-02 02:55:51,221 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.8290, Test RMSE: 30.4602, Test MAPE: 0.1273 -2022-02-02 02:55:51,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.0779, Test RMSE: 30.7845, Test MAPE: 0.1321 -2022-02-02 02:55:51,230 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.2504, Test RMSE: 31.1158, Test MAPE: 0.1312 -2022-02-02 02:55:51,234 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.4873, Test RMSE: 31.3867, Test MAPE: 0.1344 -2022-02-02 02:55:51,238 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.7049, Test RMSE: 31.7335, Test MAPE: 0.1350 -2022-02-02 02:55:51,242 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.1939, Test RMSE: 32.1606, Test MAPE: 0.1510 -2022-02-02 02:55:51,242 - easytorch-training - INFO - test:: [test_time: -121.64 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 02:55:51,614 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_020.pt saved -2022-02-02 02:55:51,617 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:59:06 -2022-02-02 02:55:51,617 - easytorch-training - INFO - epoch 21 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:22<00:00, 1.27it/s] -2022-02-02 03:04:13,633 - easytorch-training - INFO - train:: [train_loss: 19.1563, train_MAPE: 0.1436, train_RMSE: 30.5858, train_time: 502.02 (s), lr: 5.00e-04] -2022-02-02 03:06:17,737 - easytorch-training - INFO - val:: [val_time: 124.10 (s), val_loss: 18.6693, val_MAPE: 0.1251, val_RMSE: 28.8766] -2022-02-02 03:08:22,064 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5971, Test RMSE: 26.9603, Test MAPE: 0.1114 -2022-02-02 03:08:22,068 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1055, Test RMSE: 27.9054, Test MAPE: 0.1151 -2022-02-02 03:08:22,072 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5683, Test RMSE: 28.6404, Test MAPE: 0.1186 -2022-02-02 03:08:22,076 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.9825, Test RMSE: 29.2265, Test MAPE: 0.1217 -2022-02-02 03:08:22,079 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.2204, Test RMSE: 29.6779, Test MAPE: 0.1224 -2022-02-02 03:08:22,083 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.4679, Test RMSE: 30.0520, Test MAPE: 0.1239 -2022-02-02 03:08:22,087 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.7139, Test RMSE: 30.4171, Test MAPE: 0.1257 -2022-02-02 03:08:22,091 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.9826, Test RMSE: 30.7608, Test MAPE: 0.1284 -2022-02-02 03:08:22,095 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.1669, Test RMSE: 31.0784, Test MAPE: 0.1292 -2022-02-02 03:08:22,099 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.3341, Test RMSE: 31.3429, Test MAPE: 0.1304 -2022-02-02 03:08:22,103 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.5668, Test RMSE: 31.6414, Test MAPE: 0.1324 -2022-02-02 03:08:22,106 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.8808, Test RMSE: 32.0325, Test MAPE: 0.1353 -2022-02-02 03:08:22,107 - easytorch-training - INFO - test:: [test_time: -124.37 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 03:08:22,470 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_021.pt saved -2022-02-02 03:08:22,471 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:47 -2022-02-02 03:08:22,471 - easytorch-training - INFO - epoch 22 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:24<00:00, 1.26it/s] -2022-02-02 03:16:47,455 - easytorch-training - INFO - train:: [train_loss: 19.0693, train_MAPE: 0.1417, train_RMSE: 30.5159, train_time: 504.98 (s), lr: 5.00e-04] -2022-02-02 03:18:57,816 - easytorch-training - INFO - val:: [val_time: 130.36 (s), val_loss: 19.3533, val_MAPE: 0.1592, val_RMSE: 29.2850] -2022-02-02 03:21:00,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.0973, Test RMSE: 27.2438, Test MAPE: 0.1330 -2022-02-02 03:21:00,231 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.7117, Test RMSE: 28.2099, Test MAPE: 0.1383 -2022-02-02 03:21:00,236 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.4950, Test RMSE: 29.1643, Test MAPE: 0.1509 -2022-02-02 03:21:00,241 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.9356, Test RMSE: 29.7731, Test MAPE: 0.1567 -2022-02-02 03:21:00,246 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.3071, Test RMSE: 30.2656, Test MAPE: 0.1615 -2022-02-02 03:21:00,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.6095, Test RMSE: 30.7522, Test MAPE: 0.1635 -2022-02-02 03:21:00,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.6983, Test RMSE: 30.9427, Test MAPE: 0.1623 -2022-02-02 03:21:00,259 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 20.0351, Test RMSE: 31.3777, Test MAPE: 0.1646 -2022-02-02 03:21:00,263 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 20.0501, Test RMSE: 31.5827, Test MAPE: 0.1601 -2022-02-02 03:21:00,267 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 20.3112, Test RMSE: 31.9313, Test MAPE: 0.1649 -2022-02-02 03:21:00,271 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.7185, Test RMSE: 32.2983, Test MAPE: 0.1756 -2022-02-02 03:21:00,274 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.6754, Test RMSE: 32.5164, Test MAPE: 0.1672 -2022-02-02 03:21:00,275 - easytorch-training - INFO - test:: [test_time: -122.45 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 03:21:00,655 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_022.pt saved -2022-02-02 03:21:00,655 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:09 -2022-02-02 03:21:00,655 - easytorch-training - INFO - epoch 23 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:30<00:00, 1.25it/s] -2022-02-02 03:29:30,874 - easytorch-training - INFO - train:: [train_loss: 19.0499, train_MAPE: 0.1422, train_RMSE: 30.4715, train_time: 510.22 (s), lr: 5.00e-04] -2022-02-02 03:31:34,465 - easytorch-training - INFO - val:: [val_time: 123.59 (s), val_loss: 18.7798, val_MAPE: 0.1259, val_RMSE: 28.8495] -2022-02-02 03:33:44,446 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6319, Test RMSE: 26.9550, Test MAPE: 0.1108 -2022-02-02 03:33:44,451 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1908, Test RMSE: 27.8540, Test MAPE: 0.1185 -2022-02-02 03:33:44,456 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.6134, Test RMSE: 28.5958, Test MAPE: 0.1185 -2022-02-02 03:33:44,461 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.9996, Test RMSE: 29.1605, Test MAPE: 0.1224 -2022-02-02 03:33:44,466 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.2764, Test RMSE: 29.6156, Test MAPE: 0.1231 -2022-02-02 03:33:44,471 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.5299, Test RMSE: 29.9879, Test MAPE: 0.1258 -2022-02-02 03:33:44,475 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.7898, Test RMSE: 30.3295, Test MAPE: 0.1290 -2022-02-02 03:33:44,479 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.9613, Test RMSE: 30.6385, Test MAPE: 0.1281 -2022-02-02 03:33:44,482 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.1635, Test RMSE: 30.9370, Test MAPE: 0.1285 -2022-02-02 03:33:44,486 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.4015, Test RMSE: 31.2164, Test MAPE: 0.1335 -2022-02-02 03:33:44,490 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.6484, Test RMSE: 31.5399, Test MAPE: 0.1342 -2022-02-02 03:33:44,494 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.9199, Test RMSE: 31.9304, Test MAPE: 0.1357 -2022-02-02 03:33:44,494 - easytorch-training - INFO - test:: [test_time: -130.02 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 03:33:44,859 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_023.pt saved -2022-02-02 03:33:44,859 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:00 -2022-02-02 03:33:44,859 - easytorch-training - INFO - epoch 24 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:31<00:00, 1.25it/s] -2022-02-02 03:42:16,337 - easytorch-training - INFO - train:: [train_loss: 18.9715, train_MAPE: 0.1422, train_RMSE: 30.3586, train_time: 511.48 (s), lr: 5.00e-04] -2022-02-02 03:44:25,836 - easytorch-training - INFO - val:: [val_time: 129.50 (s), val_loss: 18.7097, val_MAPE: 0.1241, val_RMSE: 28.8827] -2022-02-02 03:46:33,753 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5652, Test RMSE: 26.9407, Test MAPE: 0.1114 -2022-02-02 03:46:33,757 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1235, Test RMSE: 27.8825, Test MAPE: 0.1147 -2022-02-02 03:46:33,761 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5828, Test RMSE: 28.6417, Test MAPE: 0.1170 -2022-02-02 03:46:33,765 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.9238, Test RMSE: 29.1906, Test MAPE: 0.1210 -2022-02-02 03:46:33,769 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1812, Test RMSE: 29.6261, Test MAPE: 0.1217 -2022-02-02 03:46:33,772 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.5148, Test RMSE: 30.0390, Test MAPE: 0.1237 -2022-02-02 03:46:33,776 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.6629, Test RMSE: 30.3088, Test MAPE: 0.1239 -2022-02-02 03:46:33,780 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.9710, Test RMSE: 30.6559, Test MAPE: 0.1260 -2022-02-02 03:46:33,784 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.2083, Test RMSE: 30.9771, Test MAPE: 0.1275 -2022-02-02 03:46:33,788 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.3351, Test RMSE: 31.2191, Test MAPE: 0.1279 -2022-02-02 03:46:33,792 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.4642, Test RMSE: 31.4668, Test MAPE: 0.1292 -2022-02-02 03:46:33,795 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.7988, Test RMSE: 31.8591, Test MAPE: 0.1303 -2022-02-02 03:46:33,796 - easytorch-training - INFO - test:: [test_time: -127.95 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 03:46:34,270 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_024.pt saved -2022-02-02 03:46:34,270 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:13 -2022-02-02 03:46:34,270 - easytorch-training - INFO - epoch 25 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:22<00:00, 1.27it/s] -2022-02-02 03:54:57,207 - easytorch-training - INFO - train:: [train_loss: 18.9280, train_MAPE: 0.1411, train_RMSE: 30.3292, train_time: 502.94 (s), lr: 5.00e-04] -2022-02-02 03:57:07,360 - easytorch-training - INFO - val:: [val_time: 130.15 (s), val_loss: 18.9182, val_MAPE: 0.1299, val_RMSE: 29.0116] -2022-02-02 03:59:22,288 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6755, Test RMSE: 27.0056, Test MAPE: 0.1149 -2022-02-02 03:59:22,295 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.3309, Test RMSE: 27.9656, Test MAPE: 0.1256 -2022-02-02 03:59:22,301 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.7209, Test RMSE: 28.7318, Test MAPE: 0.1202 -2022-02-02 03:59:22,308 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.0970, Test RMSE: 29.2502, Test MAPE: 0.1279 -2022-02-02 03:59:22,314 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.3797, Test RMSE: 29.6822, Test MAPE: 0.1308 -2022-02-02 03:59:22,321 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.6015, Test RMSE: 30.0421, Test MAPE: 0.1311 -2022-02-02 03:59:22,327 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.8639, Test RMSE: 30.4578, Test MAPE: 0.1286 -2022-02-02 03:59:22,334 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.0505, Test RMSE: 30.7671, Test MAPE: 0.1283 -2022-02-02 03:59:22,340 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.3160, Test RMSE: 31.1366, Test MAPE: 0.1268 -2022-02-02 03:59:22,347 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.4753, Test RMSE: 31.3803, Test MAPE: 0.1301 -2022-02-02 03:59:22,353 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.8041, Test RMSE: 31.6965, Test MAPE: 0.1408 -2022-02-02 03:59:22,360 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.1501, Test RMSE: 32.2049, Test MAPE: 0.1364 -2022-02-02 03:59:22,360 - easytorch-training - INFO - test:: [test_time: -135.00 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 03:59:22,931 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_025.pt saved -2022-02-02 03:59:22,932 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:23 -2022-02-02 03:59:22,932 - easytorch-training - INFO - epoch 26 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:26<00:00, 1.26it/s] -2022-02-02 04:07:49,251 - easytorch-training - INFO - train:: [train_loss: 18.9000, train_MAPE: 0.1411, train_RMSE: 30.2658, train_time: 506.32 (s), lr: 5.00e-04] -2022-02-02 04:09:53,201 - easytorch-training - INFO - val:: [val_time: 123.94 (s), val_loss: 18.8662, val_MAPE: 0.1341, val_RMSE: 28.8947] -2022-02-02 04:11:59,956 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.8465, Test RMSE: 26.9725, Test MAPE: 0.1286 -2022-02-02 04:11:59,959 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.2737, Test RMSE: 27.8536, Test MAPE: 0.1264 -2022-02-02 04:11:59,963 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.8888, Test RMSE: 28.6485, Test MAPE: 0.1347 -2022-02-02 04:11:59,967 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.2907, Test RMSE: 29.2255, Test MAPE: 0.1376 -2022-02-02 04:11:59,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.5179, Test RMSE: 29.6203, Test MAPE: 0.1392 -2022-02-02 04:11:59,975 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.4597, Test RMSE: 29.9492, Test MAPE: 0.1231 -2022-02-02 04:11:59,978 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.7639, Test RMSE: 30.3195, Test MAPE: 0.1294 -2022-02-02 04:11:59,982 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.9913, Test RMSE: 30.6238, Test MAPE: 0.1325 -2022-02-02 04:11:59,986 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.1604, Test RMSE: 30.9383, Test MAPE: 0.1311 -2022-02-02 04:11:59,990 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.4044, Test RMSE: 31.2357, Test MAPE: 0.1354 -2022-02-02 04:11:59,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.6772, Test RMSE: 31.5884, Test MAPE: 0.1374 -2022-02-02 04:11:59,997 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.0108, Test RMSE: 32.0506, Test MAPE: 0.1376 -2022-02-02 04:11:59,998 - easytorch-training - INFO - test:: [test_time: -126.79 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 04:12:00,578 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_026.pt saved -2022-02-02 04:12:00,579 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:49 -2022-02-02 04:12:00,579 - easytorch-training - INFO - epoch 27 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:00<00:00, 1.33it/s] -2022-02-02 04:20:01,032 - easytorch-training - INFO - train:: [train_loss: 18.8558, train_MAPE: 0.1412, train_RMSE: 30.2186, train_time: 480.45 (s), lr: 5.00e-04] -2022-02-02 04:21:59,157 - easytorch-training - INFO - val:: [val_time: 118.12 (s), val_loss: 18.8866, val_MAPE: 0.1319, val_RMSE: 28.9659] -2022-02-02 04:24:11,452 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.7042, Test RMSE: 27.0055, Test MAPE: 0.1155 -2022-02-02 04:24:11,457 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.3020, Test RMSE: 27.9053, Test MAPE: 0.1216 -2022-02-02 04:24:11,462 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.7190, Test RMSE: 28.6309, Test MAPE: 0.1229 -2022-02-02 04:24:11,467 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.1513, Test RMSE: 29.2181, Test MAPE: 0.1276 -2022-02-02 04:24:11,471 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.4055, Test RMSE: 29.6732, Test MAPE: 0.1276 -2022-02-02 04:24:11,475 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.7062, Test RMSE: 30.0541, Test MAPE: 0.1324 -2022-02-02 04:24:11,479 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.0071, Test RMSE: 30.4823, Test MAPE: 0.1357 -2022-02-02 04:24:11,482 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.2105, Test RMSE: 30.7887, Test MAPE: 0.1371 -2022-02-02 04:24:11,486 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.1748, Test RMSE: 31.0075, Test MAPE: 0.1298 -2022-02-02 04:24:11,490 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.4938, Test RMSE: 31.3096, Test MAPE: 0.1350 -2022-02-02 04:24:11,494 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.6660, Test RMSE: 31.5629, Test MAPE: 0.1351 -2022-02-02 04:24:11,498 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.8371, Test RMSE: 31.8721, Test MAPE: 0.1332 -2022-02-02 04:24:11,498 - easytorch-training - INFO - test:: [test_time: -132.34 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 04:24:11,866 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_027.pt saved -2022-02-02 04:24:11,866 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:40 -2022-02-02 04:24:11,867 - easytorch-training - INFO - epoch 28 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:16<00:00, 1.28it/s] -2022-02-02 04:32:28,385 - easytorch-training - INFO - train:: [train_loss: 18.8465, train_MAPE: 0.1413, train_RMSE: 30.1852, train_time: 496.52 (s), lr: 5.00e-04] -2022-02-02 04:34:42,959 - easytorch-training - INFO - val:: [val_time: 134.57 (s), val_loss: 18.7567, val_MAPE: 0.1236, val_RMSE: 28.8427] -2022-02-02 04:36:56,598 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6449, Test RMSE: 26.9618, Test MAPE: 0.1101 -2022-02-02 04:36:56,603 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.2350, Test RMSE: 27.8940, Test MAPE: 0.1146 -2022-02-02 04:36:56,609 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.6109, Test RMSE: 28.5847, Test MAPE: 0.1170 -2022-02-02 04:36:56,615 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.0093, Test RMSE: 29.1651, Test MAPE: 0.1195 -2022-02-02 04:36:56,620 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.2939, Test RMSE: 29.6244, Test MAPE: 0.1210 -2022-02-02 04:36:56,626 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.5441, Test RMSE: 30.0312, Test MAPE: 0.1228 -2022-02-02 04:36:56,631 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.7880, Test RMSE: 30.3771, Test MAPE: 0.1245 -2022-02-02 04:36:56,636 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.0426, Test RMSE: 30.7303, Test MAPE: 0.1263 -2022-02-02 04:36:56,642 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.1471, Test RMSE: 30.9697, Test MAPE: 0.1269 -2022-02-02 04:36:56,647 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.3650, Test RMSE: 31.2759, Test MAPE: 0.1280 -2022-02-02 04:36:56,652 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.6926, Test RMSE: 31.6155, Test MAPE: 0.1313 -2022-02-02 04:36:56,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.8297, Test RMSE: 31.9093, Test MAPE: 0.1303 -2022-02-02 04:36:56,658 - easytorch-training - INFO - test:: [test_time: -133.70 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 04:36:57,229 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_028.pt saved -2022-02-02 04:36:57,229 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:42 -2022-02-02 04:36:57,230 - easytorch-training - INFO - epoch 29 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:19<00:00, 1.27it/s] -2022-02-02 04:45:16,862 - easytorch-training - INFO - train:: [train_loss: 18.8216, train_MAPE: 0.1407, train_RMSE: 30.1631, train_time: 499.63 (s), lr: 5.00e-04] -2022-02-02 04:47:25,273 - easytorch-training - INFO - val:: [val_time: 128.41 (s), val_loss: 18.8332, val_MAPE: 0.1400, val_RMSE: 28.7994] -2022-02-02 04:49:32,818 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.9028, Test RMSE: 26.9989, Test MAPE: 0.1312 -2022-02-02 04:49:32,825 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.3028, Test RMSE: 27.8848, Test MAPE: 0.1279 -2022-02-02 04:49:32,831 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.8796, Test RMSE: 28.6643, Test MAPE: 0.1360 -2022-02-02 04:49:32,837 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.1609, Test RMSE: 29.1869, Test MAPE: 0.1354 -2022-02-02 04:49:32,842 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.4617, Test RMSE: 29.6337, Test MAPE: 0.1377 -2022-02-02 04:49:32,847 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.7672, Test RMSE: 29.9988, Test MAPE: 0.1421 -2022-02-02 04:49:32,853 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.9387, Test RMSE: 30.3296, Test MAPE: 0.1421 -2022-02-02 04:49:32,858 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.1177, Test RMSE: 30.6301, Test MAPE: 0.1419 -2022-02-02 04:49:32,863 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.2449, Test RMSE: 30.9132, Test MAPE: 0.1400 -2022-02-02 04:49:32,869 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.5342, Test RMSE: 31.2253, Test MAPE: 0.1456 -2022-02-02 04:49:32,874 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.7769, Test RMSE: 31.4981, Test MAPE: 0.1495 -2022-02-02 04:49:32,880 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.9737, Test RMSE: 31.8721, Test MAPE: 0.1465 -2022-02-02 04:49:32,880 - easytorch-training - INFO - test:: [test_time: -127.60 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 04:49:33,456 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_029.pt saved -2022-02-02 04:49:33,456 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:13 -2022-02-02 04:49:33,457 - easytorch-training - INFO - epoch 30 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:33<00:00, 1.24it/s] -2022-02-02 04:58:06,752 - easytorch-training - INFO - train:: [train_loss: 18.7729, train_MAPE: 0.1399, train_RMSE: 30.1371, train_time: 513.29 (s), lr: 5.00e-04] -2022-02-02 05:00:04,745 - easytorch-training - INFO - val:: [val_time: 117.99 (s), val_loss: 18.8843, val_MAPE: 0.1403, val_RMSE: 28.9377] -2022-02-02 05:02:15,401 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.9281, Test RMSE: 27.0934, Test MAPE: 0.1280 -2022-02-02 05:02:15,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.3666, Test RMSE: 27.9986, Test MAPE: 0.1271 -2022-02-02 05:02:15,412 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.0390, Test RMSE: 28.8461, Test MAPE: 0.1380 -2022-02-02 05:02:15,418 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.3601, Test RMSE: 29.4089, Test MAPE: 0.1382 -2022-02-02 05:02:15,423 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.7810, Test RMSE: 29.9058, Test MAPE: 0.1452 -2022-02-02 05:02:15,428 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.7890, Test RMSE: 30.1809, Test MAPE: 0.1368 -2022-02-02 05:02:15,434 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.0798, Test RMSE: 30.6198, Test MAPE: 0.1391 -2022-02-02 05:02:15,439 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.4453, Test RMSE: 30.9796, Test MAPE: 0.1466 -2022-02-02 05:02:15,444 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.9465, Test RMSE: 31.4552, Test MAPE: 0.1597 -2022-02-02 05:02:15,450 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.6990, Test RMSE: 31.5299, Test MAPE: 0.1445 -2022-02-02 05:02:15,455 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.7122, Test RMSE: 31.7702, Test MAPE: 0.1371 -2022-02-02 05:02:15,461 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.9717, Test RMSE: 32.1606, Test MAPE: 0.1362 -2022-02-02 05:02:15,461 - easytorch-training - INFO - test:: [test_time: -130.71 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 05:02:16,043 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_030.pt saved -2022-02-02 05:02:16,046 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:07 -2022-02-02 05:02:16,047 - easytorch-training - INFO - epoch 31 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:36<00:00, 1.23it/s] -2022-02-02 05:10:52,978 - easytorch-training - INFO - train:: [train_loss: 18.7542, train_MAPE: 0.1407, train_RMSE: 30.0704, train_time: 516.93 (s), lr: 5.00e-04] -2022-02-02 05:12:56,511 - easytorch-training - INFO - val:: [val_time: 123.53 (s), val_loss: 18.6076, val_MAPE: 0.1240, val_RMSE: 28.7846] -2022-02-02 05:15:07,620 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5786, Test RMSE: 26.9673, Test MAPE: 0.1103 -2022-02-02 05:15:07,625 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0981, Test RMSE: 27.8397, Test MAPE: 0.1148 -2022-02-02 05:15:07,630 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5402, Test RMSE: 28.5691, Test MAPE: 0.1176 -2022-02-02 05:15:07,635 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.9359, Test RMSE: 29.1825, Test MAPE: 0.1207 -2022-02-02 05:15:07,640 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1895, Test RMSE: 29.6153, Test MAPE: 0.1223 -2022-02-02 05:15:07,643 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.4024, Test RMSE: 29.9537, Test MAPE: 0.1235 -2022-02-02 05:15:07,647 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.7116, Test RMSE: 30.4014, Test MAPE: 0.1284 -2022-02-02 05:15:07,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.8697, Test RMSE: 30.6841, Test MAPE: 0.1261 -2022-02-02 05:15:07,655 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.0792, Test RMSE: 31.0220, Test MAPE: 0.1273 -2022-02-02 05:15:07,659 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.3131, Test RMSE: 31.3311, Test MAPE: 0.1289 -2022-02-02 05:15:07,662 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.4751, Test RMSE: 31.5347, Test MAPE: 0.1307 -2022-02-02 05:15:07,666 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.7604, Test RMSE: 31.8703, Test MAPE: 0.1317 -2022-02-02 05:15:07,666 - easytorch-training - INFO - test:: [test_time: -131.15 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 05:15:08,241 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_031.pt saved -2022-02-02 05:15:08,242 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:32 -2022-02-02 05:15:08,242 - easytorch-training - INFO - epoch 32 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:35<00:00, 1.24it/s] -2022-02-02 05:23:43,801 - easytorch-training - INFO - train:: [train_loss: 18.7012, train_MAPE: 0.1394, train_RMSE: 30.0208, train_time: 515.56 (s), lr: 5.00e-04] -2022-02-02 05:25:59,677 - easytorch-training - INFO - val:: [val_time: 135.87 (s), val_loss: 18.6399, val_MAPE: 0.1255, val_RMSE: 28.8520] -2022-02-02 05:28:14,111 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5723, Test RMSE: 26.9728, Test MAPE: 0.1126 -2022-02-02 05:28:14,116 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1440, Test RMSE: 27.9536, Test MAPE: 0.1158 -2022-02-02 05:28:14,121 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.6728, Test RMSE: 28.7706, Test MAPE: 0.1194 -2022-02-02 05:28:14,126 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.0287, Test RMSE: 29.3339, Test MAPE: 0.1217 -2022-02-02 05:28:14,131 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.3242, Test RMSE: 29.7831, Test MAPE: 0.1235 -2022-02-02 05:28:14,136 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.5272, Test RMSE: 30.1016, Test MAPE: 0.1253 -2022-02-02 05:28:14,141 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.8126, Test RMSE: 30.4789, Test MAPE: 0.1276 -2022-02-02 05:28:14,145 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.0383, Test RMSE: 30.8268, Test MAPE: 0.1285 -2022-02-02 05:28:14,148 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.2392, Test RMSE: 31.1463, Test MAPE: 0.1298 -2022-02-02 05:28:14,152 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.4064, Test RMSE: 31.3757, Test MAPE: 0.1307 -2022-02-02 05:28:14,156 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.5985, Test RMSE: 31.5885, Test MAPE: 0.1330 -2022-02-02 05:28:14,160 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.9207, Test RMSE: 31.9770, Test MAPE: 0.1363 -2022-02-02 05:28:14,160 - easytorch-training - INFO - test:: [test_time: -134.48 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 05:28:14,539 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_032.pt saved -2022-02-02 05:28:14,539 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:55:39 -2022-02-02 05:28:14,539 - easytorch-training - INFO - epoch 33 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:46<00:00, 1.21it/s] -2022-02-02 05:37:01,082 - easytorch-training - INFO - train:: [train_loss: 18.6942, train_MAPE: 0.1394, train_RMSE: 30.0075, train_time: 526.54 (s), lr: 5.00e-04] -2022-02-02 05:39:14,027 - easytorch-training - INFO - val:: [val_time: 132.94 (s), val_loss: 19.3788, val_MAPE: 0.1507, val_RMSE: 29.3344] -2022-02-02 05:41:32,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 17.1202, Test RMSE: 27.1670, Test MAPE: 0.1297 -2022-02-02 05:41:32,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.7890, Test RMSE: 28.0822, Test MAPE: 0.1390 -2022-02-02 05:41:32,982 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 18.3424, Test RMSE: 28.8419, Test MAPE: 0.1452 -2022-02-02 05:41:32,988 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.8724, Test RMSE: 29.4586, Test MAPE: 0.1531 -2022-02-02 05:41:32,993 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 19.0059, Test RMSE: 29.8666, Test MAPE: 0.1497 -2022-02-02 05:41:32,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 19.1962, Test RMSE: 30.2355, Test MAPE: 0.1497 -2022-02-02 05:41:33,005 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 19.4658, Test RMSE: 30.6190, Test MAPE: 0.1522 -2022-02-02 05:41:33,010 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.5553, Test RMSE: 30.8854, Test MAPE: 0.1475 -2022-02-02 05:41:33,016 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.4337, Test RMSE: 31.0685, Test MAPE: 0.1377 -2022-02-02 05:41:33,022 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.8276, Test RMSE: 31.4191, Test MAPE: 0.1457 -2022-02-02 05:41:33,028 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 20.0458, Test RMSE: 31.7036, Test MAPE: 0.1476 -2022-02-02 05:41:33,033 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 20.1547, Test RMSE: 32.0108, Test MAPE: 0.1434 -2022-02-02 05:41:33,034 - easytorch-training - INFO - test:: [test_time: -139.00 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 05:41:33,614 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_033.pt saved -2022-02-02 05:41:33,614 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:21 -2022-02-02 05:41:33,614 - easytorch-training - INFO - epoch 34 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:28<00:00, 1.25it/s] -2022-02-02 05:50:01,841 - easytorch-training - INFO - train:: [train_loss: 18.6411, train_MAPE: 0.1390, train_RMSE: 29.9496, train_time: 508.23 (s), lr: 5.00e-04] -2022-02-02 05:52:13,536 - easytorch-training - INFO - val:: [val_time: 131.69 (s), val_loss: 18.7277, val_MAPE: 0.1387, val_RMSE: 28.6715] -2022-02-02 05:54:13,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.8439, Test RMSE: 26.9822, Test MAPE: 0.1284 -2022-02-02 05:54:13,230 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.3469, Test RMSE: 27.8597, Test MAPE: 0.1304 -2022-02-02 05:54:13,234 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.8788, Test RMSE: 28.6083, Test MAPE: 0.1366 -2022-02-02 05:54:13,237 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.2783, Test RMSE: 29.1754, Test MAPE: 0.1407 -2022-02-02 05:54:13,241 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.4967, Test RMSE: 29.5920, Test MAPE: 0.1409 -2022-02-02 05:54:13,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.7495, Test RMSE: 29.9687, Test MAPE: 0.1426 -2022-02-02 05:54:13,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.9636, Test RMSE: 30.2897, Test MAPE: 0.1440 -2022-02-02 05:54:13,253 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 19.0767, Test RMSE: 30.5892, Test MAPE: 0.1410 -2022-02-02 05:54:13,256 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.2082, Test RMSE: 30.8364, Test MAPE: 0.1395 -2022-02-02 05:54:13,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.3212, Test RMSE: 31.1239, Test MAPE: 0.1362 -2022-02-02 05:54:13,264 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.5325, Test RMSE: 31.3715, Test MAPE: 0.1389 -2022-02-02 05:54:13,268 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.8262, Test RMSE: 31.7617, Test MAPE: 0.1414 -2022-02-02 05:54:13,268 - easytorch-training - INFO - test:: [test_time: -119.73 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 05:54:13,804 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_034.pt saved -2022-02-02 05:54:13,805 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:03 -2022-02-02 05:54:13,805 - easytorch-training - INFO - epoch 35 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:31<00:00, 1.25it/s] -2022-02-02 06:02:45,036 - easytorch-training - INFO - train:: [train_loss: 18.6062, train_MAPE: 0.1381, train_RMSE: 29.9173, train_time: 511.23 (s), lr: 5.00e-04] -2022-02-02 06:04:50,042 - easytorch-training - INFO - val:: [val_time: 125.00 (s), val_loss: 18.5831, val_MAPE: 0.1249, val_RMSE: 28.7376] -2022-02-02 06:07:04,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5534, Test RMSE: 26.9441, Test MAPE: 0.1104 -2022-02-02 06:07:04,231 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0726, Test RMSE: 27.8475, Test MAPE: 0.1146 -2022-02-02 06:07:04,236 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5250, Test RMSE: 28.5786, Test MAPE: 0.1174 -2022-02-02 06:07:04,241 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8974, Test RMSE: 29.1364, Test MAPE: 0.1208 -2022-02-02 06:07:04,247 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.3003, Test RMSE: 29.6574, Test MAPE: 0.1263 -2022-02-02 06:07:04,252 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.4827, Test RMSE: 29.9699, Test MAPE: 0.1275 -2022-02-02 06:07:04,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.6512, Test RMSE: 30.3276, Test MAPE: 0.1254 -2022-02-02 06:07:04,259 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.9086, Test RMSE: 30.6628, Test MAPE: 0.1285 -2022-02-02 06:07:04,263 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.0723, Test RMSE: 30.9462, Test MAPE: 0.1285 -2022-02-02 06:07:04,267 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.2897, Test RMSE: 31.2457, Test MAPE: 0.1306 -2022-02-02 06:07:04,271 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.4885, Test RMSE: 31.5732, Test MAPE: 0.1308 -2022-02-02 06:07:04,275 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.7600, Test RMSE: 31.9534, Test MAPE: 0.1326 -2022-02-02 06:07:04,275 - easytorch-training - INFO - test:: [test_time: -134.23 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 06:07:04,847 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_035.pt saved -2022-02-02 06:07:04,848 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:57:17 -2022-02-02 06:07:04,848 - easytorch-training - INFO - epoch 36 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:12<00:00, 1.29it/s] -2022-02-02 06:15:17,370 - easytorch-training - INFO - train:: [train_loss: 18.5873, train_MAPE: 0.1388, train_RMSE: 29.8699, train_time: 492.52 (s), lr: 5.00e-04] -2022-02-02 06:17:15,567 - easytorch-training - INFO - val:: [val_time: 118.19 (s), val_loss: 18.7544, val_MAPE: 0.1225, val_RMSE: 28.9148] -2022-02-02 06:19:22,972 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5957, Test RMSE: 26.9781, Test MAPE: 0.1101 -2022-02-02 06:19:22,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1786, Test RMSE: 27.9045, Test MAPE: 0.1131 -2022-02-02 06:19:22,982 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5928, Test RMSE: 28.6206, Test MAPE: 0.1160 -2022-02-02 06:19:22,987 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 18.0301, Test RMSE: 29.2249, Test MAPE: 0.1182 -2022-02-02 06:19:22,990 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.2600, Test RMSE: 29.6476, Test MAPE: 0.1198 -2022-02-02 06:19:22,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.5317, Test RMSE: 30.0400, Test MAPE: 0.1216 -2022-02-02 06:19:22,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.7410, Test RMSE: 30.3784, Test MAPE: 0.1230 -2022-02-02 06:19:23,002 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.9467, Test RMSE: 30.6994, Test MAPE: 0.1244 -2022-02-02 06:19:23,006 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.1807, Test RMSE: 31.0117, Test MAPE: 0.1256 -2022-02-02 06:19:23,010 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.3757, Test RMSE: 31.3048, Test MAPE: 0.1269 -2022-02-02 06:19:23,014 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.6314, Test RMSE: 31.6117, Test MAPE: 0.1284 -2022-02-02 06:19:23,017 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.8863, Test RMSE: 31.9799, Test MAPE: 0.1300 -2022-02-02 06:19:23,018 - easytorch-training - INFO - test:: [test_time: -127.45 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 06:19:23,491 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_036.pt saved -2022-02-02 06:19:23,492 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:00 -2022-02-02 06:19:23,492 - easytorch-training - INFO - epoch 37 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:19<00:00, 1.27it/s] -2022-02-02 06:27:43,245 - easytorch-training - INFO - train:: [train_loss: 18.3696, train_MAPE: 0.1351, train_RMSE: 29.6591, train_time: 499.75 (s), lr: 2.50e-04] -2022-02-02 06:30:01,606 - easytorch-training - INFO - val:: [val_time: 138.36 (s), val_loss: 18.5430, val_MAPE: 0.1236, val_RMSE: 28.7499] -2022-02-02 06:32:15,776 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6079, Test RMSE: 27.0080, Test MAPE: 0.1121 -2022-02-02 06:32:15,780 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1230, Test RMSE: 27.9294, Test MAPE: 0.1156 -2022-02-02 06:32:15,784 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5202, Test RMSE: 28.6035, Test MAPE: 0.1176 -2022-02-02 06:32:15,788 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.9001, Test RMSE: 29.1479, Test MAPE: 0.1209 -2022-02-02 06:32:15,791 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1357, Test RMSE: 29.5466, Test MAPE: 0.1215 -2022-02-02 06:32:15,795 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3368, Test RMSE: 29.8751, Test MAPE: 0.1223 -2022-02-02 06:32:15,799 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5525, Test RMSE: 30.2037, Test MAPE: 0.1235 -2022-02-02 06:32:15,803 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7691, Test RMSE: 30.5159, Test MAPE: 0.1253 -2022-02-02 06:32:15,807 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.9376, Test RMSE: 30.8497, Test MAPE: 0.1257 -2022-02-02 06:32:15,810 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.1278, Test RMSE: 31.1097, Test MAPE: 0.1270 -2022-02-02 06:32:15,814 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2891, Test RMSE: 31.3134, Test MAPE: 0.1281 -2022-02-02 06:32:15,818 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.5739, Test RMSE: 31.6938, Test MAPE: 0.1298 -2022-02-02 06:32:15,818 - easytorch-training - INFO - test:: [test_time: -134.21 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 06:32:16,204 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_037.pt saved -2022-02-02 06:32:16,204 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:19 -2022-02-02 06:32:16,204 - easytorch-training - INFO - epoch 38 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:27<00:00, 1.25it/s] -2022-02-02 06:40:44,206 - easytorch-training - INFO - train:: [train_loss: 18.3580, train_MAPE: 0.1352, train_RMSE: 29.6278, train_time: 508.00 (s), lr: 2.50e-04] -2022-02-02 06:42:46,585 - easytorch-training - INFO - val:: [val_time: 122.37 (s), val_loss: 18.5435, val_MAPE: 0.1254, val_RMSE: 28.7148] -2022-02-02 06:44:59,146 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5092, Test RMSE: 26.8744, Test MAPE: 0.1117 -2022-02-02 06:44:59,151 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0331, Test RMSE: 27.7693, Test MAPE: 0.1152 -2022-02-02 06:44:59,156 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4730, Test RMSE: 28.4933, Test MAPE: 0.1174 -2022-02-02 06:44:59,161 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8171, Test RMSE: 29.0529, Test MAPE: 0.1186 -2022-02-02 06:44:59,166 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1110, Test RMSE: 29.5042, Test MAPE: 0.1220 -2022-02-02 06:44:59,170 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3827, Test RMSE: 29.8889, Test MAPE: 0.1250 -2022-02-02 06:44:59,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.6223, Test RMSE: 30.2113, Test MAPE: 0.1278 -2022-02-02 06:44:59,178 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.8656, Test RMSE: 30.4982, Test MAPE: 0.1316 -2022-02-02 06:44:59,182 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.0471, Test RMSE: 30.7696, Test MAPE: 0.1328 -2022-02-02 06:44:59,186 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.2226, Test RMSE: 31.0403, Test MAPE: 0.1327 -2022-02-02 06:44:59,189 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.3473, Test RMSE: 31.2867, Test MAPE: 0.1306 -2022-02-02 06:44:59,193 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.6233, Test RMSE: 31.6539, Test MAPE: 0.1317 -2022-02-02 06:44:59,194 - easytorch-training - INFO - test:: [test_time: -132.60 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 06:44:59,553 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_038.pt saved -2022-02-02 06:44:59,554 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:13 -2022-02-02 06:44:59,554 - easytorch-training - INFO - epoch 39 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:32<00:00, 1.24it/s] -2022-02-02 06:53:32,207 - easytorch-training - INFO - train:: [train_loss: 18.3134, train_MAPE: 0.1346, train_RMSE: 29.5689, train_time: 512.65 (s), lr: 2.50e-04] -2022-02-02 06:55:46,874 - easytorch-training - INFO - val:: [val_time: 134.66 (s), val_loss: 18.4617, val_MAPE: 0.1224, val_RMSE: 28.5998] -2022-02-02 06:57:55,820 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4951, Test RMSE: 26.8579, Test MAPE: 0.1094 -2022-02-02 06:57:55,824 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9957, Test RMSE: 27.7322, Test MAPE: 0.1139 -2022-02-02 06:57:55,828 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4325, Test RMSE: 28.4443, Test MAPE: 0.1170 -2022-02-02 06:57:55,832 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7801, Test RMSE: 28.9801, Test MAPE: 0.1196 -2022-02-02 06:57:55,836 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0409, Test RMSE: 29.4095, Test MAPE: 0.1205 -2022-02-02 06:57:55,840 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2679, Test RMSE: 29.7602, Test MAPE: 0.1226 -2022-02-02 06:57:55,843 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5015, Test RMSE: 30.1017, Test MAPE: 0.1241 -2022-02-02 06:57:55,847 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6917, Test RMSE: 30.3942, Test MAPE: 0.1253 -2022-02-02 06:57:55,851 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8695, Test RMSE: 30.6799, Test MAPE: 0.1267 -2022-02-02 06:57:55,855 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0364, Test RMSE: 30.9523, Test MAPE: 0.1266 -2022-02-02 06:57:55,859 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2328, Test RMSE: 31.2324, Test MAPE: 0.1282 -2022-02-02 06:57:55,863 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.5222, Test RMSE: 31.5923, Test MAPE: 0.1303 -2022-02-02 06:57:55,863 - easytorch-training - INFO - test:: [test_time: -128.98 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 06:57:56,221 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_039.pt saved -2022-02-02 06:57:56,221 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:41 -2022-02-02 06:57:56,221 - easytorch-training - INFO - epoch 40 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:25<00:00, 1.26it/s] -2022-02-02 07:06:21,825 - easytorch-training - INFO - train:: [train_loss: 18.2947, train_MAPE: 0.1346, train_RMSE: 29.5507, train_time: 505.60 (s), lr: 2.50e-04] -2022-02-02 07:08:24,796 - easytorch-training - INFO - val:: [val_time: 122.97 (s), val_loss: 18.4497, val_MAPE: 0.1223, val_RMSE: 28.5838] -2022-02-02 07:10:32,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4903, Test RMSE: 26.8334, Test MAPE: 0.1093 -2022-02-02 07:10:32,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0060, Test RMSE: 27.7447, Test MAPE: 0.1124 -2022-02-02 07:10:32,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4329, Test RMSE: 28.4487, Test MAPE: 0.1162 -2022-02-02 07:10:32,675 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7924, Test RMSE: 28.9894, Test MAPE: 0.1182 -2022-02-02 07:10:32,680 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0703, Test RMSE: 29.4135, Test MAPE: 0.1210 -2022-02-02 07:10:32,686 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3232, Test RMSE: 29.7700, Test MAPE: 0.1242 -2022-02-02 07:10:32,691 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4902, Test RMSE: 30.0961, Test MAPE: 0.1238 -2022-02-02 07:10:32,697 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6895, Test RMSE: 30.3921, Test MAPE: 0.1248 -2022-02-02 07:10:32,702 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8804, Test RMSE: 30.6604, Test MAPE: 0.1263 -2022-02-02 07:10:32,708 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0659, Test RMSE: 30.9305, Test MAPE: 0.1276 -2022-02-02 07:10:32,713 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2514, Test RMSE: 31.1735, Test MAPE: 0.1295 -2022-02-02 07:10:32,719 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4958, Test RMSE: 31.5266, Test MAPE: 0.1303 -2022-02-02 07:10:32,719 - easytorch-training - INFO - test:: [test_time: -127.92 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 07:10:33,308 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_040.pt saved -2022-02-02 07:10:33,311 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:19 -2022-02-02 07:10:33,311 - easytorch-training - INFO - epoch 41 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:17<00:00, 1.28it/s] -2022-02-02 07:18:50,953 - easytorch-training - INFO - train:: [train_loss: 18.2813, train_MAPE: 0.1346, train_RMSE: 29.5247, train_time: 497.64 (s), lr: 2.50e-04] -2022-02-02 07:21:06,497 - easytorch-training - INFO - val:: [val_time: 135.54 (s), val_loss: 18.5868, val_MAPE: 0.1215, val_RMSE: 28.7457] -2022-02-02 07:23:19,261 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6839, Test RMSE: 26.9502, Test MAPE: 0.1108 -2022-02-02 07:23:19,268 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.2136, Test RMSE: 27.8556, Test MAPE: 0.1141 -2022-02-02 07:23:19,273 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.6059, Test RMSE: 28.5581, Test MAPE: 0.1164 -2022-02-02 07:23:19,279 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8530, Test RMSE: 29.0576, Test MAPE: 0.1169 -2022-02-02 07:23:19,284 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1514, Test RMSE: 29.4960, Test MAPE: 0.1192 -2022-02-02 07:23:19,290 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2882, Test RMSE: 29.8260, Test MAPE: 0.1198 -2022-02-02 07:23:19,296 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5331, Test RMSE: 30.1726, Test MAPE: 0.1213 -2022-02-02 07:23:19,302 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7728, Test RMSE: 30.5138, Test MAPE: 0.1229 -2022-02-02 07:23:19,309 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.9189, Test RMSE: 30.7823, Test MAPE: 0.1237 -2022-02-02 07:23:19,316 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0848, Test RMSE: 31.0445, Test MAPE: 0.1251 -2022-02-02 07:23:19,323 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.3394, Test RMSE: 31.3234, Test MAPE: 0.1270 -2022-02-02 07:23:19,329 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.6088, Test RMSE: 31.7041, Test MAPE: 0.1283 -2022-02-02 07:23:19,329 - easytorch-training - INFO - test:: [test_time: -132.83 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 07:23:19,909 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_041.pt saved -2022-02-02 07:23:19,909 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:21 -2022-02-02 07:23:19,909 - easytorch-training - INFO - epoch 42 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:12<00:00, 1.29it/s] -2022-02-02 07:31:32,899 - easytorch-training - INFO - train:: [train_loss: 18.2437, train_MAPE: 0.1340, train_RMSE: 29.4983, train_time: 492.99 (s), lr: 2.50e-04] -2022-02-02 07:33:42,130 - easytorch-training - INFO - val:: [val_time: 129.23 (s), val_loss: 18.4959, val_MAPE: 0.1232, val_RMSE: 28.6990] -2022-02-02 07:35:56,235 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4817, Test RMSE: 26.8880, Test MAPE: 0.1103 -2022-02-02 07:35:56,240 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0100, Test RMSE: 27.7981, Test MAPE: 0.1144 -2022-02-02 07:35:56,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4405, Test RMSE: 28.5053, Test MAPE: 0.1166 -2022-02-02 07:35:56,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8041, Test RMSE: 29.0506, Test MAPE: 0.1190 -2022-02-02 07:35:56,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0703, Test RMSE: 29.4676, Test MAPE: 0.1206 -2022-02-02 07:35:56,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3137, Test RMSE: 29.8363, Test MAPE: 0.1222 -2022-02-02 07:35:56,264 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5152, Test RMSE: 30.1598, Test MAPE: 0.1230 -2022-02-02 07:35:56,268 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7595, Test RMSE: 30.4929, Test MAPE: 0.1255 -2022-02-02 07:35:56,272 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8758, Test RMSE: 30.7504, Test MAPE: 0.1252 -2022-02-02 07:35:56,276 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.1233, Test RMSE: 31.0369, Test MAPE: 0.1280 -2022-02-02 07:35:56,280 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2864, Test RMSE: 31.2824, Test MAPE: 0.1285 -2022-02-02 07:35:56,283 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.5662, Test RMSE: 31.6476, Test MAPE: 0.1303 -2022-02-02 07:35:56,284 - easytorch-training - INFO - test:: [test_time: -134.15 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 07:35:56,820 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_042.pt saved -2022-02-02 07:35:56,820 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:56:00 -2022-02-02 07:35:56,820 - easytorch-training - INFO - epoch 43 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:23<00:00, 1.26it/s] -2022-02-02 07:44:20,637 - easytorch-training - INFO - train:: [train_loss: 18.2525, train_MAPE: 0.1343, train_RMSE: 29.4915, train_time: 503.82 (s), lr: 2.50e-04] -2022-02-02 07:46:18,075 - easytorch-training - INFO - val:: [val_time: 117.43 (s), val_loss: 18.4757, val_MAPE: 0.1257, val_RMSE: 28.6301] -2022-02-02 07:48:29,144 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5518, Test RMSE: 26.8604, Test MAPE: 0.1159 -2022-02-02 07:48:29,150 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1035, Test RMSE: 27.7460, Test MAPE: 0.1217 -2022-02-02 07:48:29,156 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5004, Test RMSE: 28.4577, Test MAPE: 0.1216 -2022-02-02 07:48:29,161 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7958, Test RMSE: 28.9770, Test MAPE: 0.1213 -2022-02-02 07:48:29,166 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0439, Test RMSE: 29.3996, Test MAPE: 0.1223 -2022-02-02 07:48:29,172 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2540, Test RMSE: 29.7642, Test MAPE: 0.1222 -2022-02-02 07:48:29,177 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4823, Test RMSE: 30.0957, Test MAPE: 0.1248 -2022-02-02 07:48:29,182 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7190, Test RMSE: 30.4394, Test MAPE: 0.1276 -2022-02-02 07:48:29,188 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8513, Test RMSE: 30.6822, Test MAPE: 0.1263 -2022-02-02 07:48:29,193 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0492, Test RMSE: 30.9581, Test MAPE: 0.1295 -2022-02-02 07:48:29,198 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2204, Test RMSE: 31.2174, Test MAPE: 0.1297 -2022-02-02 07:48:29,204 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.5213, Test RMSE: 31.5792, Test MAPE: 0.1343 -2022-02-02 07:48:29,204 - easytorch-training - INFO - test:: [test_time: -131.12 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 07:48:29,794 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_043.pt saved -2022-02-02 07:48:29,795 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:55:30 -2022-02-02 07:48:29,795 - easytorch-training - INFO - epoch 44 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:15<00:00, 1.29it/s] -2022-02-02 07:56:45,109 - easytorch-training - INFO - train:: [train_loss: 18.2214, train_MAPE: 0.1342, train_RMSE: 29.4464, train_time: 495.31 (s), lr: 2.50e-04] -2022-02-02 07:58:50,882 - easytorch-training - INFO - val:: [val_time: 125.77 (s), val_loss: 18.3978, val_MAPE: 0.1213, val_RMSE: 28.6104] -2022-02-02 08:00:52,709 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4395, Test RMSE: 26.8578, Test MAPE: 0.1099 -2022-02-02 08:00:52,713 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9551, Test RMSE: 27.7259, Test MAPE: 0.1134 -2022-02-02 08:00:52,717 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4047, Test RMSE: 28.4516, Test MAPE: 0.1172 -2022-02-02 08:00:52,721 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7419, Test RMSE: 29.0049, Test MAPE: 0.1187 -2022-02-02 08:00:52,725 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9968, Test RMSE: 29.4255, Test MAPE: 0.1191 -2022-02-02 08:00:52,729 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2268, Test RMSE: 29.7744, Test MAPE: 0.1205 -2022-02-02 08:00:52,733 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4440, Test RMSE: 30.1357, Test MAPE: 0.1224 -2022-02-02 08:00:52,736 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6459, Test RMSE: 30.4362, Test MAPE: 0.1237 -2022-02-02 08:00:52,740 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8156, Test RMSE: 30.7063, Test MAPE: 0.1247 -2022-02-02 08:00:52,744 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9978, Test RMSE: 30.9825, Test MAPE: 0.1254 -2022-02-02 08:00:52,748 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1914, Test RMSE: 31.2306, Test MAPE: 0.1266 -2022-02-02 08:00:52,752 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4743, Test RMSE: 31.6203, Test MAPE: 0.1282 -2022-02-02 08:00:52,752 - easytorch-training - INFO - test:: [test_time: -121.87 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 08:00:53,107 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_044.pt saved -2022-02-02 08:00:53,107 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:40 -2022-02-02 08:00:53,107 - easytorch-training - INFO - epoch 45 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:15<00:00, 1.29it/s] -2022-02-02 08:09:08,412 - easytorch-training - INFO - train:: [train_loss: 18.1969, train_MAPE: 0.1340, train_RMSE: 29.4067, train_time: 495.30 (s), lr: 2.50e-04] -2022-02-02 08:11:12,092 - easytorch-training - INFO - val:: [val_time: 123.67 (s), val_loss: 18.5773, val_MAPE: 0.1232, val_RMSE: 28.7338] -2022-02-02 08:13:21,862 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6282, Test RMSE: 26.9312, Test MAPE: 0.1115 -2022-02-02 08:13:21,866 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1180, Test RMSE: 27.8127, Test MAPE: 0.1140 -2022-02-02 08:13:21,870 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5459, Test RMSE: 28.5314, Test MAPE: 0.1166 -2022-02-02 08:13:21,874 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8497, Test RMSE: 29.0526, Test MAPE: 0.1183 -2022-02-02 08:13:21,878 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1151, Test RMSE: 29.4805, Test MAPE: 0.1202 -2022-02-02 08:13:21,882 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3764, Test RMSE: 29.8593, Test MAPE: 0.1221 -2022-02-02 08:13:21,885 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5551, Test RMSE: 30.1902, Test MAPE: 0.1228 -2022-02-02 08:13:21,889 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7721, Test RMSE: 30.5075, Test MAPE: 0.1245 -2022-02-02 08:13:21,893 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.9458, Test RMSE: 30.7875, Test MAPE: 0.1255 -2022-02-02 08:13:21,897 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.1416, Test RMSE: 31.0687, Test MAPE: 0.1270 -2022-02-02 08:13:21,901 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.3571, Test RMSE: 31.3346, Test MAPE: 0.1292 -2022-02-02 08:13:21,905 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.6054, Test RMSE: 31.6849, Test MAPE: 0.1301 -2022-02-02 08:13:21,905 - easytorch-training - INFO - test:: [test_time: -129.81 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 08:13:22,357 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_045.pt saved -2022-02-02 08:13:22,357 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:06 -2022-02-02 08:13:22,357 - easytorch-training - INFO - epoch 46 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:32<00:00, 1.24it/s] -2022-02-02 08:21:54,506 - easytorch-training - INFO - train:: [train_loss: 18.2027, train_MAPE: 0.1342, train_RMSE: 29.4081, train_time: 512.15 (s), lr: 2.50e-04] -2022-02-02 08:24:13,881 - easytorch-training - INFO - val:: [val_time: 139.37 (s), val_loss: 18.4721, val_MAPE: 0.1236, val_RMSE: 28.6235] -2022-02-02 08:26:20,381 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4889, Test RMSE: 26.8519, Test MAPE: 0.1131 -2022-02-02 08:26:20,385 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9679, Test RMSE: 27.7238, Test MAPE: 0.1139 -2022-02-02 08:26:20,389 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5829, Test RMSE: 28.4726, Test MAPE: 0.1273 -2022-02-02 08:26:20,392 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8891, Test RMSE: 28.9965, Test MAPE: 0.1273 -2022-02-02 08:26:20,396 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0337, Test RMSE: 29.3998, Test MAPE: 0.1224 -2022-02-02 08:26:20,400 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2310, Test RMSE: 29.7690, Test MAPE: 0.1210 -2022-02-02 08:26:20,404 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4506, Test RMSE: 30.1148, Test MAPE: 0.1213 -2022-02-02 08:26:20,408 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6554, Test RMSE: 30.4181, Test MAPE: 0.1231 -2022-02-02 08:26:20,412 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8303, Test RMSE: 30.6930, Test MAPE: 0.1237 -2022-02-02 08:26:20,416 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0213, Test RMSE: 30.9688, Test MAPE: 0.1243 -2022-02-02 08:26:20,420 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1996, Test RMSE: 31.1894, Test MAPE: 0.1282 -2022-02-02 08:26:20,424 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4647, Test RMSE: 31.5610, Test MAPE: 0.1284 -2022-02-02 08:26:20,424 - easytorch-training - INFO - test:: [test_time: -126.54 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 08:26:20,949 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_046.pt saved -2022-02-02 08:26:20,949 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:37 -2022-02-02 08:26:20,949 - easytorch-training - INFO - epoch 47 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:18<00:00, 1.28it/s] -2022-02-02 08:34:39,725 - easytorch-training - INFO - train:: [train_loss: 18.1756, train_MAPE: 0.1342, train_RMSE: 29.3719, train_time: 498.78 (s), lr: 2.50e-04] -2022-02-02 08:36:52,651 - easytorch-training - INFO - val:: [val_time: 132.92 (s), val_loss: 18.4163, val_MAPE: 0.1232, val_RMSE: 28.5627] -2022-02-02 08:38:57,979 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4432, Test RMSE: 26.8187, Test MAPE: 0.1103 -2022-02-02 08:38:57,984 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9583, Test RMSE: 27.7087, Test MAPE: 0.1136 -2022-02-02 08:38:57,988 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3986, Test RMSE: 28.4250, Test MAPE: 0.1169 -2022-02-02 08:38:57,993 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7457, Test RMSE: 28.9578, Test MAPE: 0.1196 -2022-02-02 08:38:57,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0302, Test RMSE: 29.3841, Test MAPE: 0.1224 -2022-02-02 08:38:58,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2678, Test RMSE: 29.7487, Test MAPE: 0.1237 -2022-02-02 08:38:58,008 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4755, Test RMSE: 30.0787, Test MAPE: 0.1243 -2022-02-02 08:38:58,012 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6868, Test RMSE: 30.3782, Test MAPE: 0.1265 -2022-02-02 08:38:58,015 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8479, Test RMSE: 30.6521, Test MAPE: 0.1270 -2022-02-02 08:38:58,019 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0400, Test RMSE: 30.9107, Test MAPE: 0.1287 -2022-02-02 08:38:58,023 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2355, Test RMSE: 31.1601, Test MAPE: 0.1310 -2022-02-02 08:38:58,027 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4863, Test RMSE: 31.5319, Test MAPE: 0.1289 -2022-02-02 08:38:58,027 - easytorch-training - INFO - test:: [test_time: -125.37 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 08:38:58,396 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_047.pt saved -2022-02-02 08:38:58,396 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:21 -2022-02-02 08:38:58,396 - easytorch-training - INFO - epoch 48 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:26<00:00, 1.26it/s] -2022-02-02 08:47:24,416 - easytorch-training - INFO - train:: [train_loss: 18.1530, train_MAPE: 0.1337, train_RMSE: 29.3507, train_time: 506.02 (s), lr: 2.50e-04] -2022-02-02 08:49:34,497 - easytorch-training - INFO - val:: [val_time: 130.07 (s), val_loss: 18.5673, val_MAPE: 0.1284, val_RMSE: 28.6647] -2022-02-02 08:51:37,844 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6366, Test RMSE: 26.8759, Test MAPE: 0.1202 -2022-02-02 08:51:37,849 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0890, Test RMSE: 27.7346, Test MAPE: 0.1205 -2022-02-02 08:51:37,854 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.6293, Test RMSE: 28.4916, Test MAPE: 0.1275 -2022-02-02 08:51:37,859 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.9376, Test RMSE: 29.0229, Test MAPE: 0.1280 -2022-02-02 08:51:37,864 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1957, Test RMSE: 29.4630, Test MAPE: 0.1287 -2022-02-02 08:51:37,869 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3857, Test RMSE: 29.8253, Test MAPE: 0.1271 -2022-02-02 08:51:37,873 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5672, Test RMSE: 30.1711, Test MAPE: 0.1256 -2022-02-02 08:51:37,877 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.8412, Test RMSE: 30.5186, Test MAPE: 0.1286 -2022-02-02 08:51:37,880 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.9873, Test RMSE: 30.8160, Test MAPE: 0.1272 -2022-02-02 08:51:37,884 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.1830, Test RMSE: 31.0646, Test MAPE: 0.1312 -2022-02-02 08:51:37,888 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.3842, Test RMSE: 31.3096, Test MAPE: 0.1349 -2022-02-02 08:51:37,892 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.6094, Test RMSE: 31.6900, Test MAPE: 0.1315 -2022-02-02 08:51:37,892 - easytorch-training - INFO - test:: [test_time: -123.39 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 08:51:38,467 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_048.pt saved -2022-02-02 08:51:38,467 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:12 -2022-02-02 08:51:38,467 - easytorch-training - INFO - epoch 49 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:31<00:00, 1.24it/s] -2022-02-02 09:00:10,307 - easytorch-training - INFO - train:: [train_loss: 18.1261, train_MAPE: 0.1332, train_RMSE: 29.3187, train_time: 511.84 (s), lr: 2.50e-04] -2022-02-02 09:02:18,669 - easytorch-training - INFO - val:: [val_time: 128.36 (s), val_loss: 18.6290, val_MAPE: 0.1240, val_RMSE: 28.8459] -2022-02-02 09:04:28,599 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.6265, Test RMSE: 26.9426, Test MAPE: 0.1114 -2022-02-02 09:04:28,603 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1144, Test RMSE: 27.8360, Test MAPE: 0.1142 -2022-02-02 09:04:28,607 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4937, Test RMSE: 28.5272, Test MAPE: 0.1158 -2022-02-02 09:04:28,611 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8200, Test RMSE: 29.0529, Test MAPE: 0.1178 -2022-02-02 09:04:28,614 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.2133, Test RMSE: 29.5546, Test MAPE: 0.1226 -2022-02-02 09:04:28,618 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3610, Test RMSE: 29.8928, Test MAPE: 0.1222 -2022-02-02 09:04:28,622 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.6247, Test RMSE: 30.2831, Test MAPE: 0.1246 -2022-02-02 09:04:28,626 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.8288, Test RMSE: 30.6313, Test MAPE: 0.1255 -2022-02-02 09:04:28,630 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.1021, Test RMSE: 30.9088, Test MAPE: 0.1294 -2022-02-02 09:04:28,634 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0976, Test RMSE: 31.1017, Test MAPE: 0.1260 -2022-02-02 09:04:28,637 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2809, Test RMSE: 31.3363, Test MAPE: 0.1274 -2022-02-02 09:04:28,641 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.5615, Test RMSE: 31.7067, Test MAPE: 0.1292 -2022-02-02 09:04:28,641 - easytorch-training - INFO - test:: [test_time: -129.97 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 09:04:29,243 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_049.pt saved -2022-02-02 09:04:29,244 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:24 -2022-02-02 09:04:29,244 - easytorch-training - INFO - epoch 50 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:17<00:00, 1.28it/s] -2022-02-02 09:12:47,222 - easytorch-training - INFO - train:: [train_loss: 18.1283, train_MAPE: 0.1337, train_RMSE: 29.3128, train_time: 497.98 (s), lr: 2.50e-04] -2022-02-02 09:15:02,261 - easytorch-training - INFO - val:: [val_time: 135.03 (s), val_loss: 18.5003, val_MAPE: 0.1281, val_RMSE: 28.6671] -2022-02-02 09:17:14,515 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5344, Test RMSE: 26.8630, Test MAPE: 0.1165 -2022-02-02 09:17:14,518 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.1074, Test RMSE: 27.7568, Test MAPE: 0.1226 -2022-02-02 09:17:14,522 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.5252, Test RMSE: 28.4697, Test MAPE: 0.1241 -2022-02-02 09:17:14,526 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8326, Test RMSE: 29.0181, Test MAPE: 0.1235 -2022-02-02 09:17:14,530 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.1636, Test RMSE: 29.4699, Test MAPE: 0.1287 -2022-02-02 09:17:14,534 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3770, Test RMSE: 29.8254, Test MAPE: 0.1299 -2022-02-02 09:17:14,537 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.6015, Test RMSE: 30.1735, Test MAPE: 0.1310 -2022-02-02 09:17:14,541 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7978, Test RMSE: 30.4693, Test MAPE: 0.1314 -2022-02-02 09:17:14,545 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.9088, Test RMSE: 30.7373, Test MAPE: 0.1286 -2022-02-02 09:17:14,549 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0923, Test RMSE: 30.9912, Test MAPE: 0.1304 -2022-02-02 09:17:14,553 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2765, Test RMSE: 31.2295, Test MAPE: 0.1325 -2022-02-02 09:17:14,556 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.5121, Test RMSE: 31.5724, Test MAPE: 0.1323 -2022-02-02 09:17:14,557 - easytorch-training - INFO - test:: [test_time: -132.29 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 09:17:14,938 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_050.pt saved -2022-02-02 09:17:14,941 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:27 -2022-02-02 09:17:14,941 - easytorch-training - INFO - epoch 51 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:16<00:00, 1.28it/s] -2022-02-02 09:25:31,295 - easytorch-training - INFO - train:: [train_loss: 18.1007, train_MAPE: 0.1334, train_RMSE: 29.2906, train_time: 496.35 (s), lr: 2.50e-04] -2022-02-02 09:27:33,879 - easytorch-training - INFO - val:: [val_time: 122.58 (s), val_loss: 18.4473, val_MAPE: 0.1242, val_RMSE: 28.5844] -2022-02-02 09:29:50,415 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5971, Test RMSE: 26.8760, Test MAPE: 0.1186 -2022-02-02 09:29:50,421 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0124, Test RMSE: 27.7112, Test MAPE: 0.1168 -2022-02-02 09:29:50,426 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4358, Test RMSE: 28.4231, Test MAPE: 0.1188 -2022-02-02 09:29:50,431 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7434, Test RMSE: 28.9502, Test MAPE: 0.1187 -2022-02-02 09:29:50,436 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0353, Test RMSE: 29.3905, Test MAPE: 0.1220 -2022-02-02 09:29:50,441 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2451, Test RMSE: 29.7520, Test MAPE: 0.1216 -2022-02-02 09:29:50,446 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5661, Test RMSE: 30.1284, Test MAPE: 0.1284 -2022-02-02 09:29:50,451 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7213, Test RMSE: 30.4261, Test MAPE: 0.1267 -2022-02-02 09:29:50,455 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.9075, Test RMSE: 30.7184, Test MAPE: 0.1282 -2022-02-02 09:29:50,459 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0649, Test RMSE: 30.9788, Test MAPE: 0.1276 -2022-02-02 09:29:50,463 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2328, Test RMSE: 31.2061, Test MAPE: 0.1296 -2022-02-02 09:29:50,467 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4813, Test RMSE: 31.5457, Test MAPE: 0.1294 -2022-02-02 09:29:50,467 - easytorch-training - INFO - test:: [test_time: -136.58 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 09:29:50,830 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_051.pt saved -2022-02-02 09:29:50,830 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:09 -2022-02-02 09:29:50,830 - easytorch-training - INFO - epoch 52 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:06<00:00, 1.31it/s] -2022-02-02 09:37:57,060 - easytorch-training - INFO - train:: [train_loss: 18.0808, train_MAPE: 0.1330, train_RMSE: 29.2616, train_time: 486.23 (s), lr: 2.50e-04] -2022-02-02 09:40:03,607 - easytorch-training - INFO - val:: [val_time: 126.54 (s), val_loss: 18.4722, val_MAPE: 0.1226, val_RMSE: 28.7063] -2022-02-02 09:42:19,695 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4828, Test RMSE: 26.8568, Test MAPE: 0.1101 -2022-02-02 09:42:19,699 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9954, Test RMSE: 27.7577, Test MAPE: 0.1135 -2022-02-02 09:42:19,703 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4418, Test RMSE: 28.4977, Test MAPE: 0.1164 -2022-02-02 09:42:19,706 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7883, Test RMSE: 29.0496, Test MAPE: 0.1185 -2022-02-02 09:42:19,710 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0481, Test RMSE: 29.4734, Test MAPE: 0.1202 -2022-02-02 09:42:19,714 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3154, Test RMSE: 29.8511, Test MAPE: 0.1221 -2022-02-02 09:42:19,718 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5358, Test RMSE: 30.2023, Test MAPE: 0.1236 -2022-02-02 09:42:19,722 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7455, Test RMSE: 30.5070, Test MAPE: 0.1251 -2022-02-02 09:42:19,725 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8954, Test RMSE: 30.7668, Test MAPE: 0.1262 -2022-02-02 09:42:19,729 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0789, Test RMSE: 31.0274, Test MAPE: 0.1276 -2022-02-02 09:42:19,733 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2465, Test RMSE: 31.2619, Test MAPE: 0.1291 -2022-02-02 09:42:19,737 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4877, Test RMSE: 31.5938, Test MAPE: 0.1307 -2022-02-02 09:42:19,737 - easytorch-training - INFO - test:: [test_time: -136.13 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 09:42:20,105 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_052.pt saved -2022-02-02 09:42:20,105 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:40 -2022-02-02 09:42:20,105 - easytorch-training - INFO - epoch 53 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:37<00:00, 1.23it/s] -2022-02-02 09:50:57,569 - easytorch-training - INFO - train:: [train_loss: 18.0720, train_MAPE: 0.1328, train_RMSE: 29.2461, train_time: 517.46 (s), lr: 2.50e-04] -2022-02-02 09:53:06,633 - easytorch-training - INFO - val:: [val_time: 129.06 (s), val_loss: 18.4357, val_MAPE: 0.1273, val_RMSE: 28.6101] -2022-02-02 09:55:11,316 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4486, Test RMSE: 26.8689, Test MAPE: 0.1098 -2022-02-02 09:55:11,322 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0110, Test RMSE: 27.7289, Test MAPE: 0.1169 -2022-02-02 09:55:11,327 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4931, Test RMSE: 28.4578, Test MAPE: 0.1220 -2022-02-02 09:55:11,333 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8331, Test RMSE: 28.9974, Test MAPE: 0.1237 -2022-02-02 09:55:11,338 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0581, Test RMSE: 29.4268, Test MAPE: 0.1234 -2022-02-02 09:55:11,344 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.3025, Test RMSE: 29.8009, Test MAPE: 0.1258 -2022-02-02 09:55:11,349 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5553, Test RMSE: 30.1446, Test MAPE: 0.1283 -2022-02-02 09:55:11,356 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.8367, Test RMSE: 30.4686, Test MAPE: 0.1340 -2022-02-02 09:55:11,362 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 19.0689, Test RMSE: 30.7870, Test MAPE: 0.1377 -2022-02-02 09:55:11,369 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.2153, Test RMSE: 31.0461, Test MAPE: 0.1368 -2022-02-02 09:55:11,375 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2674, Test RMSE: 31.2329, Test MAPE: 0.1332 -2022-02-02 09:55:11,382 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.5644, Test RMSE: 31.6235, Test MAPE: 0.1361 -2022-02-02 09:55:11,382 - easytorch-training - INFO - test:: [test_time: -124.74 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 09:55:11,957 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_053.pt saved -2022-02-02 09:55:11,958 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:55 -2022-02-02 09:55:11,958 - easytorch-training - INFO - epoch 54 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:39<00:00, 1.23it/s] -2022-02-02 10:03:51,787 - easytorch-training - INFO - train:: [train_loss: 18.0434, train_MAPE: 0.1327, train_RMSE: 29.2006, train_time: 519.83 (s), lr: 2.50e-04] -2022-02-02 10:06:02,212 - easytorch-training - INFO - val:: [val_time: 130.42 (s), val_loss: 18.4150, val_MAPE: 0.1226, val_RMSE: 28.6316] -2022-02-02 10:08:10,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4731, Test RMSE: 26.8881, Test MAPE: 0.1092 -2022-02-02 10:08:10,982 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9878, Test RMSE: 27.7710, Test MAPE: 0.1125 -2022-02-02 10:08:10,987 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3881, Test RMSE: 28.4810, Test MAPE: 0.1156 -2022-02-02 10:08:10,991 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7346, Test RMSE: 29.0171, Test MAPE: 0.1171 -2022-02-02 10:08:10,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9816, Test RMSE: 29.4503, Test MAPE: 0.1190 -2022-02-02 10:08:11,001 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2298, Test RMSE: 29.8656, Test MAPE: 0.1202 -2022-02-02 10:08:11,006 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4716, Test RMSE: 30.1891, Test MAPE: 0.1236 -2022-02-02 10:08:11,011 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.7356, Test RMSE: 30.5190, Test MAPE: 0.1279 -2022-02-02 10:08:11,016 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8969, Test RMSE: 30.7874, Test MAPE: 0.1279 -2022-02-02 10:08:11,022 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0300, Test RMSE: 30.9836, Test MAPE: 0.1284 -2022-02-02 10:08:11,027 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2238, Test RMSE: 31.1972, Test MAPE: 0.1321 -2022-02-02 10:08:11,032 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4299, Test RMSE: 31.5300, Test MAPE: 0.1313 -2022-02-02 10:08:11,032 - easytorch-training - INFO - test:: [test_time: -128.82 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 10:08:11,478 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_054.pt saved -2022-02-02 10:08:11,479 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:23 -2022-02-02 10:08:11,479 - easytorch-training - INFO - epoch 55 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:32<00:00, 1.24it/s] -2022-02-02 10:16:43,909 - easytorch-training - INFO - train:: [train_loss: 17.9412, train_MAPE: 0.1313, train_RMSE: 29.0984, train_time: 512.43 (s), lr: 1.25e-04] -2022-02-02 10:18:49,423 - easytorch-training - INFO - val:: [val_time: 125.51 (s), val_loss: 18.3580, val_MAPE: 0.1223, val_RMSE: 28.5424] -2022-02-02 10:20:57,907 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4536, Test RMSE: 26.8331, Test MAPE: 0.1099 -2022-02-02 10:20:57,911 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9630, Test RMSE: 27.7153, Test MAPE: 0.1137 -2022-02-02 10:20:57,915 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3825, Test RMSE: 28.4227, Test MAPE: 0.1161 -2022-02-02 10:20:57,919 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7514, Test RMSE: 28.9736, Test MAPE: 0.1197 -2022-02-02 10:20:57,923 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9991, Test RMSE: 29.3872, Test MAPE: 0.1209 -2022-02-02 10:20:57,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2344, Test RMSE: 29.7427, Test MAPE: 0.1228 -2022-02-02 10:20:57,930 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4596, Test RMSE: 30.0817, Test MAPE: 0.1248 -2022-02-02 10:20:57,934 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6288, Test RMSE: 30.3758, Test MAPE: 0.1248 -2022-02-02 10:20:57,938 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7907, Test RMSE: 30.6457, Test MAPE: 0.1255 -2022-02-02 10:20:57,942 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9545, Test RMSE: 30.9066, Test MAPE: 0.1257 -2022-02-02 10:20:57,946 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1366, Test RMSE: 31.1342, Test MAPE: 0.1282 -2022-02-02 10:20:57,949 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3912, Test RMSE: 31.4900, Test MAPE: 0.1295 -2022-02-02 10:20:57,950 - easytorch-training - INFO - test:: [test_time: -128.52 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 10:20:58,294 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_055.pt saved -2022-02-02 10:20:58,294 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:27 -2022-02-02 10:20:58,294 - easytorch-training - INFO - epoch 56 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:21<00:00, 1.27it/s] -2022-02-02 10:29:19,314 - easytorch-training - INFO - train:: [train_loss: 17.9326, train_MAPE: 0.1312, train_RMSE: 29.1048, train_time: 501.02 (s), lr: 1.25e-04] -2022-02-02 10:31:27,059 - easytorch-training - INFO - val:: [val_time: 127.74 (s), val_loss: 18.3863, val_MAPE: 0.1215, val_RMSE: 28.5781] -2022-02-02 10:33:42,923 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4763, Test RMSE: 26.8533, Test MAPE: 0.1106 -2022-02-02 10:33:42,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9673, Test RMSE: 27.7107, Test MAPE: 0.1133 -2022-02-02 10:33:42,931 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3794, Test RMSE: 28.4243, Test MAPE: 0.1156 -2022-02-02 10:33:42,935 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7307, Test RMSE: 28.9684, Test MAPE: 0.1178 -2022-02-02 10:33:42,939 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9941, Test RMSE: 29.3962, Test MAPE: 0.1192 -2022-02-02 10:33:42,943 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1943, Test RMSE: 29.7579, Test MAPE: 0.1204 -2022-02-02 10:33:42,947 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4239, Test RMSE: 30.0966, Test MAPE: 0.1220 -2022-02-02 10:33:42,950 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6105, Test RMSE: 30.3863, Test MAPE: 0.1247 -2022-02-02 10:33:42,954 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7848, Test RMSE: 30.6692, Test MAPE: 0.1247 -2022-02-02 10:33:42,958 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9507, Test RMSE: 30.9091, Test MAPE: 0.1257 -2022-02-02 10:33:42,962 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1304, Test RMSE: 31.1347, Test MAPE: 0.1268 -2022-02-02 10:33:42,966 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3780, Test RMSE: 31.4746, Test MAPE: 0.1286 -2022-02-02 10:33:42,966 - easytorch-training - INFO - test:: [test_time: -135.90 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 10:33:43,309 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_056.pt saved -2022-02-02 10:33:43,309 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:28 -2022-02-02 10:33:43,310 - easytorch-training - INFO - epoch 57 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:40<00:00, 1.22it/s] -2022-02-02 10:42:23,774 - easytorch-training - INFO - train:: [train_loss: 17.9207, train_MAPE: 0.1316, train_RMSE: 29.0724, train_time: 520.46 (s), lr: 1.25e-04] -2022-02-02 10:44:36,542 - easytorch-training - INFO - val:: [val_time: 132.76 (s), val_loss: 18.3412, val_MAPE: 0.1222, val_RMSE: 28.5324] -2022-02-02 10:46:42,053 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4513, Test RMSE: 26.8252, Test MAPE: 0.1130 -2022-02-02 10:46:42,057 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9290, Test RMSE: 27.6748, Test MAPE: 0.1140 -2022-02-02 10:46:42,060 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3616, Test RMSE: 28.3946, Test MAPE: 0.1165 -2022-02-02 10:46:42,064 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7041, Test RMSE: 28.9409, Test MAPE: 0.1185 -2022-02-02 10:46:42,068 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9739, Test RMSE: 29.3739, Test MAPE: 0.1210 -2022-02-02 10:46:42,072 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1951, Test RMSE: 29.7317, Test MAPE: 0.1223 -2022-02-02 10:46:42,076 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4039, Test RMSE: 30.0679, Test MAPE: 0.1230 -2022-02-02 10:46:42,080 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6055, Test RMSE: 30.3775, Test MAPE: 0.1231 -2022-02-02 10:46:42,083 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7651, Test RMSE: 30.6494, Test MAPE: 0.1246 -2022-02-02 10:46:42,087 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9310, Test RMSE: 30.8894, Test MAPE: 0.1259 -2022-02-02 10:46:42,091 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1173, Test RMSE: 31.1308, Test MAPE: 0.1285 -2022-02-02 10:46:42,095 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3782, Test RMSE: 31.4683, Test MAPE: 0.1302 -2022-02-02 10:46:42,095 - easytorch-training - INFO - test:: [test_time: -125.55 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 10:46:42,453 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_057.pt saved -2022-02-02 10:46:42,453 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:53 -2022-02-02 10:46:42,453 - easytorch-training - INFO - epoch 58 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:35<00:00, 1.24it/s] -2022-02-02 10:55:17,792 - easytorch-training - INFO - train:: [train_loss: 17.9046, train_MAPE: 0.1309, train_RMSE: 29.0628, train_time: 515.34 (s), lr: 1.25e-04] -2022-02-02 10:57:15,313 - easytorch-training - INFO - val:: [val_time: 117.52 (s), val_loss: 18.3995, val_MAPE: 0.1218, val_RMSE: 28.5904] -2022-02-02 10:59:13,240 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4351, Test RMSE: 26.8264, Test MAPE: 0.1098 -2022-02-02 10:59:13,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9415, Test RMSE: 27.6858, Test MAPE: 0.1132 -2022-02-02 10:59:13,250 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3761, Test RMSE: 28.4065, Test MAPE: 0.1163 -2022-02-02 10:59:13,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7103, Test RMSE: 28.9419, Test MAPE: 0.1182 -2022-02-02 10:59:13,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9657, Test RMSE: 29.3807, Test MAPE: 0.1198 -2022-02-02 10:59:13,265 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1977, Test RMSE: 29.7421, Test MAPE: 0.1221 -2022-02-02 10:59:13,269 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4243, Test RMSE: 30.0912, Test MAPE: 0.1241 -2022-02-02 10:59:13,272 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6427, Test RMSE: 30.3972, Test MAPE: 0.1263 -2022-02-02 10:59:13,276 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8242, Test RMSE: 30.7036, Test MAPE: 0.1259 -2022-02-02 10:59:13,280 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0077, Test RMSE: 30.9597, Test MAPE: 0.1262 -2022-02-02 10:59:13,284 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.2208, Test RMSE: 31.2234, Test MAPE: 0.1267 -2022-02-02 10:59:13,288 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4611, Test RMSE: 31.5518, Test MAPE: 0.1283 -2022-02-02 10:59:13,288 - easytorch-training - INFO - test:: [test_time: -117.97 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 10:59:13,657 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_058.pt saved -2022-02-02 10:59:13,657 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:29 -2022-02-02 10:59:13,657 - easytorch-training - INFO - epoch 59 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:27<00:00, 1.25it/s] -2022-02-02 11:07:41,617 - easytorch-training - INFO - train:: [train_loss: 17.8969, train_MAPE: 0.1308, train_RMSE: 29.0530, train_time: 507.96 (s), lr: 1.25e-04] -2022-02-02 11:09:51,797 - easytorch-training - INFO - val:: [val_time: 130.17 (s), val_loss: 18.3449, val_MAPE: 0.1235, val_RMSE: 28.5265] -2022-02-02 11:11:50,966 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.5391, Test RMSE: 26.8886, Test MAPE: 0.1159 -2022-02-02 11:11:50,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0075, Test RMSE: 27.7222, Test MAPE: 0.1176 -2022-02-02 11:11:50,976 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4277, Test RMSE: 28.4407, Test MAPE: 0.1199 -2022-02-02 11:11:50,981 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7506, Test RMSE: 28.9695, Test MAPE: 0.1214 -2022-02-02 11:11:50,986 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0205, Test RMSE: 29.4146, Test MAPE: 0.1234 -2022-02-02 11:11:50,991 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2028, Test RMSE: 29.7621, Test MAPE: 0.1227 -2022-02-02 11:11:50,995 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4470, Test RMSE: 30.1044, Test MAPE: 0.1256 -2022-02-02 11:11:50,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5979, Test RMSE: 30.3969, Test MAPE: 0.1241 -2022-02-02 11:11:51,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7744, Test RMSE: 30.6856, Test MAPE: 0.1242 -2022-02-02 11:11:51,006 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9353, Test RMSE: 30.9127, Test MAPE: 0.1252 -2022-02-02 11:11:51,010 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1036, Test RMSE: 31.1336, Test MAPE: 0.1277 -2022-02-02 11:11:51,014 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3889, Test RMSE: 31.4771, Test MAPE: 0.1309 -2022-02-02 11:11:51,014 - easytorch-training - INFO - test:: [test_time: -119.21 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 11:11:51,409 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_059.pt saved -2022-02-02 11:11:51,410 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:18 -2022-02-02 11:11:51,410 - easytorch-training - INFO - epoch 60 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:45<00:00, 1.21it/s] -2022-02-02 11:20:36,584 - easytorch-training - INFO - train:: [train_loss: 17.8765, train_MAPE: 0.1308, train_RMSE: 29.0274, train_time: 525.17 (s), lr: 1.25e-04] -2022-02-02 11:22:43,281 - easytorch-training - INFO - val:: [val_time: 126.69 (s), val_loss: 18.3436, val_MAPE: 0.1219, val_RMSE: 28.5919] -2022-02-02 11:24:49,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4278, Test RMSE: 26.8401, Test MAPE: 0.1100 -2022-02-02 11:24:50,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9436, Test RMSE: 27.6994, Test MAPE: 0.1135 -2022-02-02 11:24:50,007 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3642, Test RMSE: 28.4129, Test MAPE: 0.1163 -2022-02-02 11:24:50,011 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7049, Test RMSE: 28.9566, Test MAPE: 0.1189 -2022-02-02 11:24:50,015 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9694, Test RMSE: 29.4059, Test MAPE: 0.1203 -2022-02-02 11:24:50,018 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2031, Test RMSE: 29.7737, Test MAPE: 0.1221 -2022-02-02 11:24:50,022 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4293, Test RMSE: 30.1297, Test MAPE: 0.1234 -2022-02-02 11:24:50,026 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6369, Test RMSE: 30.4251, Test MAPE: 0.1259 -2022-02-02 11:24:50,030 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7998, Test RMSE: 30.7288, Test MAPE: 0.1257 -2022-02-02 11:24:50,034 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9600, Test RMSE: 30.9626, Test MAPE: 0.1263 -2022-02-02 11:24:50,038 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1442, Test RMSE: 31.2163, Test MAPE: 0.1276 -2022-02-02 11:24:50,041 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4035, Test RMSE: 31.5645, Test MAPE: 0.1291 -2022-02-02 11:24:50,042 - easytorch-training - INFO - test:: [test_time: -126.76 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 11:24:50,597 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_060.pt saved -2022-02-02 11:24:50,601 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:42 -2022-02-02 11:24:50,601 - easytorch-training - INFO - epoch 61 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:26<00:00, 1.26it/s] -2022-02-02 11:33:17,352 - easytorch-training - INFO - train:: [train_loss: 17.8688, train_MAPE: 0.1308, train_RMSE: 29.0075, train_time: 506.75 (s), lr: 1.25e-04] -2022-02-02 11:35:31,365 - easytorch-training - INFO - val:: [val_time: 134.01 (s), val_loss: 18.3818, val_MAPE: 0.1209, val_RMSE: 28.5530] -2022-02-02 11:37:40,202 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4636, Test RMSE: 26.8459, Test MAPE: 0.1099 -2022-02-02 11:37:40,207 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9617, Test RMSE: 27.6961, Test MAPE: 0.1129 -2022-02-02 11:37:40,212 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4343, Test RMSE: 28.4393, Test MAPE: 0.1144 -2022-02-02 11:37:40,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7596, Test RMSE: 28.9750, Test MAPE: 0.1164 -2022-02-02 11:37:40,221 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9793, Test RMSE: 29.3781, Test MAPE: 0.1182 -2022-02-02 11:37:40,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1828, Test RMSE: 29.7316, Test MAPE: 0.1195 -2022-02-02 11:37:40,230 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4239, Test RMSE: 30.0590, Test MAPE: 0.1237 -2022-02-02 11:37:40,234 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6079, Test RMSE: 30.3579, Test MAPE: 0.1232 -2022-02-02 11:37:40,238 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7899, Test RMSE: 30.6388, Test MAPE: 0.1243 -2022-02-02 11:37:40,242 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9383, Test RMSE: 30.8603, Test MAPE: 0.1265 -2022-02-02 11:37:40,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1006, Test RMSE: 31.0878, Test MAPE: 0.1267 -2022-02-02 11:37:40,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3564, Test RMSE: 31.4414, Test MAPE: 0.1283 -2022-02-02 11:37:40,250 - easytorch-training - INFO - test:: [test_time: -128.88 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 11:37:40,777 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_061.pt saved -2022-02-02 11:37:40,777 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:51 -2022-02-02 11:37:40,777 - easytorch-training - INFO - epoch 62 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:37<00:00, 1.23it/s] -2022-02-02 11:46:18,590 - easytorch-training - INFO - train:: [train_loss: 17.8577, train_MAPE: 0.1308, train_RMSE: 28.9934, train_time: 517.81 (s), lr: 1.25e-04] -2022-02-02 11:48:19,778 - easytorch-training - INFO - val:: [val_time: 121.18 (s), val_loss: 18.3109, val_MAPE: 0.1210, val_RMSE: 28.5322] -2022-02-02 11:50:25,831 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4257, Test RMSE: 26.8279, Test MAPE: 0.1089 -2022-02-02 11:50:25,835 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9188, Test RMSE: 27.6840, Test MAPE: 0.1122 -2022-02-02 11:50:25,838 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3440, Test RMSE: 28.3945, Test MAPE: 0.1159 -2022-02-02 11:50:25,842 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6678, Test RMSE: 28.9276, Test MAPE: 0.1177 -2022-02-02 11:50:25,846 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9306, Test RMSE: 29.3560, Test MAPE: 0.1193 -2022-02-02 11:50:25,850 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1671, Test RMSE: 29.7351, Test MAPE: 0.1215 -2022-02-02 11:50:25,854 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3706, Test RMSE: 30.0721, Test MAPE: 0.1216 -2022-02-02 11:50:25,857 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6121, Test RMSE: 30.3739, Test MAPE: 0.1264 -2022-02-02 11:50:25,861 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7375, Test RMSE: 30.6755, Test MAPE: 0.1243 -2022-02-02 11:50:25,865 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8980, Test RMSE: 30.8931, Test MAPE: 0.1250 -2022-02-02 11:50:25,869 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0691, Test RMSE: 31.1194, Test MAPE: 0.1257 -2022-02-02 11:50:25,873 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3285, Test RMSE: 31.4498, Test MAPE: 0.1278 -2022-02-02 11:50:25,873 - easytorch-training - INFO - test:: [test_time: -126.09 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 11:50:26,382 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_062.pt saved -2022-02-02 11:50:26,382 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:52 -2022-02-02 11:50:26,382 - easytorch-training - INFO - epoch 63 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:01<00:00, 1.32it/s] -2022-02-02 11:58:28,167 - easytorch-training - INFO - train:: [train_loss: 17.8595, train_MAPE: 0.1306, train_RMSE: 28.9947, train_time: 481.78 (s), lr: 1.25e-04] -2022-02-02 12:00:37,605 - easytorch-training - INFO - val:: [val_time: 129.43 (s), val_loss: 18.3525, val_MAPE: 0.1237, val_RMSE: 28.5618] -2022-02-02 12:02:49,214 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4844, Test RMSE: 26.8682, Test MAPE: 0.1128 -2022-02-02 12:02:49,220 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0126, Test RMSE: 27.7266, Test MAPE: 0.1172 -2022-02-02 12:02:49,226 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4537, Test RMSE: 28.4604, Test MAPE: 0.1196 -2022-02-02 12:02:49,231 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.8242, Test RMSE: 29.0250, Test MAPE: 0.1235 -2022-02-02 12:02:49,237 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0886, Test RMSE: 29.4584, Test MAPE: 0.1254 -2022-02-02 12:02:49,243 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2344, Test RMSE: 29.8054, Test MAPE: 0.1231 -2022-02-02 12:02:49,249 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4331, Test RMSE: 30.1410, Test MAPE: 0.1235 -2022-02-02 12:02:49,255 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6403, Test RMSE: 30.4487, Test MAPE: 0.1249 -2022-02-02 12:02:49,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8188, Test RMSE: 30.7442, Test MAPE: 0.1262 -2022-02-02 12:02:49,266 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9932, Test RMSE: 30.9856, Test MAPE: 0.1276 -2022-02-02 12:02:49,272 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1724, Test RMSE: 31.2296, Test MAPE: 0.1290 -2022-02-02 12:02:49,278 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4417, Test RMSE: 31.5518, Test MAPE: 0.1320 -2022-02-02 12:02:49,278 - easytorch-training - INFO - test:: [test_time: -131.67 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 12:02:49,882 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_063.pt saved -2022-02-02 12:02:49,882 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:18 -2022-02-02 12:02:49,883 - easytorch-training - INFO - epoch 64 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:04<00:00, 1.32it/s] -2022-02-02 12:10:54,265 - easytorch-training - INFO - train:: [train_loss: 17.8474, train_MAPE: 0.1307, train_RMSE: 28.9880, train_time: 484.38 (s), lr: 1.25e-04] -2022-02-02 12:13:08,305 - easytorch-training - INFO - val:: [val_time: 134.03 (s), val_loss: 18.3157, val_MAPE: 0.1211, val_RMSE: 28.5371] -2022-02-02 12:15:28,380 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4276, Test RMSE: 26.8553, Test MAPE: 0.1094 -2022-02-02 12:15:28,384 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9438, Test RMSE: 27.7180, Test MAPE: 0.1127 -2022-02-02 12:15:28,388 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3595, Test RMSE: 28.4334, Test MAPE: 0.1154 -2022-02-02 12:15:28,391 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6931, Test RMSE: 28.9674, Test MAPE: 0.1174 -2022-02-02 12:15:28,395 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9473, Test RMSE: 29.4068, Test MAPE: 0.1187 -2022-02-02 12:15:28,399 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1553, Test RMSE: 29.7436, Test MAPE: 0.1201 -2022-02-02 12:15:28,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3701, Test RMSE: 30.0547, Test MAPE: 0.1217 -2022-02-02 12:15:28,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5666, Test RMSE: 30.3503, Test MAPE: 0.1229 -2022-02-02 12:15:28,410 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7331, Test RMSE: 30.6190, Test MAPE: 0.1246 -2022-02-02 12:15:28,414 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8995, Test RMSE: 30.8603, Test MAPE: 0.1260 -2022-02-02 12:15:28,418 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0531, Test RMSE: 31.0791, Test MAPE: 0.1266 -2022-02-02 12:15:28,422 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3202, Test RMSE: 31.4059, Test MAPE: 0.1293 -2022-02-02 12:15:28,422 - easytorch-training - INFO - test:: [test_time: -140.11 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 12:15:28,830 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_064.pt saved -2022-02-02 12:15:28,830 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:09 -2022-02-02 12:15:28,830 - easytorch-training - INFO - epoch 65 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:28<00:00, 1.25it/s] -2022-02-02 12:23:57,723 - easytorch-training - INFO - train:: [train_loss: 17.8426, train_MAPE: 0.1306, train_RMSE: 28.9805, train_time: 508.89 (s), lr: 1.25e-04] -2022-02-02 12:26:08,565 - easytorch-training - INFO - val:: [val_time: 130.84 (s), val_loss: 18.3527, val_MAPE: 0.1207, val_RMSE: 28.5567] -2022-02-02 12:28:11,505 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4701, Test RMSE: 26.8641, Test MAPE: 0.1096 -2022-02-02 12:28:11,509 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9620, Test RMSE: 27.7163, Test MAPE: 0.1125 -2022-02-02 12:28:11,513 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3786, Test RMSE: 28.4320, Test MAPE: 0.1149 -2022-02-02 12:28:11,517 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6983, Test RMSE: 28.9654, Test MAPE: 0.1168 -2022-02-02 12:28:11,521 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9654, Test RMSE: 29.4115, Test MAPE: 0.1184 -2022-02-02 12:28:11,525 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1901, Test RMSE: 29.7539, Test MAPE: 0.1196 -2022-02-02 12:28:11,529 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4176, Test RMSE: 30.0896, Test MAPE: 0.1214 -2022-02-02 12:28:11,533 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6030, Test RMSE: 30.3731, Test MAPE: 0.1237 -2022-02-02 12:28:11,538 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7730, Test RMSE: 30.6395, Test MAPE: 0.1245 -2022-02-02 12:28:11,543 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9353, Test RMSE: 30.8811, Test MAPE: 0.1264 -2022-02-02 12:28:11,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0943, Test RMSE: 31.1092, Test MAPE: 0.1270 -2022-02-02 12:28:11,553 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3521, Test RMSE: 31.4399, Test MAPE: 0.1283 -2022-02-02 12:28:11,553 - easytorch-training - INFO - test:: [test_time: -122.98 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 12:28:11,918 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_065.pt saved -2022-02-02 12:28:11,919 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:07 -2022-02-02 12:28:11,919 - easytorch-training - INFO - epoch 66 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:09<00:00, 1.30it/s] -2022-02-02 12:36:21,091 - easytorch-training - INFO - train:: [train_loss: 17.8229, train_MAPE: 0.1304, train_RMSE: 28.9498, train_time: 489.17 (s), lr: 1.25e-04] -2022-02-02 12:38:36,050 - easytorch-training - INFO - val:: [val_time: 134.95 (s), val_loss: 18.3069, val_MAPE: 0.1214, val_RMSE: 28.5347] -2022-02-02 12:40:44,965 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4157, Test RMSE: 26.8622, Test MAPE: 0.1097 -2022-02-02 12:40:44,969 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9263, Test RMSE: 27.7294, Test MAPE: 0.1133 -2022-02-02 12:40:44,973 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3928, Test RMSE: 28.4687, Test MAPE: 0.1179 -2022-02-02 12:40:44,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7038, Test RMSE: 29.0213, Test MAPE: 0.1182 -2022-02-02 12:40:44,980 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9661, Test RMSE: 29.4429, Test MAPE: 0.1198 -2022-02-02 12:40:44,984 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1814, Test RMSE: 29.8045, Test MAPE: 0.1209 -2022-02-02 12:40:44,988 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4045, Test RMSE: 30.1145, Test MAPE: 0.1225 -2022-02-02 12:40:44,992 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6215, Test RMSE: 30.4471, Test MAPE: 0.1245 -2022-02-02 12:40:44,996 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8109, Test RMSE: 30.7235, Test MAPE: 0.1267 -2022-02-02 12:40:44,999 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9757, Test RMSE: 30.9687, Test MAPE: 0.1274 -2022-02-02 12:40:45,003 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1230, Test RMSE: 31.1751, Test MAPE: 0.1276 -2022-02-02 12:40:45,007 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3778, Test RMSE: 31.5052, Test MAPE: 0.1292 -2022-02-02 12:40:45,007 - easytorch-training - INFO - test:: [test_time: -128.95 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 12:40:45,388 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_066.pt saved -2022-02-02 12:40:45,389 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:50 -2022-02-02 12:40:45,389 - easytorch-training - INFO - epoch 67 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:30<00:00, 1.25it/s] -2022-02-02 12:49:15,667 - easytorch-training - INFO - train:: [train_loss: 17.8141, train_MAPE: 0.1305, train_RMSE: 28.9410, train_time: 510.28 (s), lr: 1.25e-04] -2022-02-02 12:51:23,175 - easytorch-training - INFO - val:: [val_time: 127.50 (s), val_loss: 18.3393, val_MAPE: 0.1205, val_RMSE: 28.5692] -2022-02-02 12:53:36,107 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4181, Test RMSE: 26.8481, Test MAPE: 0.1091 -2022-02-02 12:53:36,112 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9349, Test RMSE: 27.7117, Test MAPE: 0.1126 -2022-02-02 12:53:36,117 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3832, Test RMSE: 28.4318, Test MAPE: 0.1153 -2022-02-02 12:53:36,122 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6931, Test RMSE: 28.9661, Test MAPE: 0.1174 -2022-02-02 12:53:36,127 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9601, Test RMSE: 29.3856, Test MAPE: 0.1185 -2022-02-02 12:53:36,132 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1847, Test RMSE: 29.7560, Test MAPE: 0.1199 -2022-02-02 12:53:36,137 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4041, Test RMSE: 30.0910, Test MAPE: 0.1216 -2022-02-02 12:53:36,141 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5964, Test RMSE: 30.3985, Test MAPE: 0.1230 -2022-02-02 12:53:36,145 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7658, Test RMSE: 30.6684, Test MAPE: 0.1243 -2022-02-02 12:53:36,149 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9387, Test RMSE: 30.9153, Test MAPE: 0.1248 -2022-02-02 12:53:36,153 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1234, Test RMSE: 31.1512, Test MAPE: 0.1260 -2022-02-02 12:53:36,157 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3661, Test RMSE: 31.4879, Test MAPE: 0.1277 -2022-02-02 12:53:36,157 - easytorch-training - INFO - test:: [test_time: -132.98 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 12:53:36,527 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_067.pt saved -2022-02-02 12:53:36,527 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:01 -2022-02-02 12:53:36,527 - easytorch-training - INFO - epoch 68 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:06<00:00, 1.31it/s] -2022-02-02 13:01:43,003 - easytorch-training - INFO - train:: [train_loss: 17.8056, train_MAPE: 0.1304, train_RMSE: 28.9243, train_time: 486.48 (s), lr: 1.25e-04] -2022-02-02 13:03:56,833 - easytorch-training - INFO - val:: [val_time: 133.83 (s), val_loss: 18.3790, val_MAPE: 0.1213, val_RMSE: 28.6102] -2022-02-02 13:06:09,661 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4553, Test RMSE: 26.8539, Test MAPE: 0.1110 -2022-02-02 13:06:09,665 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9502, Test RMSE: 27.6985, Test MAPE: 0.1134 -2022-02-02 13:06:09,669 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4087, Test RMSE: 28.4160, Test MAPE: 0.1179 -2022-02-02 13:06:09,673 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7318, Test RMSE: 28.9644, Test MAPE: 0.1191 -2022-02-02 13:06:09,677 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9855, Test RMSE: 29.3973, Test MAPE: 0.1201 -2022-02-02 13:06:09,680 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1980, Test RMSE: 29.7704, Test MAPE: 0.1209 -2022-02-02 13:06:09,684 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4112, Test RMSE: 30.1137, Test MAPE: 0.1219 -2022-02-02 13:06:09,688 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6133, Test RMSE: 30.4127, Test MAPE: 0.1231 -2022-02-02 13:06:09,692 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7877, Test RMSE: 30.6954, Test MAPE: 0.1243 -2022-02-02 13:06:09,696 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9451, Test RMSE: 30.9404, Test MAPE: 0.1254 -2022-02-02 13:06:09,699 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1143, Test RMSE: 31.1731, Test MAPE: 0.1259 -2022-02-02 13:06:09,703 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3806, Test RMSE: 31.5272, Test MAPE: 0.1272 -2022-02-02 13:06:09,704 - easytorch-training - INFO - test:: [test_time: -132.87 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 13:06:10,086 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_068.pt saved -2022-02-02 13:06:10,086 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:45 -2022-02-02 13:06:10,086 - easytorch-training - INFO - epoch 69 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:33<00:00, 1.24it/s] -2022-02-02 13:14:43,672 - easytorch-training - INFO - train:: [train_loss: 17.8014, train_MAPE: 0.1302, train_RMSE: 28.9269, train_time: 513.59 (s), lr: 1.25e-04] -2022-02-02 13:17:02,131 - easytorch-training - INFO - val:: [val_time: 138.45 (s), val_loss: 18.3375, val_MAPE: 0.1229, val_RMSE: 28.5171] -2022-02-02 13:19:13,290 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4424, Test RMSE: 26.8595, Test MAPE: 0.1103 -2022-02-02 13:19:13,294 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9646, Test RMSE: 27.7209, Test MAPE: 0.1141 -2022-02-02 13:19:13,298 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4484, Test RMSE: 28.4642, Test MAPE: 0.1188 -2022-02-02 13:19:13,302 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7558, Test RMSE: 29.0046, Test MAPE: 0.1197 -2022-02-02 13:19:13,306 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9922, Test RMSE: 29.4252, Test MAPE: 0.1199 -2022-02-02 13:19:13,309 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2610, Test RMSE: 29.7938, Test MAPE: 0.1233 -2022-02-02 13:19:13,313 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4530, Test RMSE: 30.1319, Test MAPE: 0.1232 -2022-02-02 13:19:13,317 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6892, Test RMSE: 30.4500, Test MAPE: 0.1263 -2022-02-02 13:19:13,321 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8734, Test RMSE: 30.7309, Test MAPE: 0.1284 -2022-02-02 13:19:13,325 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0039, Test RMSE: 30.9600, Test MAPE: 0.1282 -2022-02-02 13:19:13,328 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1777, Test RMSE: 31.1882, Test MAPE: 0.1300 -2022-02-02 13:19:13,332 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4415, Test RMSE: 31.5173, Test MAPE: 0.1320 -2022-02-02 13:19:13,333 - easytorch-training - INFO - test:: [test_time: -131.20 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 13:19:13,697 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_069.pt saved -2022-02-02 13:19:13,697 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:13 -2022-02-02 13:19:13,697 - easytorch-training - INFO - epoch 70 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:20<00:00, 1.27it/s] -2022-02-02 13:27:33,900 - easytorch-training - INFO - train:: [train_loss: 17.7902, train_MAPE: 0.1304, train_RMSE: 28.9049, train_time: 500.20 (s), lr: 1.25e-04] -2022-02-02 13:29:38,596 - easytorch-training - INFO - val:: [val_time: 124.69 (s), val_loss: 18.3555, val_MAPE: 0.1246, val_RMSE: 28.5473] -2022-02-02 13:31:51,893 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4332, Test RMSE: 26.8433, Test MAPE: 0.1102 -2022-02-02 13:31:51,898 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9661, Test RMSE: 27.7062, Test MAPE: 0.1153 -2022-02-02 13:31:51,903 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4443, Test RMSE: 28.4409, Test MAPE: 0.1205 -2022-02-02 13:31:51,908 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7632, Test RMSE: 28.9829, Test MAPE: 0.1215 -2022-02-02 13:31:51,913 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0305, Test RMSE: 29.4197, Test MAPE: 0.1237 -2022-02-02 13:31:51,918 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2907, Test RMSE: 29.7911, Test MAPE: 0.1271 -2022-02-02 13:31:51,922 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5260, Test RMSE: 30.1384, Test MAPE: 0.1288 -2022-02-02 13:31:51,925 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6862, Test RMSE: 30.4408, Test MAPE: 0.1277 -2022-02-02 13:31:51,929 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8447, Test RMSE: 30.7199, Test MAPE: 0.1285 -2022-02-02 13:31:51,933 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0187, Test RMSE: 30.9631, Test MAPE: 0.1302 -2022-02-02 13:31:51,937 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1676, Test RMSE: 31.1922, Test MAPE: 0.1304 -2022-02-02 13:31:51,941 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.4178, Test RMSE: 31.5392, Test MAPE: 0.1310 -2022-02-02 13:31:51,941 - easytorch-training - INFO - test:: [test_time: -133.34 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 13:31:52,298 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_070.pt saved -2022-02-02 13:31:52,301 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:04 -2022-02-02 13:31:52,302 - easytorch-training - INFO - epoch 71 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:29<00:00, 1.25it/s] -2022-02-02 13:40:21,851 - easytorch-training - INFO - train:: [train_loss: 17.7849, train_MAPE: 0.1302, train_RMSE: 28.8973, train_time: 509.55 (s), lr: 1.25e-04] -2022-02-02 13:42:20,838 - easytorch-training - INFO - val:: [val_time: 118.98 (s), val_loss: 18.3272, val_MAPE: 0.1238, val_RMSE: 28.5334] -2022-02-02 13:44:37,606 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4839, Test RMSE: 26.8814, Test MAPE: 0.1141 -2022-02-02 13:44:37,610 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 17.0025, Test RMSE: 27.7501, Test MAPE: 0.1179 -2022-02-02 13:44:37,613 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4188, Test RMSE: 28.4706, Test MAPE: 0.1194 -2022-02-02 13:44:37,617 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7852, Test RMSE: 29.0222, Test MAPE: 0.1228 -2022-02-02 13:44:37,621 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0364, Test RMSE: 29.4570, Test MAPE: 0.1235 -2022-02-02 13:44:37,625 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2362, Test RMSE: 29.7978, Test MAPE: 0.1241 -2022-02-02 13:44:37,629 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5398, Test RMSE: 30.1591, Test MAPE: 0.1295 -2022-02-02 13:44:37,633 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6046, Test RMSE: 30.3975, Test MAPE: 0.1247 -2022-02-02 13:44:37,636 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7850, Test RMSE: 30.6684, Test MAPE: 0.1265 -2022-02-02 13:44:37,640 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9335, Test RMSE: 30.8944, Test MAPE: 0.1270 -2022-02-02 13:44:37,644 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0840, Test RMSE: 31.1185, Test MAPE: 0.1268 -2022-02-02 13:44:37,648 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3428, Test RMSE: 31.4635, Test MAPE: 0.1283 -2022-02-02 13:44:37,648 - easytorch-training - INFO - test:: [test_time: -136.81 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 13:44:38,185 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_071.pt saved -2022-02-02 13:44:38,185 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:07 -2022-02-02 13:44:38,185 - easytorch-training - INFO - epoch 72 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:09<00:00, 1.30it/s] -2022-02-02 13:52:47,383 - easytorch-training - INFO - train:: [train_loss: 17.7731, train_MAPE: 0.1301, train_RMSE: 28.8952, train_time: 489.20 (s), lr: 1.25e-04] -2022-02-02 13:54:57,066 - easytorch-training - INFO - val:: [val_time: 129.68 (s), val_loss: 18.3061, val_MAPE: 0.1211, val_RMSE: 28.5355] -2022-02-02 13:57:09,150 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4181, Test RMSE: 26.8425, Test MAPE: 0.1091 -2022-02-02 13:57:09,155 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9193, Test RMSE: 27.7054, Test MAPE: 0.1124 -2022-02-02 13:57:09,160 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3504, Test RMSE: 28.4303, Test MAPE: 0.1150 -2022-02-02 13:57:09,165 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6782, Test RMSE: 28.9743, Test MAPE: 0.1170 -2022-02-02 13:57:09,170 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9435, Test RMSE: 29.4193, Test MAPE: 0.1183 -2022-02-02 13:57:09,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1506, Test RMSE: 29.7668, Test MAPE: 0.1199 -2022-02-02 13:57:09,179 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3816, Test RMSE: 30.1067, Test MAPE: 0.1218 -2022-02-02 13:57:09,184 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5795, Test RMSE: 30.3851, Test MAPE: 0.1236 -2022-02-02 13:57:09,188 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7559, Test RMSE: 30.6653, Test MAPE: 0.1254 -2022-02-02 13:57:09,192 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9281, Test RMSE: 30.8925, Test MAPE: 0.1273 -2022-02-02 13:57:09,197 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1004, Test RMSE: 31.1184, Test MAPE: 0.1286 -2022-02-02 13:57:09,201 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3804, Test RMSE: 31.4718, Test MAPE: 0.1318 -2022-02-02 13:57:09,202 - easytorch-training - INFO - test:: [test_time: -132.13 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 13:57:09,578 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_072.pt saved -2022-02-02 13:57:09,578 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:48 -2022-02-02 13:57:09,578 - easytorch-training - INFO - epoch 73 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:34<00:00, 1.24it/s] -2022-02-02 14:05:43,923 - easytorch-training - INFO - train:: [train_loss: 17.7174, train_MAPE: 0.1294, train_RMSE: 28.8314, train_time: 514.34 (s), lr: 6.25e-05] -2022-02-02 14:07:44,875 - easytorch-training - INFO - val:: [val_time: 120.95 (s), val_loss: 18.2859, val_MAPE: 0.1221, val_RMSE: 28.4962] -2022-02-02 14:09:51,811 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4367, Test RMSE: 26.8414, Test MAPE: 0.1114 -2022-02-02 14:09:51,815 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9243, Test RMSE: 27.7015, Test MAPE: 0.1142 -2022-02-02 14:09:51,819 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3720, Test RMSE: 28.4241, Test MAPE: 0.1178 -2022-02-02 14:09:51,823 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6973, Test RMSE: 28.9484, Test MAPE: 0.1199 -2022-02-02 14:09:51,827 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9539, Test RMSE: 29.3556, Test MAPE: 0.1215 -2022-02-02 14:09:51,831 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1411, Test RMSE: 29.7106, Test MAPE: 0.1212 -2022-02-02 14:09:51,834 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3822, Test RMSE: 30.0537, Test MAPE: 0.1238 -2022-02-02 14:09:51,838 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5723, Test RMSE: 30.3460, Test MAPE: 0.1252 -2022-02-02 14:09:51,842 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7508, Test RMSE: 30.6147, Test MAPE: 0.1271 -2022-02-02 14:09:51,846 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8773, Test RMSE: 30.8353, Test MAPE: 0.1263 -2022-02-02 14:09:51,850 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0392, Test RMSE: 31.0667, Test MAPE: 0.1269 -2022-02-02 14:09:51,853 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2943, Test RMSE: 31.4007, Test MAPE: 0.1284 -2022-02-02 14:09:51,854 - easytorch-training - INFO - test:: [test_time: -126.97 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 14:09:52,210 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_073.pt saved -2022-02-02 14:09:52,210 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:46 -2022-02-02 14:09:52,210 - easytorch-training - INFO - epoch 74 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:01<00:00, 1.32it/s] -2022-02-02 14:17:53,780 - easytorch-training - INFO - train:: [train_loss: 17.7118, train_MAPE: 0.1294, train_RMSE: 28.8174, train_time: 481.57 (s), lr: 6.25e-05] -2022-02-02 14:19:55,077 - easytorch-training - INFO - val:: [val_time: 121.29 (s), val_loss: 18.2885, val_MAPE: 0.1213, val_RMSE: 28.5294] -2022-02-02 14:22:07,923 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4074, Test RMSE: 26.8361, Test MAPE: 0.1095 -2022-02-02 14:22:07,928 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9089, Test RMSE: 27.6933, Test MAPE: 0.1129 -2022-02-02 14:22:07,933 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3377, Test RMSE: 28.3958, Test MAPE: 0.1156 -2022-02-02 14:22:07,939 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6689, Test RMSE: 28.9388, Test MAPE: 0.1175 -2022-02-02 14:22:07,944 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9307, Test RMSE: 29.3742, Test MAPE: 0.1194 -2022-02-02 14:22:07,949 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1502, Test RMSE: 29.7407, Test MAPE: 0.1207 -2022-02-02 14:22:07,955 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3768, Test RMSE: 30.0849, Test MAPE: 0.1227 -2022-02-02 14:22:07,960 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5921, Test RMSE: 30.3761, Test MAPE: 0.1252 -2022-02-02 14:22:07,966 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7474, Test RMSE: 30.6370, Test MAPE: 0.1259 -2022-02-02 14:22:07,971 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8993, Test RMSE: 30.8638, Test MAPE: 0.1268 -2022-02-02 14:22:07,977 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0595, Test RMSE: 31.0788, Test MAPE: 0.1284 -2022-02-02 14:22:07,982 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3139, Test RMSE: 31.4093, Test MAPE: 0.1302 -2022-02-02 14:22:07,983 - easytorch-training - INFO - test:: [test_time: -132.90 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 14:22:08,549 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_074.pt saved -2022-02-02 14:22:08,549 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:08 -2022-02-02 14:22:08,549 - easytorch-training - INFO - epoch 75 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:33<00:00, 1.24it/s] -2022-02-02 14:30:42,069 - easytorch-training - INFO - train:: [train_loss: 17.7039, train_MAPE: 0.1291, train_RMSE: 28.8153, train_time: 513.52 (s), lr: 6.25e-05] -2022-02-02 14:32:56,166 - easytorch-training - INFO - val:: [val_time: 134.09 (s), val_loss: 18.2744, val_MAPE: 0.1206, val_RMSE: 28.5125] -2022-02-02 14:35:08,245 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4072, Test RMSE: 26.8276, Test MAPE: 0.1097 -2022-02-02 14:35:08,251 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9119, Test RMSE: 27.6829, Test MAPE: 0.1130 -2022-02-02 14:35:08,256 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3493, Test RMSE: 28.4081, Test MAPE: 0.1163 -2022-02-02 14:35:08,260 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6686, Test RMSE: 28.9458, Test MAPE: 0.1178 -2022-02-02 14:35:08,264 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9250, Test RMSE: 29.3868, Test MAPE: 0.1191 -2022-02-02 14:35:08,268 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1382, Test RMSE: 29.7419, Test MAPE: 0.1201 -2022-02-02 14:35:08,272 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3585, Test RMSE: 30.0777, Test MAPE: 0.1216 -2022-02-02 14:35:08,276 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5533, Test RMSE: 30.3827, Test MAPE: 0.1233 -2022-02-02 14:35:08,280 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7161, Test RMSE: 30.6468, Test MAPE: 0.1242 -2022-02-02 14:35:08,284 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8737, Test RMSE: 30.8721, Test MAPE: 0.1249 -2022-02-02 14:35:08,288 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0328, Test RMSE: 31.0881, Test MAPE: 0.1261 -2022-02-02 14:35:08,292 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2873, Test RMSE: 31.4116, Test MAPE: 0.1285 -2022-02-02 14:35:08,292 - easytorch-training - INFO - test:: [test_time: -132.12 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 14:35:08,639 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_075.pt saved -2022-02-02 14:35:08,639 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:30 -2022-02-02 14:35:08,639 - easytorch-training - INFO - epoch 76 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:16<00:00, 1.28it/s] -2022-02-02 14:43:24,940 - easytorch-training - INFO - train:: [train_loss: 17.6960, train_MAPE: 0.1292, train_RMSE: 28.7927, train_time: 496.30 (s), lr: 6.25e-05] -2022-02-02 14:45:30,257 - easytorch-training - INFO - val:: [val_time: 125.31 (s), val_loss: 18.3107, val_MAPE: 0.1206, val_RMSE: 28.5704] -2022-02-02 14:47:35,840 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4010, Test RMSE: 26.8306, Test MAPE: 0.1097 -2022-02-02 14:47:35,845 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9085, Test RMSE: 27.6889, Test MAPE: 0.1133 -2022-02-02 14:47:35,850 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3405, Test RMSE: 28.4117, Test MAPE: 0.1151 -2022-02-02 14:47:35,855 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6680, Test RMSE: 28.9599, Test MAPE: 0.1173 -2022-02-02 14:47:35,860 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9469, Test RMSE: 29.4113, Test MAPE: 0.1185 -2022-02-02 14:47:35,864 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1571, Test RMSE: 29.7712, Test MAPE: 0.1200 -2022-02-02 14:47:35,868 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3896, Test RMSE: 30.1164, Test MAPE: 0.1221 -2022-02-02 14:47:35,872 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5820, Test RMSE: 30.4164, Test MAPE: 0.1233 -2022-02-02 14:47:35,876 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7482, Test RMSE: 30.6823, Test MAPE: 0.1245 -2022-02-02 14:47:35,880 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9094, Test RMSE: 30.9069, Test MAPE: 0.1257 -2022-02-02 14:47:35,883 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0690, Test RMSE: 31.1246, Test MAPE: 0.1261 -2022-02-02 14:47:35,887 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3265, Test RMSE: 31.4551, Test MAPE: 0.1277 -2022-02-02 14:47:35,888 - easytorch-training - INFO - test:: [test_time: -125.63 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 14:47:36,270 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_076.pt saved -2022-02-02 14:47:36,270 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:08 -2022-02-02 14:47:36,270 - easytorch-training - INFO - epoch 77 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:23<00:00, 1.27it/s] -2022-02-02 14:55:59,613 - easytorch-training - INFO - train:: [train_loss: 17.6932, train_MAPE: 0.1292, train_RMSE: 28.7962, train_time: 503.34 (s), lr: 6.25e-05] -2022-02-02 14:58:15,617 - easytorch-training - INFO - val:: [val_time: 136.00 (s), val_loss: 18.3122, val_MAPE: 0.1222, val_RMSE: 28.5338] -2022-02-02 15:00:28,891 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4370, Test RMSE: 26.8216, Test MAPE: 0.1117 -2022-02-02 15:00:28,896 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9355, Test RMSE: 27.6885, Test MAPE: 0.1144 -2022-02-02 15:00:28,901 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3547, Test RMSE: 28.4066, Test MAPE: 0.1162 -2022-02-02 15:00:28,904 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6870, Test RMSE: 28.9493, Test MAPE: 0.1186 -2022-02-02 15:00:28,908 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9496, Test RMSE: 29.3819, Test MAPE: 0.1209 -2022-02-02 15:00:28,912 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1695, Test RMSE: 29.7316, Test MAPE: 0.1223 -2022-02-02 15:00:28,916 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4221, Test RMSE: 30.0788, Test MAPE: 0.1261 -2022-02-02 15:00:28,920 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5903, Test RMSE: 30.3746, Test MAPE: 0.1252 -2022-02-02 15:00:28,924 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7461, Test RMSE: 30.6528, Test MAPE: 0.1250 -2022-02-02 15:00:28,927 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9074, Test RMSE: 30.8806, Test MAPE: 0.1264 -2022-02-02 15:00:28,931 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0778, Test RMSE: 31.1030, Test MAPE: 0.1280 -2022-02-02 15:00:28,935 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3260, Test RMSE: 31.4365, Test MAPE: 0.1290 -2022-02-02 15:00:28,935 - easytorch-training - INFO - test:: [test_time: -133.31 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 15:00:29,313 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_077.pt saved -2022-02-02 15:00:29,313 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:20 -2022-02-02 15:00:29,313 - easytorch-training - INFO - epoch 78 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:17<00:00, 1.28it/s] -2022-02-02 15:08:47,173 - easytorch-training - INFO - train:: [train_loss: 17.6784, train_MAPE: 0.1291, train_RMSE: 28.7743, train_time: 497.86 (s), lr: 6.25e-05] -2022-02-02 15:10:54,966 - easytorch-training - INFO - val:: [val_time: 127.79 (s), val_loss: 18.2864, val_MAPE: 0.1208, val_RMSE: 28.5313] -2022-02-02 15:13:05,428 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4130, Test RMSE: 26.8460, Test MAPE: 0.1096 -2022-02-02 15:13:05,433 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9195, Test RMSE: 27.7114, Test MAPE: 0.1130 -2022-02-02 15:13:05,438 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3469, Test RMSE: 28.4301, Test MAPE: 0.1158 -2022-02-02 15:13:05,442 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6836, Test RMSE: 28.9706, Test MAPE: 0.1177 -2022-02-02 15:13:05,447 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9443, Test RMSE: 29.3978, Test MAPE: 0.1193 -2022-02-02 15:13:05,452 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1641, Test RMSE: 29.7569, Test MAPE: 0.1206 -2022-02-02 15:13:05,457 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4054, Test RMSE: 30.1047, Test MAPE: 0.1235 -2022-02-02 15:13:05,462 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5944, Test RMSE: 30.4118, Test MAPE: 0.1239 -2022-02-02 15:13:05,465 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7591, Test RMSE: 30.6700, Test MAPE: 0.1245 -2022-02-02 15:13:05,469 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9213, Test RMSE: 30.9152, Test MAPE: 0.1252 -2022-02-02 15:13:05,473 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0891, Test RMSE: 31.1420, Test MAPE: 0.1265 -2022-02-02 15:13:05,477 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3387, Test RMSE: 31.4675, Test MAPE: 0.1280 -2022-02-02 15:13:05,477 - easytorch-training - INFO - test:: [test_time: -130.51 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 15:13:06,029 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_078.pt saved -2022-02-02 15:13:06,030 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:11 -2022-02-02 15:13:06,030 - easytorch-training - INFO - epoch 79 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:30<00:00, 1.25it/s] -2022-02-02 15:21:36,060 - easytorch-training - INFO - train:: [train_loss: 17.6817, train_MAPE: 0.1290, train_RMSE: 28.7775, train_time: 510.03 (s), lr: 6.25e-05] -2022-02-02 15:23:47,186 - easytorch-training - INFO - val:: [val_time: 131.12 (s), val_loss: 18.2862, val_MAPE: 0.1214, val_RMSE: 28.5268] -2022-02-02 15:25:56,107 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4302, Test RMSE: 26.8519, Test MAPE: 0.1108 -2022-02-02 15:25:56,111 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9338, Test RMSE: 27.7184, Test MAPE: 0.1138 -2022-02-02 15:25:56,115 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3725, Test RMSE: 28.4380, Test MAPE: 0.1167 -2022-02-02 15:25:56,119 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6982, Test RMSE: 28.9842, Test MAPE: 0.1185 -2022-02-02 15:25:56,123 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9613, Test RMSE: 29.4187, Test MAPE: 0.1201 -2022-02-02 15:25:56,126 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1897, Test RMSE: 29.7834, Test MAPE: 0.1219 -2022-02-02 15:25:56,130 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3972, Test RMSE: 30.1240, Test MAPE: 0.1228 -2022-02-02 15:25:56,134 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5904, Test RMSE: 30.4195, Test MAPE: 0.1239 -2022-02-02 15:25:56,138 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7463, Test RMSE: 30.6845, Test MAPE: 0.1248 -2022-02-02 15:25:56,142 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9208, Test RMSE: 30.9040, Test MAPE: 0.1269 -2022-02-02 15:25:56,146 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0787, Test RMSE: 31.1376, Test MAPE: 0.1273 -2022-02-02 15:25:56,149 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3192, Test RMSE: 31.4700, Test MAPE: 0.1279 -2022-02-02 15:25:56,150 - easytorch-training - INFO - test:: [test_time: -128.96 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 15:25:56,615 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_079.pt saved -2022-02-02 15:25:56,615 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:20 -2022-02-02 15:25:56,615 - easytorch-training - INFO - epoch 80 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:28<00:00, 1.25it/s] -2022-02-02 15:34:24,834 - easytorch-training - INFO - train:: [train_loss: 17.6700, train_MAPE: 0.1289, train_RMSE: 28.7739, train_time: 508.22 (s), lr: 6.25e-05] -2022-02-02 15:36:37,943 - easytorch-training - INFO - val:: [val_time: 133.10 (s), val_loss: 18.2797, val_MAPE: 0.1217, val_RMSE: 28.5325] -2022-02-02 15:38:49,914 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4144, Test RMSE: 26.8501, Test MAPE: 0.1100 -2022-02-02 15:38:49,918 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9263, Test RMSE: 27.7118, Test MAPE: 0.1140 -2022-02-02 15:38:49,922 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3557, Test RMSE: 28.4269, Test MAPE: 0.1168 -2022-02-02 15:38:49,926 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6853, Test RMSE: 28.9633, Test MAPE: 0.1189 -2022-02-02 15:38:49,930 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9371, Test RMSE: 29.4040, Test MAPE: 0.1198 -2022-02-02 15:38:49,934 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1643, Test RMSE: 29.7658, Test MAPE: 0.1218 -2022-02-02 15:38:49,937 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3876, Test RMSE: 30.1032, Test MAPE: 0.1236 -2022-02-02 15:38:49,941 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5818, Test RMSE: 30.3926, Test MAPE: 0.1248 -2022-02-02 15:38:49,945 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7393, Test RMSE: 30.6609, Test MAPE: 0.1256 -2022-02-02 15:38:49,949 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8932, Test RMSE: 30.8900, Test MAPE: 0.1265 -2022-02-02 15:38:49,953 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0427, Test RMSE: 31.1076, Test MAPE: 0.1270 -2022-02-02 15:38:49,956 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2995, Test RMSE: 31.4440, Test MAPE: 0.1291 -2022-02-02 15:38:49,957 - easytorch-training - INFO - test:: [test_time: -132.01 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 15:38:50,330 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_080.pt saved -2022-02-02 15:38:50,334 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:32 -2022-02-02 15:38:50,334 - easytorch-training - INFO - epoch 81 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:36<00:00, 1.23it/s] -2022-02-02 15:47:27,289 - easytorch-training - INFO - train:: [train_loss: 17.6701, train_MAPE: 0.1291, train_RMSE: 28.7631, train_time: 516.96 (s), lr: 6.25e-05] -2022-02-02 15:49:42,803 - easytorch-training - INFO - val:: [val_time: 135.51 (s), val_loss: 18.2655, val_MAPE: 0.1210, val_RMSE: 28.5115] -2022-02-02 15:51:53,793 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4079, Test RMSE: 26.8348, Test MAPE: 0.1101 -2022-02-02 15:51:53,800 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9127, Test RMSE: 27.7042, Test MAPE: 0.1135 -2022-02-02 15:51:53,806 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3316, Test RMSE: 28.4089, Test MAPE: 0.1156 -2022-02-02 15:51:53,813 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6562, Test RMSE: 28.9538, Test MAPE: 0.1174 -2022-02-02 15:51:53,819 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9077, Test RMSE: 29.3795, Test MAPE: 0.1187 -2022-02-02 15:51:53,826 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1226, Test RMSE: 29.7336, Test MAPE: 0.1202 -2022-02-02 15:51:53,832 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3633, Test RMSE: 30.0588, Test MAPE: 0.1229 -2022-02-02 15:51:53,839 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5556, Test RMSE: 30.3568, Test MAPE: 0.1240 -2022-02-02 15:51:53,845 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7091, Test RMSE: 30.6198, Test MAPE: 0.1246 -2022-02-02 15:51:53,852 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8682, Test RMSE: 30.8621, Test MAPE: 0.1261 -2022-02-02 15:51:53,858 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0394, Test RMSE: 31.0835, Test MAPE: 0.1277 -2022-02-02 15:51:53,864 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2854, Test RMSE: 31.4341, Test MAPE: 0.1282 -2022-02-02 15:51:53,865 - easytorch-training - INFO - test:: [test_time: -131.06 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 15:51:54,429 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_081.pt saved -2022-02-02 15:51:54,429 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:56 -2022-02-02 15:51:54,429 - easytorch-training - INFO - epoch 82 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:28<00:00, 1.25it/s] -2022-02-02 16:00:22,595 - easytorch-training - INFO - train:: [train_loss: 17.6591, train_MAPE: 0.1290, train_RMSE: 28.7589, train_time: 508.17 (s), lr: 6.25e-05] -2022-02-02 16:02:32,514 - easytorch-training - INFO - val:: [val_time: 129.91 (s), val_loss: 18.3157, val_MAPE: 0.1230, val_RMSE: 28.5800] -2022-02-02 16:04:30,361 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4250, Test RMSE: 26.8592, Test MAPE: 0.1106 -2022-02-02 16:04:30,367 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9450, Test RMSE: 27.7221, Test MAPE: 0.1144 -2022-02-02 16:04:30,372 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4021, Test RMSE: 28.4607, Test MAPE: 0.1180 -2022-02-02 16:04:30,378 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7366, Test RMSE: 29.0011, Test MAPE: 0.1205 -2022-02-02 16:04:30,383 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0197, Test RMSE: 29.4266, Test MAPE: 0.1234 -2022-02-02 16:04:30,389 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2384, Test RMSE: 29.8090, Test MAPE: 0.1240 -2022-02-02 16:04:30,394 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4572, Test RMSE: 30.1533, Test MAPE: 0.1253 -2022-02-02 16:04:30,400 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6550, Test RMSE: 30.4614, Test MAPE: 0.1265 -2022-02-02 16:04:30,405 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8017, Test RMSE: 30.7414, Test MAPE: 0.1266 -2022-02-02 16:04:30,411 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9580, Test RMSE: 30.9639, Test MAPE: 0.1277 -2022-02-02 16:04:30,417 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1239, Test RMSE: 31.1742, Test MAPE: 0.1300 -2022-02-02 16:04:30,422 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3363, Test RMSE: 31.4831, Test MAPE: 0.1299 -2022-02-02 16:04:30,423 - easytorch-training - INFO - test:: [test_time: -117.90 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:04:31,038 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_082.pt saved -2022-02-02 16:04:31,038 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:47 -2022-02-02 16:04:31,038 - easytorch-training - INFO - epoch 83 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:33<00:00, 1.24it/s] -2022-02-02 16:13:04,823 - easytorch-training - INFO - train:: [train_loss: 17.6621, train_MAPE: 0.1291, train_RMSE: 28.7480, train_time: 513.78 (s), lr: 6.25e-05] -2022-02-02 16:15:19,986 - easytorch-training - INFO - val:: [val_time: 135.16 (s), val_loss: 18.2593, val_MAPE: 0.1213, val_RMSE: 28.4845] -2022-02-02 16:17:33,302 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.3940, Test RMSE: 26.8389, Test MAPE: 0.1101 -2022-02-02 16:17:33,306 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9035, Test RMSE: 27.7005, Test MAPE: 0.1136 -2022-02-02 16:17:33,309 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3323, Test RMSE: 28.4125, Test MAPE: 0.1163 -2022-02-02 16:17:33,313 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6624, Test RMSE: 28.9476, Test MAPE: 0.1188 -2022-02-02 16:17:33,317 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9115, Test RMSE: 29.3794, Test MAPE: 0.1193 -2022-02-02 16:17:33,321 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1275, Test RMSE: 29.7390, Test MAPE: 0.1204 -2022-02-02 16:17:33,325 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3457, Test RMSE: 30.0603, Test MAPE: 0.1222 -2022-02-02 16:17:33,328 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5367, Test RMSE: 30.3590, Test MAPE: 0.1234 -2022-02-02 16:17:33,332 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7113, Test RMSE: 30.6264, Test MAPE: 0.1251 -2022-02-02 16:17:33,336 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8792, Test RMSE: 30.8638, Test MAPE: 0.1271 -2022-02-02 16:17:33,340 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0371, Test RMSE: 31.0895, Test MAPE: 0.1277 -2022-02-02 16:17:33,344 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3075, Test RMSE: 31.4307, Test MAPE: 0.1303 -2022-02-02 16:17:33,344 - easytorch-training - INFO - test:: [test_time: -133.35 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:17:33,743 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_083.pt saved -2022-02-02 16:17:33,743 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:09 -2022-02-02 16:17:33,744 - easytorch-training - INFO - epoch 84 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:44<00:00, 1.21it/s] -2022-02-02 16:26:18,109 - easytorch-training - INFO - train:: [train_loss: 17.6609, train_MAPE: 0.1289, train_RMSE: 28.7556, train_time: 524.37 (s), lr: 6.25e-05] -2022-02-02 16:28:30,224 - easytorch-training - INFO - val:: [val_time: 132.11 (s), val_loss: 18.2858, val_MAPE: 0.1208, val_RMSE: 28.5578] -2022-02-02 16:30:49,084 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.3943, Test RMSE: 26.8155, Test MAPE: 0.1091 -2022-02-02 16:30:49,088 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.8973, Test RMSE: 27.6848, Test MAPE: 0.1123 -2022-02-02 16:30:49,092 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3197, Test RMSE: 28.3943, Test MAPE: 0.1151 -2022-02-02 16:30:49,096 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6459, Test RMSE: 28.9383, Test MAPE: 0.1173 -2022-02-02 16:30:49,100 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9013, Test RMSE: 29.3745, Test MAPE: 0.1189 -2022-02-02 16:30:49,103 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1265, Test RMSE: 29.7324, Test MAPE: 0.1206 -2022-02-02 16:30:49,107 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3540, Test RMSE: 30.1001, Test MAPE: 0.1221 -2022-02-02 16:30:49,111 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5396, Test RMSE: 30.3904, Test MAPE: 0.1230 -2022-02-02 16:30:49,115 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7084, Test RMSE: 30.6588, Test MAPE: 0.1248 -2022-02-02 16:30:49,119 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8577, Test RMSE: 30.8695, Test MAPE: 0.1261 -2022-02-02 16:30:49,123 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0233, Test RMSE: 31.1027, Test MAPE: 0.1271 -2022-02-02 16:30:49,127 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2784, Test RMSE: 31.4202, Test MAPE: 0.1288 -2022-02-02 16:30:49,127 - easytorch-training - INFO - test:: [test_time: -138.90 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:30:49,507 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_084.pt saved -2022-02-02 16:30:49,507 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:46 -2022-02-02 16:30:49,507 - easytorch-training - INFO - epoch 85 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:00<00:00, 1.33it/s] -2022-02-02 16:38:49,797 - easytorch-training - INFO - train:: [train_loss: 17.6532, train_MAPE: 0.1288, train_RMSE: 28.7555, train_time: 480.29 (s), lr: 6.25e-05] -2022-02-02 16:40:59,648 - easytorch-training - INFO - val:: [val_time: 129.85 (s), val_loss: 18.3223, val_MAPE: 0.1198, val_RMSE: 28.5633] -2022-02-02 16:43:12,131 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4025, Test RMSE: 26.8289, Test MAPE: 0.1087 -2022-02-02 16:43:12,137 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9124, Test RMSE: 27.7010, Test MAPE: 0.1120 -2022-02-02 16:43:12,142 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3453, Test RMSE: 28.4180, Test MAPE: 0.1146 -2022-02-02 16:43:12,147 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6796, Test RMSE: 28.9633, Test MAPE: 0.1164 -2022-02-02 16:43:12,153 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9405, Test RMSE: 29.4068, Test MAPE: 0.1179 -2022-02-02 16:43:12,158 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1655, Test RMSE: 29.7698, Test MAPE: 0.1192 -2022-02-02 16:43:12,164 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4013, Test RMSE: 30.1194, Test MAPE: 0.1210 -2022-02-02 16:43:12,169 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5889, Test RMSE: 30.4020, Test MAPE: 0.1220 -2022-02-02 16:43:12,175 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7395, Test RMSE: 30.6682, Test MAPE: 0.1230 -2022-02-02 16:43:12,180 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9160, Test RMSE: 30.8992, Test MAPE: 0.1241 -2022-02-02 16:43:12,185 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0707, Test RMSE: 31.1261, Test MAPE: 0.1253 -2022-02-02 16:43:12,191 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3493, Test RMSE: 31.4706, Test MAPE: 0.1270 -2022-02-02 16:43:12,191 - easytorch-training - INFO - test:: [test_time: -132.54 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:43:12,798 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_085.pt saved -2022-02-02 16:43:12,798 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:21 -2022-02-02 16:43:12,798 - easytorch-training - INFO - epoch 86 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:43<00:00, 1.22it/s] -2022-02-02 16:51:56,101 - easytorch-training - INFO - train:: [train_loss: 17.6411, train_MAPE: 0.1288, train_RMSE: 28.7374, train_time: 523.30 (s), lr: 6.25e-05] -2022-02-02 16:54:09,511 - easytorch-training - INFO - val:: [val_time: 133.40 (s), val_loss: 18.2778, val_MAPE: 0.1234, val_RMSE: 28.4836] -2022-02-02 16:56:19,137 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4361, Test RMSE: 26.8275, Test MAPE: 0.1122 -2022-02-02 16:56:19,142 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9526, Test RMSE: 27.6805, Test MAPE: 0.1164 -2022-02-02 16:56:19,147 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3745, Test RMSE: 28.4012, Test MAPE: 0.1184 -2022-02-02 16:56:19,152 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7028, Test RMSE: 28.9387, Test MAPE: 0.1205 -2022-02-02 16:56:19,157 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9729, Test RMSE: 29.3750, Test MAPE: 0.1227 -2022-02-02 16:56:19,162 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1675, Test RMSE: 29.7247, Test MAPE: 0.1230 -2022-02-02 16:56:19,167 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4134, Test RMSE: 30.0746, Test MAPE: 0.1258 -2022-02-02 16:56:19,170 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6333, Test RMSE: 30.3772, Test MAPE: 0.1289 -2022-02-02 16:56:19,174 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7501, Test RMSE: 30.6359, Test MAPE: 0.1276 -2022-02-02 16:56:19,178 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8770, Test RMSE: 30.8496, Test MAPE: 0.1275 -2022-02-02 16:56:19,182 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0241, Test RMSE: 31.0599, Test MAPE: 0.1282 -2022-02-02 16:56:19,186 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2731, Test RMSE: 31.4004, Test MAPE: 0.1292 -2022-02-02 16:56:19,186 - easytorch-training - INFO - test:: [test_time: -129.67 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 16:56:19,580 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_086.pt saved -2022-02-02 16:56:19,581 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:47 -2022-02-02 16:56:19,581 - easytorch-training - INFO - epoch 87 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:03<00:00, 1.32it/s] -2022-02-02 17:04:23,332 - easytorch-training - INFO - train:: [train_loss: 17.6335, train_MAPE: 0.1289, train_RMSE: 28.7090, train_time: 483.75 (s), lr: 6.25e-05] -2022-02-02 17:06:28,729 - easytorch-training - INFO - val:: [val_time: 125.39 (s), val_loss: 18.3026, val_MAPE: 0.1197, val_RMSE: 28.5372] -2022-02-02 17:08:33,674 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4084, Test RMSE: 26.8306, Test MAPE: 0.1084 -2022-02-02 17:08:33,680 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9054, Test RMSE: 27.6741, Test MAPE: 0.1121 -2022-02-02 17:08:33,685 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3353, Test RMSE: 28.3970, Test MAPE: 0.1145 -2022-02-02 17:08:33,690 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6558, Test RMSE: 28.9382, Test MAPE: 0.1167 -2022-02-02 17:08:33,695 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9235, Test RMSE: 29.3759, Test MAPE: 0.1179 -2022-02-02 17:08:33,701 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1554, Test RMSE: 29.7459, Test MAPE: 0.1193 -2022-02-02 17:08:33,706 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3804, Test RMSE: 30.0921, Test MAPE: 0.1209 -2022-02-02 17:08:33,711 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5555, Test RMSE: 30.3707, Test MAPE: 0.1220 -2022-02-02 17:08:33,717 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7188, Test RMSE: 30.6334, Test MAPE: 0.1231 -2022-02-02 17:08:33,722 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8747, Test RMSE: 30.8584, Test MAPE: 0.1243 -2022-02-02 17:08:33,728 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0318, Test RMSE: 31.0674, Test MAPE: 0.1258 -2022-02-02 17:08:33,735 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2936, Test RMSE: 31.4048, Test MAPE: 0.1267 -2022-02-02 17:08:33,736 - easytorch-training - INFO - test:: [test_time: -125.00 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:08:34,330 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_087.pt saved -2022-02-02 17:08:34,330 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:12 -2022-02-02 17:08:34,330 - easytorch-training - INFO - epoch 88 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:19<00:00, 1.27it/s] -2022-02-02 17:16:54,187 - easytorch-training - INFO - train:: [train_loss: 17.6345, train_MAPE: 0.1286, train_RMSE: 28.7157, train_time: 499.86 (s), lr: 6.25e-05] -2022-02-02 17:19:07,600 - easytorch-training - INFO - val:: [val_time: 133.41 (s), val_loss: 18.2615, val_MAPE: 0.1208, val_RMSE: 28.5117] -2022-02-02 17:21:22,190 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4046, Test RMSE: 26.8456, Test MAPE: 0.1096 -2022-02-02 17:21:22,194 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9181, Test RMSE: 27.7114, Test MAPE: 0.1133 -2022-02-02 17:21:22,198 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3621, Test RMSE: 28.4367, Test MAPE: 0.1166 -2022-02-02 17:21:22,201 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6774, Test RMSE: 28.9617, Test MAPE: 0.1180 -2022-02-02 17:21:22,205 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9295, Test RMSE: 29.3832, Test MAPE: 0.1197 -2022-02-02 17:21:22,209 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1399, Test RMSE: 29.7354, Test MAPE: 0.1206 -2022-02-02 17:21:22,213 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3621, Test RMSE: 30.0750, Test MAPE: 0.1221 -2022-02-02 17:21:22,217 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5523, Test RMSE: 30.3696, Test MAPE: 0.1237 -2022-02-02 17:21:22,221 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7084, Test RMSE: 30.6222, Test MAPE: 0.1245 -2022-02-02 17:21:22,224 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8499, Test RMSE: 30.8346, Test MAPE: 0.1250 -2022-02-02 17:21:22,228 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0112, Test RMSE: 31.0534, Test MAPE: 0.1258 -2022-02-02 17:21:22,232 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2577, Test RMSE: 31.3790, Test MAPE: 0.1273 -2022-02-02 17:21:22,232 - easytorch-training - INFO - test:: [test_time: -134.63 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:21:22,604 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_088.pt saved -2022-02-02 17:21:22,605 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:17 -2022-02-02 17:21:22,605 - easytorch-training - INFO - epoch 89 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:18<00:00, 1.28it/s] -2022-02-02 17:29:41,388 - easytorch-training - INFO - train:: [train_loss: 17.6367, train_MAPE: 0.1288, train_RMSE: 28.7300, train_time: 498.78 (s), lr: 6.25e-05] -2022-02-02 17:31:52,205 - easytorch-training - INFO - val:: [val_time: 130.81 (s), val_loss: 18.3146, val_MAPE: 0.1199, val_RMSE: 28.5400] -2022-02-02 17:34:07,962 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4079, Test RMSE: 26.8406, Test MAPE: 0.1085 -2022-02-02 17:34:07,967 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9129, Test RMSE: 27.6947, Test MAPE: 0.1120 -2022-02-02 17:34:07,972 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3513, Test RMSE: 28.4164, Test MAPE: 0.1143 -2022-02-02 17:34:07,976 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6660, Test RMSE: 28.9514, Test MAPE: 0.1165 -2022-02-02 17:34:07,981 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9280, Test RMSE: 29.3772, Test MAPE: 0.1180 -2022-02-02 17:34:07,986 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1436, Test RMSE: 29.7407, Test MAPE: 0.1190 -2022-02-02 17:34:07,991 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3676, Test RMSE: 30.0715, Test MAPE: 0.1214 -2022-02-02 17:34:07,994 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5576, Test RMSE: 30.3663, Test MAPE: 0.1224 -2022-02-02 17:34:07,998 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7332, Test RMSE: 30.6341, Test MAPE: 0.1236 -2022-02-02 17:34:08,002 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8916, Test RMSE: 30.8544, Test MAPE: 0.1247 -2022-02-02 17:34:08,006 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0667, Test RMSE: 31.0859, Test MAPE: 0.1258 -2022-02-02 17:34:08,010 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3147, Test RMSE: 31.4166, Test MAPE: 0.1278 -2022-02-02 17:34:08,010 - easytorch-training - INFO - test:: [test_time: -135.80 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:34:08,391 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_089.pt saved -2022-02-02 17:34:08,392 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:18 -2022-02-02 17:34:08,392 - easytorch-training - INFO - epoch 90 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:19<00:00, 1.28it/s] -2022-02-02 17:42:27,647 - easytorch-training - INFO - train:: [train_loss: 17.6154, train_MAPE: 0.1287, train_RMSE: 28.7093, train_time: 499.25 (s), lr: 6.25e-05] -2022-02-02 17:44:40,501 - easytorch-training - INFO - val:: [val_time: 132.85 (s), val_loss: 18.3241, val_MAPE: 0.1213, val_RMSE: 28.5647] -2022-02-02 17:46:48,620 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4177, Test RMSE: 26.8472, Test MAPE: 0.1102 -2022-02-02 17:46:48,624 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9216, Test RMSE: 27.6977, Test MAPE: 0.1131 -2022-02-02 17:46:48,628 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3700, Test RMSE: 28.4285, Test MAPE: 0.1170 -2022-02-02 17:46:48,631 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6790, Test RMSE: 28.9725, Test MAPE: 0.1176 -2022-02-02 17:46:48,635 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9520, Test RMSE: 29.4153, Test MAPE: 0.1203 -2022-02-02 17:46:48,639 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1496, Test RMSE: 29.7787, Test MAPE: 0.1200 -2022-02-02 17:46:48,643 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.4036, Test RMSE: 30.1170, Test MAPE: 0.1239 -2022-02-02 17:46:48,647 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5951, Test RMSE: 30.4094, Test MAPE: 0.1249 -2022-02-02 17:46:48,651 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7630, Test RMSE: 30.6806, Test MAPE: 0.1259 -2022-02-02 17:46:48,654 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9154, Test RMSE: 30.9199, Test MAPE: 0.1254 -2022-02-02 17:46:48,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0942, Test RMSE: 31.1573, Test MAPE: 0.1268 -2022-02-02 17:46:48,662 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3446, Test RMSE: 31.4916, Test MAPE: 0.1286 -2022-02-02 17:46:48,662 - easytorch-training - INFO - test:: [test_time: -128.16 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:46:49,010 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_090.pt saved -2022-02-02 17:46:49,013 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:14 -2022-02-02 17:46:49,013 - easytorch-training - INFO - epoch 91 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:29<00:00, 1.25it/s] -2022-02-02 17:55:18,814 - easytorch-training - INFO - train:: [train_loss: 17.6149, train_MAPE: 0.1286, train_RMSE: 28.6848, train_time: 509.80 (s), lr: 6.25e-05] -2022-02-02 17:57:17,333 - easytorch-training - INFO - val:: [val_time: 118.51 (s), val_loss: 18.3018, val_MAPE: 0.1204, val_RMSE: 28.5351] -2022-02-02 17:59:25,547 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4241, Test RMSE: 26.8469, Test MAPE: 0.1099 -2022-02-02 17:59:25,552 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9309, Test RMSE: 27.6875, Test MAPE: 0.1137 -2022-02-02 17:59:25,557 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3534, Test RMSE: 28.4071, Test MAPE: 0.1152 -2022-02-02 17:59:25,562 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6836, Test RMSE: 28.9452, Test MAPE: 0.1177 -2022-02-02 17:59:25,567 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9375, Test RMSE: 29.3797, Test MAPE: 0.1190 -2022-02-02 17:59:25,571 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1590, Test RMSE: 29.7429, Test MAPE: 0.1203 -2022-02-02 17:59:25,576 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3823, Test RMSE: 30.0881, Test MAPE: 0.1220 -2022-02-02 17:59:25,579 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5881, Test RMSE: 30.3965, Test MAPE: 0.1229 -2022-02-02 17:59:25,583 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7601, Test RMSE: 30.6621, Test MAPE: 0.1238 -2022-02-02 17:59:25,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.9019, Test RMSE: 30.8842, Test MAPE: 0.1249 -2022-02-02 17:59:25,591 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0691, Test RMSE: 31.0982, Test MAPE: 0.1259 -2022-02-02 17:59:25,595 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3063, Test RMSE: 31.4274, Test MAPE: 0.1273 -2022-02-02 17:59:25,595 - easytorch-training - INFO - test:: [test_time: -128.26 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 17:59:25,972 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_091.pt saved -2022-02-02 17:59:25,973 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:05 -2022-02-02 17:59:25,973 - easytorch-training - INFO - epoch 92 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:22<00:00, 1.27it/s] -2022-02-02 18:07:48,614 - easytorch-training - INFO - train:: [train_loss: 17.6179, train_MAPE: 0.1286, train_RMSE: 28.6992, train_time: 502.64 (s), lr: 6.25e-05] -2022-02-02 18:09:57,311 - easytorch-training - INFO - val:: [val_time: 128.69 (s), val_loss: 18.2715, val_MAPE: 0.1207, val_RMSE: 28.5286] -2022-02-02 18:12:04,542 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4178, Test RMSE: 26.8517, Test MAPE: 0.1095 -2022-02-02 18:12:04,548 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9055, Test RMSE: 27.6971, Test MAPE: 0.1127 -2022-02-02 18:12:04,555 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3285, Test RMSE: 28.4063, Test MAPE: 0.1153 -2022-02-02 18:12:04,561 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6575, Test RMSE: 28.9395, Test MAPE: 0.1172 -2022-02-02 18:12:04,568 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9088, Test RMSE: 29.3580, Test MAPE: 0.1186 -2022-02-02 18:12:04,574 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1140, Test RMSE: 29.7118, Test MAPE: 0.1199 -2022-02-02 18:12:04,581 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3272, Test RMSE: 30.0540, Test MAPE: 0.1214 -2022-02-02 18:12:04,587 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5057, Test RMSE: 30.3300, Test MAPE: 0.1227 -2022-02-02 18:12:04,593 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.6578, Test RMSE: 30.5797, Test MAPE: 0.1239 -2022-02-02 18:12:04,600 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8135, Test RMSE: 30.7950, Test MAPE: 0.1249 -2022-02-02 18:12:04,606 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 18.9734, Test RMSE: 31.0138, Test MAPE: 0.1265 -2022-02-02 18:12:04,613 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2177, Test RMSE: 31.3383, Test MAPE: 0.1275 -2022-02-02 18:12:04,613 - easytorch-training - INFO - test:: [test_time: -127.29 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:12:05,208 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_092.pt saved -2022-02-02 18:12:05,209 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:00 -2022-02-02 18:12:05,209 - easytorch-training - INFO - epoch 93 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:15<00:00, 1.29it/s] -2022-02-02 18:20:20,843 - easytorch-training - INFO - train:: [train_loss: 17.6085, train_MAPE: 0.1285, train_RMSE: 28.6804, train_time: 495.63 (s), lr: 6.25e-05] -2022-02-02 18:22:33,795 - easytorch-training - INFO - val:: [val_time: 132.95 (s), val_loss: 18.2819, val_MAPE: 0.1200, val_RMSE: 28.5325] -2022-02-02 18:24:35,783 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4035, Test RMSE: 26.8460, Test MAPE: 0.1087 -2022-02-02 18:24:35,790 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9158, Test RMSE: 27.7054, Test MAPE: 0.1119 -2022-02-02 18:24:35,796 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3435, Test RMSE: 28.4378, Test MAPE: 0.1149 -2022-02-02 18:24:35,801 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6701, Test RMSE: 28.9869, Test MAPE: 0.1169 -2022-02-02 18:24:35,807 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9323, Test RMSE: 29.4248, Test MAPE: 0.1185 -2022-02-02 18:24:35,812 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1481, Test RMSE: 29.7771, Test MAPE: 0.1197 -2022-02-02 18:24:35,817 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3735, Test RMSE: 30.1204, Test MAPE: 0.1215 -2022-02-02 18:24:35,823 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5740, Test RMSE: 30.4306, Test MAPE: 0.1222 -2022-02-02 18:24:35,828 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7352, Test RMSE: 30.6990, Test MAPE: 0.1235 -2022-02-02 18:24:35,834 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8816, Test RMSE: 30.9109, Test MAPE: 0.1249 -2022-02-02 18:24:35,839 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0444, Test RMSE: 31.1291, Test MAPE: 0.1260 -2022-02-02 18:24:35,845 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2999, Test RMSE: 31.4567, Test MAPE: 0.1276 -2022-02-02 18:24:35,845 - easytorch-training - INFO - test:: [test_time: -122.05 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:24:36,418 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_093.pt saved -2022-02-02 18:24:36,419 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:46 -2022-02-02 18:24:36,419 - easytorch-training - INFO - epoch 94 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:29<00:00, 1.25it/s] -2022-02-02 18:33:06,267 - easytorch-training - INFO - train:: [train_loss: 17.6071, train_MAPE: 0.1284, train_RMSE: 28.6816, train_time: 509.85 (s), lr: 6.25e-05] -2022-02-02 18:35:08,850 - easytorch-training - INFO - val:: [val_time: 122.57 (s), val_loss: 18.2598, val_MAPE: 0.1208, val_RMSE: 28.4924] -2022-02-02 18:37:25,215 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4075, Test RMSE: 26.8399, Test MAPE: 0.1091 -2022-02-02 18:37:25,221 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9084, Test RMSE: 27.6971, Test MAPE: 0.1125 -2022-02-02 18:37:25,228 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3381, Test RMSE: 28.4151, Test MAPE: 0.1159 -2022-02-02 18:37:25,235 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6599, Test RMSE: 28.9522, Test MAPE: 0.1184 -2022-02-02 18:37:25,241 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9107, Test RMSE: 29.3823, Test MAPE: 0.1196 -2022-02-02 18:37:25,248 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1179, Test RMSE: 29.7236, Test MAPE: 0.1205 -2022-02-02 18:37:25,254 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3459, Test RMSE: 30.0550, Test MAPE: 0.1221 -2022-02-02 18:37:25,261 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5317, Test RMSE: 30.3449, Test MAPE: 0.1227 -2022-02-02 18:37:25,267 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.6900, Test RMSE: 30.5913, Test MAPE: 0.1244 -2022-02-02 18:37:25,273 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8367, Test RMSE: 30.8017, Test MAPE: 0.1252 -2022-02-02 18:37:25,278 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 18.9959, Test RMSE: 31.0245, Test MAPE: 0.1264 -2022-02-02 18:37:25,283 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2470, Test RMSE: 31.3498, Test MAPE: 0.1274 -2022-02-02 18:37:25,283 - easytorch-training - INFO - test:: [test_time: -136.43 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:37:25,865 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_094.pt saved -2022-02-02 18:37:25,865 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:51 -2022-02-02 18:37:25,866 - easytorch-training - INFO - epoch 95 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:39<00:00, 1.23it/s] -2022-02-02 18:46:04,940 - easytorch-training - INFO - train:: [train_loss: 17.5942, train_MAPE: 0.1285, train_RMSE: 28.6688, train_time: 519.07 (s), lr: 6.25e-05] -2022-02-02 18:48:14,713 - easytorch-training - INFO - val:: [val_time: 129.77 (s), val_loss: 18.2872, val_MAPE: 0.1209, val_RMSE: 28.5238] -2022-02-02 18:50:23,398 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4078, Test RMSE: 26.8294, Test MAPE: 0.1097 -2022-02-02 18:50:23,403 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9222, Test RMSE: 27.6946, Test MAPE: 0.1134 -2022-02-02 18:50:23,407 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3538, Test RMSE: 28.4217, Test MAPE: 0.1162 -2022-02-02 18:50:23,412 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6928, Test RMSE: 28.9666, Test MAPE: 0.1195 -2022-02-02 18:50:23,417 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9256, Test RMSE: 29.3908, Test MAPE: 0.1192 -2022-02-02 18:50:23,422 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1506, Test RMSE: 29.7546, Test MAPE: 0.1209 -2022-02-02 18:50:23,426 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3682, Test RMSE: 30.0958, Test MAPE: 0.1221 -2022-02-02 18:50:23,430 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5612, Test RMSE: 30.3908, Test MAPE: 0.1235 -2022-02-02 18:50:23,433 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7313, Test RMSE: 30.6561, Test MAPE: 0.1237 -2022-02-02 18:50:23,437 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8803, Test RMSE: 30.8845, Test MAPE: 0.1249 -2022-02-02 18:50:23,441 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0556, Test RMSE: 31.1122, Test MAPE: 0.1256 -2022-02-02 18:50:23,445 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3094, Test RMSE: 31.4407, Test MAPE: 0.1275 -2022-02-02 18:50:23,445 - easytorch-training - INFO - test:: [test_time: -128.73 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 18:50:23,834 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_095.pt saved -2022-02-02 18:50:23,834 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:05 -2022-02-02 18:50:23,834 - easytorch-training - INFO - epoch 96 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:32<00:00, 1.24it/s] -2022-02-02 18:58:56,325 - easytorch-training - INFO - train:: [train_loss: 17.5837, train_MAPE: 0.1285, train_RMSE: 28.6529, train_time: 512.49 (s), lr: 6.25e-05] -2022-02-02 19:01:01,067 - easytorch-training - INFO - val:: [val_time: 124.74 (s), val_loss: 18.2678, val_MAPE: 0.1204, val_RMSE: 28.5216] -2022-02-02 19:03:17,007 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4046, Test RMSE: 26.8403, Test MAPE: 0.1095 -2022-02-02 19:03:17,011 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9183, Test RMSE: 27.7070, Test MAPE: 0.1132 -2022-02-02 19:03:17,015 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3441, Test RMSE: 28.4263, Test MAPE: 0.1155 -2022-02-02 19:03:17,019 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6725, Test RMSE: 28.9727, Test MAPE: 0.1174 -2022-02-02 19:03:17,023 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9176, Test RMSE: 29.3931, Test MAPE: 0.1189 -2022-02-02 19:03:17,027 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1315, Test RMSE: 29.7499, Test MAPE: 0.1201 -2022-02-02 19:03:17,030 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3612, Test RMSE: 30.0897, Test MAPE: 0.1217 -2022-02-02 19:03:17,034 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5463, Test RMSE: 30.3786, Test MAPE: 0.1226 -2022-02-02 19:03:17,038 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7076, Test RMSE: 30.6396, Test MAPE: 0.1244 -2022-02-02 19:03:17,042 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8522, Test RMSE: 30.8592, Test MAPE: 0.1250 -2022-02-02 19:03:17,046 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0099, Test RMSE: 31.0648, Test MAPE: 0.1261 -2022-02-02 19:03:17,050 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2530, Test RMSE: 31.3914, Test MAPE: 0.1275 -2022-02-02 19:03:17,050 - easytorch-training - INFO - test:: [test_time: -135.98 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:03:17,452 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_096.pt saved -2022-02-02 19:03:17,453 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:15 -2022-02-02 19:03:17,453 - easytorch-training - INFO - epoch 97 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:01<00:00, 1.32it/s] -2022-02-02 19:11:19,208 - easytorch-training - INFO - train:: [train_loss: 17.5852, train_MAPE: 0.1285, train_RMSE: 28.6633, train_time: 481.75 (s), lr: 6.25e-05] -2022-02-02 19:13:29,603 - easytorch-training - INFO - val:: [val_time: 130.39 (s), val_loss: 18.2660, val_MAPE: 0.1231, val_RMSE: 28.4935] -2022-02-02 19:15:33,632 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4514, Test RMSE: 26.8514, Test MAPE: 0.1126 -2022-02-02 19:15:33,639 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9969, Test RMSE: 27.7164, Test MAPE: 0.1185 -2022-02-02 19:15:33,645 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3744, Test RMSE: 28.4355, Test MAPE: 0.1180 -2022-02-02 19:15:33,652 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7383, Test RMSE: 28.9789, Test MAPE: 0.1221 -2022-02-02 19:15:33,658 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9882, Test RMSE: 29.4156, Test MAPE: 0.1233 -2022-02-02 19:15:33,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1607, Test RMSE: 29.7671, Test MAPE: 0.1221 -2022-02-02 19:15:33,671 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3793, Test RMSE: 30.1028, Test MAPE: 0.1238 -2022-02-02 19:15:33,677 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5683, Test RMSE: 30.3957, Test MAPE: 0.1251 -2022-02-02 19:15:33,684 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7246, Test RMSE: 30.6601, Test MAPE: 0.1255 -2022-02-02 19:15:33,690 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8929, Test RMSE: 30.8805, Test MAPE: 0.1272 -2022-02-02 19:15:33,696 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0484, Test RMSE: 31.0915, Test MAPE: 0.1285 -2022-02-02 19:15:33,703 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2908, Test RMSE: 31.4114, Test MAPE: 0.1304 -2022-02-02 19:15:33,703 - easytorch-training - INFO - test:: [test_time: -124.10 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:15:34,284 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_097.pt saved -2022-02-02 19:15:34,284 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:47 -2022-02-02 19:15:34,284 - easytorch-training - INFO - epoch 98 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [08:40<00:00, 1.22it/s] -2022-02-02 19:24:14,920 - easytorch-training - INFO - train:: [train_loss: 17.5793, train_MAPE: 0.1283, train_RMSE: 28.6653, train_time: 520.64 (s), lr: 6.25e-05] -2022-02-02 19:26:20,950 - easytorch-training - INFO - val:: [val_time: 126.02 (s), val_loss: 18.2937, val_MAPE: 0.1204, val_RMSE: 28.5613] -2022-02-02 19:28:34,831 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.3991, Test RMSE: 26.8407, Test MAPE: 0.1090 -2022-02-02 19:28:34,836 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9200, Test RMSE: 27.6915, Test MAPE: 0.1123 -2022-02-02 19:28:34,841 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3442, Test RMSE: 28.4080, Test MAPE: 0.1156 -2022-02-02 19:28:34,846 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6629, Test RMSE: 28.9453, Test MAPE: 0.1176 -2022-02-02 19:28:34,850 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9150, Test RMSE: 29.3816, Test MAPE: 0.1187 -2022-02-02 19:28:34,855 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1315, Test RMSE: 29.7450, Test MAPE: 0.1199 -2022-02-02 19:28:34,860 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3647, Test RMSE: 30.0963, Test MAPE: 0.1215 -2022-02-02 19:28:34,864 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5629, Test RMSE: 30.3891, Test MAPE: 0.1228 -2022-02-02 19:28:34,868 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.7302, Test RMSE: 30.6510, Test MAPE: 0.1239 -2022-02-02 19:28:34,872 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8755, Test RMSE: 30.8745, Test MAPE: 0.1249 -2022-02-02 19:28:34,875 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0450, Test RMSE: 31.0989, Test MAPE: 0.1261 -2022-02-02 19:28:34,879 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2851, Test RMSE: 31.4229, Test MAPE: 0.1276 -2022-02-02 19:28:34,879 - easytorch-training - INFO - test:: [test_time: -133.93 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:28:35,441 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_098.pt saved -2022-02-02 19:28:35,441 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:54:04 -2022-02-02 19:28:35,441 - easytorch-training - INFO - epoch 99 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [07:49<00:00, 1.36it/s] -2022-02-02 19:36:24,747 - easytorch-training - INFO - train:: [train_loss: 17.5707, train_MAPE: 0.1283, train_RMSE: 28.6425, train_time: 469.31 (s), lr: 6.25e-05] -2022-02-02 19:38:21,278 - easytorch-training - INFO - val:: [val_time: 116.52 (s), val_loss: 18.3330, val_MAPE: 0.1243, val_RMSE: 28.5219] -2022-02-02 19:40:22,200 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4623, Test RMSE: 26.8520, Test MAPE: 0.1130 -2022-02-02 19:40:22,204 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9744, Test RMSE: 27.7042, Test MAPE: 0.1161 -2022-02-02 19:40:22,208 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.4072, Test RMSE: 28.4272, Test MAPE: 0.1185 -2022-02-02 19:40:22,212 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.7421, Test RMSE: 28.9741, Test MAPE: 0.1211 -2022-02-02 19:40:22,216 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 18.0142, Test RMSE: 29.4203, Test MAPE: 0.1229 -2022-02-02 19:40:22,220 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.2531, Test RMSE: 29.7878, Test MAPE: 0.1251 -2022-02-02 19:40:22,224 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.5125, Test RMSE: 30.1411, Test MAPE: 0.1285 -2022-02-02 19:40:22,227 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.6968, Test RMSE: 30.4406, Test MAPE: 0.1289 -2022-02-02 19:40:22,231 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.8664, Test RMSE: 30.7101, Test MAPE: 0.1300 -2022-02-02 19:40:22,235 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 19.0032, Test RMSE: 30.9237, Test MAPE: 0.1302 -2022-02-02 19:40:22,239 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.1332, Test RMSE: 31.1449, Test MAPE: 0.1293 -2022-02-02 19:40:22,243 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.3684, Test RMSE: 31.4693, Test MAPE: 0.1299 -2022-02-02 19:40:22,243 - easytorch-training - INFO - test:: [test_time: -120.96 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:40:22,685 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_099.pt saved -2022-02-02 19:40:22,685 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 19:53:06 -2022-02-02 19:40:22,685 - easytorch-training - INFO - epoch 100 / 100 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 637/637 [07:48<00:00, 1.36it/s] -2022-02-02 19:48:10,866 - easytorch-training - INFO - train:: [train_loss: 17.5762, train_MAPE: 0.1284, train_RMSE: 28.6346, train_time: 468.18 (s), lr: 6.25e-05] -2022-02-02 19:50:09,729 - easytorch-training - INFO - val:: [val_time: 118.86 (s), val_loss: 18.2530, val_MAPE: 0.1205, val_RMSE: 28.5203] -2022-02-02 19:52:21,630 - easytorch-training - INFO - Evaluate best model on test data for horizon 1, Test MAE: 16.4170, Test RMSE: 26.8283, Test MAPE: 0.1090 -2022-02-02 19:52:21,634 - easytorch-training - INFO - Evaluate best model on test data for horizon 2, Test MAE: 16.9132, Test RMSE: 27.6959, Test MAPE: 0.1124 -2022-02-02 19:52:21,637 - easytorch-training - INFO - Evaluate best model on test data for horizon 3, Test MAE: 17.3379, Test RMSE: 28.4266, Test MAPE: 0.1151 -2022-02-02 19:52:21,641 - easytorch-training - INFO - Evaluate best model on test data for horizon 4, Test MAE: 17.6571, Test RMSE: 28.9587, Test MAPE: 0.1171 -2022-02-02 19:52:21,645 - easytorch-training - INFO - Evaluate best model on test data for horizon 5, Test MAE: 17.9078, Test RMSE: 29.3946, Test MAPE: 0.1188 -2022-02-02 19:52:21,649 - easytorch-training - INFO - Evaluate best model on test data for horizon 6, Test MAE: 18.1224, Test RMSE: 29.7447, Test MAPE: 0.1200 -2022-02-02 19:52:21,653 - easytorch-training - INFO - Evaluate best model on test data for horizon 7, Test MAE: 18.3460, Test RMSE: 30.0906, Test MAPE: 0.1216 -2022-02-02 19:52:21,657 - easytorch-training - INFO - Evaluate best model on test data for horizon 8, Test MAE: 18.5396, Test RMSE: 30.3741, Test MAPE: 0.1239 -2022-02-02 19:52:21,660 - easytorch-training - INFO - Evaluate best model on test data for horizon 9, Test MAE: 18.6959, Test RMSE: 30.6425, Test MAPE: 0.1248 -2022-02-02 19:52:21,664 - easytorch-training - INFO - Evaluate best model on test data for horizon 10, Test MAE: 18.8494, Test RMSE: 30.8644, Test MAPE: 0.1256 -2022-02-02 19:52:21,668 - easytorch-training - INFO - Evaluate best model on test data for horizon 11, Test MAE: 19.0040, Test RMSE: 31.0760, Test MAPE: 0.1263 -2022-02-02 19:52:21,672 - easytorch-training - INFO - Evaluate best model on test data for horizon 12, Test MAE: 19.2648, Test RMSE: 31.4136, Test MAPE: 0.1290 -2022-02-02 19:52:21,672 - easytorch-training - INFO - test:: [test_time: -131.94 (s), test_loss: 0.0000, test_MAPE: 0.0000, test_RMSE: 0.0000] -2022-02-02 19:52:22,054 - easytorch-training - INFO - ckpt checkpoints/FullModel_100/79cbd16d06ac8468503cd55085ceb050/FullModel_100.pt saved -2022-02-02 19:52:22,057 - easytorch-training - INFO - The training finished at 2022-02-02 19:52:22 /5.7s -(S22) -# wangyuhao @ Login-Node0 in /workspace/S/wangyuhao/S22/pretrain on git:exp/ablation x [16:17:31] -$ \ No newline at end of file diff --git a/train_logs/TSFormer_METR-LA.log b/train_logs/TSFormer_METR-LA.log deleted file mode 100644 index ffd8b14..0000000 --- a/train_logs/TSFormer_METR-LA.log +++ /dev/null @@ -1,684 +0,0 @@ -2022-02-04 00:29:07,923 - easytorch-env - INFO - Enable TF32 mode -2022-02-04 00:29:07,926 - easytorch - INFO - ckpt save dir: 'checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50' -2022-02-04 00:29:12,625 - easytorch-training - INFO - set optim: AdamW ( -Parameter Group 0 - amsgrad: False - betas: [0.9, 0.95] - eps: 1e-08 - lr: 0.0005 - weight_decay: 0 -) -2022-02-04 00:29:12,628 - easytorch-training - INFO - set lr_scheduler: -2022-02-04 00:29:12,877 - easytorch-training - INFO - epoch 1 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:45<00:00, 7.95it/s] -2022-02-04 00:34:58,229 - easytorch-training - INFO - train:: [train_time: 345.35 (s), lr: 5.00e-04, train_loss: 5.9619, train_MAPE: 0.2135, train_RMSE: 11.6223] -2022-02-04 00:35:10,850 - easytorch-training - INFO - val:: [val_time: 12.62 (s), val_loss: 5.1215, val_MAPE: 0.1718, val_RMSE: 10.2957] -2022-02-04 00:35:35,649 - easytorch-training - INFO - test:: [test_time: -24.79 (s), test_loss: 5.0606, test_MAPE: 0.1679, test_RMSE: 10.0138] -2022-02-04 00:35:35,682 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_001.pt saved -2022-02-04 00:35:35,682 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:45:13 -2022-02-04 00:35:35,682 - easytorch-training - INFO - epoch 2 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:38<00:00, 8.10it/s] -2022-02-04 00:41:14,663 - easytorch-training - INFO - train:: [train_time: 338.98 (s), lr: 5.00e-04, train_loss: 4.6188, train_MAPE: 0.1478, train_RMSE: 9.3160] -2022-02-04 00:41:27,141 - easytorch-training - INFO - val:: [val_time: 12.47 (s), val_loss: 4.0668, val_MAPE: 0.1295, val_RMSE: 8.5002] -2022-02-04 00:41:51,539 - easytorch-training - INFO - test:: [test_time: -24.39 (s), test_loss: 4.2624, test_MAPE: 0.1371, test_RMSE: 8.7130] -2022-02-04 00:41:51,587 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_002.pt saved -2022-02-04 00:41:51,588 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:33:43 -2022-02-04 00:41:51,588 - easytorch-training - INFO - epoch 3 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:46<00:00, 7.93it/s] -2022-02-04 00:47:38,023 - easytorch-training - INFO - train:: [train_time: 346.44 (s), lr: 5.00e-04, train_loss: 4.2525, train_MAPE: 0.1326, train_RMSE: 8.6812] -2022-02-04 00:47:50,904 - easytorch-training - INFO - val:: [val_time: 12.88 (s), val_loss: 3.9318, val_MAPE: 0.1177, val_RMSE: 8.1322] -2022-02-04 00:48:15,912 - easytorch-training - INFO - test:: [test_time: -25.00 (s), test_loss: 4.0694, test_MAPE: 0.1248, test_RMSE: 8.2396] -2022-02-04 00:48:15,943 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_003.pt saved -2022-02-04 00:48:15,943 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:39:17 -2022-02-04 00:48:15,943 - easytorch-training - INFO - epoch 4 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:30<00:00, 8.30it/s] -2022-02-04 00:53:46,803 - easytorch-training - INFO - train:: [train_time: 330.86 (s), lr: 5.00e-04, train_loss: 4.0644, train_MAPE: 0.1252, train_RMSE: 8.3484] -2022-02-04 00:53:59,208 - easytorch-training - INFO - val:: [val_time: 12.40 (s), val_loss: 3.8512, val_MAPE: 0.1151, val_RMSE: 8.0551] -2022-02-04 00:54:23,425 - easytorch-training - INFO - test:: [test_time: -24.21 (s), test_loss: 3.9525, test_MAPE: 0.1220, test_RMSE: 8.1042] -2022-02-04 00:54:23,458 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_004.pt saved -2022-02-04 00:54:23,459 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:28:01 -2022-02-04 00:54:23,459 - easytorch-training - INFO - epoch 5 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:22<00:00, 8.52it/s] -2022-02-04 00:59:45,910 - easytorch-training - INFO - train:: [train_time: 322.45 (s), lr: 5.00e-04, train_loss: 3.9389, train_MAPE: 0.1201, train_RMSE: 8.1173] -2022-02-04 00:59:58,277 - easytorch-training - INFO - val:: [val_time: 12.36 (s), val_loss: 3.7980, val_MAPE: 0.1107, val_RMSE: 8.0052] -2022-02-04 01:00:22,751 - easytorch-training - INFO - test:: [test_time: -24.47 (s), test_loss: 3.8868, test_MAPE: 0.1174, test_RMSE: 8.0409] -2022-02-04 01:00:22,780 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_005.pt saved -2022-02-04 01:00:22,781 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:15:49 -2022-02-04 01:00:22,781 - easytorch-training - INFO - epoch 6 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:23<00:00, 8.48it/s] -2022-02-04 01:05:46,584 - easytorch-training - INFO - train:: [train_time: 323.80 (s), lr: 5.00e-04, train_loss: 3.8548, train_MAPE: 0.1168, train_RMSE: 7.9585] -2022-02-04 01:05:59,053 - easytorch-training - INFO - val:: [val_time: 12.46 (s), val_loss: 3.7506, val_MAPE: 0.1115, val_RMSE: 7.9344] -2022-02-04 01:06:23,076 - easytorch-training - INFO - test:: [test_time: -24.02 (s), test_loss: 3.8497, test_MAPE: 0.1197, test_RMSE: 8.0356] -2022-02-04 01:06:23,107 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_006.pt saved -2022-02-04 01:06:23,107 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:08:13 -2022-02-04 01:06:23,107 - easytorch-training - INFO - epoch 7 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:22<00:00, 8.51it/s] -2022-02-04 01:11:45,988 - easytorch-training - INFO - train:: [train_time: 322.88 (s), lr: 5.00e-04, train_loss: 3.7947, train_MAPE: 0.1143, train_RMSE: 7.8403] -2022-02-04 01:11:58,094 - easytorch-training - INFO - val:: [val_time: 12.10 (s), val_loss: 3.6827, val_MAPE: 0.1088, val_RMSE: 7.8126] -2022-02-04 01:12:22,274 - easytorch-training - INFO - test:: [test_time: -24.18 (s), test_loss: 3.7768, test_MAPE: 0.1162, test_RMSE: 7.8870] -2022-02-04 01:12:22,304 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_007.pt saved -2022-02-04 01:12:22,304 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:02:16 -2022-02-04 01:12:22,304 - easytorch-training - INFO - epoch 8 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:22<00:00, 8.52it/s] -2022-02-04 01:17:44,743 - easytorch-training - INFO - train:: [train_time: 322.44 (s), lr: 5.00e-04, train_loss: 3.7501, train_MAPE: 0.1125, train_RMSE: 7.7512] -2022-02-04 01:17:57,087 - easytorch-training - INFO - val:: [val_time: 12.34 (s), val_loss: 3.6578, val_MAPE: 0.1089, val_RMSE: 7.7651] -2022-02-04 01:18:22,008 - easytorch-training - INFO - test:: [test_time: -24.92 (s), test_loss: 3.7720, test_MAPE: 0.1173, test_RMSE: 7.9063] -2022-02-04 01:18:22,036 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_008.pt saved -2022-02-04 01:18:22,036 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 20:58:01 -2022-02-04 01:18:22,036 - easytorch-training - INFO - epoch 9 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:44<00:00, 7.98it/s] -2022-02-04 01:24:06,267 - easytorch-training - INFO - train:: [train_time: 344.23 (s), lr: 5.00e-04, train_loss: 3.7159, train_MAPE: 0.1112, train_RMSE: 7.6829] -2022-02-04 01:24:18,719 - easytorch-training - INFO - val:: [val_time: 12.45 (s), val_loss: 3.6294, val_MAPE: 0.1063, val_RMSE: 7.6334] -2022-02-04 01:24:43,469 - easytorch-training - INFO - test:: [test_time: -24.74 (s), test_loss: 3.7188, test_MAPE: 0.1132, test_RMSE: 7.7206] -2022-02-04 01:24:43,498 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_009.pt saved -2022-02-04 01:24:43,499 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:02:46 -2022-02-04 01:24:43,499 - easytorch-training - INFO - epoch 10 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.03it/s] -2022-02-04 01:30:25,590 - easytorch-training - INFO - train:: [train_time: 342.09 (s), lr: 5.00e-04, train_loss: 3.6888, train_MAPE: 0.1101, train_RMSE: 7.6262] -2022-02-04 01:30:37,990 - easytorch-training - INFO - val:: [val_time: 12.39 (s), val_loss: 3.6378, val_MAPE: 0.1067, val_RMSE: 7.7009] -2022-02-04 01:31:02,281 - easytorch-training - INFO - test:: [test_time: -24.29 (s), test_loss: 3.7345, test_MAPE: 0.1149, test_RMSE: 7.8086] -2022-02-04 01:31:02,311 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_010.pt saved -2022-02-04 01:31:02,315 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:05:41 -2022-02-04 01:31:02,315 - easytorch-training - INFO - epoch 11 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:43<00:00, 7.99it/s] -2022-02-04 01:36:46,036 - easytorch-training - INFO - train:: [train_time: 343.72 (s), lr: 5.00e-04, train_loss: 3.6607, train_MAPE: 0.1090, train_RMSE: 7.5694] -2022-02-04 01:36:58,845 - easytorch-training - INFO - val:: [val_time: 12.80 (s), val_loss: 3.6239, val_MAPE: 0.1073, val_RMSE: 7.7099] -2022-02-04 01:37:24,014 - easytorch-training - INFO - test:: [test_time: -25.17 (s), test_loss: 3.7453, test_MAPE: 0.1162, test_RMSE: 7.8706] -2022-02-04 01:37:24,047 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_011.pt saved -2022-02-04 01:37:24,048 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:08:57 -2022-02-04 01:37:24,048 - easytorch-training - INFO - epoch 12 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:39<00:00, 8.09it/s] -2022-02-04 01:43:03,572 - easytorch-training - INFO - train:: [train_time: 339.52 (s), lr: 5.00e-04, train_loss: 3.6384, train_MAPE: 0.1080, train_RMSE: 7.5242] -2022-02-04 01:43:16,164 - easytorch-training - INFO - val:: [val_time: 12.59 (s), val_loss: 3.6499, val_MAPE: 0.1081, val_RMSE: 7.7412] -2022-02-04 01:43:41,032 - easytorch-training - INFO - test:: [test_time: -24.86 (s), test_loss: 3.7202, test_MAPE: 0.1153, test_RMSE: 7.8011] -2022-02-04 01:43:41,064 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_012.pt saved -2022-02-04 01:43:41,064 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:10:22 -2022-02-04 01:43:41,064 - easytorch-training - INFO - epoch 13 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.07it/s] -2022-02-04 01:49:21,610 - easytorch-training - INFO - train:: [train_time: 340.55 (s), lr: 5.00e-04, train_loss: 3.6188, train_MAPE: 0.1073, train_RMSE: 7.4851] -2022-02-04 01:49:33,989 - easytorch-training - INFO - val:: [val_time: 12.37 (s), val_loss: 3.6155, val_MAPE: 0.1064, val_RMSE: 7.6695] -2022-02-04 01:49:58,496 - easytorch-training - INFO - test:: [test_time: -24.50 (s), test_loss: 3.7142, test_MAPE: 0.1151, test_RMSE: 7.7935] -2022-02-04 01:49:58,526 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_013.pt saved -2022-02-04 01:49:58,526 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:11:41 -2022-02-04 01:49:58,526 - easytorch-training - INFO - epoch 14 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:38<00:00, 8.12it/s] -2022-02-04 01:55:36,726 - easytorch-training - INFO - train:: [train_time: 338.20 (s), lr: 5.00e-04, train_loss: 3.5995, train_MAPE: 0.1065, train_RMSE: 7.4438] -2022-02-04 01:55:49,350 - easytorch-training - INFO - val:: [val_time: 12.62 (s), val_loss: 3.6196, val_MAPE: 0.1059, val_RMSE: 7.6816] -2022-02-04 01:56:14,309 - easytorch-training - INFO - test:: [test_time: -24.95 (s), test_loss: 3.6949, test_MAPE: 0.1128, test_RMSE: 7.7444] -2022-02-04 01:56:14,342 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_014.pt saved -2022-02-04 01:56:14,342 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:12:25 -2022-02-04 01:56:14,342 - easytorch-training - INFO - epoch 15 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.06it/s] -2022-02-04 02:01:54,998 - easytorch-training - INFO - train:: [train_time: 340.66 (s), lr: 5.00e-04, train_loss: 3.5798, train_MAPE: 0.1057, train_RMSE: 7.4030] -2022-02-04 02:02:07,474 - easytorch-training - INFO - val:: [val_time: 12.47 (s), val_loss: 3.6125, val_MAPE: 0.1025, val_RMSE: 7.6443] -2022-02-04 02:02:32,150 - easytorch-training - INFO - test:: [test_time: -24.67 (s), test_loss: 3.6833, test_MAPE: 0.1094, test_RMSE: 7.6974] -2022-02-04 02:02:32,192 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_015.pt saved -2022-02-04 02:02:32,192 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:13:30 -2022-02-04 02:02:32,192 - easytorch-training - INFO - epoch 16 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.05it/s] -2022-02-04 02:08:13,295 - easytorch-training - INFO - train:: [train_time: 341.10 (s), lr: 5.00e-04, train_loss: 3.5627, train_MAPE: 0.1051, train_RMSE: 7.3696] -2022-02-04 02:08:25,924 - easytorch-training - INFO - val:: [val_time: 12.62 (s), val_loss: 3.5838, val_MAPE: 0.1034, val_RMSE: 7.6382] -2022-02-04 02:08:50,996 - easytorch-training - INFO - test:: [test_time: -25.07 (s), test_loss: 3.6854, test_MAPE: 0.1123, test_RMSE: 7.7669] -2022-02-04 02:08:51,031 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_016.pt saved -2022-02-04 02:08:51,031 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:14:39 -2022-02-04 02:08:51,031 - easytorch-training - INFO - epoch 17 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.08it/s] -2022-02-04 02:14:31,103 - easytorch-training - INFO - train:: [train_time: 340.07 (s), lr: 5.00e-04, train_loss: 3.5499, train_MAPE: 0.1045, train_RMSE: 7.3417] -2022-02-04 02:14:43,588 - easytorch-training - INFO - val:: [val_time: 12.48 (s), val_loss: 3.5919, val_MAPE: 0.1019, val_RMSE: 7.6458] -2022-02-04 02:15:08,130 - easytorch-training - INFO - test:: [test_time: -24.54 (s), test_loss: 3.7018, test_MAPE: 0.1119, test_RMSE: 7.8029] -2022-02-04 02:15:08,156 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_017.pt saved -2022-02-04 02:15:08,156 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:15:20 -2022-02-04 02:15:08,156 - easytorch-training - INFO - epoch 18 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.07it/s] -2022-02-04 02:20:48,503 - easytorch-training - INFO - train:: [train_time: 340.35 (s), lr: 5.00e-04, train_loss: 3.5348, train_MAPE: 0.1039, train_RMSE: 7.3101] -2022-02-04 02:21:01,067 - easytorch-training - INFO - val:: [val_time: 12.56 (s), val_loss: 3.6262, val_MAPE: 0.1040, val_RMSE: 7.7134] -2022-02-04 02:21:25,660 - easytorch-training - INFO - test:: [test_time: -24.59 (s), test_loss: 3.6786, test_MAPE: 0.1106, test_RMSE: 7.7375] -2022-02-04 02:21:25,694 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_018.pt saved -2022-02-04 02:21:25,694 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:16:01 -2022-02-04 02:21:25,695 - easytorch-training - INFO - epoch 19 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:43<00:00, 8.01it/s] -2022-02-04 02:27:08,755 - easytorch-training - INFO - train:: [train_time: 343.06 (s), lr: 5.00e-04, train_loss: 3.5227, train_MAPE: 0.1034, train_RMSE: 7.2850] -2022-02-04 02:27:21,238 - easytorch-training - INFO - val:: [val_time: 12.48 (s), val_loss: 3.5954, val_MAPE: 0.1039, val_RMSE: 7.7085] -2022-02-04 02:27:45,685 - easytorch-training - INFO - test:: [test_time: -24.44 (s), test_loss: 3.6946, test_MAPE: 0.1125, test_RMSE: 7.8248] -2022-02-04 02:27:45,709 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_019.pt saved -2022-02-04 02:27:45,710 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:17:04 -2022-02-04 02:27:45,710 - easytorch-training - INFO - epoch 20 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.03it/s] -2022-02-04 02:33:27,909 - easytorch-training - INFO - train:: [train_time: 342.20 (s), lr: 5.00e-04, train_loss: 3.5109, train_MAPE: 0.1029, train_RMSE: 7.2604] -2022-02-04 02:33:40,455 - easytorch-training - INFO - val:: [val_time: 12.54 (s), val_loss: 3.5535, val_MAPE: 0.1035, val_RMSE: 7.6123] -2022-02-04 02:34:05,299 - easytorch-training - INFO - test:: [test_time: -24.84 (s), test_loss: 3.6784, test_MAPE: 0.1127, test_RMSE: 7.7822] -2022-02-04 02:34:05,335 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_020.pt saved -2022-02-04 02:34:05,338 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:17:57 -2022-02-04 02:34:05,338 - easytorch-training - INFO - epoch 21 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:44<00:00, 7.98it/s] -2022-02-04 02:39:49,628 - easytorch-training - INFO - train:: [train_time: 344.29 (s), lr: 5.00e-04, train_loss: 3.4978, train_MAPE: 0.1024, train_RMSE: 7.2320] -2022-02-04 02:40:02,002 - easytorch-training - INFO - val:: [val_time: 12.36 (s), val_loss: 3.5880, val_MAPE: 0.1021, val_RMSE: 7.6561] -2022-02-04 02:40:26,646 - easytorch-training - INFO - test:: [test_time: -24.64 (s), test_loss: 3.6813, test_MAPE: 0.1109, test_RMSE: 7.7649] -2022-02-04 02:40:26,674 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_021.pt saved -2022-02-04 02:40:26,675 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:19:01 -2022-02-04 02:40:26,675 - easytorch-training - INFO - epoch 22 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:36<00:00, 8.15it/s] -2022-02-04 02:46:03,531 - easytorch-training - INFO - train:: [train_time: 336.86 (s), lr: 5.00e-04, train_loss: 3.4891, train_MAPE: 0.1021, train_RMSE: 7.2152] -2022-02-04 02:46:15,895 - easytorch-training - INFO - val:: [val_time: 12.36 (s), val_loss: 3.5813, val_MAPE: 0.1039, val_RMSE: 7.6542] -2022-02-04 02:46:40,592 - easytorch-training - INFO - test:: [test_time: -24.69 (s), test_loss: 3.6983, test_MAPE: 0.1134, test_RMSE: 7.8194] -2022-02-04 02:46:40,621 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_022.pt saved -2022-02-04 02:46:40,621 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:18:52 -2022-02-04 02:46:40,621 - easytorch-training - INFO - epoch 23 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.06it/s] -2022-02-04 02:52:21,412 - easytorch-training - INFO - train:: [train_time: 340.79 (s), lr: 5.00e-04, train_loss: 3.4793, train_MAPE: 0.1016, train_RMSE: 7.1939] -2022-02-04 02:52:33,960 - easytorch-training - INFO - val:: [val_time: 12.54 (s), val_loss: 3.5473, val_MAPE: 0.1027, val_RMSE: 7.5951] -2022-02-04 02:52:59,038 - easytorch-training - INFO - test:: [test_time: -25.07 (s), test_loss: 3.6698, test_MAPE: 0.1126, test_RMSE: 7.7808] -2022-02-04 02:52:59,071 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_023.pt saved -2022-02-04 02:52:59,071 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:19:23 -2022-02-04 02:52:59,071 - easytorch-training - INFO - epoch 24 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:30<00:00, 8.32it/s] -2022-02-04 02:58:29,256 - easytorch-training - INFO - train:: [train_time: 330.18 (s), lr: 5.00e-04, train_loss: 3.4687, train_MAPE: 0.1012, train_RMSE: 7.1708] -2022-02-04 02:58:41,861 - easytorch-training - INFO - val:: [val_time: 12.60 (s), val_loss: 3.6001, val_MAPE: 0.1027, val_RMSE: 7.6947] -2022-02-04 02:59:06,896 - easytorch-training - INFO - test:: [test_time: -25.03 (s), test_loss: 3.6984, test_MAPE: 0.1128, test_RMSE: 7.8345] -2022-02-04 02:59:06,929 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_024.pt saved -2022-02-04 02:59:06,930 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:18:23 -2022-02-04 02:59:06,930 - easytorch-training - INFO - epoch 25 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:32<00:00, 8.25it/s] -2022-02-04 03:04:39,702 - easytorch-training - INFO - train:: [train_time: 332.77 (s), lr: 5.00e-04, train_loss: 3.4594, train_MAPE: 0.1009, train_RMSE: 7.1514] -2022-02-04 03:04:52,150 - easytorch-training - INFO - val:: [val_time: 12.44 (s), val_loss: 3.5416, val_MAPE: 0.1013, val_RMSE: 7.5232] -2022-02-04 03:05:16,762 - easytorch-training - INFO - test:: [test_time: -24.61 (s), test_loss: 3.6591, test_MAPE: 0.1112, test_RMSE: 7.7021] -2022-02-04 03:05:16,794 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_025.pt saved -2022-02-04 03:05:16,795 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:17:44 -2022-02-04 03:05:16,795 - easytorch-training - INFO - epoch 26 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:45<00:00, 7.94it/s] -2022-02-04 03:11:02,744 - easytorch-training - INFO - train:: [train_time: 345.95 (s), lr: 5.00e-04, train_loss: 3.4575, train_MAPE: 0.1008, train_RMSE: 7.1468] -2022-02-04 03:11:15,087 - easytorch-training - INFO - val:: [val_time: 12.34 (s), val_loss: 3.5843, val_MAPE: 0.1015, val_RMSE: 7.6252] -2022-02-04 03:11:39,756 - easytorch-training - INFO - test:: [test_time: -24.67 (s), test_loss: 3.6722, test_MAPE: 0.1112, test_RMSE: 7.7446] -2022-02-04 03:11:39,800 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_026.pt saved -2022-02-04 03:11:39,800 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:18:49 -2022-02-04 03:11:39,800 - easytorch-training - INFO - epoch 27 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:31<00:00, 8.30it/s] -2022-02-04 03:17:10,898 - easytorch-training - INFO - train:: [train_time: 331.10 (s), lr: 5.00e-04, train_loss: 3.4478, train_MAPE: 0.1004, train_RMSE: 7.1266] -2022-02-04 03:17:23,508 - easytorch-training - INFO - val:: [val_time: 12.61 (s), val_loss: 3.5679, val_MAPE: 0.1028, val_RMSE: 7.6590] -2022-02-04 03:17:48,630 - easytorch-training - INFO - test:: [test_time: -25.12 (s), test_loss: 3.6735, test_MAPE: 0.1129, test_RMSE: 7.8126] -2022-02-04 03:17:48,655 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_027.pt saved -2022-02-04 03:17:48,656 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:18:04 -2022-02-04 03:17:48,656 - easytorch-training - INFO - epoch 28 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:38<00:00, 8.11it/s] -2022-02-04 03:23:27,190 - easytorch-training - INFO - train:: [train_time: 338.53 (s), lr: 5.00e-04, train_loss: 3.4398, train_MAPE: 0.1001, train_RMSE: 7.1099] -2022-02-04 03:23:39,790 - easytorch-training - INFO - val:: [val_time: 12.59 (s), val_loss: 3.5540, val_MAPE: 0.1008, val_RMSE: 7.5830] -2022-02-04 03:24:04,972 - easytorch-training - INFO - test:: [test_time: -25.18 (s), test_loss: 3.6796, test_MAPE: 0.1125, test_RMSE: 7.8005] -2022-02-04 03:24:05,000 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_028.pt saved -2022-02-04 03:24:05,000 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:18:16 -2022-02-04 03:24:05,000 - easytorch-training - INFO - epoch 29 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:39<00:00, 8.09it/s] -2022-02-04 03:29:44,611 - easytorch-training - INFO - train:: [train_time: 339.61 (s), lr: 5.00e-04, train_loss: 3.4329, train_MAPE: 0.0998, train_RMSE: 7.0948] -2022-02-04 03:29:57,092 - easytorch-training - INFO - val:: [val_time: 12.48 (s), val_loss: 3.5455, val_MAPE: 0.1038, val_RMSE: 7.6001] -2022-02-04 03:30:21,809 - easytorch-training - INFO - test:: [test_time: -24.71 (s), test_loss: 3.6813, test_MAPE: 0.1142, test_RMSE: 7.8131] -2022-02-04 03:30:21,834 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_029.pt saved -2022-02-04 03:30:21,835 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:18:31 -2022-02-04 03:30:21,835 - easytorch-training - INFO - epoch 30 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.05it/s] -2022-02-04 03:36:03,085 - easytorch-training - INFO - train:: [train_time: 341.25 (s), lr: 5.00e-04, train_loss: 3.4255, train_MAPE: 0.0995, train_RMSE: 7.0783] -2022-02-04 03:36:15,782 - easytorch-training - INFO - val:: [val_time: 12.69 (s), val_loss: 3.5296, val_MAPE: 0.1012, val_RMSE: 7.5757] -2022-02-04 03:36:40,709 - easytorch-training - INFO - test:: [test_time: -24.92 (s), test_loss: 3.6646, test_MAPE: 0.1124, test_RMSE: 7.7905] -2022-02-04 03:36:40,739 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_030.pt saved -2022-02-04 03:36:40,742 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:18:58 -2022-02-04 03:36:40,742 - easytorch-training - INFO - epoch 31 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.04it/s] -2022-02-04 03:42:22,445 - easytorch-training - INFO - train:: [train_time: 341.70 (s), lr: 5.00e-04, train_loss: 3.4221, train_MAPE: 0.0994, train_RMSE: 7.0729] -2022-02-04 03:42:34,938 - easytorch-training - INFO - val:: [val_time: 12.48 (s), val_loss: 3.5915, val_MAPE: 0.1026, val_RMSE: 7.6830] -2022-02-04 03:42:59,890 - easytorch-training - INFO - test:: [test_time: -24.95 (s), test_loss: 3.6977, test_MAPE: 0.1128, test_RMSE: 7.8384] -2022-02-04 03:42:59,919 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_031.pt saved -2022-02-04 03:42:59,919 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:19:26 -2022-02-04 03:42:59,919 - easytorch-training - INFO - epoch 32 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:39<00:00, 8.09it/s] -2022-02-04 03:48:39,501 - easytorch-training - INFO - train:: [train_time: 339.58 (s), lr: 5.00e-04, train_loss: 3.4157, train_MAPE: 0.0991, train_RMSE: 7.0581] -2022-02-04 03:48:52,193 - easytorch-training - INFO - val:: [val_time: 12.69 (s), val_loss: 3.5753, val_MAPE: 0.1023, val_RMSE: 7.6482] -2022-02-04 03:49:17,153 - easytorch-training - INFO - test:: [test_time: -24.96 (s), test_loss: 3.6716, test_MAPE: 0.1123, test_RMSE: 7.7860] -2022-02-04 03:49:17,186 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_032.pt saved -2022-02-04 03:49:17,186 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:19:39 -2022-02-04 03:49:17,186 - easytorch-training - INFO - epoch 33 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.02it/s] -2022-02-04 03:54:59,629 - easytorch-training - INFO - train:: [train_time: 342.44 (s), lr: 5.00e-04, train_loss: 3.4102, train_MAPE: 0.0989, train_RMSE: 7.0452] -2022-02-04 03:55:12,301 - easytorch-training - INFO - val:: [val_time: 12.67 (s), val_loss: 3.5570, val_MAPE: 0.1023, val_RMSE: 7.6126] -2022-02-04 03:55:36,956 - easytorch-training - INFO - test:: [test_time: -24.65 (s), test_loss: 3.6541, test_MAPE: 0.1119, test_RMSE: 7.7494] -2022-02-04 03:55:36,984 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_033.pt saved -2022-02-04 03:55:36,984 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:08 -2022-02-04 03:55:36,984 - easytorch-training - INFO - epoch 34 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.03it/s] -2022-02-04 04:01:19,150 - easytorch-training - INFO - train:: [train_time: 342.17 (s), lr: 5.00e-04, train_loss: 3.4051, train_MAPE: 0.0987, train_RMSE: 7.0344] -2022-02-04 04:01:31,623 - easytorch-training - INFO - val:: [val_time: 12.47 (s), val_loss: 3.5510, val_MAPE: 0.1019, val_RMSE: 7.6040] -2022-02-04 04:01:56,499 - easytorch-training - INFO - test:: [test_time: -24.87 (s), test_loss: 3.6671, test_MAPE: 0.1127, test_RMSE: 7.8008] -2022-02-04 04:01:56,529 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_034.pt saved -2022-02-04 04:01:56,530 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:33 -2022-02-04 04:01:56,530 - easytorch-training - INFO - epoch 35 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.01it/s] -2022-02-04 04:07:39,341 - easytorch-training - INFO - train:: [train_time: 342.81 (s), lr: 5.00e-04, train_loss: 3.4003, train_MAPE: 0.0985, train_RMSE: 7.0246] -2022-02-04 04:07:51,803 - easytorch-training - INFO - val:: [val_time: 12.46 (s), val_loss: 3.5404, val_MAPE: 0.1017, val_RMSE: 7.5785] -2022-02-04 04:08:16,481 - easytorch-training - INFO - test:: [test_time: -24.67 (s), test_loss: 3.6844, test_MAPE: 0.1134, test_RMSE: 7.8385] -2022-02-04 04:08:16,525 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_035.pt saved -2022-02-04 04:08:16,526 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:59 -2022-02-04 04:08:16,526 - easytorch-training - INFO - epoch 36 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:43<00:00, 7.99it/s] -2022-02-04 04:14:00,131 - easytorch-training - INFO - train:: [train_time: 343.60 (s), lr: 5.00e-04, train_loss: 3.3960, train_MAPE: 0.0983, train_RMSE: 7.0148] -2022-02-04 04:14:12,700 - easytorch-training - INFO - val:: [val_time: 12.57 (s), val_loss: 3.5956, val_MAPE: 0.1031, val_RMSE: 7.6739] -2022-02-04 04:14:37,814 - easytorch-training - INFO - test:: [test_time: -25.11 (s), test_loss: 3.7108, test_MAPE: 0.1140, test_RMSE: 7.8761] -2022-02-04 04:14:37,838 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_036.pt saved -2022-02-04 04:14:37,839 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:31 -2022-02-04 04:14:37,839 - easytorch-training - INFO - epoch 37 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.05it/s] -2022-02-04 04:20:19,007 - easytorch-training - INFO - train:: [train_time: 341.17 (s), lr: 5.00e-04, train_loss: 3.3900, train_MAPE: 0.0981, train_RMSE: 7.0016] -2022-02-04 04:20:31,423 - easytorch-training - INFO - val:: [val_time: 12.41 (s), val_loss: 3.5913, val_MAPE: 0.1034, val_RMSE: 7.7014] -2022-02-04 04:20:56,031 - easytorch-training - INFO - test:: [test_time: -24.60 (s), test_loss: 3.6934, test_MAPE: 0.1140, test_RMSE: 7.8666] -2022-02-04 04:20:56,059 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_037.pt saved -2022-02-04 04:20:56,059 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:45 -2022-02-04 04:20:56,059 - easytorch-training - INFO - epoch 38 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:37<00:00, 8.14it/s] -2022-02-04 04:26:33,382 - easytorch-training - INFO - train:: [train_time: 337.32 (s), lr: 5.00e-04, train_loss: 3.3851, train_MAPE: 0.0979, train_RMSE: 6.9910] -2022-02-04 04:26:46,004 - easytorch-training - INFO - val:: [val_time: 12.62 (s), val_loss: 3.5859, val_MAPE: 0.1031, val_RMSE: 7.6830] -2022-02-04 04:27:10,908 - easytorch-training - INFO - test:: [test_time: -24.90 (s), test_loss: 3.7019, test_MAPE: 0.1142, test_RMSE: 7.8783] -2022-02-04 04:27:10,943 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_038.pt saved -2022-02-04 04:27:10,943 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:40 -2022-02-04 04:27:10,943 - easytorch-training - INFO - epoch 39 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.02it/s] -2022-02-04 04:32:53,445 - easytorch-training - INFO - train:: [train_time: 342.50 (s), lr: 5.00e-04, train_loss: 3.3799, train_MAPE: 0.0977, train_RMSE: 6.9798] -2022-02-04 04:33:06,004 - easytorch-training - INFO - val:: [val_time: 12.55 (s), val_loss: 3.5790, val_MAPE: 0.1032, val_RMSE: 7.6835] -2022-02-04 04:33:30,748 - easytorch-training - INFO - test:: [test_time: -24.74 (s), test_loss: 3.6988, test_MAPE: 0.1134, test_RMSE: 7.8798] -2022-02-04 04:33:30,777 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_039.pt saved -2022-02-04 04:33:30,778 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:01 -2022-02-04 04:33:30,778 - easytorch-training - INFO - epoch 40 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:36<00:00, 8.17it/s] -2022-02-04 04:39:06,808 - easytorch-training - INFO - train:: [train_time: 336.03 (s), lr: 5.00e-04, train_loss: 3.3781, train_MAPE: 0.0976, train_RMSE: 6.9745] -2022-02-04 04:39:19,526 - easytorch-training - INFO - val:: [val_time: 12.71 (s), val_loss: 3.5772, val_MAPE: 0.1022, val_RMSE: 7.6449] -2022-02-04 04:39:44,464 - easytorch-training - INFO - test:: [test_time: -24.93 (s), test_loss: 3.6843, test_MAPE: 0.1123, test_RMSE: 7.8054] -2022-02-04 04:39:44,489 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_040.pt saved -2022-02-04 04:39:44,491 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:50 -2022-02-04 04:39:44,491 - easytorch-training - INFO - epoch 41 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:39<00:00, 8.08it/s] -2022-02-04 04:45:24,293 - easytorch-training - INFO - train:: [train_time: 339.80 (s), lr: 5.00e-04, train_loss: 3.3731, train_MAPE: 0.0974, train_RMSE: 6.9642] -2022-02-04 04:45:36,864 - easytorch-training - INFO - val:: [val_time: 12.56 (s), val_loss: 3.5710, val_MAPE: 0.1018, val_RMSE: 7.6583] -2022-02-04 04:46:01,588 - easytorch-training - INFO - test:: [test_time: -24.72 (s), test_loss: 3.6921, test_MAPE: 0.1131, test_RMSE: 7.8555] -2022-02-04 04:46:01,635 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_041.pt saved -2022-02-04 04:46:01,635 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:57 -2022-02-04 04:46:01,635 - easytorch-training - INFO - epoch 42 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:34<00:00, 8.20it/s] -2022-02-04 04:51:36,517 - easytorch-training - INFO - train:: [train_time: 334.88 (s), lr: 5.00e-04, train_loss: 3.3702, train_MAPE: 0.0973, train_RMSE: 6.9575] -2022-02-04 04:51:49,217 - easytorch-training - INFO - val:: [val_time: 12.69 (s), val_loss: 3.5535, val_MAPE: 0.1017, val_RMSE: 7.6175] -2022-02-04 04:52:14,226 - easytorch-training - INFO - test:: [test_time: -25.01 (s), test_loss: 3.6913, test_MAPE: 0.1137, test_RMSE: 7.8667] -2022-02-04 04:52:14,261 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_042.pt saved -2022-02-04 04:52:14,262 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:42 -2022-02-04 04:52:14,262 - easytorch-training - INFO - epoch 43 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.03it/s] -2022-02-04 04:57:56,521 - easytorch-training - INFO - train:: [train_time: 342.26 (s), lr: 5.00e-04, train_loss: 3.3679, train_MAPE: 0.0972, train_RMSE: 6.9529] -2022-02-04 04:58:09,090 - easytorch-training - INFO - val:: [val_time: 12.56 (s), val_loss: 3.5672, val_MAPE: 0.1022, val_RMSE: 7.6581] -2022-02-04 04:58:34,071 - easytorch-training - INFO - test:: [test_time: -24.98 (s), test_loss: 3.6989, test_MAPE: 0.1141, test_RMSE: 7.8881] -2022-02-04 04:58:34,100 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_043.pt saved -2022-02-04 04:58:34,100 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:01 -2022-02-04 04:58:34,100 - easytorch-training - INFO - epoch 44 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.06it/s] -2022-02-04 05:04:14,874 - easytorch-training - INFO - train:: [train_time: 340.77 (s), lr: 5.00e-04, train_loss: 3.3637, train_MAPE: 0.0970, train_RMSE: 6.9428] -2022-02-04 05:04:27,386 - easytorch-training - INFO - val:: [val_time: 12.51 (s), val_loss: 3.6091, val_MAPE: 0.1021, val_RMSE: 7.6998] -2022-02-04 05:04:52,425 - easytorch-training - INFO - test:: [test_time: -25.04 (s), test_loss: 3.6978, test_MAPE: 0.1120, test_RMSE: 7.8340] -2022-02-04 05:04:52,451 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_044.pt saved -2022-02-04 05:04:52,451 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:12 -2022-02-04 05:04:52,451 - easytorch-training - INFO - epoch 45 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.05it/s] -2022-02-04 05:10:33,638 - easytorch-training - INFO - train:: [train_time: 341.19 (s), lr: 5.00e-04, train_loss: 3.3580, train_MAPE: 0.0968, train_RMSE: 6.9306] -2022-02-04 05:10:46,258 - easytorch-training - INFO - val:: [val_time: 12.62 (s), val_loss: 3.6220, val_MAPE: 0.1031, val_RMSE: 7.7591] -2022-02-04 05:11:11,067 - easytorch-training - INFO - test:: [test_time: -24.81 (s), test_loss: 3.7110, test_MAPE: 0.1136, test_RMSE: 7.8872] -2022-02-04 05:11:11,108 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_045.pt saved -2022-02-04 05:11:11,108 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:25 -2022-02-04 05:11:11,108 - easytorch-training - INFO - epoch 46 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.08it/s] -2022-02-04 05:16:51,239 - easytorch-training - INFO - train:: [train_time: 340.13 (s), lr: 5.00e-04, train_loss: 3.3541, train_MAPE: 0.0967, train_RMSE: 6.9232] -2022-02-04 05:17:03,974 - easytorch-training - INFO - val:: [val_time: 12.73 (s), val_loss: 3.5734, val_MAPE: 0.1013, val_RMSE: 7.6415] -2022-02-04 05:17:28,898 - easytorch-training - INFO - test:: [test_time: -24.92 (s), test_loss: 3.6957, test_MAPE: 0.1129, test_RMSE: 7.8448] -2022-02-04 05:17:28,949 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_046.pt saved -2022-02-04 05:17:28,949 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:33 -2022-02-04 05:17:28,949 - easytorch-training - INFO - epoch 47 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:38<00:00, 8.12it/s] -2022-02-04 05:23:07,054 - easytorch-training - INFO - train:: [train_time: 338.10 (s), lr: 5.00e-04, train_loss: 3.3523, train_MAPE: 0.0966, train_RMSE: 6.9184] -2022-02-04 05:23:19,602 - easytorch-training - INFO - val:: [val_time: 12.54 (s), val_loss: 3.5909, val_MAPE: 0.1030, val_RMSE: 7.7046] -2022-02-04 05:23:44,767 - easytorch-training - INFO - test:: [test_time: -25.16 (s), test_loss: 3.7164, test_MAPE: 0.1133, test_RMSE: 7.8984] -2022-02-04 05:23:44,801 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_047.pt saved -2022-02-04 05:23:44,801 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:32 -2022-02-04 05:23:44,801 - easytorch-training - INFO - epoch 48 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.01it/s] -2022-02-04 05:29:27,710 - easytorch-training - INFO - train:: [train_time: 342.91 (s), lr: 5.00e-04, train_loss: 3.3489, train_MAPE: 0.0964, train_RMSE: 6.9107] -2022-02-04 05:29:40,378 - easytorch-training - INFO - val:: [val_time: 12.66 (s), val_loss: 3.6154, val_MAPE: 0.1023, val_RMSE: 7.7351] -2022-02-04 05:30:05,424 - easytorch-training - INFO - test:: [test_time: -25.04 (s), test_loss: 3.6964, test_MAPE: 0.1125, test_RMSE: 7.8631] -2022-02-04 05:30:05,462 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_048.pt saved -2022-02-04 05:30:05,463 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:51 -2022-02-04 05:30:05,463 - easytorch-training - INFO - epoch 49 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.06it/s] -2022-02-04 05:35:46,187 - easytorch-training - INFO - train:: [train_time: 340.72 (s), lr: 5.00e-04, train_loss: 3.3462, train_MAPE: 0.0964, train_RMSE: 6.9038] -2022-02-04 05:35:58,879 - easytorch-training - INFO - val:: [val_time: 12.69 (s), val_loss: 3.6187, val_MAPE: 0.1031, val_RMSE: 7.7289] -2022-02-04 05:36:23,663 - easytorch-training - INFO - test:: [test_time: -24.78 (s), test_loss: 3.7425, test_MAPE: 0.1146, test_RMSE: 7.9452] -2022-02-04 05:36:23,704 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_049.pt saved -2022-02-04 05:36:23,704 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:00 -2022-02-04 05:36:23,704 - easytorch-training - INFO - epoch 50 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.05it/s] -2022-02-04 05:42:05,135 - easytorch-training - INFO - train:: [train_time: 341.43 (s), lr: 5.00e-04, train_loss: 3.3424, train_MAPE: 0.0962, train_RMSE: 6.8960] -2022-02-04 05:42:17,773 - easytorch-training - INFO - val:: [val_time: 12.63 (s), val_loss: 3.6002, val_MAPE: 0.1019, val_RMSE: 7.7072] -2022-02-04 05:42:42,877 - easytorch-training - INFO - test:: [test_time: -25.10 (s), test_loss: 3.7128, test_MAPE: 0.1126, test_RMSE: 7.8761] -2022-02-04 05:42:42,910 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_050.pt saved -2022-02-04 05:42:42,918 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:13 -2022-02-04 05:42:42,918 - easytorch-training - INFO - epoch 51 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:32<00:00, 8.27it/s] -2022-02-04 05:48:14,985 - easytorch-training - INFO - train:: [train_time: 332.07 (s), lr: 2.50e-04, train_loss: 3.3186, train_MAPE: 0.0953, train_RMSE: 6.8464] -2022-02-04 05:48:27,277 - easytorch-training - INFO - val:: [val_time: 12.28 (s), val_loss: 3.5923, val_MAPE: 0.1032, val_RMSE: 7.7227] -2022-02-04 05:48:52,092 - easytorch-training - INFO - test:: [test_time: -24.81 (s), test_loss: 3.7252, test_MAPE: 0.1149, test_RMSE: 7.9556] -2022-02-04 05:48:52,126 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_051.pt saved -2022-02-04 05:48:52,126 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:45 -2022-02-04 05:48:52,126 - easytorch-training - INFO - epoch 52 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.03it/s] -2022-02-04 05:54:34,285 - easytorch-training - INFO - train:: [train_time: 342.16 (s), lr: 2.50e-04, train_loss: 3.3132, train_MAPE: 0.0951, train_RMSE: 6.8350] -2022-02-04 05:54:46,985 - easytorch-training - INFO - val:: [val_time: 12.70 (s), val_loss: 3.5599, val_MAPE: 0.1011, val_RMSE: 7.6113] -2022-02-04 05:55:12,170 - easytorch-training - INFO - test:: [test_time: -25.18 (s), test_loss: 3.6867, test_MAPE: 0.1124, test_RMSE: 7.8230] -2022-02-04 05:55:12,199 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_052.pt saved -2022-02-04 05:55:12,199 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:01 -2022-02-04 05:55:12,199 - easytorch-training - INFO - epoch 53 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.04it/s] -2022-02-04 06:00:53,947 - easytorch-training - INFO - train:: [train_time: 341.75 (s), lr: 2.50e-04, train_loss: 3.3119, train_MAPE: 0.0950, train_RMSE: 6.8307] -2022-02-04 06:01:06,809 - easytorch-training - INFO - val:: [val_time: 12.86 (s), val_loss: 3.5957, val_MAPE: 0.1030, val_RMSE: 7.7342] -2022-02-04 06:01:31,197 - easytorch-training - INFO - test:: [test_time: -24.38 (s), test_loss: 3.7012, test_MAPE: 0.1144, test_RMSE: 7.9104] -2022-02-04 06:01:31,242 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_053.pt saved -2022-02-04 06:01:31,243 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:11 -2022-02-04 06:01:31,243 - easytorch-training - INFO - epoch 54 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.03it/s] -2022-02-04 06:07:13,127 - easytorch-training - INFO - train:: [train_time: 341.88 (s), lr: 2.50e-04, train_loss: 3.3121, train_MAPE: 0.0951, train_RMSE: 6.8310] -2022-02-04 06:07:25,807 - easytorch-training - INFO - val:: [val_time: 12.68 (s), val_loss: 3.5747, val_MAPE: 0.1025, val_RMSE: 7.6677] -2022-02-04 06:07:51,026 - easytorch-training - INFO - test:: [test_time: -25.22 (s), test_loss: 3.7060, test_MAPE: 0.1140, test_RMSE: 7.8911] -2022-02-04 06:07:51,066 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_054.pt saved -2022-02-04 06:07:51,067 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:25 -2022-02-04 06:07:51,067 - easytorch-training - INFO - epoch 55 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.05it/s] -2022-02-04 06:13:32,133 - easytorch-training - INFO - train:: [train_time: 341.07 (s), lr: 2.50e-04, train_loss: 3.3094, train_MAPE: 0.0950, train_RMSE: 6.8259] -2022-02-04 06:13:44,582 - easytorch-training - INFO - val:: [val_time: 12.44 (s), val_loss: 3.5697, val_MAPE: 0.1029, val_RMSE: 7.6708] -2022-02-04 06:14:09,357 - easytorch-training - INFO - test:: [test_time: -24.77 (s), test_loss: 3.6992, test_MAPE: 0.1142, test_RMSE: 7.8804] -2022-02-04 06:14:09,381 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_055.pt saved -2022-02-04 06:14:09,382 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:32 -2022-02-04 06:14:09,382 - easytorch-training - INFO - epoch 56 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.04it/s] -2022-02-04 06:19:50,862 - easytorch-training - INFO - train:: [train_time: 341.48 (s), lr: 2.50e-04, train_loss: 3.3071, train_MAPE: 0.0949, train_RMSE: 6.8202] -2022-02-04 06:20:03,576 - easytorch-training - INFO - val:: [val_time: 12.71 (s), val_loss: 3.5607, val_MAPE: 0.1012, val_RMSE: 7.6379] -2022-02-04 06:20:28,788 - easytorch-training - INFO - test:: [test_time: -25.21 (s), test_loss: 3.7093, test_MAPE: 0.1137, test_RMSE: 7.9046] -2022-02-04 06:20:28,821 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_056.pt saved -2022-02-04 06:20:28,821 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:44 -2022-02-04 06:20:28,821 - easytorch-training - INFO - epoch 57 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.07it/s] -2022-02-04 06:26:09,312 - easytorch-training - INFO - train:: [train_time: 340.49 (s), lr: 2.50e-04, train_loss: 3.3050, train_MAPE: 0.0948, train_RMSE: 6.8146] -2022-02-04 06:26:21,809 - easytorch-training - INFO - val:: [val_time: 12.49 (s), val_loss: 3.5681, val_MAPE: 0.1020, val_RMSE: 7.6516] -2022-02-04 06:26:46,389 - easytorch-training - INFO - test:: [test_time: -24.58 (s), test_loss: 3.7079, test_MAPE: 0.1142, test_RMSE: 7.8978] -2022-02-04 06:26:46,424 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_057.pt saved -2022-02-04 06:26:46,425 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:48 -2022-02-04 06:26:46,425 - easytorch-training - INFO - epoch 58 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:29<00:00, 8.33it/s] -2022-02-04 06:32:16,196 - easytorch-training - INFO - train:: [train_time: 329.77 (s), lr: 2.50e-04, train_loss: 3.3055, train_MAPE: 0.0948, train_RMSE: 6.8164] -2022-02-04 06:32:28,824 - easytorch-training - INFO - val:: [val_time: 12.62 (s), val_loss: 3.6003, val_MAPE: 0.1030, val_RMSE: 7.7376] -2022-02-04 06:32:53,917 - easytorch-training - INFO - test:: [test_time: -25.09 (s), test_loss: 3.7441, test_MAPE: 0.1164, test_RMSE: 7.9904] -2022-02-04 06:32:53,943 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_058.pt saved -2022-02-04 06:32:53,943 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:17 -2022-02-04 06:32:53,943 - easytorch-training - INFO - epoch 59 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.08it/s] -2022-02-04 06:38:33,990 - easytorch-training - INFO - train:: [train_time: 340.05 (s), lr: 2.50e-04, train_loss: 3.3028, train_MAPE: 0.0947, train_RMSE: 6.8115] -2022-02-04 06:38:46,669 - easytorch-training - INFO - val:: [val_time: 12.67 (s), val_loss: 3.5918, val_MAPE: 0.1029, val_RMSE: 7.7260] -2022-02-04 06:39:11,625 - easytorch-training - INFO - test:: [test_time: -24.95 (s), test_loss: 3.7178, test_MAPE: 0.1143, test_RMSE: 7.9333] -2022-02-04 06:39:11,650 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_059.pt saved -2022-02-04 06:39:11,650 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:22 -2022-02-04 06:39:11,651 - easytorch-training - INFO - epoch 60 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:34<00:00, 8.21it/s] -2022-02-04 06:44:46,290 - easytorch-training - INFO - train:: [train_time: 334.64 (s), lr: 2.50e-04, train_loss: 3.3005, train_MAPE: 0.0946, train_RMSE: 6.8049] -2022-02-04 06:44:58,774 - easytorch-training - INFO - val:: [val_time: 12.48 (s), val_loss: 3.5740, val_MAPE: 0.1026, val_RMSE: 7.6723] -2022-02-04 06:45:23,592 - easytorch-training - INFO - test:: [test_time: -24.81 (s), test_loss: 3.7020, test_MAPE: 0.1138, test_RMSE: 7.8917] -2022-02-04 06:45:23,618 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_060.pt saved -2022-02-04 06:45:23,621 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:08 -2022-02-04 06:45:23,621 - easytorch-training - INFO - epoch 61 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:43<00:00, 8.01it/s] -2022-02-04 06:51:06,760 - easytorch-training - INFO - train:: [train_time: 343.14 (s), lr: 2.50e-04, train_loss: 3.3000, train_MAPE: 0.0946, train_RMSE: 6.8044] -2022-02-04 06:51:19,115 - easytorch-training - INFO - val:: [val_time: 12.35 (s), val_loss: 3.6025, val_MAPE: 0.1019, val_RMSE: 7.7201] -2022-02-04 06:51:44,115 - easytorch-training - INFO - test:: [test_time: -25.00 (s), test_loss: 3.7013, test_MAPE: 0.1122, test_RMSE: 7.8726] -2022-02-04 06:51:44,143 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_061.pt saved -2022-02-04 06:51:44,144 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:22 -2022-02-04 06:51:44,144 - easytorch-training - INFO - epoch 62 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:39<00:00, 8.10it/s] -2022-02-04 06:57:23,466 - easytorch-training - INFO - train:: [train_time: 339.32 (s), lr: 2.50e-04, train_loss: 3.2982, train_MAPE: 0.0945, train_RMSE: 6.7994] -2022-02-04 06:57:36,190 - easytorch-training - INFO - val:: [val_time: 12.72 (s), val_loss: 3.5593, val_MAPE: 0.1019, val_RMSE: 7.6256] -2022-02-04 06:58:01,247 - easytorch-training - INFO - test:: [test_time: -25.05 (s), test_loss: 3.6998, test_MAPE: 0.1136, test_RMSE: 7.8615] -2022-02-04 06:58:01,272 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_062.pt saved -2022-02-04 06:58:01,272 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:25 -2022-02-04 06:58:01,272 - easytorch-training - INFO - epoch 63 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:43<00:00, 7.99it/s] -2022-02-04 07:03:45,086 - easytorch-training - INFO - train:: [train_time: 343.81 (s), lr: 2.50e-04, train_loss: 3.2993, train_MAPE: 0.0945, train_RMSE: 6.8015] -2022-02-04 07:03:57,585 - easytorch-training - INFO - val:: [val_time: 12.49 (s), val_loss: 3.6037, val_MAPE: 0.1015, val_RMSE: 7.7171] -2022-02-04 07:04:22,624 - easytorch-training - INFO - test:: [test_time: -25.04 (s), test_loss: 3.7205, test_MAPE: 0.1130, test_RMSE: 7.9139] -2022-02-04 07:04:22,668 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_063.pt saved -2022-02-04 07:04:22,669 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:42 -2022-02-04 07:04:22,669 - easytorch-training - INFO - epoch 64 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:44<00:00, 7.97it/s] -2022-02-04 07:10:07,522 - easytorch-training - INFO - train:: [train_time: 344.85 (s), lr: 2.50e-04, train_loss: 3.2945, train_MAPE: 0.0944, train_RMSE: 6.7911] -2022-02-04 07:10:20,173 - easytorch-training - INFO - val:: [val_time: 12.65 (s), val_loss: 3.5984, val_MAPE: 0.1028, val_RMSE: 7.7171] -2022-02-04 07:10:45,090 - easytorch-training - INFO - test:: [test_time: -24.91 (s), test_loss: 3.7166, test_MAPE: 0.1138, test_RMSE: 7.9057] -2022-02-04 07:10:45,129 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_064.pt saved -2022-02-04 07:10:45,130 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:24:01 -2022-02-04 07:10:45,130 - easytorch-training - INFO - epoch 65 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:44<00:00, 7.97it/s] -2022-02-04 07:16:29,597 - easytorch-training - INFO - train:: [train_time: 344.47 (s), lr: 2.50e-04, train_loss: 3.2952, train_MAPE: 0.0944, train_RMSE: 6.7924] -2022-02-04 07:16:41,883 - easytorch-training - INFO - val:: [val_time: 12.28 (s), val_loss: 3.6121, val_MAPE: 0.1027, val_RMSE: 7.7525] -2022-02-04 07:17:06,669 - easytorch-training - INFO - test:: [test_time: -24.78 (s), test_loss: 3.7243, test_MAPE: 0.1128, test_RMSE: 7.9255] -2022-02-04 07:17:06,703 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_065.pt saved -2022-02-04 07:17:06,703 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:24:16 -2022-02-04 07:17:06,703 - easytorch-training - INFO - epoch 66 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.04it/s] -2022-02-04 07:22:48,469 - easytorch-training - INFO - train:: [train_time: 341.77 (s), lr: 2.50e-04, train_loss: 3.2911, train_MAPE: 0.0942, train_RMSE: 6.7841] -2022-02-04 07:23:00,965 - easytorch-training - INFO - val:: [val_time: 12.49 (s), val_loss: 3.5974, val_MAPE: 0.1016, val_RMSE: 7.7124] -2022-02-04 07:23:25,810 - easytorch-training - INFO - test:: [test_time: -24.84 (s), test_loss: 3.7053, test_MAPE: 0.1125, test_RMSE: 7.8686] -2022-02-04 07:23:25,835 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_066.pt saved -2022-02-04 07:23:25,835 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:24:24 -2022-02-04 07:23:25,835 - easytorch-training - INFO - epoch 67 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.04it/s] -2022-02-04 07:29:07,455 - easytorch-training - INFO - train:: [train_time: 341.62 (s), lr: 2.50e-04, train_loss: 3.2910, train_MAPE: 0.0942, train_RMSE: 6.7820] -2022-02-04 07:29:19,878 - easytorch-training - INFO - val:: [val_time: 12.42 (s), val_loss: 3.6057, val_MAPE: 0.1027, val_RMSE: 7.7620] -2022-02-04 07:29:44,673 - easytorch-training - INFO - test:: [test_time: -24.79 (s), test_loss: 3.7145, test_MAPE: 0.1135, test_RMSE: 7.9255] -2022-02-04 07:29:44,699 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_067.pt saved -2022-02-04 07:29:44,699 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:24:31 -2022-02-04 07:29:44,699 - easytorch-training - INFO - epoch 68 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:36<00:00, 8.17it/s] -2022-02-04 07:35:20,826 - easytorch-training - INFO - train:: [train_time: 336.13 (s), lr: 2.50e-04, train_loss: 3.2905, train_MAPE: 0.0942, train_RMSE: 6.7815] -2022-02-04 07:35:33,420 - easytorch-training - INFO - val:: [val_time: 12.59 (s), val_loss: 3.5940, val_MAPE: 0.1024, val_RMSE: 7.7157] -2022-02-04 07:35:58,273 - easytorch-training - INFO - test:: [test_time: -24.85 (s), test_loss: 3.7287, test_MAPE: 0.1141, test_RMSE: 7.9444] -2022-02-04 07:35:58,302 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_068.pt saved -2022-02-04 07:35:58,302 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:24:22 -2022-02-04 07:35:58,302 - easytorch-training - INFO - epoch 69 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:24<00:00, 8.47it/s] -2022-02-04 07:41:22,597 - easytorch-training - INFO - train:: [train_time: 324.30 (s), lr: 2.50e-04, train_loss: 3.2873, train_MAPE: 0.0941, train_RMSE: 6.7746] -2022-02-04 07:41:35,115 - easytorch-training - INFO - val:: [val_time: 12.51 (s), val_loss: 3.5689, val_MAPE: 0.1026, val_RMSE: 7.6765] -2022-02-04 07:42:00,128 - easytorch-training - INFO - test:: [test_time: -25.01 (s), test_loss: 3.7315, test_MAPE: 0.1151, test_RMSE: 7.9718] -2022-02-04 07:42:00,178 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_069.pt saved -2022-02-04 07:42:00,178 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:40 -2022-02-04 07:42:00,179 - easytorch-training - INFO - epoch 70 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.04it/s] -2022-02-04 07:47:41,637 - easytorch-training - INFO - train:: [train_time: 341.46 (s), lr: 2.50e-04, train_loss: 3.2862, train_MAPE: 0.0940, train_RMSE: 6.7717] -2022-02-04 07:47:54,343 - easytorch-training - INFO - val:: [val_time: 12.70 (s), val_loss: 3.5780, val_MAPE: 0.1017, val_RMSE: 7.6666] -2022-02-04 07:48:19,172 - easytorch-training - INFO - test:: [test_time: -24.82 (s), test_loss: 3.7084, test_MAPE: 0.1140, test_RMSE: 7.8938] -2022-02-04 07:48:19,200 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_070.pt saved -2022-02-04 07:48:19,203 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:48 -2022-02-04 07:48:19,203 - easytorch-training - INFO - epoch 71 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:28<00:00, 8.36it/s] -2022-02-04 07:53:47,906 - easytorch-training - INFO - train:: [train_time: 328.70 (s), lr: 2.50e-04, train_loss: 3.2875, train_MAPE: 0.0941, train_RMSE: 6.7744] -2022-02-04 07:54:00,175 - easytorch-training - INFO - val:: [val_time: 12.26 (s), val_loss: 3.6083, val_MAPE: 0.1037, val_RMSE: 7.7574] -2022-02-04 07:54:24,860 - easytorch-training - INFO - test:: [test_time: -24.68 (s), test_loss: 3.7167, test_MAPE: 0.1144, test_RMSE: 7.9238] -2022-02-04 07:54:24,892 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_071.pt saved -2022-02-04 07:54:24,892 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:17 -2022-02-04 07:54:24,892 - easytorch-training - INFO - epoch 72 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:31<00:00, 8.28it/s] -2022-02-04 07:59:56,545 - easytorch-training - INFO - train:: [train_time: 331.65 (s), lr: 2.50e-04, train_loss: 3.2840, train_MAPE: 0.0939, train_RMSE: 6.7668] -2022-02-04 08:00:09,019 - easytorch-training - INFO - val:: [val_time: 12.47 (s), val_loss: 3.6064, val_MAPE: 0.1041, val_RMSE: 7.7646] -2022-02-04 08:00:34,244 - easytorch-training - INFO - test:: [test_time: -25.22 (s), test_loss: 3.7276, test_MAPE: 0.1152, test_RMSE: 7.9631] -2022-02-04 08:00:34,278 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_072.pt saved -2022-02-04 08:00:34,279 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:58 -2022-02-04 08:00:34,279 - easytorch-training - INFO - epoch 73 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:39<00:00, 8.10it/s] -2022-02-04 08:06:13,535 - easytorch-training - INFO - train:: [train_time: 339.26 (s), lr: 2.50e-04, train_loss: 3.2823, train_MAPE: 0.0939, train_RMSE: 6.7626] -2022-02-04 08:06:26,389 - easytorch-training - INFO - val:: [val_time: 12.84 (s), val_loss: 3.5838, val_MAPE: 0.1023, val_RMSE: 7.6736] -2022-02-04 08:06:51,192 - easytorch-training - INFO - test:: [test_time: -24.80 (s), test_loss: 3.6893, test_MAPE: 0.1135, test_RMSE: 7.8526] -2022-02-04 08:06:51,219 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_073.pt saved -2022-02-04 08:06:51,219 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:01 -2022-02-04 08:06:51,219 - easytorch-training - INFO - epoch 74 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.04it/s] -2022-02-04 08:12:32,745 - easytorch-training - INFO - train:: [train_time: 341.53 (s), lr: 2.50e-04, train_loss: 3.2832, train_MAPE: 0.0939, train_RMSE: 6.7644] -2022-02-04 08:12:45,431 - easytorch-training - INFO - val:: [val_time: 12.68 (s), val_loss: 3.6167, val_MAPE: 0.1042, val_RMSE: 7.7726] -2022-02-04 08:13:10,474 - easytorch-training - INFO - test:: [test_time: -25.04 (s), test_loss: 3.7316, test_MAPE: 0.1149, test_RMSE: 7.9517] -2022-02-04 08:13:10,506 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_074.pt saved -2022-02-04 08:13:10,506 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:09 -2022-02-04 08:13:10,506 - easytorch-training - INFO - epoch 75 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:35<00:00, 8.19it/s] -2022-02-04 08:18:46,115 - easytorch-training - INFO - train:: [train_time: 335.61 (s), lr: 2.50e-04, train_loss: 3.2809, train_MAPE: 0.0938, train_RMSE: 6.7588] -2022-02-04 08:18:58,747 - easytorch-training - INFO - val:: [val_time: 12.63 (s), val_loss: 3.5962, val_MAPE: 0.1033, val_RMSE: 7.7209] -2022-02-04 08:19:23,846 - easytorch-training - INFO - test:: [test_time: -25.10 (s), test_loss: 3.7193, test_MAPE: 0.1143, test_RMSE: 7.9283] -2022-02-04 08:19:23,872 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_075.pt saved -2022-02-04 08:19:23,872 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:02 -2022-02-04 08:19:23,872 - easytorch-training - INFO - epoch 76 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:43<00:00, 8.00it/s] -2022-02-04 08:25:07,294 - easytorch-training - INFO - train:: [train_time: 343.42 (s), lr: 2.50e-04, train_loss: 3.2794, train_MAPE: 0.0938, train_RMSE: 6.7554] -2022-02-04 08:25:20,095 - easytorch-training - INFO - val:: [val_time: 12.80 (s), val_loss: 3.6117, val_MAPE: 0.1022, val_RMSE: 7.7359] -2022-02-04 08:25:45,168 - easytorch-training - INFO - test:: [test_time: -25.07 (s), test_loss: 3.7142, test_MAPE: 0.1134, test_RMSE: 7.9098] -2022-02-04 08:25:45,195 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_076.pt saved -2022-02-04 08:25:45,195 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:15 -2022-02-04 08:25:45,195 - easytorch-training - INFO - epoch 77 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:33<00:00, 8.24it/s] -2022-02-04 08:31:18,649 - easytorch-training - INFO - train:: [train_time: 333.45 (s), lr: 2.50e-04, train_loss: 3.2789, train_MAPE: 0.0937, train_RMSE: 6.7531] -2022-02-04 08:31:31,231 - easytorch-training - INFO - val:: [val_time: 12.58 (s), val_loss: 3.5828, val_MAPE: 0.1034, val_RMSE: 7.7125] -2022-02-04 08:31:56,217 - easytorch-training - INFO - test:: [test_time: -24.98 (s), test_loss: 3.7338, test_MAPE: 0.1156, test_RMSE: 7.9769] -2022-02-04 08:31:56,246 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_077.pt saved -2022-02-04 08:31:56,247 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:02 -2022-02-04 08:31:56,247 - easytorch-training - INFO - epoch 78 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.07it/s] -2022-02-04 08:37:36,652 - easytorch-training - INFO - train:: [train_time: 340.40 (s), lr: 2.50e-04, train_loss: 3.2784, train_MAPE: 0.0937, train_RMSE: 6.7521] -2022-02-04 08:37:49,255 - easytorch-training - INFO - val:: [val_time: 12.60 (s), val_loss: 3.5920, val_MAPE: 0.1036, val_RMSE: 7.7229] -2022-02-04 08:38:14,406 - easytorch-training - INFO - test:: [test_time: -25.15 (s), test_loss: 3.7391, test_MAPE: 0.1154, test_RMSE: 7.9707] -2022-02-04 08:38:14,437 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_078.pt saved -2022-02-04 08:38:14,437 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:23:07 -2022-02-04 08:38:14,437 - easytorch-training - INFO - epoch 79 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:33<00:00, 8.24it/s] -2022-02-04 08:43:47,879 - easytorch-training - INFO - train:: [train_time: 333.44 (s), lr: 2.50e-04, train_loss: 3.2758, train_MAPE: 0.0936, train_RMSE: 6.7463] -2022-02-04 08:44:00,489 - easytorch-training - INFO - val:: [val_time: 12.60 (s), val_loss: 3.5868, val_MAPE: 0.1023, val_RMSE: 7.7120] -2022-02-04 08:44:25,327 - easytorch-training - INFO - test:: [test_time: -24.84 (s), test_loss: 3.7159, test_MAPE: 0.1140, test_RMSE: 7.9183] -2022-02-04 08:44:25,356 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_079.pt saved -2022-02-04 08:44:25,356 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:54 -2022-02-04 08:44:25,356 - easytorch-training - INFO - epoch 80 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:40<00:00, 8.08it/s] -2022-02-04 08:50:05,482 - easytorch-training - INFO - train:: [train_time: 340.13 (s), lr: 2.50e-04, train_loss: 3.2771, train_MAPE: 0.0936, train_RMSE: 6.7491] -2022-02-04 08:50:18,206 - easytorch-training - INFO - val:: [val_time: 12.72 (s), val_loss: 3.5927, val_MAPE: 0.1031, val_RMSE: 7.7159] -2022-02-04 08:50:43,618 - easytorch-training - INFO - test:: [test_time: -25.41 (s), test_loss: 3.7103, test_MAPE: 0.1138, test_RMSE: 7.9055] -2022-02-04 08:50:43,646 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_080.pt saved -2022-02-04 08:50:43,649 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:59 -2022-02-04 08:50:43,649 - easytorch-training - INFO - epoch 81 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:38<00:00, 8.10it/s] -2022-02-04 08:56:22,603 - easytorch-training - INFO - train:: [train_time: 338.95 (s), lr: 2.50e-04, train_loss: 3.2732, train_MAPE: 0.0935, train_RMSE: 6.7396] -2022-02-04 08:56:34,959 - easytorch-training - INFO - val:: [val_time: 12.35 (s), val_loss: 3.5915, val_MAPE: 0.1020, val_RMSE: 7.6903] -2022-02-04 08:56:59,662 - easytorch-training - INFO - test:: [test_time: -24.70 (s), test_loss: 3.7202, test_MAPE: 0.1140, test_RMSE: 7.9163] -2022-02-04 08:56:59,694 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_081.pt saved -2022-02-04 08:56:59,695 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:59 -2022-02-04 08:56:59,695 - easytorch-training - INFO - epoch 82 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:25<00:00, 8.44it/s] -2022-02-04 09:02:25,361 - easytorch-training - INFO - train:: [train_time: 325.67 (s), lr: 2.50e-04, train_loss: 3.2751, train_MAPE: 0.0935, train_RMSE: 6.7436] -2022-02-04 09:02:37,862 - easytorch-training - INFO - val:: [val_time: 12.49 (s), val_loss: 3.5794, val_MAPE: 0.1019, val_RMSE: 7.6827] -2022-02-04 09:03:02,665 - easytorch-training - INFO - test:: [test_time: -24.80 (s), test_loss: 3.7097, test_MAPE: 0.1133, test_RMSE: 7.8970] -2022-02-04 09:03:02,695 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_082.pt saved -2022-02-04 09:03:02,695 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:27 -2022-02-04 09:03:02,696 - easytorch-training - INFO - epoch 83 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:24<00:00, 8.46it/s] -2022-02-04 09:08:27,424 - easytorch-training - INFO - train:: [train_time: 324.73 (s), lr: 2.50e-04, train_loss: 3.2736, train_MAPE: 0.0935, train_RMSE: 6.7410] -2022-02-04 09:08:40,101 - easytorch-training - INFO - val:: [val_time: 12.67 (s), val_loss: 3.6100, val_MAPE: 0.1026, val_RMSE: 7.7274] -2022-02-04 09:09:05,137 - easytorch-training - INFO - test:: [test_time: -25.03 (s), test_loss: 3.7205, test_MAPE: 0.1132, test_RMSE: 7.9149] -2022-02-04 09:09:05,167 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_083.pt saved -2022-02-04 09:09:05,167 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:55 -2022-02-04 09:09:05,167 - easytorch-training - INFO - epoch 84 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:44<00:00, 7.97it/s] -2022-02-04 09:14:49,740 - easytorch-training - INFO - train:: [train_time: 344.57 (s), lr: 2.50e-04, train_loss: 3.2676, train_MAPE: 0.0932, train_RMSE: 6.7256] -2022-02-04 09:15:02,334 - easytorch-training - INFO - val:: [val_time: 12.59 (s), val_loss: 3.6185, val_MAPE: 0.1031, val_RMSE: 7.7807] -2022-02-04 09:15:27,259 - easytorch-training - INFO - test:: [test_time: -24.92 (s), test_loss: 3.7316, test_MAPE: 0.1146, test_RMSE: 7.9650] -2022-02-04 09:15:27,288 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_084.pt saved -2022-02-04 09:15:27,288 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:10 -2022-02-04 09:15:27,288 - easytorch-training - INFO - epoch 85 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.05it/s] -2022-02-04 09:21:08,324 - easytorch-training - INFO - train:: [train_time: 341.04 (s), lr: 2.50e-04, train_loss: 3.2702, train_MAPE: 0.0934, train_RMSE: 6.7322] -2022-02-04 09:21:21,011 - easytorch-training - INFO - val:: [val_time: 12.68 (s), val_loss: 3.5978, val_MAPE: 0.1031, val_RMSE: 7.7401] -2022-02-04 09:21:45,968 - easytorch-training - INFO - test:: [test_time: -24.95 (s), test_loss: 3.7163, test_MAPE: 0.1140, test_RMSE: 7.9324] -2022-02-04 09:21:45,993 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_085.pt saved -2022-02-04 09:21:45,994 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:16 -2022-02-04 09:21:45,994 - easytorch-training - INFO - epoch 86 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:41<00:00, 8.03it/s] -2022-02-04 09:27:27,903 - easytorch-training - INFO - train:: [train_time: 341.91 (s), lr: 2.50e-04, train_loss: 3.2695, train_MAPE: 0.0933, train_RMSE: 6.7307] -2022-02-04 09:27:40,547 - easytorch-training - INFO - val:: [val_time: 12.64 (s), val_loss: 3.5863, val_MAPE: 0.1031, val_RMSE: 7.7041] -2022-02-04 09:28:05,500 - easytorch-training - INFO - test:: [test_time: -24.95 (s), test_loss: 3.7280, test_MAPE: 0.1151, test_RMSE: 7.9378] -2022-02-04 09:28:05,526 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_086.pt saved -2022-02-04 09:28:05,526 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:25 -2022-02-04 09:28:05,526 - easytorch-training - INFO - epoch 87 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:35<00:00, 8.20it/s] -2022-02-04 09:33:40,629 - easytorch-training - INFO - train:: [train_time: 335.10 (s), lr: 2.50e-04, train_loss: 3.2676, train_MAPE: 0.0933, train_RMSE: 6.7274] -2022-02-04 09:33:53,183 - easytorch-training - INFO - val:: [val_time: 12.55 (s), val_loss: 3.6079, val_MAPE: 0.1030, val_RMSE: 7.7552] -2022-02-04 09:34:17,844 - easytorch-training - INFO - test:: [test_time: -24.66 (s), test_loss: 3.7378, test_MAPE: 0.1146, test_RMSE: 7.9763] -2022-02-04 09:34:17,890 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_087.pt saved -2022-02-04 09:34:17,890 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:16 -2022-02-04 09:34:17,891 - easytorch-training - INFO - epoch 88 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:36<00:00, 8.17it/s] -2022-02-04 09:39:54,253 - easytorch-training - INFO - train:: [train_time: 336.36 (s), lr: 2.50e-04, train_loss: 3.2678, train_MAPE: 0.0933, train_RMSE: 6.7269] -2022-02-04 09:40:06,920 - easytorch-training - INFO - val:: [val_time: 12.66 (s), val_loss: 3.5788, val_MAPE: 0.1015, val_RMSE: 7.6909] -2022-02-04 09:40:32,226 - easytorch-training - INFO - test:: [test_time: -25.30 (s), test_loss: 3.7468, test_MAPE: 0.1148, test_RMSE: 7.9904] -2022-02-04 09:40:32,260 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_088.pt saved -2022-02-04 09:40:32,260 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:22:13 -2022-02-04 09:40:32,260 - easytorch-training - INFO - epoch 89 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:25<00:00, 8.43it/s] -2022-02-04 09:45:58,227 - easytorch-training - INFO - train:: [train_time: 325.97 (s), lr: 2.50e-04, train_loss: 3.2651, train_MAPE: 0.0932, train_RMSE: 6.7214] -2022-02-04 09:46:10,605 - easytorch-training - INFO - val:: [val_time: 12.37 (s), val_loss: 3.5968, val_MAPE: 0.1024, val_RMSE: 7.7023] -2022-02-04 09:46:35,229 - easytorch-training - INFO - test:: [test_time: -24.62 (s), test_loss: 3.7311, test_MAPE: 0.1143, test_RMSE: 7.9459] -2022-02-04 09:46:35,255 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_089.pt saved -2022-02-04 09:46:35,255 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:44 -2022-02-04 09:46:35,255 - easytorch-training - INFO - epoch 90 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:27<00:00, 8.39it/s] -2022-02-04 09:52:02,561 - easytorch-training - INFO - train:: [train_time: 327.31 (s), lr: 2.50e-04, train_loss: 3.2641, train_MAPE: 0.0931, train_RMSE: 6.7174] -2022-02-04 09:52:15,192 - easytorch-training - INFO - val:: [val_time: 12.62 (s), val_loss: 3.6128, val_MAPE: 0.1040, val_RMSE: 7.7572] -2022-02-04 09:52:39,761 - easytorch-training - INFO - test:: [test_time: -24.57 (s), test_loss: 3.7326, test_MAPE: 0.1149, test_RMSE: 7.9563] -2022-02-04 09:52:39,791 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_090.pt saved -2022-02-04 09:52:39,794 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:21:19 -2022-02-04 09:52:39,794 - easytorch-training - INFO - epoch 91 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:28<00:00, 8.37it/s] -2022-02-04 09:58:07,984 - easytorch-training - INFO - train:: [train_time: 328.19 (s), lr: 2.50e-04, train_loss: 3.2638, train_MAPE: 0.0931, train_RMSE: 6.7166] -2022-02-04 09:58:20,478 - easytorch-training - INFO - val:: [val_time: 12.49 (s), val_loss: 3.6002, val_MAPE: 0.1028, val_RMSE: 7.7362] -2022-02-04 09:58:45,217 - easytorch-training - INFO - test:: [test_time: -24.73 (s), test_loss: 3.7077, test_MAPE: 0.1133, test_RMSE: 7.9101] -2022-02-04 09:58:45,246 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_091.pt saved -2022-02-04 09:58:45,246 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:56 -2022-02-04 09:58:45,246 - easytorch-training - INFO - epoch 92 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:34<00:00, 8.22it/s] -2022-02-04 10:04:19,469 - easytorch-training - INFO - train:: [train_time: 334.22 (s), lr: 2.50e-04, train_loss: 3.2631, train_MAPE: 0.0931, train_RMSE: 6.7155] -2022-02-04 10:04:32,053 - easytorch-training - INFO - val:: [val_time: 12.58 (s), val_loss: 3.6013, val_MAPE: 0.1039, val_RMSE: 7.7495] -2022-02-04 10:04:56,861 - easytorch-training - INFO - test:: [test_time: -24.80 (s), test_loss: 3.7521, test_MAPE: 0.1165, test_RMSE: 8.0194] -2022-02-04 10:04:56,889 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_092.pt saved -2022-02-04 10:04:56,889 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:48 -2022-02-04 10:04:56,889 - easytorch-training - INFO - epoch 93 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:32<00:00, 8.26it/s] -2022-02-04 10:10:29,296 - easytorch-training - INFO - train:: [train_time: 332.41 (s), lr: 2.50e-04, train_loss: 3.2600, train_MAPE: 0.0929, train_RMSE: 6.7078] -2022-02-04 10:10:41,914 - easytorch-training - INFO - val:: [val_time: 12.61 (s), val_loss: 3.5852, val_MAPE: 0.1015, val_RMSE: 7.6896] -2022-02-04 10:11:06,645 - easytorch-training - INFO - test:: [test_time: -24.73 (s), test_loss: 3.7336, test_MAPE: 0.1131, test_RMSE: 7.9477] -2022-02-04 10:11:06,670 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_093.pt saved -2022-02-04 10:11:06,671 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:36 -2022-02-04 10:11:06,671 - easytorch-training - INFO - epoch 94 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:42<00:00, 8.02it/s] -2022-02-04 10:16:49,024 - easytorch-training - INFO - train:: [train_time: 342.35 (s), lr: 2.50e-04, train_loss: 3.2598, train_MAPE: 0.0929, train_RMSE: 6.7067] -2022-02-04 10:17:01,702 - easytorch-training - INFO - val:: [val_time: 12.67 (s), val_loss: 3.6158, val_MAPE: 0.1034, val_RMSE: 7.7737] -2022-02-04 10:17:26,474 - easytorch-training - INFO - test:: [test_time: -24.77 (s), test_loss: 3.7270, test_MAPE: 0.1142, test_RMSE: 7.9562] -2022-02-04 10:17:26,503 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_094.pt saved -2022-02-04 10:17:26,503 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:45 -2022-02-04 10:17:26,503 - easytorch-training - INFO - epoch 95 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:35<00:00, 8.19it/s] -2022-02-04 10:23:02,031 - easytorch-training - INFO - train:: [train_time: 335.53 (s), lr: 2.50e-04, train_loss: 3.2592, train_MAPE: 0.0929, train_RMSE: 6.7052] -2022-02-04 10:23:14,451 - easytorch-training - INFO - val:: [val_time: 12.42 (s), val_loss: 3.6131, val_MAPE: 0.1033, val_RMSE: 7.7844] -2022-02-04 10:23:38,940 - easytorch-training - INFO - test:: [test_time: -24.49 (s), test_loss: 3.7251, test_MAPE: 0.1144, test_RMSE: 7.9560] -2022-02-04 10:23:38,966 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_095.pt saved -2022-02-04 10:23:38,967 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:39 -2022-02-04 10:23:38,967 - easytorch-training - INFO - epoch 96 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2747/2747 [05:31<00:00, 8.30it/s] -2022-02-04 10:29:09,990 - easytorch-training - INFO - train:: [train_time: 331.02 (s), lr: 2.50e-04, train_loss: 3.2578, train_MAPE: 0.0928, train_RMSE: 6.7025] -2022-02-04 10:29:22,570 - easytorch-training - INFO - val:: [val_time: 12.57 (s), val_loss: 3.6231, val_MAPE: 0.1037, val_RMSE: 7.7827] -2022-02-04 10:29:47,432 - easytorch-training - INFO - test:: [test_time: -24.86 (s), test_loss: 3.7385, test_MAPE: 0.1143, test_RMSE: 7.9620] -2022-02-04 10:29:47,458 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/3de38a467aef981dd6f24127b6fb5f50/TSFormer_096.pt saved -2022-02-04 10:29:47,458 - easytorch-training - INFO - The estimated training finish time is 2022-02-04 21:20:24 -2022-02-04 10:29:47,458 - easytorch-training - INFO - epoch 97 / 200 diff --git a/train_logs/TSFormer_PEMS-BAY.log b/train_logs/TSFormer_PEMS-BAY.log deleted file mode 100644 index 91b76ea..0000000 --- a/train_logs/TSFormer_PEMS-BAY.log +++ /dev/null @@ -1,1411 +0,0 @@ -2022-02-04 21:17:57,337 - easytorch-env - INFO - Enable TF32 mode -2022-02-04 21:17:57,338 - easytorch - INFO - ckpt save dir: 'checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196' -2022-02-04 21:18:09,976 - easytorch-training - INFO - set optim: AdamW ( -Parameter Group 0 - amsgrad: False - betas: [0.9, 0.95] - eps: 1e-08 - lr: 0.002 - weight_decay: 0 -) -2022-02-04 21:18:09,978 - easytorch-training - INFO - set lr_scheduler: -2022-02-04 21:18:10,441 - easytorch-training - INFO - epoch 1 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:41<00:00, 3.34it/s] -2022-02-04 21:20:52,001 - easytorch-training - INFO - train:: [train_time: 161.56 (s), lr: 2.00e-03, train_loss: 4.0836, train_MAPE: -172.7855, train_RMSE: 8.8746] -2022-02-04 21:21:44,525 - easytorch-training - INFO - val:: [val_time: 52.52 (s), val_loss: 3.0170, val_MAPE: -2036.0657, val_RMSE: 6.9547] -2022-02-04 21:23:27,711 - easytorch-training - INFO - test:: [test_time: -103.18 (s), test_loss: 2.9212, test_MAPE: -1105.0559, test_RMSE: 6.6884] -2022-02-04 21:23:27,753 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_001.pt saved -2022-02-04 21:23:27,753 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:55:53 -2022-02-04 21:23:27,754 - easytorch-training - INFO - epoch 2 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.35it/s] -2022-02-04 21:26:08,719 - easytorch-training - INFO - train:: [train_time: 160.96 (s), lr: 2.00e-03, train_loss: 2.8357, train_MAPE: -185.9738, train_RMSE: 6.2806] -2022-02-04 21:27:01,114 - easytorch-training - INFO - val:: [val_time: 52.39 (s), val_loss: 2.3917, val_MAPE: -1971.4465, val_RMSE: 5.5209] -2022-02-04 21:28:43,698 - easytorch-training - INFO - test:: [test_time: -102.57 (s), test_loss: 2.3781, test_MAPE: -1129.9824, test_RMSE: 5.4663] -2022-02-04 21:28:43,759 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_002.pt saved -2022-02-04 21:28:43,760 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:53:42 -2022-02-04 21:28:43,760 - easytorch-training - INFO - epoch 3 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-04 21:31:23,693 - easytorch-training - INFO - train:: [train_time: 159.93 (s), lr: 2.00e-03, train_loss: 2.4883, train_MAPE: -166.8130, train_RMSE: 5.5598] -2022-02-04 21:32:16,192 - easytorch-training - INFO - val:: [val_time: 52.49 (s), val_loss: 2.2455, val_MAPE: -1985.5735, val_RMSE: 5.2118] -2022-02-04 21:33:58,225 - easytorch-training - INFO - test:: [test_time: -102.03 (s), test_loss: 2.2586, test_MAPE: -1181.9701, test_RMSE: 5.2429] -2022-02-04 21:33:58,290 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_003.pt saved -2022-02-04 21:33:58,291 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:51:20 -2022-02-04 21:33:58,291 - easytorch-training - INFO - epoch 4 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-04 21:36:38,588 - easytorch-training - INFO - train:: [train_time: 160.30 (s), lr: 2.00e-03, train_loss: 2.3666, train_MAPE: -182.2449, train_RMSE: 5.2993] -2022-02-04 21:37:30,900 - easytorch-training - INFO - val:: [val_time: 52.30 (s), val_loss: 2.1508, val_MAPE: -1922.1766, val_RMSE: 4.9973] -2022-02-04 21:39:13,420 - easytorch-training - INFO - test:: [test_time: -102.51 (s), test_loss: 2.1703, test_MAPE: -1129.3776, test_RMSE: 5.0495] -2022-02-04 21:39:13,490 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_004.pt saved -2022-02-04 21:39:13,490 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:50:42 -2022-02-04 21:39:13,490 - easytorch-training - INFO - epoch 5 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-04 21:41:53,740 - easytorch-training - INFO - train:: [train_time: 160.25 (s), lr: 2.00e-03, train_loss: 2.2748, train_MAPE: -170.2439, train_RMSE: 5.1031] -2022-02-04 21:42:46,496 - easytorch-training - INFO - val:: [val_time: 52.75 (s), val_loss: 2.0528, val_MAPE: -1939.6682, val_RMSE: 4.8105] -2022-02-04 21:44:28,886 - easytorch-training - INFO - test:: [test_time: -102.38 (s), test_loss: 2.0904, test_MAPE: -1152.1101, test_RMSE: 4.9218] -2022-02-04 21:44:28,952 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_005.pt saved -2022-02-04 21:44:28,952 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:50:30 -2022-02-04 21:44:28,952 - easytorch-training - INFO - epoch 6 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-04 21:47:08,676 - easytorch-training - INFO - train:: [train_time: 159.72 (s), lr: 2.00e-03, train_loss: 2.2092, train_MAPE: -169.7601, train_RMSE: 4.9562] -2022-02-04 21:48:01,216 - easytorch-training - INFO - val:: [val_time: 52.54 (s), val_loss: 1.9984, val_MAPE: -1913.3466, val_RMSE: 4.7031] -2022-02-04 21:49:43,522 - easytorch-training - INFO - test:: [test_time: -102.30 (s), test_loss: 2.0473, test_MAPE: -1145.7621, test_RMSE: 4.8423] -2022-02-04 21:49:43,564 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_006.pt saved -2022-02-04 21:49:43,564 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:54 -2022-02-04 21:49:43,565 - easytorch-training - INFO - epoch 7 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-04 21:52:23,965 - easytorch-training - INFO - train:: [train_time: 160.40 (s), lr: 2.00e-03, train_loss: 2.1699, train_MAPE: -174.8344, train_RMSE: 4.8792] -2022-02-04 21:53:16,366 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 2.0071, val_MAPE: -1952.9354, val_RMSE: 4.7061] -2022-02-04 21:54:58,886 - easytorch-training - INFO - test:: [test_time: -102.51 (s), test_loss: 2.0426, test_MAPE: -1088.0616, test_RMSE: 4.8109] -2022-02-04 21:54:58,953 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_007.pt saved -2022-02-04 21:54:58,954 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:50 -2022-02-04 21:54:58,954 - easytorch-training - INFO - epoch 8 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-04 21:57:38,591 - easytorch-training - INFO - train:: [train_time: 159.64 (s), lr: 2.00e-03, train_loss: 2.1370, train_MAPE: -182.1672, train_RMSE: 4.8147] -2022-02-04 21:58:31,065 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.9940, val_MAPE: -1947.7535, val_RMSE: 4.7059] -2022-02-04 22:00:14,048 - easytorch-training - INFO - test:: [test_time: -102.98 (s), test_loss: 2.0262, test_MAPE: -1174.3998, test_RMSE: 4.8053] -2022-02-04 22:00:14,113 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_008.pt saved -2022-02-04 22:00:14,114 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:42 -2022-02-04 22:00:14,114 - easytorch-training - INFO - epoch 9 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-04 22:02:54,009 - easytorch-training - INFO - train:: [train_time: 159.89 (s), lr: 2.00e-03, train_loss: 2.1149, train_MAPE: -181.6230, train_RMSE: 4.7664] -2022-02-04 22:03:46,374 - easytorch-training - INFO - val:: [val_time: 52.36 (s), val_loss: 1.9262, val_MAPE: -1996.4023, val_RMSE: 4.5726] -2022-02-04 22:05:28,730 - easytorch-training - INFO - test:: [test_time: -102.35 (s), test_loss: 1.9772, test_MAPE: -1173.5990, test_RMSE: 4.7146] -2022-02-04 22:05:28,790 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_009.pt saved -2022-02-04 22:05:28,791 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-04 22:05:28,791 - easytorch-training - INFO - epoch 10 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 22:08:08,828 - easytorch-training - INFO - train:: [train_time: 160.04 (s), lr: 2.00e-03, train_loss: 2.1022, train_MAPE: -164.4529, train_RMSE: 4.7425] -2022-02-04 22:09:01,183 - easytorch-training - INFO - val:: [val_time: 52.35 (s), val_loss: 1.9510, val_MAPE: -1954.5543, val_RMSE: 4.5826] -2022-02-04 22:10:43,855 - easytorch-training - INFO - test:: [test_time: -102.67 (s), test_loss: 2.0142, test_MAPE: -1082.4049, test_RMSE: 4.7572] -2022-02-04 22:10:43,918 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_010.pt saved -2022-02-04 22:10:43,922 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:20 -2022-02-04 22:10:43,922 - easytorch-training - INFO - epoch 11 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 22:13:24,007 - easytorch-training - INFO - train:: [train_time: 160.08 (s), lr: 2.00e-03, train_loss: 2.0831, train_MAPE: -176.3689, train_RMSE: 4.7024] -2022-02-04 22:14:17,231 - easytorch-training - INFO - val:: [val_time: 53.22 (s), val_loss: 1.9317, val_MAPE: -2023.3219, val_RMSE: 4.5966] -2022-02-04 22:15:59,861 - easytorch-training - INFO - test:: [test_time: -102.63 (s), test_loss: 1.9795, test_MAPE: -1122.7614, test_RMSE: 4.7396] -2022-02-04 22:15:59,927 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_011.pt saved -2022-02-04 22:15:59,928 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-04 22:15:59,928 - easytorch-training - INFO - epoch 12 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 22:18:40,011 - easytorch-training - INFO - train:: [train_time: 160.08 (s), lr: 2.00e-03, train_loss: 2.0772, train_MAPE: -169.1089, train_RMSE: 4.6954] -2022-02-04 22:19:32,665 - easytorch-training - INFO - val:: [val_time: 52.64 (s), val_loss: 1.9296, val_MAPE: -1924.9824, val_RMSE: 4.5711] -2022-02-04 22:21:15,031 - easytorch-training - INFO - test:: [test_time: -102.36 (s), test_loss: 1.9922, test_MAPE: -1099.1380, test_RMSE: 4.7555] -2022-02-04 22:21:15,095 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_012.pt saved -2022-02-04 22:21:15,096 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-04 22:21:15,096 - easytorch-training - INFO - epoch 13 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 22:23:55,231 - easytorch-training - INFO - train:: [train_time: 160.14 (s), lr: 2.00e-03, train_loss: 2.0593, train_MAPE: -148.7015, train_RMSE: 4.6603] -2022-02-04 22:24:47,817 - easytorch-training - INFO - val:: [val_time: 52.58 (s), val_loss: 1.9007, val_MAPE: -1975.6503, val_RMSE: 4.5063] -2022-02-04 22:26:30,016 - easytorch-training - INFO - test:: [test_time: -102.19 (s), test_loss: 1.9482, test_MAPE: -1152.7524, test_RMSE: 4.6402] -2022-02-04 22:26:30,059 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_013.pt saved -2022-02-04 22:26:30,059 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:21 -2022-02-04 22:26:30,059 - easytorch-training - INFO - epoch 14 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 22:29:10,093 - easytorch-training - INFO - train:: [train_time: 160.03 (s), lr: 2.00e-03, train_loss: 2.0574, train_MAPE: -161.2426, train_RMSE: 4.6485] -2022-02-04 22:30:02,323 - easytorch-training - INFO - val:: [val_time: 52.23 (s), val_loss: 1.8782, val_MAPE: -2007.8971, val_RMSE: 4.4812] -2022-02-04 22:31:45,336 - easytorch-training - INFO - test:: [test_time: -103.01 (s), test_loss: 1.9502, test_MAPE: -1061.5345, test_RMSE: 4.6850] -2022-02-04 22:31:45,398 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_014.pt saved -2022-02-04 22:31:45,398 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:21 -2022-02-04 22:31:45,399 - easytorch-training - INFO - epoch 15 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-04 22:34:25,793 - easytorch-training - INFO - train:: [train_time: 160.39 (s), lr: 2.00e-03, train_loss: 2.0402, train_MAPE: -186.9920, train_RMSE: 4.6249] -2022-02-04 22:35:19,118 - easytorch-training - INFO - val:: [val_time: 53.32 (s), val_loss: 1.8815, val_MAPE: -1969.6660, val_RMSE: 4.4943] -2022-02-04 22:37:02,033 - easytorch-training - INFO - test:: [test_time: -102.90 (s), test_loss: 1.9327, test_MAPE: -1149.6249, test_RMSE: 4.6354] -2022-02-04 22:37:02,100 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_015.pt saved -2022-02-04 22:37:02,101 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:39 -2022-02-04 22:37:02,101 - easytorch-training - INFO - epoch 16 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-04 22:39:41,939 - easytorch-training - INFO - train:: [train_time: 159.84 (s), lr: 2.00e-03, train_loss: 2.0350, train_MAPE: -170.1965, train_RMSE: 4.6172] -2022-02-04 22:40:34,214 - easytorch-training - INFO - val:: [val_time: 52.27 (s), val_loss: 1.8622, val_MAPE: -2052.4868, val_RMSE: 4.4004] -2022-02-04 22:42:16,715 - easytorch-training - INFO - test:: [test_time: -102.49 (s), test_loss: 1.9310, test_MAPE: -1150.7864, test_RMSE: 4.5960] -2022-02-04 22:42:16,775 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_016.pt saved -2022-02-04 22:42:16,775 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:29 -2022-02-04 22:42:16,776 - easytorch-training - INFO - epoch 17 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-04 22:44:57,102 - easytorch-training - INFO - train:: [train_time: 160.33 (s), lr: 2.00e-03, train_loss: 2.0149, train_MAPE: -178.6232, train_RMSE: 4.5664] -2022-02-04 22:45:49,514 - easytorch-training - INFO - val:: [val_time: 52.41 (s), val_loss: 1.8616, val_MAPE: -1888.7427, val_RMSE: 4.4280] -2022-02-04 22:47:33,229 - easytorch-training - INFO - test:: [test_time: -103.71 (s), test_loss: 1.9331, test_MAPE: -1152.8472, test_RMSE: 4.6412] -2022-02-04 22:47:33,271 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_017.pt saved -2022-02-04 22:47:33,272 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:42 -2022-02-04 22:47:33,272 - easytorch-training - INFO - epoch 18 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 22:50:13,282 - easytorch-training - INFO - train:: [train_time: 160.01 (s), lr: 2.00e-03, train_loss: 2.0091, train_MAPE: -155.8006, train_RMSE: 4.5595] -2022-02-04 22:51:05,686 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.8669, val_MAPE: -1995.8045, val_RMSE: 4.4456] -2022-02-04 22:52:48,461 - easytorch-training - INFO - test:: [test_time: -102.77 (s), test_loss: 1.9220, test_MAPE: -1111.1048, test_RMSE: 4.5988] -2022-02-04 22:52:48,528 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_018.pt saved -2022-02-04 22:52:48,529 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:40 -2022-02-04 22:52:48,529 - easytorch-training - INFO - epoch 19 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 22:55:28,672 - easytorch-training - INFO - train:: [train_time: 160.14 (s), lr: 2.00e-03, train_loss: 2.0076, train_MAPE: -162.0624, train_RMSE: 4.5572] -2022-02-04 22:56:21,280 - easytorch-training - INFO - val:: [val_time: 52.60 (s), val_loss: 1.8554, val_MAPE: -1983.5143, val_RMSE: 4.4455] -2022-02-04 22:58:04,850 - easytorch-training - INFO - test:: [test_time: -103.57 (s), test_loss: 1.9192, test_MAPE: -1172.8645, test_RMSE: 4.6241] -2022-02-04 22:58:04,912 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_019.pt saved -2022-02-04 22:58:04,913 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:50 -2022-02-04 22:58:04,913 - easytorch-training - INFO - epoch 20 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 23:00:45,080 - easytorch-training - INFO - train:: [train_time: 160.17 (s), lr: 2.00e-03, train_loss: 2.0035, train_MAPE: -179.0554, train_RMSE: 4.5511] -2022-02-04 23:01:37,525 - easytorch-training - INFO - val:: [val_time: 52.44 (s), val_loss: 1.8492, val_MAPE: -2015.2816, val_RMSE: 4.4132] -2022-02-04 23:03:20,718 - easytorch-training - INFO - test:: [test_time: -103.19 (s), test_loss: 1.9309, test_MAPE: -1121.0624, test_RMSE: 4.6432] -2022-02-04 23:03:20,782 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_020.pt saved -2022-02-04 23:03:20,786 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:53 -2022-02-04 23:03:20,786 - easytorch-training - INFO - epoch 21 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.35it/s] -2022-02-04 23:06:01,446 - easytorch-training - INFO - train:: [train_time: 160.66 (s), lr: 2.00e-03, train_loss: 1.9918, train_MAPE: -172.3374, train_RMSE: 4.5261] -2022-02-04 23:06:53,775 - easytorch-training - INFO - val:: [val_time: 52.32 (s), val_loss: 1.8629, val_MAPE: -1971.0701, val_RMSE: 4.4339] -2022-02-04 23:08:36,399 - easytorch-training - INFO - test:: [test_time: -102.62 (s), test_loss: 1.9460, test_MAPE: -1116.8440, test_RMSE: 4.6748] -2022-02-04 23:08:36,459 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_021.pt saved -2022-02-04 23:08:36,459 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:55 -2022-02-04 23:08:36,459 - easytorch-training - INFO - epoch 22 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.39it/s] -2022-02-04 23:11:15,631 - easytorch-training - INFO - train:: [train_time: 159.17 (s), lr: 2.00e-03, train_loss: 1.9893, train_MAPE: -179.8988, train_RMSE: 4.5155] -2022-02-04 23:12:08,666 - easytorch-training - INFO - val:: [val_time: 53.03 (s), val_loss: 1.8402, val_MAPE: -1988.6885, val_RMSE: 4.3925] -2022-02-04 23:13:51,667 - easytorch-training - INFO - test:: [test_time: -103.00 (s), test_loss: 1.9178, test_MAPE: -1105.5988, test_RMSE: 4.6206] -2022-02-04 23:13:51,725 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_022.pt saved -2022-02-04 23:13:51,726 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:53 -2022-02-04 23:13:51,726 - easytorch-training - INFO - epoch 23 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-04 23:16:31,268 - easytorch-training - INFO - train:: [train_time: 159.54 (s), lr: 2.00e-03, train_loss: 1.9803, train_MAPE: -182.2361, train_RMSE: 4.4984] -2022-02-04 23:17:23,573 - easytorch-training - INFO - val:: [val_time: 52.30 (s), val_loss: 1.8607, val_MAPE: -1957.9315, val_RMSE: 4.4295] -2022-02-04 23:19:06,106 - easytorch-training - INFO - test:: [test_time: -102.53 (s), test_loss: 1.9372, test_MAPE: -1078.5459, test_RMSE: 4.6531] -2022-02-04 23:19:06,141 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_023.pt saved -2022-02-04 23:19:06,141 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:43 -2022-02-04 23:19:06,141 - easytorch-training - INFO - epoch 24 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 23:21:46,144 - easytorch-training - INFO - train:: [train_time: 160.00 (s), lr: 2.00e-03, train_loss: 1.9748, train_MAPE: -176.1339, train_RMSE: 4.4855] -2022-02-04 23:22:38,642 - easytorch-training - INFO - val:: [val_time: 52.49 (s), val_loss: 1.8201, val_MAPE: -1943.1976, val_RMSE: 4.3331] -2022-02-04 23:24:21,327 - easytorch-training - INFO - test:: [test_time: -102.68 (s), test_loss: 1.8866, test_MAPE: -1128.1744, test_RMSE: 4.5162] -2022-02-04 23:24:21,387 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_024.pt saved -2022-02-04 23:24:21,387 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:41 -2022-02-04 23:24:21,387 - easytorch-training - INFO - epoch 25 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-04 23:27:01,665 - easytorch-training - INFO - train:: [train_time: 160.28 (s), lr: 2.00e-03, train_loss: 1.9768, train_MAPE: -184.2469, train_RMSE: 4.4890] -2022-02-04 23:27:54,226 - easytorch-training - INFO - val:: [val_time: 52.56 (s), val_loss: 1.8629, val_MAPE: -1866.1216, val_RMSE: 4.4043] -2022-02-04 23:29:37,560 - easytorch-training - INFO - test:: [test_time: -103.32 (s), test_loss: 1.9517, test_MAPE: -1157.0570, test_RMSE: 4.6656] -2022-02-04 23:29:37,625 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_025.pt saved -2022-02-04 23:29:37,626 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:47 -2022-02-04 23:29:37,626 - easytorch-training - INFO - epoch 26 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-04 23:32:17,486 - easytorch-training - INFO - train:: [train_time: 159.86 (s), lr: 2.00e-03, train_loss: 1.9652, train_MAPE: -173.5507, train_RMSE: 4.4611] -2022-02-04 23:33:09,942 - easytorch-training - INFO - val:: [val_time: 52.45 (s), val_loss: 1.8385, val_MAPE: -1890.3923, val_RMSE: 4.3662] -2022-02-04 23:34:52,692 - easytorch-training - INFO - test:: [test_time: -102.74 (s), test_loss: 1.9309, test_MAPE: -1133.0558, test_RMSE: 4.6338] -2022-02-04 23:34:52,727 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_026.pt saved -2022-02-04 23:34:52,728 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:44 -2022-02-04 23:34:52,728 - easytorch-training - INFO - epoch 27 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.35it/s] -2022-02-04 23:37:33,396 - easytorch-training - INFO - train:: [train_time: 160.67 (s), lr: 2.00e-03, train_loss: 1.9644, train_MAPE: -183.0319, train_RMSE: 4.4568] -2022-02-04 23:38:26,164 - easytorch-training - INFO - val:: [val_time: 52.76 (s), val_loss: 1.8038, val_MAPE: -1995.4580, val_RMSE: 4.3056] -2022-02-04 23:40:09,197 - easytorch-training - INFO - test:: [test_time: -103.03 (s), test_loss: 1.8872, test_MAPE: -1109.1215, test_RMSE: 4.5369] -2022-02-04 23:40:09,258 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_027.pt saved -2022-02-04 23:40:09,258 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:52 -2022-02-04 23:40:09,258 - easytorch-training - INFO - epoch 28 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-04 23:42:48,589 - easytorch-training - INFO - train:: [train_time: 159.33 (s), lr: 2.00e-03, train_loss: 1.9575, train_MAPE: -179.1168, train_RMSE: 4.4422] -2022-02-04 23:43:41,570 - easytorch-training - INFO - val:: [val_time: 52.98 (s), val_loss: 1.8102, val_MAPE: -1989.7661, val_RMSE: 4.3259] -2022-02-04 23:45:23,976 - easytorch-training - INFO - test:: [test_time: -102.40 (s), test_loss: 1.8838, test_MAPE: -1108.2213, test_RMSE: 4.5301] -2022-02-04 23:45:24,033 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_028.pt saved -2022-02-04 23:45:24,034 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:47 -2022-02-04 23:45:24,034 - easytorch-training - INFO - epoch 29 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-04 23:48:03,932 - easytorch-training - INFO - train:: [train_time: 159.90 (s), lr: 2.00e-03, train_loss: 1.9586, train_MAPE: -175.4370, train_RMSE: 4.4510] -2022-02-04 23:48:56,335 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.8221, val_MAPE: -1916.5866, val_RMSE: 4.3575] -2022-02-04 23:50:38,997 - easytorch-training - INFO - test:: [test_time: -102.66 (s), test_loss: 1.9085, test_MAPE: -1070.1739, test_RMSE: 4.6049] -2022-02-04 23:50:39,055 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_029.pt saved -2022-02-04 23:50:39,056 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:44 -2022-02-04 23:50:39,056 - easytorch-training - INFO - epoch 30 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 23:53:19,186 - easytorch-training - INFO - train:: [train_time: 160.13 (s), lr: 2.00e-03, train_loss: 1.9544, train_MAPE: -176.4230, train_RMSE: 4.4359] -2022-02-04 23:54:11,736 - easytorch-training - INFO - val:: [val_time: 52.54 (s), val_loss: 1.8117, val_MAPE: -1955.3254, val_RMSE: 4.3332] -2022-02-04 23:55:54,262 - easytorch-training - INFO - test:: [test_time: -102.52 (s), test_loss: 1.8921, test_MAPE: -1111.4977, test_RMSE: 4.5625] -2022-02-04 23:55:54,303 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_030.pt saved -2022-02-04 23:55:54,306 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:42 -2022-02-04 23:55:54,306 - easytorch-training - INFO - epoch 31 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-04 23:58:34,437 - easytorch-training - INFO - train:: [train_time: 160.13 (s), lr: 2.00e-03, train_loss: 1.9533, train_MAPE: -172.3852, train_RMSE: 4.4331] -2022-02-04 23:59:26,724 - easytorch-training - INFO - val:: [val_time: 52.28 (s), val_loss: 1.8044, val_MAPE: -1860.7205, val_RMSE: 4.3129] -2022-02-05 00:01:09,480 - easytorch-training - INFO - test:: [test_time: -102.75 (s), test_loss: 1.8852, test_MAPE: -1117.5367, test_RMSE: 4.5454] -2022-02-05 00:01:09,540 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_031.pt saved -2022-02-05 00:01:09,541 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:41 -2022-02-05 00:01:09,541 - easytorch-training - INFO - epoch 32 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 00:03:49,535 - easytorch-training - INFO - train:: [train_time: 159.99 (s), lr: 2.00e-03, train_loss: 1.9482, train_MAPE: -176.7316, train_RMSE: 4.4184] -2022-02-05 00:04:42,083 - easytorch-training - INFO - val:: [val_time: 52.54 (s), val_loss: 1.8181, val_MAPE: -1944.0443, val_RMSE: 4.3400] -2022-02-05 00:06:25,307 - easytorch-training - INFO - test:: [test_time: -103.22 (s), test_loss: 1.8934, test_MAPE: -1090.0796, test_RMSE: 4.5538] -2022-02-05 00:06:25,368 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_032.pt saved -2022-02-05 00:06:25,368 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:43 -2022-02-05 00:06:25,368 - easytorch-training - INFO - epoch 33 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 00:09:05,318 - easytorch-training - INFO - train:: [train_time: 159.95 (s), lr: 2.00e-03, train_loss: 1.9485, train_MAPE: -174.9626, train_RMSE: 4.4222] -2022-02-05 00:09:58,201 - easytorch-training - INFO - val:: [val_time: 52.88 (s), val_loss: 1.8192, val_MAPE: -2072.4527, val_RMSE: 4.3211] -2022-02-05 00:11:40,849 - easytorch-training - INFO - test:: [test_time: -102.64 (s), test_loss: 1.9245, test_MAPE: -1109.3237, test_RMSE: 4.6174] -2022-02-05 00:11:40,910 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_033.pt saved -2022-02-05 00:11:40,910 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:44 -2022-02-05 00:11:40,910 - easytorch-training - INFO - epoch 34 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 00:14:21,290 - easytorch-training - INFO - train:: [train_time: 160.38 (s), lr: 2.00e-03, train_loss: 1.9434, train_MAPE: -193.7160, train_RMSE: 4.4149] -2022-02-05 00:15:13,740 - easytorch-training - INFO - val:: [val_time: 52.44 (s), val_loss: 1.8399, val_MAPE: -1938.2437, val_RMSE: 4.3911] -2022-02-05 00:16:57,479 - easytorch-training - INFO - test:: [test_time: -103.73 (s), test_loss: 1.9300, test_MAPE: -1105.2706, test_RMSE: 4.6624] -2022-02-05 00:16:57,548 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_034.pt saved -2022-02-05 00:16:57,548 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:51 -2022-02-05 00:16:57,549 - easytorch-training - INFO - epoch 35 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 00:19:37,395 - easytorch-training - INFO - train:: [train_time: 159.85 (s), lr: 2.00e-03, train_loss: 1.9395, train_MAPE: -177.9268, train_RMSE: 4.3983] -2022-02-05 00:20:29,724 - easytorch-training - INFO - val:: [val_time: 52.32 (s), val_loss: 1.8103, val_MAPE: -1952.1815, val_RMSE: 4.3190] -2022-02-05 00:22:12,461 - easytorch-training - INFO - test:: [test_time: -102.73 (s), test_loss: 1.9004, test_MAPE: -1087.0947, test_RMSE: 4.5766] -2022-02-05 00:22:12,526 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_035.pt saved -2022-02-05 00:22:12,527 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:48 -2022-02-05 00:22:12,527 - easytorch-training - INFO - epoch 36 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 00:24:52,833 - easytorch-training - INFO - train:: [train_time: 160.31 (s), lr: 2.00e-03, train_loss: 1.9460, train_MAPE: -149.5190, train_RMSE: 4.4193] -2022-02-05 00:25:45,252 - easytorch-training - INFO - val:: [val_time: 52.41 (s), val_loss: 1.8112, val_MAPE: -1866.5386, val_RMSE: 4.3025] -2022-02-05 00:27:28,529 - easytorch-training - INFO - test:: [test_time: -103.27 (s), test_loss: 1.8865, test_MAPE: -1107.7150, test_RMSE: 4.5230] -2022-02-05 00:27:28,588 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_036.pt saved -2022-02-05 00:27:28,588 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:51 -2022-02-05 00:27:28,588 - easytorch-training - INFO - epoch 37 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 00:30:08,590 - easytorch-training - INFO - train:: [train_time: 160.00 (s), lr: 2.00e-03, train_loss: 1.9377, train_MAPE: -187.0026, train_RMSE: 4.3938] -2022-02-05 00:31:00,904 - easytorch-training - INFO - val:: [val_time: 52.31 (s), val_loss: 1.8251, val_MAPE: -1863.5959, val_RMSE: 4.3564] -2022-02-05 00:32:43,458 - easytorch-training - INFO - test:: [test_time: -102.55 (s), test_loss: 1.9119, test_MAPE: -1119.3372, test_RMSE: 4.6106] -2022-02-05 00:32:43,511 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_037.pt saved -2022-02-05 00:32:43,511 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:48 -2022-02-05 00:32:43,512 - easytorch-training - INFO - epoch 38 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 00:35:23,189 - easytorch-training - INFO - train:: [train_time: 159.68 (s), lr: 2.00e-03, train_loss: 1.9325, train_MAPE: -177.5933, train_RMSE: 4.3855] -2022-02-05 00:36:15,513 - easytorch-training - INFO - val:: [val_time: 52.32 (s), val_loss: 1.8195, val_MAPE: -1955.1603, val_RMSE: 4.3329] -2022-02-05 00:37:58,320 - easytorch-training - INFO - test:: [test_time: -102.80 (s), test_loss: 1.9038, test_MAPE: -1095.2782, test_RMSE: 4.5781] -2022-02-05 00:37:58,380 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_038.pt saved -2022-02-05 00:37:58,381 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:44 -2022-02-05 00:37:58,381 - easytorch-training - INFO - epoch 39 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 00:40:38,644 - easytorch-training - INFO - train:: [train_time: 160.26 (s), lr: 2.00e-03, train_loss: 1.9322, train_MAPE: -164.4062, train_RMSE: 4.3864] -2022-02-05 00:41:31,864 - easytorch-training - INFO - val:: [val_time: 53.22 (s), val_loss: 1.7919, val_MAPE: -1968.2086, val_RMSE: 4.3048] -2022-02-05 00:43:14,746 - easytorch-training - INFO - test:: [test_time: -102.87 (s), test_loss: 1.8769, test_MAPE: -1080.2502, test_RMSE: 4.5486] -2022-02-05 00:43:14,807 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_039.pt saved -2022-02-05 00:43:14,808 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:49 -2022-02-05 00:43:14,808 - easytorch-training - INFO - epoch 40 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 00:45:54,840 - easytorch-training - INFO - train:: [train_time: 160.03 (s), lr: 2.00e-03, train_loss: 1.9291, train_MAPE: -162.7300, train_RMSE: 4.3756] -2022-02-05 00:46:47,317 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.8120, val_MAPE: -1887.2999, val_RMSE: 4.2851] -2022-02-05 00:48:29,805 - easytorch-training - INFO - test:: [test_time: -102.48 (s), test_loss: 1.8925, test_MAPE: -1124.1400, test_RMSE: 4.5274] -2022-02-05 00:48:29,845 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_040.pt saved -2022-02-05 00:48:29,848 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:47 -2022-02-05 00:48:29,848 - easytorch-training - INFO - epoch 41 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 00:51:10,468 - easytorch-training - INFO - train:: [train_time: 160.62 (s), lr: 2.00e-03, train_loss: 1.9263, train_MAPE: -173.7215, train_RMSE: 4.3693] -2022-02-05 00:52:02,940 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.7979, val_MAPE: -1864.4843, val_RMSE: 4.2662] -2022-02-05 00:53:46,047 - easytorch-training - INFO - test:: [test_time: -103.10 (s), test_loss: 1.8962, test_MAPE: -1078.4138, test_RMSE: 4.5424] -2022-02-05 00:53:46,107 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_041.pt saved -2022-02-05 00:53:46,107 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:51 -2022-02-05 00:53:46,107 - easytorch-training - INFO - epoch 42 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 00:56:25,862 - easytorch-training - INFO - train:: [train_time: 159.75 (s), lr: 2.00e-03, train_loss: 1.9278, train_MAPE: -173.3493, train_RMSE: 4.3762] -2022-02-05 00:57:18,278 - easytorch-training - INFO - val:: [val_time: 52.41 (s), val_loss: 1.8234, val_MAPE: -1966.9485, val_RMSE: 4.3302] -2022-02-05 00:59:00,684 - easytorch-training - INFO - test:: [test_time: -102.40 (s), test_loss: 1.9092, test_MAPE: -1068.1823, test_RMSE: 4.5828] -2022-02-05 00:59:00,733 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_042.pt saved -2022-02-05 00:59:00,734 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:47 -2022-02-05 00:59:00,734 - easytorch-training - INFO - epoch 43 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 01:01:40,491 - easytorch-training - INFO - train:: [train_time: 159.76 (s), lr: 2.00e-03, train_loss: 1.9310, train_MAPE: -185.1038, train_RMSE: 4.3864] -2022-02-05 01:02:33,017 - easytorch-training - INFO - val:: [val_time: 52.52 (s), val_loss: 1.8177, val_MAPE: -1986.4611, val_RMSE: 4.3278] -2022-02-05 01:04:15,578 - easytorch-training - INFO - test:: [test_time: -102.56 (s), test_loss: 1.9134, test_MAPE: -1156.1311, test_RMSE: 4.6254] -2022-02-05 01:04:15,633 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_043.pt saved -2022-02-05 01:04:15,633 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:44 -2022-02-05 01:04:15,633 - easytorch-training - INFO - epoch 44 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 01:06:55,625 - easytorch-training - INFO - train:: [train_time: 159.99 (s), lr: 2.00e-03, train_loss: 1.9189, train_MAPE: -189.1369, train_RMSE: 4.3534] -2022-02-05 01:07:48,470 - easytorch-training - INFO - val:: [val_time: 52.84 (s), val_loss: 1.8113, val_MAPE: -1917.9640, val_RMSE: 4.2960] -2022-02-05 01:09:30,757 - easytorch-training - INFO - test:: [test_time: -102.28 (s), test_loss: 1.9118, test_MAPE: -1103.4024, test_RMSE: 4.5946] -2022-02-05 01:09:30,798 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_044.pt saved -2022-02-05 01:09:30,798 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:42 -2022-02-05 01:09:30,799 - easytorch-training - INFO - epoch 45 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 01:12:10,674 - easytorch-training - INFO - train:: [train_time: 159.87 (s), lr: 2.00e-03, train_loss: 1.9228, train_MAPE: -190.7484, train_RMSE: 4.3664] -2022-02-05 01:13:02,942 - easytorch-training - INFO - val:: [val_time: 52.26 (s), val_loss: 1.8034, val_MAPE: -1935.9716, val_RMSE: 4.3122] -2022-02-05 01:14:45,706 - easytorch-training - INFO - test:: [test_time: -102.75 (s), test_loss: 1.8899, test_MAPE: -1145.5725, test_RMSE: 4.5475] -2022-02-05 01:14:45,767 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_045.pt saved -2022-02-05 01:14:45,767 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:40 -2022-02-05 01:14:45,767 - easytorch-training - INFO - epoch 46 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 01:17:25,296 - easytorch-training - INFO - train:: [train_time: 159.53 (s), lr: 2.00e-03, train_loss: 1.9163, train_MAPE: -184.8628, train_RMSE: 4.3478] -2022-02-05 01:18:18,030 - easytorch-training - INFO - val:: [val_time: 52.73 (s), val_loss: 1.8053, val_MAPE: -2023.4123, val_RMSE: 4.3166] -2022-02-05 01:20:02,482 - easytorch-training - INFO - test:: [test_time: -104.45 (s), test_loss: 1.8968, test_MAPE: -1113.8839, test_RMSE: 4.5784] -2022-02-05 01:20:02,544 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_046.pt saved -2022-02-05 01:20:02,544 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:46 -2022-02-05 01:20:02,544 - easytorch-training - INFO - epoch 47 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 01:22:42,051 - easytorch-training - INFO - train:: [train_time: 159.51 (s), lr: 2.00e-03, train_loss: 1.9142, train_MAPE: -172.6202, train_RMSE: 4.3403] -2022-02-05 01:23:34,391 - easytorch-training - INFO - val:: [val_time: 52.33 (s), val_loss: 1.8092, val_MAPE: -1894.6442, val_RMSE: 4.3186] -2022-02-05 01:25:18,543 - easytorch-training - INFO - test:: [test_time: -104.15 (s), test_loss: 1.8889, test_MAPE: -1141.0918, test_RMSE: 4.5493] -2022-02-05 01:25:18,607 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_047.pt saved -2022-02-05 01:25:18,607 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:49 -2022-02-05 01:25:18,607 - easytorch-training - INFO - epoch 48 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 01:27:58,801 - easytorch-training - INFO - train:: [train_time: 160.19 (s), lr: 2.00e-03, train_loss: 1.9093, train_MAPE: -160.6746, train_RMSE: 4.3287] -2022-02-05 01:28:51,300 - easytorch-training - INFO - val:: [val_time: 52.49 (s), val_loss: 1.7882, val_MAPE: -1845.9101, val_RMSE: 4.2762] -2022-02-05 01:30:34,179 - easytorch-training - INFO - test:: [test_time: -102.87 (s), test_loss: 1.8895, test_MAPE: -1149.2306, test_RMSE: 4.5732] -2022-02-05 01:30:34,239 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_048.pt saved -2022-02-05 01:30:34,239 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:49 -2022-02-05 01:30:34,239 - easytorch-training - INFO - epoch 49 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 01:33:14,399 - easytorch-training - INFO - train:: [train_time: 160.16 (s), lr: 2.00e-03, train_loss: 1.9112, train_MAPE: -179.8531, train_RMSE: 4.3291] -2022-02-05 01:34:06,781 - easytorch-training - INFO - val:: [val_time: 52.38 (s), val_loss: 1.8030, val_MAPE: -1931.4430, val_RMSE: 4.3127] -2022-02-05 01:35:50,289 - easytorch-training - INFO - test:: [test_time: -103.50 (s), test_loss: 1.9073, test_MAPE: -1145.2729, test_RMSE: 4.6144] -2022-02-05 01:35:50,353 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_049.pt saved -2022-02-05 01:35:50,354 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:52 -2022-02-05 01:35:50,354 - easytorch-training - INFO - epoch 50 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 01:38:30,215 - easytorch-training - INFO - train:: [train_time: 159.86 (s), lr: 2.00e-03, train_loss: 1.9075, train_MAPE: -192.4070, train_RMSE: 4.3310] -2022-02-05 01:39:22,643 - easytorch-training - INFO - val:: [val_time: 52.42 (s), val_loss: 1.7881, val_MAPE: -2062.0095, val_RMSE: 4.3181] -2022-02-05 01:41:05,109 - easytorch-training - INFO - test:: [test_time: -102.45 (s), test_loss: 1.8799, test_MAPE: -1085.8471, test_RMSE: 4.5757] -2022-02-05 01:41:05,152 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_050.pt saved -2022-02-05 01:41:05,155 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:49 -2022-02-05 01:41:05,155 - easytorch-training - INFO - epoch 51 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.35it/s] -2022-02-05 01:43:45,820 - easytorch-training - INFO - train:: [train_time: 160.66 (s), lr: 1.00e-03, train_loss: 1.8953, train_MAPE: -159.5399, train_RMSE: 4.2995] -2022-02-05 01:44:38,109 - easytorch-training - INFO - val:: [val_time: 52.28 (s), val_loss: 1.7738, val_MAPE: -1988.0187, val_RMSE: 4.2480] -2022-02-05 01:46:21,449 - easytorch-training - INFO - test:: [test_time: -103.33 (s), test_loss: 1.8751, test_MAPE: -1127.7382, test_RMSE: 4.5364] -2022-02-05 01:46:21,507 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_051.pt saved -2022-02-05 01:46:21,507 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:52 -2022-02-05 01:46:21,507 - easytorch-training - INFO - epoch 52 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 01:49:01,591 - easytorch-training - INFO - train:: [train_time: 160.08 (s), lr: 1.00e-03, train_loss: 1.8954, train_MAPE: -161.8258, train_RMSE: 4.2975] -2022-02-05 01:49:54,005 - easytorch-training - INFO - val:: [val_time: 52.41 (s), val_loss: 1.7878, val_MAPE: -1928.1143, val_RMSE: 4.2795] -2022-02-05 01:51:36,972 - easytorch-training - INFO - test:: [test_time: -102.96 (s), test_loss: 1.8975, test_MAPE: -1103.8418, test_RMSE: 4.5951] -2022-02-05 01:51:37,040 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_052.pt saved -2022-02-05 01:51:37,040 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:52 -2022-02-05 01:51:37,040 - easytorch-training - INFO - epoch 53 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 01:54:17,473 - easytorch-training - INFO - train:: [train_time: 160.43 (s), lr: 1.00e-03, train_loss: 1.8842, train_MAPE: -194.1450, train_RMSE: 4.2698] -2022-02-05 01:55:09,928 - easytorch-training - INFO - val:: [val_time: 52.45 (s), val_loss: 1.7773, val_MAPE: -1933.1567, val_RMSE: 4.2608] -2022-02-05 01:56:52,390 - easytorch-training - INFO - test:: [test_time: -102.46 (s), test_loss: 1.8829, test_MAPE: -1145.6221, test_RMSE: 4.5584] -2022-02-05 01:56:52,451 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_053.pt saved -2022-02-05 01:56:52,452 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:52 -2022-02-05 01:56:52,452 - easytorch-training - INFO - epoch 54 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 01:59:32,393 - easytorch-training - INFO - train:: [train_time: 159.94 (s), lr: 1.00e-03, train_loss: 1.8892, train_MAPE: -171.3288, train_RMSE: 4.2890] -2022-02-05 02:00:25,122 - easytorch-training - INFO - val:: [val_time: 52.72 (s), val_loss: 1.7820, val_MAPE: -1890.6214, val_RMSE: 4.2595] -2022-02-05 02:02:08,696 - easytorch-training - INFO - test:: [test_time: -103.57 (s), test_loss: 1.8783, test_MAPE: -1044.4933, test_RMSE: 4.5364] -2022-02-05 02:02:08,761 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_054.pt saved -2022-02-05 02:02:08,762 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:55 -2022-02-05 02:02:08,762 - easytorch-training - INFO - epoch 55 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 02:04:48,728 - easytorch-training - INFO - train:: [train_time: 159.97 (s), lr: 1.00e-03, train_loss: 1.8903, train_MAPE: -171.4746, train_RMSE: 4.2880] -2022-02-05 02:05:41,274 - easytorch-training - INFO - val:: [val_time: 52.54 (s), val_loss: 1.7921, val_MAPE: -1953.6828, val_RMSE: 4.2917] -2022-02-05 02:07:25,538 - easytorch-training - INFO - test:: [test_time: -104.26 (s), test_loss: 1.8891, test_MAPE: -1057.6607, test_RMSE: 4.5754] -2022-02-05 02:07:25,598 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_055.pt saved -2022-02-05 02:07:25,598 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:50:00 -2022-02-05 02:07:25,598 - easytorch-training - INFO - epoch 56 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 02:10:05,294 - easytorch-training - INFO - train:: [train_time: 159.70 (s), lr: 1.00e-03, train_loss: 1.8841, train_MAPE: -161.1963, train_RMSE: 4.2763] -2022-02-05 02:10:57,573 - easytorch-training - INFO - val:: [val_time: 52.27 (s), val_loss: 1.7881, val_MAPE: -1859.4566, val_RMSE: 4.2789] -2022-02-05 02:12:40,001 - easytorch-training - INFO - test:: [test_time: -102.42 (s), test_loss: 1.8908, test_MAPE: -1073.8927, test_RMSE: 4.5792] -2022-02-05 02:12:40,062 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_056.pt saved -2022-02-05 02:12:40,062 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:56 -2022-02-05 02:12:40,062 - easytorch-training - INFO - epoch 57 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 02:15:20,001 - easytorch-training - INFO - train:: [train_time: 159.94 (s), lr: 1.00e-03, train_loss: 1.8838, train_MAPE: -184.9191, train_RMSE: 4.2770] -2022-02-05 02:16:12,438 - easytorch-training - INFO - val:: [val_time: 52.43 (s), val_loss: 1.7853, val_MAPE: -2016.3092, val_RMSE: 4.2706] -2022-02-05 02:17:55,054 - easytorch-training - INFO - test:: [test_time: -102.61 (s), test_loss: 1.8885, test_MAPE: -1142.6837, test_RMSE: 4.5673] -2022-02-05 02:17:55,112 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_057.pt saved -2022-02-05 02:17:55,112 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:54 -2022-02-05 02:17:55,112 - easytorch-training - INFO - epoch 58 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 02:20:34,766 - easytorch-training - INFO - train:: [train_time: 159.65 (s), lr: 1.00e-03, train_loss: 1.8848, train_MAPE: -186.8955, train_RMSE: 4.2774] -2022-02-05 02:21:27,974 - easytorch-training - INFO - val:: [val_time: 53.20 (s), val_loss: 1.7867, val_MAPE: -1964.6389, val_RMSE: 4.2737] -2022-02-05 02:23:10,642 - easytorch-training - INFO - test:: [test_time: -102.66 (s), test_loss: 1.9001, test_MAPE: -1158.8105, test_RMSE: 4.6030] -2022-02-05 02:23:10,698 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_058.pt saved -2022-02-05 02:23:10,699 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:54 -2022-02-05 02:23:10,699 - easytorch-training - INFO - epoch 59 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 02:25:50,420 - easytorch-training - INFO - train:: [train_time: 159.72 (s), lr: 1.00e-03, train_loss: 1.8839, train_MAPE: -177.6217, train_RMSE: 4.2740] -2022-02-05 02:26:42,934 - easytorch-training - INFO - val:: [val_time: 52.51 (s), val_loss: 1.7807, val_MAPE: -1940.1255, val_RMSE: 4.2787] -2022-02-05 02:28:25,402 - easytorch-training - INFO - test:: [test_time: -102.46 (s), test_loss: 1.8696, test_MAPE: -1069.2587, test_RMSE: 4.5336] -2022-02-05 02:28:25,467 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_059.pt saved -2022-02-05 02:28:25,467 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:52 -2022-02-05 02:28:25,467 - easytorch-training - INFO - epoch 60 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 02:31:05,729 - easytorch-training - INFO - train:: [train_time: 160.26 (s), lr: 1.00e-03, train_loss: 1.8879, train_MAPE: -157.9289, train_RMSE: 4.2867] -2022-02-05 02:31:58,129 - easytorch-training - INFO - val:: [val_time: 52.39 (s), val_loss: 1.7771, val_MAPE: -1950.5794, val_RMSE: 4.2547] -2022-02-05 02:33:40,760 - easytorch-training - INFO - test:: [test_time: -102.62 (s), test_loss: 1.8704, test_MAPE: -1106.1091, test_RMSE: 4.5295] -2022-02-05 02:33:40,817 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_060.pt saved -2022-02-05 02:33:40,821 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:51 -2022-02-05 02:33:40,821 - easytorch-training - INFO - epoch 61 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 02:36:20,816 - easytorch-training - INFO - train:: [train_time: 159.99 (s), lr: 1.00e-03, train_loss: 1.8806, train_MAPE: -166.2913, train_RMSE: 4.2659] -2022-02-05 02:37:14,045 - easytorch-training - INFO - val:: [val_time: 53.22 (s), val_loss: 1.7816, val_MAPE: -1960.9194, val_RMSE: 4.2606] -2022-02-05 02:38:56,771 - easytorch-training - INFO - test:: [test_time: -102.72 (s), test_loss: 1.8750, test_MAPE: -1144.5133, test_RMSE: 4.5226] -2022-02-05 02:38:56,808 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_061.pt saved -2022-02-05 02:38:56,808 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:53 -2022-02-05 02:38:56,808 - easytorch-training - INFO - epoch 62 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 02:41:36,985 - easytorch-training - INFO - train:: [train_time: 160.18 (s), lr: 1.00e-03, train_loss: 1.8788, train_MAPE: -172.6013, train_RMSE: 4.2684] -2022-02-05 02:42:29,297 - easytorch-training - INFO - val:: [val_time: 52.31 (s), val_loss: 1.7826, val_MAPE: -1895.9042, val_RMSE: 4.2778] -2022-02-05 02:44:12,227 - easytorch-training - INFO - test:: [test_time: -102.92 (s), test_loss: 1.8754, test_MAPE: -1097.9341, test_RMSE: 4.5472] -2022-02-05 02:44:12,268 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_062.pt saved -2022-02-05 02:44:12,268 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:53 -2022-02-05 02:44:12,268 - easytorch-training - INFO - epoch 63 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 02:46:51,919 - easytorch-training - INFO - train:: [train_time: 159.65 (s), lr: 1.00e-03, train_loss: 1.8789, train_MAPE: -187.8067, train_RMSE: 4.2609] -2022-02-05 02:47:44,560 - easytorch-training - INFO - val:: [val_time: 52.63 (s), val_loss: 1.7747, val_MAPE: -1976.7937, val_RMSE: 4.2520] -2022-02-05 02:49:27,110 - easytorch-training - INFO - test:: [test_time: -102.55 (s), test_loss: 1.8880, test_MAPE: -1083.8575, test_RMSE: 4.5778] -2022-02-05 02:49:27,170 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_063.pt saved -2022-02-05 02:49:27,171 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:51 -2022-02-05 02:49:27,171 - easytorch-training - INFO - epoch 64 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 02:52:07,195 - easytorch-training - INFO - train:: [train_time: 160.02 (s), lr: 1.00e-03, train_loss: 1.8756, train_MAPE: -186.5097, train_RMSE: 4.2535] -2022-02-05 02:52:59,584 - easytorch-training - INFO - val:: [val_time: 52.38 (s), val_loss: 1.7761, val_MAPE: -1956.7242, val_RMSE: 4.2576] -2022-02-05 02:54:42,049 - easytorch-training - INFO - test:: [test_time: -102.46 (s), test_loss: 1.8849, test_MAPE: -1186.8837, test_RMSE: 4.5728] -2022-02-05 02:54:42,103 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_064.pt saved -2022-02-05 02:54:42,103 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:49 -2022-02-05 02:54:42,103 - easytorch-training - INFO - epoch 65 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 02:57:21,854 - easytorch-training - INFO - train:: [train_time: 159.75 (s), lr: 1.00e-03, train_loss: 1.8734, train_MAPE: -200.4682, train_RMSE: 4.2511] -2022-02-05 02:58:15,080 - easytorch-training - INFO - val:: [val_time: 53.22 (s), val_loss: 1.7676, val_MAPE: -1902.5321, val_RMSE: 4.2334] -2022-02-05 02:59:57,519 - easytorch-training - INFO - test:: [test_time: -102.43 (s), test_loss: 1.8789, test_MAPE: -1073.9773, test_RMSE: 4.5555] -2022-02-05 02:59:57,579 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_065.pt saved -2022-02-05 02:59:57,579 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:49 -2022-02-05 02:59:57,580 - easytorch-training - INFO - epoch 66 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 03:02:37,249 - easytorch-training - INFO - train:: [train_time: 159.67 (s), lr: 1.00e-03, train_loss: 1.8720, train_MAPE: -174.5698, train_RMSE: 4.2425] -2022-02-05 03:03:29,610 - easytorch-training - INFO - val:: [val_time: 52.36 (s), val_loss: 1.7855, val_MAPE: -1949.2660, val_RMSE: 4.2732] -2022-02-05 03:05:12,994 - easytorch-training - INFO - test:: [test_time: -103.38 (s), test_loss: 1.9038, test_MAPE: -1100.7223, test_RMSE: 4.6170] -2022-02-05 03:05:13,055 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_066.pt saved -2022-02-05 03:05:13,055 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:49 -2022-02-05 03:05:13,055 - easytorch-training - INFO - epoch 67 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 03:07:53,160 - easytorch-training - INFO - train:: [train_time: 160.10 (s), lr: 1.00e-03, train_loss: 1.8711, train_MAPE: -160.6261, train_RMSE: 4.2413] -2022-02-05 03:08:45,456 - easytorch-training - INFO - val:: [val_time: 52.29 (s), val_loss: 1.7754, val_MAPE: -2022.5310, val_RMSE: 4.2675] -2022-02-05 03:10:27,872 - easytorch-training - INFO - test:: [test_time: -102.41 (s), test_loss: 1.8869, test_MAPE: -1115.8400, test_RMSE: 4.5925] -2022-02-05 03:10:27,932 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_067.pt saved -2022-02-05 03:10:27,932 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:47 -2022-02-05 03:10:27,932 - easytorch-training - INFO - epoch 68 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 03:13:07,766 - easytorch-training - INFO - train:: [train_time: 159.83 (s), lr: 1.00e-03, train_loss: 1.8769, train_MAPE: -180.6287, train_RMSE: 4.2577] -2022-02-05 03:14:00,282 - easytorch-training - INFO - val:: [val_time: 52.51 (s), val_loss: 1.7898, val_MAPE: -1955.1814, val_RMSE: 4.2845] -2022-02-05 03:15:43,276 - easytorch-training - INFO - test:: [test_time: -102.99 (s), test_loss: 1.8874, test_MAPE: -1095.0525, test_RMSE: 4.5737] -2022-02-05 03:15:43,337 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_068.pt saved -2022-02-05 03:15:43,337 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:47 -2022-02-05 03:15:43,337 - easytorch-training - INFO - epoch 69 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 03:18:23,139 - easytorch-training - INFO - train:: [train_time: 159.80 (s), lr: 1.00e-03, train_loss: 1.8784, train_MAPE: -158.2373, train_RMSE: 4.2614] -2022-02-05 03:19:15,760 - easytorch-training - INFO - val:: [val_time: 52.62 (s), val_loss: 1.8112, val_MAPE: -1930.4748, val_RMSE: 4.3329] -2022-02-05 03:20:58,114 - easytorch-training - INFO - test:: [test_time: -102.35 (s), test_loss: 1.9120, test_MAPE: -1149.3823, test_RMSE: 4.6367] -2022-02-05 03:20:58,169 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_069.pt saved -2022-02-05 03:20:58,169 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:45 -2022-02-05 03:20:58,169 - easytorch-training - INFO - epoch 70 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 03:23:38,222 - easytorch-training - INFO - train:: [train_time: 160.05 (s), lr: 1.00e-03, train_loss: 1.8719, train_MAPE: -173.0616, train_RMSE: 4.2429] -2022-02-05 03:24:30,482 - easytorch-training - INFO - val:: [val_time: 52.25 (s), val_loss: 1.7716, val_MAPE: -1991.7415, val_RMSE: 4.2531] -2022-02-05 03:26:13,519 - easytorch-training - INFO - test:: [test_time: -103.03 (s), test_loss: 1.8639, test_MAPE: -1102.4900, test_RMSE: 4.5126] -2022-02-05 03:26:13,561 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_070.pt saved -2022-02-05 03:26:13,565 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:45 -2022-02-05 03:26:13,565 - easytorch-training - INFO - epoch 71 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 03:28:53,268 - easytorch-training - INFO - train:: [train_time: 159.70 (s), lr: 1.00e-03, train_loss: 1.8790, train_MAPE: -158.7325, train_RMSE: 4.2655] -2022-02-05 03:29:45,562 - easytorch-training - INFO - val:: [val_time: 52.29 (s), val_loss: 1.7936, val_MAPE: -1885.1889, val_RMSE: 4.2768] -2022-02-05 03:31:28,367 - easytorch-training - INFO - test:: [test_time: -102.80 (s), test_loss: 1.9073, test_MAPE: -1155.1075, test_RMSE: 4.6089] -2022-02-05 03:31:28,427 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_071.pt saved -2022-02-05 03:31:28,428 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:43 -2022-02-05 03:31:28,428 - easytorch-training - INFO - epoch 72 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 03:34:08,607 - easytorch-training - INFO - train:: [train_time: 160.18 (s), lr: 1.00e-03, train_loss: 1.8736, train_MAPE: -177.3460, train_RMSE: 4.2486] -2022-02-05 03:35:00,979 - easytorch-training - INFO - val:: [val_time: 52.37 (s), val_loss: 1.7884, val_MAPE: -1882.2647, val_RMSE: 4.2904] -2022-02-05 03:36:44,080 - easytorch-training - INFO - test:: [test_time: -103.10 (s), test_loss: 1.8812, test_MAPE: -1134.3113, test_RMSE: 4.5645] -2022-02-05 03:36:44,129 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_072.pt saved -2022-02-05 03:36:44,130 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:44 -2022-02-05 03:36:44,130 - easytorch-training - INFO - epoch 73 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 03:39:23,726 - easytorch-training - INFO - train:: [train_time: 159.60 (s), lr: 1.00e-03, train_loss: 1.8756, train_MAPE: -169.2798, train_RMSE: 4.2539] -2022-02-05 03:40:16,111 - easytorch-training - INFO - val:: [val_time: 52.38 (s), val_loss: 1.7785, val_MAPE: -1888.2055, val_RMSE: 4.2599] -2022-02-05 03:41:58,828 - easytorch-training - INFO - test:: [test_time: -102.71 (s), test_loss: 1.8827, test_MAPE: -1175.9322, test_RMSE: 4.5646] -2022-02-05 03:41:58,888 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_073.pt saved -2022-02-05 03:41:58,888 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:42 -2022-02-05 03:41:58,889 - easytorch-training - INFO - epoch 74 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 03:44:38,474 - easytorch-training - INFO - train:: [train_time: 159.58 (s), lr: 1.00e-03, train_loss: 1.8727, train_MAPE: -150.4076, train_RMSE: 4.2488] -2022-02-05 03:45:30,821 - easytorch-training - INFO - val:: [val_time: 52.34 (s), val_loss: 1.7864, val_MAPE: -1973.7954, val_RMSE: 4.2856] -2022-02-05 03:47:13,484 - easytorch-training - INFO - test:: [test_time: -102.66 (s), test_loss: 1.8814, test_MAPE: -1099.6210, test_RMSE: 4.5583] -2022-02-05 03:47:13,544 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_074.pt saved -2022-02-05 03:47:13,544 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:39 -2022-02-05 03:47:13,545 - easytorch-training - INFO - epoch 75 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 03:49:52,918 - easytorch-training - INFO - train:: [train_time: 159.37 (s), lr: 1.00e-03, train_loss: 1.8690, train_MAPE: -183.8338, train_RMSE: 4.2418] -2022-02-05 03:50:45,250 - easytorch-training - INFO - val:: [val_time: 52.33 (s), val_loss: 1.7710, val_MAPE: -1944.4940, val_RMSE: 4.2623] -2022-02-05 03:52:28,051 - easytorch-training - INFO - test:: [test_time: -102.79 (s), test_loss: 1.8855, test_MAPE: -1123.1376, test_RMSE: 4.5864] -2022-02-05 03:52:28,089 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_075.pt saved -2022-02-05 03:52:28,089 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:37 -2022-02-05 03:52:28,089 - easytorch-training - INFO - epoch 76 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 03:55:08,227 - easytorch-training - INFO - train:: [train_time: 160.14 (s), lr: 1.00e-03, train_loss: 1.8714, train_MAPE: -164.9870, train_RMSE: 4.2467] -2022-02-05 03:56:00,736 - easytorch-training - INFO - val:: [val_time: 52.50 (s), val_loss: 1.7689, val_MAPE: -1818.6104, val_RMSE: 4.2596] -2022-02-05 03:57:43,176 - easytorch-training - INFO - test:: [test_time: -102.44 (s), test_loss: 1.8746, test_MAPE: -1092.7278, test_RMSE: 4.5630] -2022-02-05 03:57:43,237 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_076.pt saved -2022-02-05 03:57:43,238 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:36 -2022-02-05 03:57:43,238 - easytorch-training - INFO - epoch 77 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 04:00:22,871 - easytorch-training - INFO - train:: [train_time: 159.63 (s), lr: 1.00e-03, train_loss: 1.8692, train_MAPE: -193.3160, train_RMSE: 4.2392] -2022-02-05 04:01:15,637 - easytorch-training - INFO - val:: [val_time: 52.76 (s), val_loss: 1.7733, val_MAPE: -1939.5191, val_RMSE: 4.2549] -2022-02-05 04:02:58,392 - easytorch-training - INFO - test:: [test_time: -102.75 (s), test_loss: 1.8706, test_MAPE: -1122.6352, test_RMSE: 4.5312] -2022-02-05 04:02:58,445 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_077.pt saved -2022-02-05 04:02:58,445 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:36 -2022-02-05 04:02:58,445 - easytorch-training - INFO - epoch 78 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 04:05:38,342 - easytorch-training - INFO - train:: [train_time: 159.90 (s), lr: 1.00e-03, train_loss: 1.8688, train_MAPE: -174.4260, train_RMSE: 4.2363] -2022-02-05 04:06:30,865 - easytorch-training - INFO - val:: [val_time: 52.52 (s), val_loss: 1.7798, val_MAPE: -1905.5030, val_RMSE: 4.2785] -2022-02-05 04:08:13,337 - easytorch-training - INFO - test:: [test_time: -102.47 (s), test_loss: 1.8710, test_MAPE: -1114.7736, test_RMSE: 4.5486] -2022-02-05 04:08:13,397 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_078.pt saved -2022-02-05 04:08:13,397 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 04:08:13,397 - easytorch-training - INFO - epoch 79 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 04:10:53,160 - easytorch-training - INFO - train:: [train_time: 159.76 (s), lr: 1.00e-03, train_loss: 1.8694, train_MAPE: -147.3460, train_RMSE: 4.2413] -2022-02-05 04:11:45,608 - easytorch-training - INFO - val:: [val_time: 52.44 (s), val_loss: 1.7788, val_MAPE: -1884.2012, val_RMSE: 4.2606] -2022-02-05 04:13:28,050 - easytorch-training - INFO - test:: [test_time: -102.44 (s), test_loss: 1.8874, test_MAPE: -1110.8004, test_RMSE: 4.5744] -2022-02-05 04:13:28,090 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_079.pt saved -2022-02-05 04:13:28,090 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:33 -2022-02-05 04:13:28,090 - easytorch-training - INFO - epoch 80 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 04:16:07,947 - easytorch-training - INFO - train:: [train_time: 159.86 (s), lr: 1.00e-03, train_loss: 1.8686, train_MAPE: -171.4349, train_RMSE: 4.2372] -2022-02-05 04:17:00,876 - easytorch-training - INFO - val:: [val_time: 52.92 (s), val_loss: 1.7637, val_MAPE: -1949.4246, val_RMSE: 4.2414] -2022-02-05 04:18:43,616 - easytorch-training - INFO - test:: [test_time: -102.73 (s), test_loss: 1.8748, test_MAPE: -1120.9112, test_RMSE: 4.5532] -2022-02-05 04:18:43,663 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_080.pt saved -2022-02-05 04:18:43,666 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:33 -2022-02-05 04:18:43,666 - easytorch-training - INFO - epoch 81 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 04:21:23,339 - easytorch-training - INFO - train:: [train_time: 159.67 (s), lr: 1.00e-03, train_loss: 1.8672, train_MAPE: -167.0997, train_RMSE: 4.2383] -2022-02-05 04:22:15,904 - easytorch-training - INFO - val:: [val_time: 52.56 (s), val_loss: 1.7726, val_MAPE: -1997.5125, val_RMSE: 4.2581] -2022-02-05 04:23:58,457 - easytorch-training - INFO - test:: [test_time: -102.55 (s), test_loss: 1.8837, test_MAPE: -1116.0142, test_RMSE: 4.5741] -2022-02-05 04:23:58,518 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_081.pt saved -2022-02-05 04:23:58,518 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 04:23:58,518 - easytorch-training - INFO - epoch 82 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 04:26:38,646 - easytorch-training - INFO - train:: [train_time: 160.13 (s), lr: 1.00e-03, train_loss: 1.8646, train_MAPE: -156.0467, train_RMSE: 4.2325] -2022-02-05 04:27:31,118 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.7847, val_MAPE: -1994.4063, val_RMSE: 4.2629] -2022-02-05 04:29:14,651 - easytorch-training - INFO - test:: [test_time: -103.53 (s), test_loss: 1.9034, test_MAPE: -1082.5358, test_RMSE: 4.5973] -2022-02-05 04:29:14,712 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_082.pt saved -2022-02-05 04:29:14,712 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 04:29:14,712 - easytorch-training - INFO - epoch 83 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 04:31:54,417 - easytorch-training - INFO - train:: [train_time: 159.70 (s), lr: 1.00e-03, train_loss: 1.8669, train_MAPE: -167.9618, train_RMSE: 4.2349] -2022-02-05 04:32:46,845 - easytorch-training - INFO - val:: [val_time: 52.42 (s), val_loss: 1.7664, val_MAPE: -1935.6695, val_RMSE: 4.2431] -2022-02-05 04:34:29,640 - easytorch-training - INFO - test:: [test_time: -102.79 (s), test_loss: 1.8638, test_MAPE: -1117.1586, test_RMSE: 4.5214] -2022-02-05 04:34:29,700 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_083.pt saved -2022-02-05 04:34:29,701 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 04:34:29,701 - easytorch-training - INFO - epoch 84 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 04:37:09,651 - easytorch-training - INFO - train:: [train_time: 159.95 (s), lr: 1.00e-03, train_loss: 1.8593, train_MAPE: -186.9857, train_RMSE: 4.2159] -2022-02-05 04:38:02,011 - easytorch-training - INFO - val:: [val_time: 52.36 (s), val_loss: 1.7884, val_MAPE: -2002.1558, val_RMSE: 4.3033] -2022-02-05 04:39:45,014 - easytorch-training - INFO - test:: [test_time: -103.00 (s), test_loss: 1.8804, test_MAPE: -1125.9635, test_RMSE: 4.5695] -2022-02-05 04:39:45,075 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_084.pt saved -2022-02-05 04:39:45,076 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 04:39:45,076 - easytorch-training - INFO - epoch 85 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 04:42:25,264 - easytorch-training - INFO - train:: [train_time: 160.19 (s), lr: 1.00e-03, train_loss: 1.8615, train_MAPE: -173.9726, train_RMSE: 4.2256] -2022-02-05 04:43:17,681 - easytorch-training - INFO - val:: [val_time: 52.41 (s), val_loss: 1.7625, val_MAPE: -1959.7451, val_RMSE: 4.2392] -2022-02-05 04:45:00,644 - easytorch-training - INFO - test:: [test_time: -102.96 (s), test_loss: 1.8696, test_MAPE: -1091.5592, test_RMSE: 4.5417] -2022-02-05 04:45:00,704 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_085.pt saved -2022-02-05 04:45:00,704 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:33 -2022-02-05 04:45:00,704 - easytorch-training - INFO - epoch 86 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 04:47:40,671 - easytorch-training - INFO - train:: [train_time: 159.97 (s), lr: 1.00e-03, train_loss: 1.8666, train_MAPE: -170.2310, train_RMSE: 4.2349] -2022-02-05 04:48:33,150 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.7775, val_MAPE: -1895.4809, val_RMSE: 4.2667] -2022-02-05 04:50:15,507 - easytorch-training - INFO - test:: [test_time: -102.35 (s), test_loss: 1.8786, test_MAPE: -1155.3914, test_RMSE: 4.5641] -2022-02-05 04:50:15,553 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_086.pt saved -2022-02-05 04:50:15,554 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 04:50:15,554 - easytorch-training - INFO - epoch 87 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 04:52:55,480 - easytorch-training - INFO - train:: [train_time: 159.93 (s), lr: 1.00e-03, train_loss: 1.8685, train_MAPE: -191.1183, train_RMSE: 4.2431] -2022-02-05 04:53:47,663 - easytorch-training - INFO - val:: [val_time: 52.18 (s), val_loss: 1.7724, val_MAPE: -1895.4374, val_RMSE: 4.2556] -2022-02-05 04:55:30,382 - easytorch-training - INFO - test:: [test_time: -102.71 (s), test_loss: 1.8806, test_MAPE: -1056.3105, test_RMSE: 4.5677] -2022-02-05 04:55:30,440 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_087.pt saved -2022-02-05 04:55:30,440 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:30 -2022-02-05 04:55:30,440 - easytorch-training - INFO - epoch 88 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 04:58:10,579 - easytorch-training - INFO - train:: [train_time: 160.14 (s), lr: 1.00e-03, train_loss: 1.8605, train_MAPE: -159.4032, train_RMSE: 4.2151] -2022-02-05 04:59:02,916 - easytorch-training - INFO - val:: [val_time: 52.33 (s), val_loss: 1.7728, val_MAPE: -1927.7321, val_RMSE: 4.2501] -2022-02-05 05:00:45,809 - easytorch-training - INFO - test:: [test_time: -102.89 (s), test_loss: 1.8825, test_MAPE: -1061.3270, test_RMSE: 4.5696] -2022-02-05 05:00:45,869 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_088.pt saved -2022-02-05 05:00:45,870 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:30 -2022-02-05 05:00:45,870 - easytorch-training - INFO - epoch 89 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 05:03:26,247 - easytorch-training - INFO - train:: [train_time: 160.38 (s), lr: 1.00e-03, train_loss: 1.8592, train_MAPE: -166.7126, train_RMSE: 4.2166] -2022-02-05 05:04:18,568 - easytorch-training - INFO - val:: [val_time: 52.32 (s), val_loss: 1.7771, val_MAPE: -1930.0182, val_RMSE: 4.2692] -2022-02-05 05:06:01,066 - easytorch-training - INFO - test:: [test_time: -102.49 (s), test_loss: 1.8729, test_MAPE: -1111.7473, test_RMSE: 4.5467] -2022-02-05 05:06:01,108 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_089.pt saved -2022-02-05 05:06:01,108 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:30 -2022-02-05 05:06:01,108 - easytorch-training - INFO - epoch 90 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 05:08:41,142 - easytorch-training - INFO - train:: [train_time: 160.03 (s), lr: 1.00e-03, train_loss: 1.8654, train_MAPE: -170.4112, train_RMSE: 4.2266] -2022-02-05 05:09:33,563 - easytorch-training - INFO - val:: [val_time: 52.42 (s), val_loss: 1.7603, val_MAPE: -2012.3928, val_RMSE: 4.2344] -2022-02-05 05:11:16,134 - easytorch-training - INFO - test:: [test_time: -102.57 (s), test_loss: 1.8679, test_MAPE: -1208.2087, test_RMSE: 4.5430] -2022-02-05 05:11:16,192 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_090.pt saved -2022-02-05 05:11:16,195 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:29 -2022-02-05 05:11:16,195 - easytorch-training - INFO - epoch 91 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 05:13:56,422 - easytorch-training - INFO - train:: [train_time: 160.23 (s), lr: 1.00e-03, train_loss: 1.8657, train_MAPE: -165.0746, train_RMSE: 4.2300] -2022-02-05 05:14:48,904 - easytorch-training - INFO - val:: [val_time: 52.48 (s), val_loss: 1.7815, val_MAPE: -1904.3108, val_RMSE: 4.2889] -2022-02-05 05:16:31,783 - easytorch-training - INFO - test:: [test_time: -102.87 (s), test_loss: 1.8906, test_MAPE: -1073.3980, test_RMSE: 4.5968] -2022-02-05 05:16:31,844 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_091.pt saved -2022-02-05 05:16:31,845 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:30 -2022-02-05 05:16:31,845 - easytorch-training - INFO - epoch 92 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 05:19:12,188 - easytorch-training - INFO - train:: [train_time: 160.34 (s), lr: 1.00e-03, train_loss: 1.8610, train_MAPE: -188.9592, train_RMSE: 4.2226] -2022-02-05 05:20:05,050 - easytorch-training - INFO - val:: [val_time: 52.86 (s), val_loss: 1.7828, val_MAPE: -1963.6133, val_RMSE: 4.2667] -2022-02-05 05:21:48,200 - easytorch-training - INFO - test:: [test_time: -103.15 (s), test_loss: 1.8854, test_MAPE: -1111.6151, test_RMSE: 4.5642] -2022-02-05 05:21:48,258 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_092.pt saved -2022-02-05 05:21:48,259 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 05:21:48,259 - easytorch-training - INFO - epoch 93 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 05:24:28,148 - easytorch-training - INFO - train:: [train_time: 159.89 (s), lr: 1.00e-03, train_loss: 1.8602, train_MAPE: -177.5679, train_RMSE: 4.2162] -2022-02-05 05:25:21,118 - easytorch-training - INFO - val:: [val_time: 52.96 (s), val_loss: 1.7831, val_MAPE: -1909.3242, val_RMSE: 4.2673] -2022-02-05 05:27:04,870 - easytorch-training - INFO - test:: [test_time: -103.75 (s), test_loss: 1.8873, test_MAPE: -1115.0143, test_RMSE: 4.5698] -2022-02-05 05:27:04,928 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_093.pt saved -2022-02-05 05:27:04,928 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:35 -2022-02-05 05:27:04,928 - easytorch-training - INFO - epoch 94 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 05:29:44,718 - easytorch-training - INFO - train:: [train_time: 159.79 (s), lr: 1.00e-03, train_loss: 1.8586, train_MAPE: -153.5404, train_RMSE: 4.2115] -2022-02-05 05:30:37,183 - easytorch-training - INFO - val:: [val_time: 52.46 (s), val_loss: 1.7704, val_MAPE: -2043.6652, val_RMSE: 4.2826] -2022-02-05 05:32:19,726 - easytorch-training - INFO - test:: [test_time: -102.54 (s), test_loss: 1.8742, test_MAPE: -1075.0882, test_RMSE: 4.5710] -2022-02-05 05:32:19,785 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_094.pt saved -2022-02-05 05:32:19,786 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 05:32:19,786 - easytorch-training - INFO - epoch 95 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 05:34:59,208 - easytorch-training - INFO - train:: [train_time: 159.42 (s), lr: 1.00e-03, train_loss: 1.8589, train_MAPE: -175.2523, train_RMSE: 4.2188] -2022-02-05 05:35:52,272 - easytorch-training - INFO - val:: [val_time: 53.06 (s), val_loss: 1.7684, val_MAPE: -1883.7142, val_RMSE: 4.2423] -2022-02-05 05:37:35,711 - easytorch-training - INFO - test:: [test_time: -103.44 (s), test_loss: 1.8861, test_MAPE: -1128.8495, test_RMSE: 4.5850] -2022-02-05 05:37:35,749 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_095.pt saved -2022-02-05 05:37:35,749 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:35 -2022-02-05 05:37:35,749 - easytorch-training - INFO - epoch 96 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.35it/s] -2022-02-05 05:40:16,548 - easytorch-training - INFO - train:: [train_time: 160.80 (s), lr: 1.00e-03, train_loss: 1.8539, train_MAPE: -181.2149, train_RMSE: 4.2071] -2022-02-05 05:41:08,821 - easytorch-training - INFO - val:: [val_time: 52.27 (s), val_loss: 1.7777, val_MAPE: -1907.1127, val_RMSE: 4.2839] -2022-02-05 05:42:51,210 - easytorch-training - INFO - test:: [test_time: -102.38 (s), test_loss: 1.8919, test_MAPE: -1105.2764, test_RMSE: 4.6141] -2022-02-05 05:42:51,270 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_096.pt saved -2022-02-05 05:42:51,270 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:35 -2022-02-05 05:42:51,270 - easytorch-training - INFO - epoch 97 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 05:45:30,949 - easytorch-training - INFO - train:: [train_time: 159.68 (s), lr: 1.00e-03, train_loss: 1.8615, train_MAPE: -177.5853, train_RMSE: 4.2199] -2022-02-05 05:46:24,142 - easytorch-training - INFO - val:: [val_time: 53.19 (s), val_loss: 1.7754, val_MAPE: -1935.1375, val_RMSE: 4.2794] -2022-02-05 05:48:06,841 - easytorch-training - INFO - test:: [test_time: -102.69 (s), test_loss: 1.8770, test_MAPE: -1088.8739, test_RMSE: 4.5631] -2022-02-05 05:48:06,907 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_097.pt saved -2022-02-05 05:48:06,907 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:35 -2022-02-05 05:48:06,907 - easytorch-training - INFO - epoch 98 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 05:50:46,848 - easytorch-training - INFO - train:: [train_time: 159.94 (s), lr: 1.00e-03, train_loss: 1.8631, train_MAPE: -172.9455, train_RMSE: 4.2250] -2022-02-05 05:51:39,351 - easytorch-training - INFO - val:: [val_time: 52.50 (s), val_loss: 1.7557, val_MAPE: -2027.3519, val_RMSE: 4.2411] -2022-02-05 05:53:22,049 - easytorch-training - INFO - test:: [test_time: -102.69 (s), test_loss: 1.8620, test_MAPE: -1092.1742, test_RMSE: 4.5301] -2022-02-05 05:53:22,095 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_098.pt saved -2022-02-05 05:53:22,095 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:35 -2022-02-05 05:53:22,096 - easytorch-training - INFO - epoch 99 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 05:56:02,208 - easytorch-training - INFO - train:: [train_time: 160.11 (s), lr: 1.00e-03, train_loss: 1.8624, train_MAPE: -158.3117, train_RMSE: 4.2230] -2022-02-05 05:56:54,853 - easytorch-training - INFO - val:: [val_time: 52.64 (s), val_loss: 1.7705, val_MAPE: -1905.4571, val_RMSE: 4.2632] -2022-02-05 05:58:37,418 - easytorch-training - INFO - test:: [test_time: -102.56 (s), test_loss: 1.8904, test_MAPE: -1152.9512, test_RMSE: 4.6082] -2022-02-05 05:58:37,476 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_099.pt saved -2022-02-05 05:58:37,477 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:35 -2022-02-05 05:58:37,477 - easytorch-training - INFO - epoch 100 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.39it/s] -2022-02-05 06:01:16,698 - easytorch-training - INFO - train:: [train_time: 159.22 (s), lr: 1.00e-03, train_loss: 1.8583, train_MAPE: -168.5234, train_RMSE: 4.2069] -2022-02-05 06:02:09,109 - easytorch-training - INFO - val:: [val_time: 52.41 (s), val_loss: 1.7582, val_MAPE: -1987.4024, val_RMSE: 4.2233] -2022-02-05 06:03:52,271 - easytorch-training - INFO - test:: [test_time: -103.16 (s), test_loss: 1.8622, test_MAPE: -1060.5035, test_RMSE: 4.5169] -2022-02-05 06:03:52,332 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_100.pt saved -2022-02-05 06:03:52,336 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 06:03:52,336 - easytorch-training - INFO - epoch 101 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 06:06:31,894 - easytorch-training - INFO - train:: [train_time: 159.56 (s), lr: 1.00e-03, train_loss: 1.8595, train_MAPE: -179.7955, train_RMSE: 4.2156] -2022-02-05 06:07:25,368 - easytorch-training - INFO - val:: [val_time: 53.47 (s), val_loss: 1.7675, val_MAPE: -1958.3927, val_RMSE: 4.2616] -2022-02-05 06:09:08,254 - easytorch-training - INFO - test:: [test_time: -102.88 (s), test_loss: 1.8624, test_MAPE: -1131.3191, test_RMSE: 4.5279] -2022-02-05 06:09:08,289 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_101.pt saved -2022-02-05 06:09:08,289 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:35 -2022-02-05 06:09:08,290 - easytorch-training - INFO - epoch 102 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 06:11:47,615 - easytorch-training - INFO - train:: [train_time: 159.33 (s), lr: 1.00e-03, train_loss: 1.8588, train_MAPE: -163.0081, train_RMSE: 4.2121] -2022-02-05 06:12:39,825 - easytorch-training - INFO - val:: [val_time: 52.20 (s), val_loss: 1.7639, val_MAPE: -1978.5118, val_RMSE: 4.2519] -2022-02-05 06:14:22,467 - easytorch-training - INFO - test:: [test_time: -102.64 (s), test_loss: 1.8743, test_MAPE: -1088.8568, test_RMSE: 4.5649] -2022-02-05 06:14:22,512 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_102.pt saved -2022-02-05 06:14:22,512 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 06:14:22,513 - easytorch-training - INFO - epoch 103 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 06:17:02,463 - easytorch-training - INFO - train:: [train_time: 159.95 (s), lr: 1.00e-03, train_loss: 1.8465, train_MAPE: -157.2388, train_RMSE: 4.1887] -2022-02-05 06:17:55,263 - easytorch-training - INFO - val:: [val_time: 52.80 (s), val_loss: 1.7638, val_MAPE: -2007.1671, val_RMSE: 4.2553] -2022-02-05 06:19:37,851 - easytorch-training - INFO - test:: [test_time: -102.58 (s), test_loss: 1.8675, test_MAPE: -1071.9412, test_RMSE: 4.5464] -2022-02-05 06:19:37,911 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_103.pt saved -2022-02-05 06:19:37,912 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 06:19:37,912 - easytorch-training - INFO - epoch 104 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 06:22:17,840 - easytorch-training - INFO - train:: [train_time: 159.93 (s), lr: 1.00e-03, train_loss: 1.8528, train_MAPE: -175.5944, train_RMSE: 4.2030] -2022-02-05 06:23:10,216 - easytorch-training - INFO - val:: [val_time: 52.37 (s), val_loss: 1.7739, val_MAPE: -1896.2891, val_RMSE: 4.2461] -2022-02-05 06:24:54,263 - easytorch-training - INFO - test:: [test_time: -104.04 (s), test_loss: 1.8930, test_MAPE: -1062.5768, test_RMSE: 4.5870] -2022-02-05 06:24:54,322 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_104.pt saved -2022-02-05 06:24:54,322 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 06:24:54,323 - easytorch-training - INFO - epoch 105 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 06:27:34,271 - easytorch-training - INFO - train:: [train_time: 159.95 (s), lr: 1.00e-03, train_loss: 1.8558, train_MAPE: -164.7201, train_RMSE: 4.2057] -2022-02-05 06:28:26,926 - easytorch-training - INFO - val:: [val_time: 52.65 (s), val_loss: 1.7604, val_MAPE: -2008.8224, val_RMSE: 4.2505] -2022-02-05 06:30:09,787 - easytorch-training - INFO - test:: [test_time: -102.86 (s), test_loss: 1.8783, test_MAPE: -1154.7954, test_RMSE: 4.5822] -2022-02-05 06:30:09,827 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_105.pt saved -2022-02-05 06:30:09,827 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 06:30:09,827 - easytorch-training - INFO - epoch 106 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 06:32:50,015 - easytorch-training - INFO - train:: [train_time: 160.19 (s), lr: 1.00e-03, train_loss: 1.8589, train_MAPE: -190.9873, train_RMSE: 4.2143] -2022-02-05 06:33:42,463 - easytorch-training - INFO - val:: [val_time: 52.44 (s), val_loss: 1.7697, val_MAPE: -1895.1132, val_RMSE: 4.2667] -2022-02-05 06:35:24,948 - easytorch-training - INFO - test:: [test_time: -102.48 (s), test_loss: 1.8788, test_MAPE: -1111.6017, test_RMSE: 4.5826] -2022-02-05 06:35:25,007 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_106.pt saved -2022-02-05 06:35:25,008 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 06:35:25,008 - easytorch-training - INFO - epoch 107 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 06:38:04,891 - easytorch-training - INFO - train:: [train_time: 159.88 (s), lr: 1.00e-03, train_loss: 1.8549, train_MAPE: -162.8945, train_RMSE: 4.2076] -2022-02-05 06:38:57,254 - easytorch-training - INFO - val:: [val_time: 52.36 (s), val_loss: 1.7749, val_MAPE: -1882.8598, val_RMSE: 4.2590] -2022-02-05 06:40:40,101 - easytorch-training - INFO - test:: [test_time: -102.84 (s), test_loss: 1.8829, test_MAPE: -1095.6978, test_RMSE: 4.5714] -2022-02-05 06:40:40,158 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_107.pt saved -2022-02-05 06:40:40,159 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:34 -2022-02-05 06:40:40,159 - easytorch-training - INFO - epoch 108 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 06:43:20,284 - easytorch-training - INFO - train:: [train_time: 160.12 (s), lr: 1.00e-03, train_loss: 1.8521, train_MAPE: -197.1058, train_RMSE: 4.2029] -2022-02-05 06:44:12,670 - easytorch-training - INFO - val:: [val_time: 52.38 (s), val_loss: 1.7671, val_MAPE: -1884.5360, val_RMSE: 4.2543] -2022-02-05 06:45:55,119 - easytorch-training - INFO - test:: [test_time: -102.44 (s), test_loss: 1.8769, test_MAPE: -1138.5943, test_RMSE: 4.5717] -2022-02-05 06:45:55,179 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_108.pt saved -2022-02-05 06:45:55,179 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:33 -2022-02-05 06:45:55,179 - easytorch-training - INFO - epoch 109 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 06:48:35,047 - easytorch-training - INFO - train:: [train_time: 159.87 (s), lr: 1.00e-03, train_loss: 1.8519, train_MAPE: -180.8027, train_RMSE: 4.1983] -2022-02-05 06:49:27,528 - easytorch-training - INFO - val:: [val_time: 52.48 (s), val_loss: 1.7658, val_MAPE: -1916.9333, val_RMSE: 4.2610] -2022-02-05 06:51:10,072 - easytorch-training - INFO - test:: [test_time: -102.54 (s), test_loss: 1.8658, test_MAPE: -1148.8800, test_RMSE: 4.5502] -2022-02-05 06:51:10,107 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_109.pt saved -2022-02-05 06:51:10,107 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 06:51:10,107 - easytorch-training - INFO - epoch 110 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 06:53:49,885 - easytorch-training - INFO - train:: [train_time: 159.78 (s), lr: 1.00e-03, train_loss: 1.8515, train_MAPE: -160.6662, train_RMSE: 4.1997] -2022-02-05 06:54:42,157 - easytorch-training - INFO - val:: [val_time: 52.27 (s), val_loss: 1.7743, val_MAPE: -1921.9631, val_RMSE: 4.2785] -2022-02-05 06:56:24,853 - easytorch-training - INFO - test:: [test_time: -102.69 (s), test_loss: 1.8846, test_MAPE: -1109.5846, test_RMSE: 4.5932] -2022-02-05 06:56:24,913 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_110.pt saved -2022-02-05 06:56:24,917 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:31 -2022-02-05 06:56:24,917 - easytorch-training - INFO - epoch 111 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 06:59:05,265 - easytorch-training - INFO - train:: [train_time: 160.35 (s), lr: 1.00e-03, train_loss: 1.8428, train_MAPE: -182.0670, train_RMSE: 4.1761] -2022-02-05 06:59:57,740 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.7687, val_MAPE: -1946.3053, val_RMSE: 4.2684] -2022-02-05 07:01:40,361 - easytorch-training - INFO - test:: [test_time: -102.61 (s), test_loss: 1.8702, test_MAPE: -1120.9372, test_RMSE: 4.5524] -2022-02-05 07:01:40,421 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_111.pt saved -2022-02-05 07:01:40,422 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:31 -2022-02-05 07:01:40,422 - easytorch-training - INFO - epoch 112 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 07:04:20,995 - easytorch-training - INFO - train:: [train_time: 160.57 (s), lr: 1.00e-03, train_loss: 1.8493, train_MAPE: -167.6450, train_RMSE: 4.1881] -2022-02-05 07:05:13,462 - easytorch-training - INFO - val:: [val_time: 52.46 (s), val_loss: 1.7654, val_MAPE: -1907.3707, val_RMSE: 4.2432] -2022-02-05 07:06:56,340 - easytorch-training - INFO - test:: [test_time: -102.87 (s), test_loss: 1.8720, test_MAPE: -1085.3513, test_RMSE: 4.5487] -2022-02-05 07:06:56,400 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_112.pt saved -2022-02-05 07:06:56,400 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:32 -2022-02-05 07:06:56,400 - easytorch-training - INFO - epoch 113 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 07:09:36,277 - easytorch-training - INFO - train:: [train_time: 159.88 (s), lr: 1.00e-03, train_loss: 1.8488, train_MAPE: -181.3240, train_RMSE: 4.1947] -2022-02-05 07:10:28,777 - easytorch-training - INFO - val:: [val_time: 52.49 (s), val_loss: 1.7660, val_MAPE: -1994.5898, val_RMSE: 4.2442] -2022-02-05 07:12:10,985 - easytorch-training - INFO - test:: [test_time: -102.20 (s), test_loss: 1.8695, test_MAPE: -1106.4478, test_RMSE: 4.5410] -2022-02-05 07:12:11,046 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_113.pt saved -2022-02-05 07:12:11,046 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:31 -2022-02-05 07:12:11,046 - easytorch-training - INFO - epoch 114 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 07:14:50,498 - easytorch-training - INFO - train:: [train_time: 159.45 (s), lr: 1.00e-03, train_loss: 1.8540, train_MAPE: -148.9829, train_RMSE: 4.2001] -2022-02-05 07:15:42,873 - easytorch-training - INFO - val:: [val_time: 52.37 (s), val_loss: 1.7618, val_MAPE: -1926.1937, val_RMSE: 4.2595] -2022-02-05 07:17:26,467 - easytorch-training - INFO - test:: [test_time: -103.59 (s), test_loss: 1.8691, test_MAPE: -1051.5812, test_RMSE: 4.5590] -2022-02-05 07:17:26,527 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_114.pt saved -2022-02-05 07:17:26,528 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:31 -2022-02-05 07:17:26,528 - easytorch-training - INFO - epoch 115 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 07:20:06,095 - easytorch-training - INFO - train:: [train_time: 159.57 (s), lr: 1.00e-03, train_loss: 1.8485, train_MAPE: -173.9081, train_RMSE: 4.1914] -2022-02-05 07:20:58,503 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.7664, val_MAPE: -1932.2764, val_RMSE: 4.2469] -2022-02-05 07:22:41,075 - easytorch-training - INFO - test:: [test_time: -102.57 (s), test_loss: 1.8819, test_MAPE: -1077.7861, test_RMSE: 4.5796] -2022-02-05 07:22:41,111 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_115.pt saved -2022-02-05 07:22:41,111 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:29 -2022-02-05 07:22:41,111 - easytorch-training - INFO - epoch 116 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 07:25:20,895 - easytorch-training - INFO - train:: [train_time: 159.78 (s), lr: 1.00e-03, train_loss: 1.8445, train_MAPE: -178.6973, train_RMSE: 4.1836] -2022-02-05 07:26:13,324 - easytorch-training - INFO - val:: [val_time: 52.42 (s), val_loss: 1.7553, val_MAPE: -1922.2877, val_RMSE: 4.2281] -2022-02-05 07:27:56,695 - easytorch-training - INFO - test:: [test_time: -103.37 (s), test_loss: 1.8613, test_MAPE: -1095.2588, test_RMSE: 4.5254] -2022-02-05 07:27:56,750 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_116.pt saved -2022-02-05 07:27:56,751 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:30 -2022-02-05 07:27:56,751 - easytorch-training - INFO - epoch 117 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 07:30:36,404 - easytorch-training - INFO - train:: [train_time: 159.65 (s), lr: 1.00e-03, train_loss: 1.8485, train_MAPE: -167.0641, train_RMSE: 4.1882] -2022-02-05 07:31:28,660 - easytorch-training - INFO - val:: [val_time: 52.25 (s), val_loss: 1.7803, val_MAPE: -2022.1026, val_RMSE: 4.2816] -2022-02-05 07:33:11,252 - easytorch-training - INFO - test:: [test_time: -102.59 (s), test_loss: 1.8873, test_MAPE: -1073.4333, test_RMSE: 4.5898] -2022-02-05 07:33:11,306 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_117.pt saved -2022-02-05 07:33:11,307 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-05 07:33:11,307 - easytorch-training - INFO - epoch 118 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 07:35:51,222 - easytorch-training - INFO - train:: [train_time: 159.91 (s), lr: 1.00e-03, train_loss: 1.8487, train_MAPE: -160.1047, train_RMSE: 4.1877] -2022-02-05 07:36:43,620 - easytorch-training - INFO - val:: [val_time: 52.39 (s), val_loss: 1.7757, val_MAPE: -1878.5104, val_RMSE: 4.2644] -2022-02-05 07:38:26,700 - easytorch-training - INFO - test:: [test_time: -103.07 (s), test_loss: 1.8862, test_MAPE: -1103.4074, test_RMSE: 4.5874] -2022-02-05 07:38:26,760 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_118.pt saved -2022-02-05 07:38:26,760 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-05 07:38:26,760 - easytorch-training - INFO - epoch 119 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 07:41:06,718 - easytorch-training - INFO - train:: [train_time: 159.96 (s), lr: 1.00e-03, train_loss: 1.8485, train_MAPE: -174.1078, train_RMSE: 4.1916] -2022-02-05 07:41:59,459 - easytorch-training - INFO - val:: [val_time: 52.74 (s), val_loss: 1.7640, val_MAPE: -1882.0220, val_RMSE: 4.2527] -2022-02-05 07:43:41,850 - easytorch-training - INFO - test:: [test_time: -102.38 (s), test_loss: 1.8709, test_MAPE: -1136.5880, test_RMSE: 4.5529] -2022-02-05 07:43:41,910 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_119.pt saved -2022-02-05 07:43:41,910 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-05 07:43:41,910 - easytorch-training - INFO - epoch 120 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 07:46:21,658 - easytorch-training - INFO - train:: [train_time: 159.75 (s), lr: 1.00e-03, train_loss: 1.8507, train_MAPE: -173.1129, train_RMSE: 4.1975] -2022-02-05 07:47:14,028 - easytorch-training - INFO - val:: [val_time: 52.36 (s), val_loss: 1.7591, val_MAPE: -1945.3203, val_RMSE: 4.2506] -2022-02-05 07:48:56,600 - easytorch-training - INFO - test:: [test_time: -102.57 (s), test_loss: 1.8677, test_MAPE: -1095.1479, test_RMSE: 4.5584] -2022-02-05 07:48:56,663 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_120.pt saved -2022-02-05 07:48:56,667 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 07:48:56,667 - easytorch-training - INFO - epoch 121 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 07:51:36,326 - easytorch-training - INFO - train:: [train_time: 159.66 (s), lr: 1.00e-03, train_loss: 1.8485, train_MAPE: -167.0818, train_RMSE: 4.1896] -2022-02-05 07:52:28,730 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.7646, val_MAPE: -1854.3351, val_RMSE: 4.2724] -2022-02-05 07:54:12,157 - easytorch-training - INFO - test:: [test_time: -103.42 (s), test_loss: 1.8720, test_MAPE: -1133.8070, test_RMSE: 4.5818] -2022-02-05 07:54:12,216 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_121.pt saved -2022-02-05 07:54:12,216 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 07:54:12,216 - easytorch-training - INFO - epoch 122 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 07:56:52,690 - easytorch-training - INFO - train:: [train_time: 160.47 (s), lr: 1.00e-03, train_loss: 1.8474, train_MAPE: -158.0402, train_RMSE: 4.1889] -2022-02-05 07:57:45,078 - easytorch-training - INFO - val:: [val_time: 52.38 (s), val_loss: 1.7656, val_MAPE: -1968.8231, val_RMSE: 4.2533] -2022-02-05 07:59:27,610 - easytorch-training - INFO - test:: [test_time: -102.53 (s), test_loss: 1.8782, test_MAPE: -1112.1334, test_RMSE: 4.5740] -2022-02-05 07:59:27,671 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_122.pt saved -2022-02-05 07:59:27,671 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 07:59:27,671 - easytorch-training - INFO - epoch 123 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 08:02:07,667 - easytorch-training - INFO - train:: [train_time: 160.00 (s), lr: 1.00e-03, train_loss: 1.8462, train_MAPE: -185.4738, train_RMSE: 4.1867] -2022-02-05 08:03:00,072 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.7694, val_MAPE: -1936.7027, val_RMSE: 4.2532] -2022-02-05 08:04:42,663 - easytorch-training - INFO - test:: [test_time: -102.59 (s), test_loss: 1.8779, test_MAPE: -1129.8999, test_RMSE: 4.5663] -2022-02-05 08:04:42,723 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_123.pt saved -2022-02-05 08:04:42,723 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 08:04:42,724 - easytorch-training - INFO - epoch 124 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 08:07:22,777 - easytorch-training - INFO - train:: [train_time: 160.05 (s), lr: 1.00e-03, train_loss: 1.8513, train_MAPE: -173.7623, train_RMSE: 4.1966] -2022-02-05 08:08:15,314 - easytorch-training - INFO - val:: [val_time: 52.53 (s), val_loss: 1.7639, val_MAPE: -1995.0685, val_RMSE: 4.2551] -2022-02-05 08:09:58,108 - easytorch-training - INFO - test:: [test_time: -102.79 (s), test_loss: 1.8729, test_MAPE: -1123.3837, test_RMSE: 4.5582] -2022-02-05 08:09:58,174 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_124.pt saved -2022-02-05 08:09:58,175 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 08:09:58,175 - easytorch-training - INFO - epoch 125 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 08:12:38,076 - easytorch-training - INFO - train:: [train_time: 159.90 (s), lr: 1.00e-03, train_loss: 1.8415, train_MAPE: -174.8817, train_RMSE: 4.1725] -2022-02-05 08:13:30,696 - easytorch-training - INFO - val:: [val_time: 52.61 (s), val_loss: 1.7757, val_MAPE: -1914.4496, val_RMSE: 4.2802] -2022-02-05 08:15:13,337 - easytorch-training - INFO - test:: [test_time: -102.64 (s), test_loss: 1.8737, test_MAPE: -1135.0141, test_RMSE: 4.5538] -2022-02-05 08:15:13,398 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_125.pt saved -2022-02-05 08:15:13,398 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 08:15:13,398 - easytorch-training - INFO - epoch 126 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 08:17:53,103 - easytorch-training - INFO - train:: [train_time: 159.71 (s), lr: 1.00e-03, train_loss: 1.8457, train_MAPE: -182.0348, train_RMSE: 4.1851] -2022-02-05 08:18:45,592 - easytorch-training - INFO - val:: [val_time: 52.48 (s), val_loss: 1.7668, val_MAPE: -1947.3348, val_RMSE: 4.2648] -2022-02-05 08:20:28,128 - easytorch-training - INFO - test:: [test_time: -102.53 (s), test_loss: 1.8736, test_MAPE: -1028.1414, test_RMSE: 4.5642] -2022-02-05 08:20:28,165 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_126.pt saved -2022-02-05 08:20:28,166 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 08:20:28,166 - easytorch-training - INFO - epoch 127 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 08:23:08,100 - easytorch-training - INFO - train:: [train_time: 159.93 (s), lr: 1.00e-03, train_loss: 1.8472, train_MAPE: -163.3622, train_RMSE: 4.1863] -2022-02-05 08:24:00,508 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.7580, val_MAPE: -1826.7767, val_RMSE: 4.2324] -2022-02-05 08:25:44,314 - easytorch-training - INFO - test:: [test_time: -103.80 (s), test_loss: 1.8788, test_MAPE: -1120.7942, test_RMSE: 4.5744] -2022-02-05 08:25:44,373 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_127.pt saved -2022-02-05 08:25:44,373 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 08:25:44,373 - easytorch-training - INFO - epoch 128 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 08:28:24,370 - easytorch-training - INFO - train:: [train_time: 160.00 (s), lr: 1.00e-03, train_loss: 1.8397, train_MAPE: -163.5137, train_RMSE: 4.1730] -2022-02-05 08:29:16,832 - easytorch-training - INFO - val:: [val_time: 52.46 (s), val_loss: 1.7556, val_MAPE: -1952.7043, val_RMSE: 4.2346] -2022-02-05 08:31:00,701 - easytorch-training - INFO - test:: [test_time: -103.86 (s), test_loss: 1.8623, test_MAPE: -1084.4863, test_RMSE: 4.5358] -2022-02-05 08:31:00,740 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_128.pt saved -2022-02-05 08:31:00,740 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:29 -2022-02-05 08:31:00,740 - easytorch-training - INFO - epoch 129 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 08:33:40,992 - easytorch-training - INFO - train:: [train_time: 160.25 (s), lr: 1.00e-03, train_loss: 1.8452, train_MAPE: -181.9232, train_RMSE: 4.1854] -2022-02-05 08:34:33,630 - easytorch-training - INFO - val:: [val_time: 52.63 (s), val_loss: 1.7722, val_MAPE: -1928.7942, val_RMSE: 4.2531] -2022-02-05 08:36:16,042 - easytorch-training - INFO - test:: [test_time: -102.41 (s), test_loss: 1.8944, test_MAPE: -1091.1889, test_RMSE: 4.6070] -2022-02-05 08:36:16,103 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_129.pt saved -2022-02-05 08:36:16,103 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-05 08:36:16,103 - easytorch-training - INFO - epoch 130 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 08:38:56,103 - easytorch-training - INFO - train:: [train_time: 160.00 (s), lr: 1.00e-03, train_loss: 1.8500, train_MAPE: -173.0441, train_RMSE: 4.1929] -2022-02-05 08:39:48,251 - easytorch-training - INFO - val:: [val_time: 52.14 (s), val_loss: 1.7812, val_MAPE: -1883.8179, val_RMSE: 4.2905] -2022-02-05 08:41:30,902 - easytorch-training - INFO - test:: [test_time: -102.65 (s), test_loss: 1.8781, test_MAPE: -1172.1625, test_RMSE: 4.5710] -2022-02-05 08:41:30,962 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_130.pt saved -2022-02-05 08:41:30,966 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-05 08:41:30,966 - easytorch-training - INFO - epoch 131 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 08:44:10,966 - easytorch-training - INFO - train:: [train_time: 160.00 (s), lr: 1.00e-03, train_loss: 1.8423, train_MAPE: -168.3676, train_RMSE: 4.1740] -2022-02-05 08:45:03,389 - easytorch-training - INFO - val:: [val_time: 52.42 (s), val_loss: 1.7585, val_MAPE: -1923.2442, val_RMSE: 4.2366] -2022-02-05 08:46:46,067 - easytorch-training - INFO - test:: [test_time: -102.67 (s), test_loss: 1.8874, test_MAPE: -1119.0314, test_RMSE: 4.6074] -2022-02-05 08:46:46,106 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_131.pt saved -2022-02-05 08:46:46,107 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 08:46:46,107 - easytorch-training - INFO - epoch 132 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 08:49:26,246 - easytorch-training - INFO - train:: [train_time: 160.14 (s), lr: 1.00e-03, train_loss: 1.8419, train_MAPE: -177.9938, train_RMSE: 4.1767] -2022-02-05 08:50:18,630 - easytorch-training - INFO - val:: [val_time: 52.38 (s), val_loss: 1.7736, val_MAPE: -1921.5497, val_RMSE: 4.2571] -2022-02-05 08:52:01,643 - easytorch-training - INFO - test:: [test_time: -103.00 (s), test_loss: 1.8981, test_MAPE: -1190.9559, test_RMSE: 4.6195] -2022-02-05 08:52:01,705 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_132.pt saved -2022-02-05 08:52:01,706 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-05 08:52:01,706 - easytorch-training - INFO - epoch 133 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 08:54:41,687 - easytorch-training - INFO - train:: [train_time: 159.98 (s), lr: 1.00e-03, train_loss: 1.8399, train_MAPE: -175.6590, train_RMSE: 4.1698] -2022-02-05 08:55:34,015 - easytorch-training - INFO - val:: [val_time: 52.32 (s), val_loss: 1.7613, val_MAPE: -1843.4515, val_RMSE: 4.2446] -2022-02-05 08:57:16,556 - easytorch-training - INFO - test:: [test_time: -102.53 (s), test_loss: 1.8717, test_MAPE: -1151.1187, test_RMSE: 4.5586] -2022-02-05 08:57:16,617 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_133.pt saved -2022-02-05 08:57:16,617 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 08:57:16,617 - easytorch-training - INFO - epoch 134 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 08:59:56,924 - easytorch-training - INFO - train:: [train_time: 160.31 (s), lr: 1.00e-03, train_loss: 1.8476, train_MAPE: -192.9989, train_RMSE: 4.1906] -2022-02-05 09:00:49,624 - easytorch-training - INFO - val:: [val_time: 52.69 (s), val_loss: 1.7585, val_MAPE: -1929.7124, val_RMSE: 4.2445] -2022-02-05 09:02:32,405 - easytorch-training - INFO - test:: [test_time: -102.78 (s), test_loss: 1.8669, test_MAPE: -1122.0850, test_RMSE: 4.5488] -2022-02-05 09:02:32,466 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_134.pt saved -2022-02-05 09:02:32,466 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:28 -2022-02-05 09:02:32,466 - easytorch-training - INFO - epoch 135 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 09:05:12,571 - easytorch-training - INFO - train:: [train_time: 160.10 (s), lr: 1.00e-03, train_loss: 1.8405, train_MAPE: -183.9842, train_RMSE: 4.1726] -2022-02-05 09:06:04,963 - easytorch-training - INFO - val:: [val_time: 52.39 (s), val_loss: 1.7640, val_MAPE: -1976.6087, val_RMSE: 4.2441] -2022-02-05 09:07:47,447 - easytorch-training - INFO - test:: [test_time: -102.48 (s), test_loss: 1.8808, test_MAPE: -1144.5731, test_RMSE: 4.5759] -2022-02-05 09:07:47,504 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_135.pt saved -2022-02-05 09:07:47,504 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 09:07:47,504 - easytorch-training - INFO - epoch 136 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 09:10:27,535 - easytorch-training - INFO - train:: [train_time: 160.03 (s), lr: 1.00e-03, train_loss: 1.8430, train_MAPE: -175.8796, train_RMSE: 4.1758] -2022-02-05 09:11:19,876 - easytorch-training - INFO - val:: [val_time: 52.33 (s), val_loss: 1.7556, val_MAPE: -1953.8215, val_RMSE: 4.2137] -2022-02-05 09:13:02,289 - easytorch-training - INFO - test:: [test_time: -102.41 (s), test_loss: 1.8730, test_MAPE: -1143.6096, test_RMSE: 4.5507] -2022-02-05 09:13:02,332 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_136.pt saved -2022-02-05 09:13:02,332 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 09:13:02,332 - easytorch-training - INFO - epoch 137 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 09:15:41,906 - easytorch-training - INFO - train:: [train_time: 159.57 (s), lr: 1.00e-03, train_loss: 1.8439, train_MAPE: -180.1065, train_RMSE: 4.1796] -2022-02-05 09:16:34,792 - easytorch-training - INFO - val:: [val_time: 52.88 (s), val_loss: 1.7576, val_MAPE: -1951.9320, val_RMSE: 4.2360] -2022-02-05 09:18:17,654 - easytorch-training - INFO - test:: [test_time: -102.86 (s), test_loss: 1.8835, test_MAPE: -1088.8613, test_RMSE: 4.5861] -2022-02-05 09:18:17,715 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_137.pt saved -2022-02-05 09:18:17,716 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 09:18:17,716 - easytorch-training - INFO - epoch 138 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 09:20:57,990 - easytorch-training - INFO - train:: [train_time: 160.27 (s), lr: 1.00e-03, train_loss: 1.8404, train_MAPE: -164.2239, train_RMSE: 4.1707] -2022-02-05 09:21:50,396 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.7533, val_MAPE: -1910.0407, val_RMSE: 4.2408] -2022-02-05 09:23:33,099 - easytorch-training - INFO - test:: [test_time: -102.70 (s), test_loss: 1.8621, test_MAPE: -1134.4646, test_RMSE: 4.5471] -2022-02-05 09:23:33,134 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_138.pt saved -2022-02-05 09:23:33,134 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 09:23:33,135 - easytorch-training - INFO - epoch 139 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 09:26:13,194 - easytorch-training - INFO - train:: [train_time: 160.06 (s), lr: 1.00e-03, train_loss: 1.8405, train_MAPE: -168.4845, train_RMSE: 4.1696] -2022-02-05 09:27:05,701 - easytorch-training - INFO - val:: [val_time: 52.50 (s), val_loss: 1.7668, val_MAPE: -1961.5212, val_RMSE: 4.2600] -2022-02-05 09:28:48,476 - easytorch-training - INFO - test:: [test_time: -102.77 (s), test_loss: 1.8727, test_MAPE: -1109.7086, test_RMSE: 4.5611] -2022-02-05 09:28:48,538 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_139.pt saved -2022-02-05 09:28:48,538 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 09:28:48,538 - easytorch-training - INFO - epoch 140 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 09:31:27,963 - easytorch-training - INFO - train:: [train_time: 159.42 (s), lr: 1.00e-03, train_loss: 1.8469, train_MAPE: -165.6831, train_RMSE: 4.1876] -2022-02-05 09:32:20,064 - easytorch-training - INFO - val:: [val_time: 52.09 (s), val_loss: 1.7651, val_MAPE: -1919.8749, val_RMSE: 4.2616] -2022-02-05 09:34:02,773 - easytorch-training - INFO - test:: [test_time: -102.70 (s), test_loss: 1.8775, test_MAPE: -1130.9541, test_RMSE: 4.5804] -2022-02-05 09:34:02,833 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_140.pt saved -2022-02-05 09:34:02,837 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 09:34:02,837 - easytorch-training - INFO - epoch 141 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 09:36:42,835 - easytorch-training - INFO - train:: [train_time: 160.00 (s), lr: 1.00e-03, train_loss: 1.8449, train_MAPE: -167.3863, train_RMSE: 4.1797] -2022-02-05 09:37:35,209 - easytorch-training - INFO - val:: [val_time: 52.37 (s), val_loss: 1.7582, val_MAPE: -1909.3314, val_RMSE: 4.2402] -2022-02-05 09:39:18,089 - easytorch-training - INFO - test:: [test_time: -102.88 (s), test_loss: 1.8805, test_MAPE: -1138.0647, test_RMSE: 4.5885] -2022-02-05 09:39:18,149 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_141.pt saved -2022-02-05 09:39:18,150 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 09:39:18,150 - easytorch-training - INFO - epoch 142 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 09:41:58,098 - easytorch-training - INFO - train:: [train_time: 159.95 (s), lr: 1.00e-03, train_loss: 1.8454, train_MAPE: -182.4353, train_RMSE: 4.1863] -2022-02-05 09:42:50,385 - easytorch-training - INFO - val:: [val_time: 52.28 (s), val_loss: 1.7696, val_MAPE: -1884.1329, val_RMSE: 4.2717] -2022-02-05 09:44:33,096 - easytorch-training - INFO - test:: [test_time: -102.71 (s), test_loss: 1.8816, test_MAPE: -1073.2879, test_RMSE: 4.5885] -2022-02-05 09:44:33,156 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_142.pt saved -2022-02-05 09:44:33,157 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 09:44:33,157 - easytorch-training - INFO - epoch 143 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 09:47:12,995 - easytorch-training - INFO - train:: [train_time: 159.84 (s), lr: 1.00e-03, train_loss: 1.8382, train_MAPE: -170.5712, train_RMSE: 4.1707] -2022-02-05 09:48:05,714 - easytorch-training - INFO - val:: [val_time: 52.71 (s), val_loss: 1.7581, val_MAPE: -1992.9866, val_RMSE: 4.2339] -2022-02-05 09:49:48,407 - easytorch-training - INFO - test:: [test_time: -102.69 (s), test_loss: 1.8794, test_MAPE: -1124.3186, test_RMSE: 4.5781] -2022-02-05 09:49:48,468 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_143.pt saved -2022-02-05 09:49:48,468 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 09:49:48,468 - easytorch-training - INFO - epoch 144 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 09:52:28,010 - easytorch-training - INFO - train:: [train_time: 159.54 (s), lr: 1.00e-03, train_loss: 1.8402, train_MAPE: -183.8706, train_RMSE: 4.1733] -2022-02-05 09:53:20,311 - easytorch-training - INFO - val:: [val_time: 52.30 (s), val_loss: 1.7766, val_MAPE: -1942.6509, val_RMSE: 4.2855] -2022-02-05 09:55:03,201 - easytorch-training - INFO - test:: [test_time: -102.88 (s), test_loss: 1.8814, test_MAPE: -1094.5987, test_RMSE: 4.5809] -2022-02-05 09:55:03,237 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_144.pt saved -2022-02-05 09:55:03,237 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 09:55:03,237 - easytorch-training - INFO - epoch 145 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 09:57:42,758 - easytorch-training - INFO - train:: [train_time: 159.52 (s), lr: 1.00e-03, train_loss: 1.8386, train_MAPE: -170.3305, train_RMSE: 4.1659] -2022-02-05 09:58:35,103 - easytorch-training - INFO - val:: [val_time: 52.34 (s), val_loss: 1.7617, val_MAPE: -2014.0345, val_RMSE: 4.2343] -2022-02-05 10:00:17,756 - easytorch-training - INFO - test:: [test_time: -102.65 (s), test_loss: 1.8898, test_MAPE: -1093.6581, test_RMSE: 4.5953] -2022-02-05 10:00:17,817 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_145.pt saved -2022-02-05 10:00:17,817 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:22 -2022-02-05 10:00:17,817 - easytorch-training - INFO - epoch 146 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 10:02:57,529 - easytorch-training - INFO - train:: [train_time: 159.71 (s), lr: 1.00e-03, train_loss: 1.8378, train_MAPE: -179.6356, train_RMSE: 4.1648] -2022-02-05 10:03:50,171 - easytorch-training - INFO - val:: [val_time: 52.64 (s), val_loss: 1.7540, val_MAPE: -1952.7738, val_RMSE: 4.2277] -2022-02-05 10:05:32,652 - easytorch-training - INFO - test:: [test_time: -102.48 (s), test_loss: 1.8645, test_MAPE: -1041.9280, test_RMSE: 4.5296] -2022-02-05 10:05:32,714 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_146.pt saved -2022-02-05 10:05:32,714 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:22 -2022-02-05 10:05:32,715 - easytorch-training - INFO - epoch 147 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 10:08:12,304 - easytorch-training - INFO - train:: [train_time: 159.59 (s), lr: 1.00e-03, train_loss: 1.8360, train_MAPE: -170.2959, train_RMSE: 4.1617] -2022-02-05 10:09:04,657 - easytorch-training - INFO - val:: [val_time: 52.35 (s), val_loss: 1.7567, val_MAPE: -1970.2089, val_RMSE: 4.2337] -2022-02-05 10:10:47,470 - easytorch-training - INFO - test:: [test_time: -102.81 (s), test_loss: 1.8714, test_MAPE: -1119.7403, test_RMSE: 4.5548] -2022-02-05 10:10:47,537 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_147.pt saved -2022-02-05 10:10:47,537 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:21 -2022-02-05 10:10:47,537 - easytorch-training - INFO - epoch 148 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 10:13:27,251 - easytorch-training - INFO - train:: [train_time: 159.71 (s), lr: 1.00e-03, train_loss: 1.8354, train_MAPE: -177.9949, train_RMSE: 4.1577] -2022-02-05 10:14:19,526 - easytorch-training - INFO - val:: [val_time: 52.27 (s), val_loss: 1.7598, val_MAPE: -1955.8102, val_RMSE: 4.2401] -2022-02-05 10:16:04,677 - easytorch-training - INFO - test:: [test_time: -105.15 (s), test_loss: 1.8808, test_MAPE: -1103.5889, test_RMSE: 4.5800] -2022-02-05 10:16:04,712 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_148.pt saved -2022-02-05 10:16:04,712 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 10:16:04,713 - easytorch-training - INFO - epoch 149 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 10:18:44,604 - easytorch-training - INFO - train:: [train_time: 159.89 (s), lr: 1.00e-03, train_loss: 1.8371, train_MAPE: -179.0710, train_RMSE: 4.1609] -2022-02-05 10:19:37,064 - easytorch-training - INFO - val:: [val_time: 52.45 (s), val_loss: 1.7665, val_MAPE: -2037.4677, val_RMSE: 4.2649] -2022-02-05 10:21:19,521 - easytorch-training - INFO - test:: [test_time: -102.45 (s), test_loss: 1.8845, test_MAPE: -1151.3467, test_RMSE: 4.5945] -2022-02-05 10:21:19,578 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_149.pt saved -2022-02-05 10:21:19,578 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 10:21:19,578 - easytorch-training - INFO - epoch 150 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 10:23:59,542 - easytorch-training - INFO - train:: [train_time: 159.96 (s), lr: 1.00e-03, train_loss: 1.8344, train_MAPE: -173.8745, train_RMSE: 4.1576] -2022-02-05 10:24:51,844 - easytorch-training - INFO - val:: [val_time: 52.29 (s), val_loss: 1.7581, val_MAPE: -1921.4129, val_RMSE: 4.2466] -2022-02-05 10:26:34,585 - easytorch-training - INFO - test:: [test_time: -102.74 (s), test_loss: 1.8720, test_MAPE: -1136.5515, test_RMSE: 4.5656] -2022-02-05 10:26:34,648 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_150.pt saved -2022-02-05 10:26:34,652 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:22 -2022-02-05 10:26:34,652 - easytorch-training - INFO - epoch 151 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 10:29:14,361 - easytorch-training - INFO - train:: [train_time: 159.71 (s), lr: 1.00e-03, train_loss: 1.8378, train_MAPE: -174.0614, train_RMSE: 4.1608] -2022-02-05 10:30:06,792 - easytorch-training - INFO - val:: [val_time: 52.43 (s), val_loss: 1.7645, val_MAPE: -1915.7148, val_RMSE: 4.2621] -2022-02-05 10:31:51,138 - easytorch-training - INFO - test:: [test_time: -104.34 (s), test_loss: 1.8724, test_MAPE: -1144.8448, test_RMSE: 4.5651] -2022-02-05 10:31:51,197 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_151.pt saved -2022-02-05 10:31:51,198 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 10:31:51,198 - easytorch-training - INFO - epoch 152 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 10:34:31,337 - easytorch-training - INFO - train:: [train_time: 160.14 (s), lr: 1.00e-03, train_loss: 1.8331, train_MAPE: -185.8575, train_RMSE: 4.1578] -2022-02-05 10:35:23,943 - easytorch-training - INFO - val:: [val_time: 52.60 (s), val_loss: 1.7743, val_MAPE: -1978.2783, val_RMSE: 4.2770] -2022-02-05 10:37:06,406 - easytorch-training - INFO - test:: [test_time: -102.46 (s), test_loss: 1.8848, test_MAPE: -1105.6279, test_RMSE: 4.5832] -2022-02-05 10:37:06,463 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_152.pt saved -2022-02-05 10:37:06,464 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 10:37:06,464 - easytorch-training - INFO - epoch 153 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 10:39:46,239 - easytorch-training - INFO - train:: [train_time: 159.77 (s), lr: 1.00e-03, train_loss: 1.8417, train_MAPE: -167.8602, train_RMSE: 4.1740] -2022-02-05 10:40:38,873 - easytorch-training - INFO - val:: [val_time: 52.63 (s), val_loss: 1.7630, val_MAPE: -2023.7903, val_RMSE: 4.2484] -2022-02-05 10:42:22,243 - easytorch-training - INFO - test:: [test_time: -103.36 (s), test_loss: 1.8622, test_MAPE: -1118.2788, test_RMSE: 4.5262] -2022-02-05 10:42:22,305 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_153.pt saved -2022-02-05 10:42:22,305 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 10:42:22,305 - easytorch-training - INFO - epoch 154 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 10:45:02,573 - easytorch-training - INFO - train:: [train_time: 160.27 (s), lr: 1.00e-03, train_loss: 1.8371, train_MAPE: -181.5591, train_RMSE: 4.1643] -2022-02-05 10:45:54,952 - easytorch-training - INFO - val:: [val_time: 52.37 (s), val_loss: 1.7833, val_MAPE: -2028.0296, val_RMSE: 4.3055] -2022-02-05 10:47:37,721 - easytorch-training - INFO - test:: [test_time: -102.76 (s), test_loss: 1.8864, test_MAPE: -1123.4182, test_RMSE: 4.5861] -2022-02-05 10:47:37,781 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_154.pt saved -2022-02-05 10:47:37,781 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 10:47:37,781 - easytorch-training - INFO - epoch 155 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 10:50:17,503 - easytorch-training - INFO - train:: [train_time: 159.72 (s), lr: 1.00e-03, train_loss: 1.8397, train_MAPE: -173.1501, train_RMSE: 4.1690] -2022-02-05 10:51:10,079 - easytorch-training - INFO - val:: [val_time: 52.57 (s), val_loss: 1.7563, val_MAPE: -2050.3400, val_RMSE: 4.2481] -2022-02-05 10:52:52,877 - easytorch-training - INFO - test:: [test_time: -102.79 (s), test_loss: 1.8650, test_MAPE: -1061.4500, test_RMSE: 4.5466] -2022-02-05 10:52:52,936 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_155.pt saved -2022-02-05 10:52:52,937 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 10:52:52,937 - easytorch-training - INFO - epoch 156 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 10:55:32,235 - easytorch-training - INFO - train:: [train_time: 159.30 (s), lr: 1.00e-03, train_loss: 1.8348, train_MAPE: -194.2792, train_RMSE: 4.1555] -2022-02-05 10:56:24,902 - easytorch-training - INFO - val:: [val_time: 52.66 (s), val_loss: 1.7553, val_MAPE: -1888.0598, val_RMSE: 4.2314] -2022-02-05 10:58:07,746 - easytorch-training - INFO - test:: [test_time: -102.84 (s), test_loss: 1.8712, test_MAPE: -1138.6781, test_RMSE: 4.5526] -2022-02-05 10:58:07,803 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_156.pt saved -2022-02-05 10:58:07,804 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 10:58:07,804 - easytorch-training - INFO - epoch 157 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 11:00:47,448 - easytorch-training - INFO - train:: [train_time: 159.64 (s), lr: 1.00e-03, train_loss: 1.8410, train_MAPE: -189.4501, train_RMSE: 4.1757] -2022-02-05 11:01:40,557 - easytorch-training - INFO - val:: [val_time: 53.10 (s), val_loss: 1.7559, val_MAPE: -1975.7273, val_RMSE: 4.2331] -2022-02-05 11:03:23,923 - easytorch-training - INFO - test:: [test_time: -103.36 (s), test_loss: 1.8704, test_MAPE: -1160.3288, test_RMSE: 4.5554] -2022-02-05 11:03:23,992 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_157.pt saved -2022-02-05 11:03:23,992 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 11:03:23,992 - easytorch-training - INFO - epoch 158 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 11:06:03,924 - easytorch-training - INFO - train:: [train_time: 159.93 (s), lr: 1.00e-03, train_loss: 1.8317, train_MAPE: -167.3461, train_RMSE: 4.1537] -2022-02-05 11:06:56,401 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.7572, val_MAPE: -1887.6812, val_RMSE: 4.2462] -2022-02-05 11:08:39,260 - easytorch-training - INFO - test:: [test_time: -102.85 (s), test_loss: 1.8687, test_MAPE: -1187.9382, test_RMSE: 4.5547] -2022-02-05 11:08:39,316 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_158.pt saved -2022-02-05 11:08:39,317 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 11:08:39,317 - easytorch-training - INFO - epoch 159 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 11:11:19,270 - easytorch-training - INFO - train:: [train_time: 159.95 (s), lr: 1.00e-03, train_loss: 1.8337, train_MAPE: -175.2659, train_RMSE: 4.1514] -2022-02-05 11:12:11,628 - easytorch-training - INFO - val:: [val_time: 52.35 (s), val_loss: 1.7588, val_MAPE: -1895.2249, val_RMSE: 4.2447] -2022-02-05 11:13:54,550 - easytorch-training - INFO - test:: [test_time: -102.92 (s), test_loss: 1.8817, test_MAPE: -1182.9446, test_RMSE: 4.5940] -2022-02-05 11:13:54,591 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_159.pt saved -2022-02-05 11:13:54,592 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 11:13:54,592 - easytorch-training - INFO - epoch 160 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 11:16:34,306 - easytorch-training - INFO - train:: [train_time: 159.71 (s), lr: 1.00e-03, train_loss: 1.8363, train_MAPE: -184.4158, train_RMSE: 4.1611] -2022-02-05 11:17:27,583 - easytorch-training - INFO - val:: [val_time: 53.27 (s), val_loss: 1.7652, val_MAPE: -1905.9787, val_RMSE: 4.2674] -2022-02-05 11:19:10,671 - easytorch-training - INFO - test:: [test_time: -103.08 (s), test_loss: 1.8717, test_MAPE: -1164.1310, test_RMSE: 4.5665] -2022-02-05 11:19:10,732 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_160.pt saved -2022-02-05 11:19:10,736 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 11:19:10,736 - easytorch-training - INFO - epoch 161 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.39it/s] -2022-02-05 11:21:49,886 - easytorch-training - INFO - train:: [train_time: 159.15 (s), lr: 1.00e-03, train_loss: 1.8399, train_MAPE: -175.2252, train_RMSE: 4.1747] -2022-02-05 11:22:42,103 - easytorch-training - INFO - val:: [val_time: 52.21 (s), val_loss: 1.7512, val_MAPE: -1898.0921, val_RMSE: 4.2212] -2022-02-05 11:24:24,759 - easytorch-training - INFO - test:: [test_time: -102.64 (s), test_loss: 1.8743, test_MAPE: -1094.8950, test_RMSE: 4.5656] -2022-02-05 11:24:24,826 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_161.pt saved -2022-02-05 11:24:24,826 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 11:24:24,826 - easytorch-training - INFO - epoch 162 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 11:27:04,790 - easytorch-training - INFO - train:: [train_time: 159.96 (s), lr: 1.00e-03, train_loss: 1.8305, train_MAPE: -172.6687, train_RMSE: 4.1465] -2022-02-05 11:27:57,241 - easytorch-training - INFO - val:: [val_time: 52.45 (s), val_loss: 1.7635, val_MAPE: -1936.4873, val_RMSE: 4.2786] -2022-02-05 11:29:40,080 - easytorch-training - INFO - test:: [test_time: -102.83 (s), test_loss: 1.8672, test_MAPE: -1099.1073, test_RMSE: 4.5582] -2022-02-05 11:29:40,123 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_162.pt saved -2022-02-05 11:29:40,124 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 11:29:40,124 - easytorch-training - INFO - epoch 163 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 11:32:20,233 - easytorch-training - INFO - train:: [train_time: 160.11 (s), lr: 1.00e-03, train_loss: 1.8318, train_MAPE: -166.5140, train_RMSE: 4.1464] -2022-02-05 11:33:12,533 - easytorch-training - INFO - val:: [val_time: 52.29 (s), val_loss: 1.7622, val_MAPE: -1881.8245, val_RMSE: 4.2713] -2022-02-05 11:34:55,210 - easytorch-training - INFO - test:: [test_time: -102.67 (s), test_loss: 1.8679, test_MAPE: -1098.7971, test_RMSE: 4.5608] -2022-02-05 11:34:55,271 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_163.pt saved -2022-02-05 11:34:55,271 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 11:34:55,271 - easytorch-training - INFO - epoch 164 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 11:37:35,193 - easytorch-training - INFO - train:: [train_time: 159.92 (s), lr: 1.00e-03, train_loss: 1.8284, train_MAPE: -168.6731, train_RMSE: 4.1417] -2022-02-05 11:38:27,561 - easytorch-training - INFO - val:: [val_time: 52.36 (s), val_loss: 1.7556, val_MAPE: -1939.1135, val_RMSE: 4.2280] -2022-02-05 11:40:10,375 - easytorch-training - INFO - test:: [test_time: -102.81 (s), test_loss: 1.8738, test_MAPE: -1136.3505, test_RMSE: 4.5659] -2022-02-05 11:40:10,417 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_164.pt saved -2022-02-05 11:40:10,417 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 11:40:10,417 - easytorch-training - INFO - epoch 165 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 11:42:50,700 - easytorch-training - INFO - train:: [train_time: 160.28 (s), lr: 1.00e-03, train_loss: 1.8318, train_MAPE: -200.0039, train_RMSE: 4.1502] -2022-02-05 11:43:43,169 - easytorch-training - INFO - val:: [val_time: 52.46 (s), val_loss: 1.7628, val_MAPE: -1851.5454, val_RMSE: 4.2652] -2022-02-05 11:45:25,853 - easytorch-training - INFO - test:: [test_time: -102.68 (s), test_loss: 1.8706, test_MAPE: -1158.2551, test_RMSE: 4.5607] -2022-02-05 11:45:25,913 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_165.pt saved -2022-02-05 11:45:25,913 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 11:45:25,913 - easytorch-training - INFO - epoch 166 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 11:48:05,503 - easytorch-training - INFO - train:: [train_time: 159.59 (s), lr: 1.00e-03, train_loss: 1.8346, train_MAPE: -183.4949, train_RMSE: 4.1552] -2022-02-05 11:48:57,666 - easytorch-training - INFO - val:: [val_time: 52.16 (s), val_loss: 1.7639, val_MAPE: -1898.1593, val_RMSE: 4.2452] -2022-02-05 11:50:40,035 - easytorch-training - INFO - test:: [test_time: -102.36 (s), test_loss: 1.8796, test_MAPE: -1089.5924, test_RMSE: 4.5714] -2022-02-05 11:50:40,095 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_166.pt saved -2022-02-05 11:50:40,095 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:22 -2022-02-05 11:50:40,095 - easytorch-training - INFO - epoch 167 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 11:53:19,714 - easytorch-training - INFO - train:: [train_time: 159.62 (s), lr: 1.00e-03, train_loss: 1.8373, train_MAPE: -188.4750, train_RMSE: 4.1631] -2022-02-05 11:54:12,140 - easytorch-training - INFO - val:: [val_time: 52.42 (s), val_loss: 1.7602, val_MAPE: -1946.6795, val_RMSE: 4.2357] -2022-02-05 11:55:54,705 - easytorch-training - INFO - test:: [test_time: -102.56 (s), test_loss: 1.8738, test_MAPE: -1155.6080, test_RMSE: 4.5570] -2022-02-05 11:55:54,769 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_167.pt saved -2022-02-05 11:55:54,769 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:21 -2022-02-05 11:55:54,769 - easytorch-training - INFO - epoch 168 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 11:58:35,114 - easytorch-training - INFO - train:: [train_time: 160.34 (s), lr: 1.00e-03, train_loss: 1.8342, train_MAPE: -163.5701, train_RMSE: 4.1561] -2022-02-05 11:59:27,577 - easytorch-training - INFO - val:: [val_time: 52.46 (s), val_loss: 1.7585, val_MAPE: -1913.3211, val_RMSE: 4.2397] -2022-02-05 12:01:10,125 - easytorch-training - INFO - test:: [test_time: -102.54 (s), test_loss: 1.8648, test_MAPE: -1173.9306, test_RMSE: 4.5393] -2022-02-05 12:01:10,185 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_168.pt saved -2022-02-05 12:01:10,186 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:21 -2022-02-05 12:01:10,186 - easytorch-training - INFO - epoch 169 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 12:03:50,826 - easytorch-training - INFO - train:: [train_time: 160.64 (s), lr: 1.00e-03, train_loss: 1.8361, train_MAPE: -166.1591, train_RMSE: 4.1633] -2022-02-05 12:04:43,076 - easytorch-training - INFO - val:: [val_time: 52.24 (s), val_loss: 1.7691, val_MAPE: -1956.3087, val_RMSE: 4.2587] -2022-02-05 12:06:25,769 - easytorch-training - INFO - test:: [test_time: -102.69 (s), test_loss: 1.8955, test_MAPE: -1110.2155, test_RMSE: 4.6162] -2022-02-05 12:06:25,829 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_169.pt saved -2022-02-05 12:06:25,830 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:21 -2022-02-05 12:06:25,830 - easytorch-training - INFO - epoch 170 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 12:09:06,425 - easytorch-training - INFO - train:: [train_time: 160.59 (s), lr: 1.00e-03, train_loss: 1.8292, train_MAPE: -180.8706, train_RMSE: 4.1466] -2022-02-05 12:09:59,271 - easytorch-training - INFO - val:: [val_time: 52.84 (s), val_loss: 1.7650, val_MAPE: -1929.4807, val_RMSE: 4.2652] -2022-02-05 12:11:42,097 - easytorch-training - INFO - test:: [test_time: -102.82 (s), test_loss: 1.8791, test_MAPE: -1188.8008, test_RMSE: 4.5791] -2022-02-05 12:11:42,145 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_170.pt saved -2022-02-05 12:11:42,149 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 12:11:42,149 - easytorch-training - INFO - epoch 171 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 12:14:21,958 - easytorch-training - INFO - train:: [train_time: 159.81 (s), lr: 1.00e-03, train_loss: 1.8305, train_MAPE: -197.5672, train_RMSE: 4.1553] -2022-02-05 12:15:14,312 - easytorch-training - INFO - val:: [val_time: 52.35 (s), val_loss: 1.7635, val_MAPE: -1870.2224, val_RMSE: 4.2482] -2022-02-05 12:16:56,999 - easytorch-training - INFO - test:: [test_time: -102.68 (s), test_loss: 1.8824, test_MAPE: -1061.5035, test_RMSE: 4.5859] -2022-02-05 12:16:57,033 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_171.pt saved -2022-02-05 12:16:57,033 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:22 -2022-02-05 12:16:57,033 - easytorch-training - INFO - epoch 172 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 12:19:36,513 - easytorch-training - INFO - train:: [train_time: 159.48 (s), lr: 1.00e-03, train_loss: 1.8349, train_MAPE: -194.3741, train_RMSE: 4.1557] -2022-02-05 12:20:28,946 - easytorch-training - INFO - val:: [val_time: 52.43 (s), val_loss: 1.7527, val_MAPE: -1948.4928, val_RMSE: 4.2302] -2022-02-05 12:22:13,342 - easytorch-training - INFO - test:: [test_time: -104.39 (s), test_loss: 1.8638, test_MAPE: -1120.1983, test_RMSE: 4.5379] -2022-02-05 12:22:13,405 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_172.pt saved -2022-02-05 12:22:13,405 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 12:22:13,405 - easytorch-training - INFO - epoch 173 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 12:24:53,625 - easytorch-training - INFO - train:: [train_time: 160.22 (s), lr: 1.00e-03, train_loss: 1.8339, train_MAPE: -160.2091, train_RMSE: 4.1565] -2022-02-05 12:25:46,107 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.7683, val_MAPE: -1897.8111, val_RMSE: 4.2702] -2022-02-05 12:27:28,943 - easytorch-training - INFO - test:: [test_time: -102.83 (s), test_loss: 1.8751, test_MAPE: -1093.2983, test_RMSE: 4.5577] -2022-02-05 12:27:29,001 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_173.pt saved -2022-02-05 12:27:29,001 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 12:27:29,001 - easytorch-training - INFO - epoch 174 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 12:30:08,701 - easytorch-training - INFO - train:: [train_time: 159.70 (s), lr: 1.00e-03, train_loss: 1.8323, train_MAPE: -177.1166, train_RMSE: 4.1514] -2022-02-05 12:31:01,199 - easytorch-training - INFO - val:: [val_time: 52.49 (s), val_loss: 1.7510, val_MAPE: -1937.7263, val_RMSE: 4.2392] -2022-02-05 12:32:44,285 - easytorch-training - INFO - test:: [test_time: -103.08 (s), test_loss: 1.8660, test_MAPE: -1155.7183, test_RMSE: 4.5489] -2022-02-05 12:32:44,322 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_174.pt saved -2022-02-05 12:32:44,323 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 12:32:44,323 - easytorch-training - INFO - epoch 175 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 12:35:24,025 - easytorch-training - INFO - train:: [train_time: 159.70 (s), lr: 1.00e-03, train_loss: 1.8261, train_MAPE: -183.0576, train_RMSE: 4.1363] -2022-02-05 12:36:17,515 - easytorch-training - INFO - val:: [val_time: 53.49 (s), val_loss: 1.7608, val_MAPE: -1859.1785, val_RMSE: 4.2535] -2022-02-05 12:38:00,205 - easytorch-training - INFO - test:: [test_time: -102.68 (s), test_loss: 1.8741, test_MAPE: -1125.9037, test_RMSE: 4.5737] -2022-02-05 12:38:00,257 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_175.pt saved -2022-02-05 12:38:00,258 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 12:38:00,258 - easytorch-training - INFO - epoch 176 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 12:40:40,430 - easytorch-training - INFO - train:: [train_time: 160.17 (s), lr: 1.00e-03, train_loss: 1.8244, train_MAPE: -168.5291, train_RMSE: 4.1308] -2022-02-05 12:41:34,165 - easytorch-training - INFO - val:: [val_time: 53.73 (s), val_loss: 1.7795, val_MAPE: -1849.7755, val_RMSE: 4.2892] -2022-02-05 12:43:17,111 - easytorch-training - INFO - test:: [test_time: -102.94 (s), test_loss: 1.8913, test_MAPE: -1119.3575, test_RMSE: 4.6076] -2022-02-05 12:43:17,173 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_176.pt saved -2022-02-05 12:43:17,174 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 12:43:17,174 - easytorch-training - INFO - epoch 177 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 12:45:56,885 - easytorch-training - INFO - train:: [train_time: 159.71 (s), lr: 1.00e-03, train_loss: 1.8248, train_MAPE: -176.0380, train_RMSE: 4.1353] -2022-02-05 12:46:49,379 - easytorch-training - INFO - val:: [val_time: 52.49 (s), val_loss: 1.7574, val_MAPE: -1956.6916, val_RMSE: 4.2391] -2022-02-05 12:48:32,126 - easytorch-training - INFO - test:: [test_time: -102.74 (s), test_loss: 1.8738, test_MAPE: -1161.8304, test_RMSE: 4.5617] -2022-02-05 12:48:32,185 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_177.pt saved -2022-02-05 12:48:32,186 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 12:48:32,186 - easytorch-training - INFO - epoch 178 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 12:51:12,572 - easytorch-training - INFO - train:: [train_time: 160.39 (s), lr: 1.00e-03, train_loss: 1.8326, train_MAPE: -177.6002, train_RMSE: 4.1534] -2022-02-05 12:52:04,991 - easytorch-training - INFO - val:: [val_time: 52.41 (s), val_loss: 1.7592, val_MAPE: -1875.2476, val_RMSE: 4.2402] -2022-02-05 12:53:48,072 - easytorch-training - INFO - test:: [test_time: -103.07 (s), test_loss: 1.8649, test_MAPE: -1142.8752, test_RMSE: 4.5375] -2022-02-05 12:53:48,132 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_178.pt saved -2022-02-05 12:53:48,133 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 12:53:48,133 - easytorch-training - INFO - epoch 179 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 12:56:28,127 - easytorch-training - INFO - train:: [train_time: 159.99 (s), lr: 1.00e-03, train_loss: 1.8328, train_MAPE: -176.8845, train_RMSE: 4.1504] -2022-02-05 12:57:20,524 - easytorch-training - INFO - val:: [val_time: 52.39 (s), val_loss: 1.7681, val_MAPE: -1900.2401, val_RMSE: 4.2600] -2022-02-05 12:59:03,366 - easytorch-training - INFO - test:: [test_time: -102.84 (s), test_loss: 1.8754, test_MAPE: -1144.2104, test_RMSE: 4.5714] -2022-02-05 12:59:03,428 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_179.pt saved -2022-02-05 12:59:03,429 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 12:59:03,429 - easytorch-training - INFO - epoch 180 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 13:01:43,747 - easytorch-training - INFO - train:: [train_time: 160.32 (s), lr: 1.00e-03, train_loss: 1.8251, train_MAPE: -168.9681, train_RMSE: 4.1343] -2022-02-05 13:02:36,243 - easytorch-training - INFO - val:: [val_time: 52.49 (s), val_loss: 1.7460, val_MAPE: -1994.8660, val_RMSE: 4.2072] -2022-02-05 13:04:18,684 - easytorch-training - INFO - test:: [test_time: -102.44 (s), test_loss: 1.8621, test_MAPE: -1117.3522, test_RMSE: 4.5231] -2022-02-05 13:04:18,730 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_180.pt saved -2022-02-05 13:04:18,734 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 13:04:18,734 - easytorch-training - INFO - epoch 181 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 13:06:58,831 - easytorch-training - INFO - train:: [train_time: 160.10 (s), lr: 1.00e-03, train_loss: 1.8231, train_MAPE: -172.4691, train_RMSE: 4.1312] -2022-02-05 13:07:51,241 - easytorch-training - INFO - val:: [val_time: 52.40 (s), val_loss: 1.7670, val_MAPE: -1947.7092, val_RMSE: 4.2614] -2022-02-05 13:09:33,750 - easytorch-training - INFO - test:: [test_time: -102.50 (s), test_loss: 1.8749, test_MAPE: -1115.6458, test_RMSE: 4.5656] -2022-02-05 13:09:33,807 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_181.pt saved -2022-02-05 13:09:33,807 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 13:09:33,807 - easytorch-training - INFO - epoch 182 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 13:12:14,439 - easytorch-training - INFO - train:: [train_time: 160.63 (s), lr: 1.00e-03, train_loss: 1.8349, train_MAPE: -184.5835, train_RMSE: 4.1522] -2022-02-05 13:13:06,909 - easytorch-training - INFO - val:: [val_time: 52.47 (s), val_loss: 1.7607, val_MAPE: -2054.8409, val_RMSE: 4.2400] -2022-02-05 13:14:49,615 - easytorch-training - INFO - test:: [test_time: -102.70 (s), test_loss: 1.8820, test_MAPE: -1172.6023, test_RMSE: 4.5803] -2022-02-05 13:14:49,651 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_182.pt saved -2022-02-05 13:14:49,651 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 13:14:49,651 - easytorch-training - INFO - epoch 183 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 13:17:29,640 - easytorch-training - INFO - train:: [train_time: 159.99 (s), lr: 1.00e-03, train_loss: 1.8292, train_MAPE: -176.1674, train_RMSE: 4.1425] -2022-02-05 13:18:22,454 - easytorch-training - INFO - val:: [val_time: 52.81 (s), val_loss: 1.7528, val_MAPE: -1966.6324, val_RMSE: 4.2324] -2022-02-05 13:20:05,122 - easytorch-training - INFO - test:: [test_time: -102.66 (s), test_loss: 1.8717, test_MAPE: -1078.3090, test_RMSE: 4.5637] -2022-02-05 13:20:05,183 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_183.pt saved -2022-02-05 13:20:05,184 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 13:20:05,184 - easytorch-training - INFO - epoch 184 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 13:22:45,080 - easytorch-training - INFO - train:: [train_time: 159.90 (s), lr: 1.00e-03, train_loss: 1.8257, train_MAPE: -185.4945, train_RMSE: 4.1320] -2022-02-05 13:23:37,505 - easytorch-training - INFO - val:: [val_time: 52.42 (s), val_loss: 1.7651, val_MAPE: -1952.6826, val_RMSE: 4.2562] -2022-02-05 13:25:20,200 - easytorch-training - INFO - test:: [test_time: -102.69 (s), test_loss: 1.8763, test_MAPE: -1102.1161, test_RMSE: 4.5689] -2022-02-05 13:25:20,255 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_184.pt saved -2022-02-05 13:25:20,255 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 13:25:20,255 - easytorch-training - INFO - epoch 185 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 13:28:00,155 - easytorch-training - INFO - train:: [train_time: 159.90 (s), lr: 1.00e-03, train_loss: 1.8230, train_MAPE: -171.5181, train_RMSE: 4.1290] -2022-02-05 13:28:52,763 - easytorch-training - INFO - val:: [val_time: 52.60 (s), val_loss: 1.7601, val_MAPE: -1908.8404, val_RMSE: 4.2551] -2022-02-05 13:30:37,115 - easytorch-training - INFO - test:: [test_time: -104.35 (s), test_loss: 1.8776, test_MAPE: -1053.8035, test_RMSE: 4.5865] -2022-02-05 13:30:37,151 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_185.pt saved -2022-02-05 13:30:37,151 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 13:30:37,151 - easytorch-training - INFO - epoch 186 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 13:33:17,347 - easytorch-training - INFO - train:: [train_time: 160.20 (s), lr: 1.00e-03, train_loss: 1.8264, train_MAPE: -181.4640, train_RMSE: 4.1361] -2022-02-05 13:34:09,708 - easytorch-training - INFO - val:: [val_time: 52.36 (s), val_loss: 1.7615, val_MAPE: -1935.3641, val_RMSE: 4.2490] -2022-02-05 13:35:52,523 - easytorch-training - INFO - test:: [test_time: -102.81 (s), test_loss: 1.8623, test_MAPE: -1107.2483, test_RMSE: 4.5231] -2022-02-05 13:35:52,565 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_186.pt saved -2022-02-05 13:35:52,565 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 13:35:52,565 - easytorch-training - INFO - epoch 187 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 13:38:32,181 - easytorch-training - INFO - train:: [train_time: 159.62 (s), lr: 1.00e-03, train_loss: 1.8291, train_MAPE: -171.6030, train_RMSE: 4.1414] -2022-02-05 13:39:24,671 - easytorch-training - INFO - val:: [val_time: 52.48 (s), val_loss: 1.7632, val_MAPE: -1917.8328, val_RMSE: 4.2614] -2022-02-05 13:41:07,171 - easytorch-training - INFO - test:: [test_time: -102.50 (s), test_loss: 1.8834, test_MAPE: -1162.1012, test_RMSE: 4.6039] -2022-02-05 13:41:07,236 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_187.pt saved -2022-02-05 13:41:07,237 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:27 -2022-02-05 13:41:07,237 - easytorch-training - INFO - epoch 188 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 13:43:46,780 - easytorch-training - INFO - train:: [train_time: 159.54 (s), lr: 1.00e-03, train_loss: 1.8262, train_MAPE: -183.7087, train_RMSE: 4.1356] -2022-02-05 13:44:39,219 - easytorch-training - INFO - val:: [val_time: 52.43 (s), val_loss: 1.7681, val_MAPE: -2020.3851, val_RMSE: 4.2695] -2022-02-05 13:46:21,505 - easytorch-training - INFO - test:: [test_time: -102.28 (s), test_loss: 1.8876, test_MAPE: -1073.2332, test_RMSE: 4.6106] -2022-02-05 13:46:21,545 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_188.pt saved -2022-02-05 13:46:21,545 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 13:46:21,545 - easytorch-training - INFO - epoch 189 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 13:49:02,139 - easytorch-training - INFO - train:: [train_time: 160.59 (s), lr: 1.00e-03, train_loss: 1.8300, train_MAPE: -180.6870, train_RMSE: 4.1461] -2022-02-05 13:49:54,394 - easytorch-training - INFO - val:: [val_time: 52.25 (s), val_loss: 1.7564, val_MAPE: -1928.0809, val_RMSE: 4.2495] -2022-02-05 13:51:37,387 - easytorch-training - INFO - test:: [test_time: -102.99 (s), test_loss: 1.8665, test_MAPE: -1106.9112, test_RMSE: 4.5505] -2022-02-05 13:51:37,424 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_189.pt saved -2022-02-05 13:51:37,424 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:26 -2022-02-05 13:51:37,424 - easytorch-training - INFO - epoch 190 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 13:54:17,125 - easytorch-training - INFO - train:: [train_time: 159.70 (s), lr: 1.00e-03, train_loss: 1.8249, train_MAPE: -171.0461, train_RMSE: 4.1359] -2022-02-05 13:55:09,343 - easytorch-training - INFO - val:: [val_time: 52.21 (s), val_loss: 1.7566, val_MAPE: -1932.5615, val_RMSE: 4.2402] -2022-02-05 13:56:51,851 - easytorch-training - INFO - test:: [test_time: -102.50 (s), test_loss: 1.8709, test_MAPE: -1091.0902, test_RMSE: 4.5602] -2022-02-05 13:56:51,914 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_190.pt saved -2022-02-05 13:56:51,918 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 13:56:51,918 - easytorch-training - INFO - epoch 191 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 13:59:32,266 - easytorch-training - INFO - train:: [train_time: 160.35 (s), lr: 1.00e-03, train_loss: 1.8248, train_MAPE: -192.0705, train_RMSE: 4.1355] -2022-02-05 14:00:24,483 - easytorch-training - INFO - val:: [val_time: 52.21 (s), val_loss: 1.7489, val_MAPE: -1912.2423, val_RMSE: 4.2230] -2022-02-05 14:02:07,018 - easytorch-training - INFO - test:: [test_time: -102.53 (s), test_loss: 1.8616, test_MAPE: -1043.5285, test_RMSE: 4.5287] -2022-02-05 14:02:07,086 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_191.pt saved -2022-02-05 14:02:07,086 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:25 -2022-02-05 14:02:07,086 - easytorch-training - INFO - epoch 192 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 14:04:47,169 - easytorch-training - INFO - train:: [train_time: 160.08 (s), lr: 1.00e-03, train_loss: 1.8288, train_MAPE: -176.3058, train_RMSE: 4.1439] -2022-02-05 14:05:39,433 - easytorch-training - INFO - val:: [val_time: 52.26 (s), val_loss: 1.7518, val_MAPE: -1918.9098, val_RMSE: 4.2170] -2022-02-05 14:07:21,804 - easytorch-training - INFO - test:: [test_time: -102.37 (s), test_loss: 1.8781, test_MAPE: -1091.9761, test_RMSE: 4.5740] -2022-02-05 14:07:21,864 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_192.pt saved -2022-02-05 14:07:21,864 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 14:07:21,864 - easytorch-training - INFO - epoch 193 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 14:10:01,830 - easytorch-training - INFO - train:: [train_time: 159.97 (s), lr: 1.00e-03, train_loss: 1.8263, train_MAPE: -185.0034, train_RMSE: 4.1390] -2022-02-05 14:10:53,987 - easytorch-training - INFO - val:: [val_time: 52.15 (s), val_loss: 1.7618, val_MAPE: -1848.9384, val_RMSE: 4.2618] -2022-02-05 14:12:36,753 - easytorch-training - INFO - test:: [test_time: -102.76 (s), test_loss: 1.8811, test_MAPE: -1130.8287, test_RMSE: 4.6059] -2022-02-05 14:12:36,802 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_193.pt saved -2022-02-05 14:12:36,802 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 14:12:36,802 - easytorch-training - INFO - epoch 194 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 14:15:16,604 - easytorch-training - INFO - train:: [train_time: 159.80 (s), lr: 1.00e-03, train_loss: 1.8257, train_MAPE: -180.1110, train_RMSE: 4.1369] -2022-02-05 14:16:09,001 - easytorch-training - INFO - val:: [val_time: 52.39 (s), val_loss: 1.7641, val_MAPE: -1812.7954, val_RMSE: 4.2652] -2022-02-05 14:17:51,936 - easytorch-training - INFO - test:: [test_time: -102.93 (s), test_loss: 1.8744, test_MAPE: -1176.8865, test_RMSE: 4.5769] -2022-02-05 14:17:51,988 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_194.pt saved -2022-02-05 14:17:51,989 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 14:17:51,989 - easytorch-training - INFO - epoch 195 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 14:20:31,690 - easytorch-training - INFO - train:: [train_time: 159.70 (s), lr: 1.00e-03, train_loss: 1.8303, train_MAPE: -163.0540, train_RMSE: 4.1454] -2022-02-05 14:21:23,910 - easytorch-training - INFO - val:: [val_time: 52.21 (s), val_loss: 1.7481, val_MAPE: -1966.2415, val_RMSE: 4.2153] -2022-02-05 14:23:06,194 - easytorch-training - INFO - test:: [test_time: -102.28 (s), test_loss: 1.8650, test_MAPE: -1111.5190, test_RMSE: 4.5398] -2022-02-05 14:23:06,240 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_195.pt saved -2022-02-05 14:23:06,240 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 14:23:06,241 - easytorch-training - INFO - epoch 196 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 14:25:46,678 - easytorch-training - INFO - train:: [train_time: 160.44 (s), lr: 1.00e-03, train_loss: 1.8289, train_MAPE: -181.6757, train_RMSE: 4.1457] -2022-02-05 14:26:39,378 - easytorch-training - INFO - val:: [val_time: 52.70 (s), val_loss: 1.7527, val_MAPE: -1912.5298, val_RMSE: 4.2327] -2022-02-05 14:28:21,975 - easytorch-training - INFO - test:: [test_time: -102.59 (s), test_loss: 1.8692, test_MAPE: -1171.7158, test_RMSE: 4.5542] -2022-02-05 14:28:22,041 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_196.pt saved -2022-02-05 14:28:22,042 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 14:28:22,042 - easytorch-training - INFO - epoch 197 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.36it/s] -2022-02-05 14:31:02,411 - easytorch-training - INFO - train:: [train_time: 160.37 (s), lr: 1.00e-03, train_loss: 1.8293, train_MAPE: -164.3304, train_RMSE: 4.1434] -2022-02-05 14:31:54,674 - easytorch-training - INFO - val:: [val_time: 52.26 (s), val_loss: 1.7604, val_MAPE: -1955.8278, val_RMSE: 4.2486] -2022-02-05 14:33:37,307 - easytorch-training - INFO - test:: [test_time: -102.63 (s), test_loss: 1.8815, test_MAPE: -1161.4772, test_RMSE: 4.5883] -2022-02-05 14:33:37,365 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_197.pt saved -2022-02-05 14:33:37,366 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 14:33:37,366 - easytorch-training - INFO - epoch 198 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:40<00:00, 3.37it/s] -2022-02-05 14:36:17,534 - easytorch-training - INFO - train:: [train_time: 160.17 (s), lr: 1.00e-03, train_loss: 1.8261, train_MAPE: -169.6342, train_RMSE: 4.1320] -2022-02-05 14:37:09,931 - easytorch-training - INFO - val:: [val_time: 52.39 (s), val_loss: 1.7603, val_MAPE: -1964.3463, val_RMSE: 4.2410] -2022-02-05 14:38:53,089 - easytorch-training - INFO - test:: [test_time: -103.15 (s), test_loss: 1.8811, test_MAPE: -1144.7764, test_RMSE: 4.5804] -2022-02-05 14:38:53,147 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_198.pt saved -2022-02-05 14:38:53,147 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:23 -2022-02-05 14:38:53,147 - easytorch-training - INFO - epoch 199 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.37it/s] -2022-02-05 14:41:33,076 - easytorch-training - INFO - train:: [train_time: 159.93 (s), lr: 1.00e-03, train_loss: 1.8272, train_MAPE: -167.8416, train_RMSE: 4.1391] -2022-02-05 14:42:25,687 - easytorch-training - INFO - val:: [val_time: 52.61 (s), val_loss: 1.7593, val_MAPE: -1955.4025, val_RMSE: 4.2543] -2022-02-05 14:44:08,875 - easytorch-training - INFO - test:: [test_time: -103.18 (s), test_loss: 1.8680, test_MAPE: -1106.9087, test_RMSE: 4.5635] -2022-02-05 14:44:08,935 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_199.pt saved -2022-02-05 14:44:08,936 - easytorch-training - INFO - The estimated training finish time is 2022-02-05 14:49:24 -2022-02-05 14:44:08,936 - easytorch-training - INFO - epoch 200 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 539/539 [02:39<00:00, 3.38it/s] -2022-02-05 14:46:48,447 - easytorch-training - INFO - train:: [train_time: 159.51 (s), lr: 1.00e-03, train_loss: 1.8238, train_MAPE: -183.0913, train_RMSE: 4.1286] -2022-02-05 14:47:40,465 - easytorch-training - INFO - val:: [val_time: 52.01 (s), val_loss: 1.7571, val_MAPE: -1894.1719, val_RMSE: 4.2358] -2022-02-05 14:49:22,803 - easytorch-training - INFO - test:: [test_time: -102.33 (s), test_loss: 1.8779, test_MAPE: -1137.9401, test_RMSE: 4.5703] -2022-02-05 14:49:22,841 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/9b4b52e25a30aabd21dc1c9429063196/TSFormer_200.pt saved -2022-02-05 14:49:22,844 - easytorch-training - INFO - The training finished at 2022-02-05 14:49:22 /8.1s diff --git a/train_logs/TSFormer_PEMS04.log b/train_logs/TSFormer_PEMS04.log deleted file mode 100644 index b1b1c4f..0000000 --- a/train_logs/TSFormer_PEMS04.log +++ /dev/null @@ -1,1254 +0,0 @@ -2022-02-01 13:55:30,563 - easytorch-env - INFO - Enable TF32 mode -2022-02-01 13:55:30,564 - easytorch - INFO - ckpt save dir: 'checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c' -2022-02-01 13:55:35,469 - easytorch-training - INFO - set optim: AdamW ( -Parameter Group 0 - amsgrad: False - betas: [0.9, 0.95] - eps: 1e-08 - lr: 0.001 - weight_decay: 0 -) -2022-02-01 13:55:35,470 - easytorch-training - INFO - set lr_scheduler: -2022-02-01 13:55:35,805 - easytorch-training - INFO - epoch 1 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 13:58:02,377 - easytorch-training - INFO - train:: [train_time: 146.57 (s), lr: 1.00e-03, train_loss: 108.1024, train_MAPE: 1.9101, train_RMSE: 135.0527] -2022-02-01 13:58:42,075 - easytorch-training - INFO - val:: [val_time: 39.69 (s), val_loss: 108.2071, val_MAPE: 2.2256, val_RMSE: 138.3423] -2022-02-01 13:59:21,495 - easytorch-training - INFO - test:: [test_time: -39.42 (s), test_loss: 107.3844, test_MAPE: 2.1498, test_RMSE: 137.6958] -2022-02-01 13:59:21,535 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_001.pt saved -2022-02-01 13:59:21,535 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:01 -2022-02-01 13:59:21,535 - easytorch-training - INFO - epoch 2 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 14:01:47,969 - easytorch-training - INFO - train:: [train_time: 146.43 (s), lr: 1.00e-03, train_loss: 49.1318, train_MAPE: 0.5251, train_RMSE: 71.3614] -2022-02-01 14:02:28,395 - easytorch-training - INFO - val:: [val_time: 40.42 (s), val_loss: 41.4260, val_MAPE: 0.3063, val_RMSE: 65.0395] -2022-02-01 14:03:07,927 - easytorch-training - INFO - test:: [test_time: -39.53 (s), test_loss: 40.5606, test_MAPE: 0.2902, test_RMSE: 63.1054] -2022-02-01 14:03:07,963 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_002.pt saved -2022-02-01 14:03:07,963 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:11 -2022-02-01 14:03:07,964 - easytorch-training - INFO - epoch 3 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:05:33,767 - easytorch-training - INFO - train:: [train_time: 145.80 (s), lr: 1.00e-03, train_loss: 39.8297, train_MAPE: 0.3623, train_RMSE: 60.9225] -2022-02-01 14:06:13,945 - easytorch-training - INFO - val:: [val_time: 40.17 (s), val_loss: 37.3662, val_MAPE: 0.3016, val_RMSE: 58.1150] -2022-02-01 14:06:53,241 - easytorch-training - INFO - test:: [test_time: -39.29 (s), test_loss: 36.1409, test_MAPE: 0.2831, test_RMSE: 55.4437] -2022-02-01 14:06:53,292 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_003.pt saved -2022-02-01 14:06:53,292 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:21 -2022-02-01 14:06:53,292 - easytorch-training - INFO - epoch 4 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:09:19,198 - easytorch-training - INFO - train:: [train_time: 145.91 (s), lr: 1.00e-03, train_loss: 33.0342, train_MAPE: 0.2832, train_RMSE: 50.0919] -2022-02-01 14:09:59,716 - easytorch-training - INFO - val:: [val_time: 40.51 (s), val_loss: 29.9289, val_MAPE: 0.2096, val_RMSE: 46.9243] -2022-02-01 14:10:38,888 - easytorch-training - INFO - test:: [test_time: -39.17 (s), test_loss: 28.9312, test_MAPE: 0.1997, test_RMSE: 44.9804] -2022-02-01 14:10:38,923 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_004.pt saved -2022-02-01 14:10:38,924 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:11 -2022-02-01 14:10:38,924 - easytorch-training - INFO - epoch 5 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 14:13:05,905 - easytorch-training - INFO - train:: [train_time: 146.98 (s), lr: 1.00e-03, train_loss: 30.5165, train_MAPE: 0.2559, train_RMSE: 46.2587] -2022-02-01 14:13:45,708 - easytorch-training - INFO - val:: [val_time: 39.80 (s), val_loss: 28.8621, val_MAPE: 0.2138, val_RMSE: 44.2584] -2022-02-01 14:14:25,255 - easytorch-training - INFO - test:: [test_time: -39.54 (s), test_loss: 28.2390, test_MAPE: 0.2062, test_RMSE: 43.2854] -2022-02-01 14:14:25,285 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_005.pt saved -2022-02-01 14:14:25,285 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:35 -2022-02-01 14:14:25,285 - easytorch-training - INFO - epoch 6 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:16:51,103 - easytorch-training - INFO - train:: [train_time: 145.82 (s), lr: 1.00e-03, train_loss: 29.7022, train_MAPE: 0.2487, train_RMSE: 44.9753] -2022-02-01 14:17:31,072 - easytorch-training - INFO - val:: [val_time: 39.96 (s), val_loss: 28.2974, val_MAPE: 0.2241, val_RMSE: 43.3832] -2022-02-01 14:18:11,345 - easytorch-training - INFO - test:: [test_time: -40.27 (s), test_loss: 27.6298, test_MAPE: 0.2147, test_RMSE: 42.3527] -2022-02-01 14:18:11,380 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_006.pt saved -2022-02-01 14:18:11,381 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:41 -2022-02-01 14:18:11,381 - easytorch-training - INFO - epoch 7 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:20:37,222 - easytorch-training - INFO - train:: [train_time: 145.84 (s), lr: 1.00e-03, train_loss: 28.5648, train_MAPE: 0.2330, train_RMSE: 43.4774] -2022-02-01 14:21:16,757 - easytorch-training - INFO - val:: [val_time: 39.53 (s), val_loss: 26.8859, val_MAPE: 0.2051, val_RMSE: 41.1927] -2022-02-01 14:21:56,872 - easytorch-training - INFO - test:: [test_time: -40.11 (s), test_loss: 26.3907, test_MAPE: 0.1958, test_RMSE: 40.5452] -2022-02-01 14:21:56,908 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_007.pt saved -2022-02-01 14:21:56,908 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:30 -2022-02-01 14:21:56,908 - easytorch-training - INFO - epoch 8 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:24:22,351 - easytorch-training - INFO - train:: [train_time: 145.44 (s), lr: 1.00e-03, train_loss: 28.0056, train_MAPE: 0.2298, train_RMSE: 42.5399] -2022-02-01 14:25:02,967 - easytorch-training - INFO - val:: [val_time: 40.61 (s), val_loss: 26.2462, val_MAPE: 0.1909, val_RMSE: 40.6991] -2022-02-01 14:25:42,534 - easytorch-training - INFO - test:: [test_time: -39.56 (s), test_loss: 25.8344, test_MAPE: 0.1838, test_RMSE: 40.0900] -2022-02-01 14:25:42,565 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_008.pt saved -2022-02-01 14:25:42,565 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:24 -2022-02-01 14:25:42,565 - easytorch-training - INFO - epoch 9 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:28:08,363 - easytorch-training - INFO - train:: [train_time: 145.80 (s), lr: 1.00e-03, train_loss: 26.9141, train_MAPE: 0.2167, train_RMSE: 41.1741] -2022-02-01 14:28:48,335 - easytorch-training - INFO - val:: [val_time: 39.97 (s), val_loss: 25.3093, val_MAPE: 0.1856, val_RMSE: 39.3435] -2022-02-01 14:29:28,002 - easytorch-training - INFO - test:: [test_time: -39.66 (s), test_loss: 25.0272, test_MAPE: 0.1789, test_RMSE: 39.0494] -2022-02-01 14:29:28,041 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_009.pt saved -2022-02-01 14:29:28,042 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:16 -2022-02-01 14:29:28,042 - easytorch-training - INFO - epoch 10 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 14:31:54,116 - easytorch-training - INFO - train:: [train_time: 146.07 (s), lr: 1.00e-03, train_loss: 26.1754, train_MAPE: 0.2095, train_RMSE: 40.1810] -2022-02-01 14:32:34,268 - easytorch-training - INFO - val:: [val_time: 40.15 (s), val_loss: 24.5615, val_MAPE: 0.1751, val_RMSE: 38.5386] -2022-02-01 14:33:14,685 - easytorch-training - INFO - test:: [test_time: -40.41 (s), test_loss: 24.4532, test_MAPE: 0.1707, test_RMSE: 38.4584] -2022-02-01 14:33:14,728 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_010.pt saved -2022-02-01 14:33:14,731 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:34 -2022-02-01 14:33:14,731 - easytorch-training - INFO - epoch 11 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 14:35:40,791 - easytorch-training - INFO - train:: [train_time: 146.06 (s), lr: 1.00e-03, train_loss: 25.6112, train_MAPE: 0.2034, train_RMSE: 39.5041] -2022-02-01 14:36:21,111 - easytorch-training - INFO - val:: [val_time: 40.31 (s), val_loss: 24.2226, val_MAPE: 0.1713, val_RMSE: 38.2127] -2022-02-01 14:37:00,457 - easytorch-training - INFO - test:: [test_time: -39.34 (s), test_loss: 24.2837, test_MAPE: 0.1679, test_RMSE: 38.4047] -2022-02-01 14:37:00,506 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_011.pt saved -2022-02-01 14:37:00,506 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:32 -2022-02-01 14:37:00,506 - easytorch-training - INFO - epoch 12 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 14:39:26,673 - easytorch-training - INFO - train:: [train_time: 146.17 (s), lr: 1.00e-03, train_loss: 25.0322, train_MAPE: 0.1968, train_RMSE: 38.7373] -2022-02-01 14:40:06,410 - easytorch-training - INFO - val:: [val_time: 39.73 (s), val_loss: 23.6833, val_MAPE: 0.1745, val_RMSE: 37.2828] -2022-02-01 14:40:46,194 - easytorch-training - INFO - test:: [test_time: -39.78 (s), test_loss: 23.5616, test_MAPE: 0.1691, test_RMSE: 37.2318] -2022-02-01 14:40:46,244 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_012.pt saved -2022-02-01 14:40:46,245 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:29 -2022-02-01 14:40:46,245 - easytorch-training - INFO - epoch 13 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 14:43:12,199 - easytorch-training - INFO - train:: [train_time: 145.95 (s), lr: 1.00e-03, train_loss: 24.6161, train_MAPE: 0.1929, train_RMSE: 38.2139] -2022-02-01 14:43:52,252 - easytorch-training - INFO - val:: [val_time: 40.05 (s), val_loss: 23.9247, val_MAPE: 0.1798, val_RMSE: 37.2420] -2022-02-01 14:44:32,599 - easytorch-training - INFO - test:: [test_time: -40.34 (s), test_loss: 23.9363, test_MAPE: 0.1761, test_RMSE: 37.3348] -2022-02-01 14:44:32,644 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_013.pt saved -2022-02-01 14:44:32,644 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:37 -2022-02-01 14:44:32,644 - easytorch-training - INFO - epoch 14 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:46:58,289 - easytorch-training - INFO - train:: [train_time: 145.64 (s), lr: 1.00e-03, train_loss: 24.3551, train_MAPE: 0.1905, train_RMSE: 37.8703] -2022-02-01 14:47:37,894 - easytorch-training - INFO - val:: [val_time: 39.60 (s), val_loss: 23.8628, val_MAPE: 0.1713, val_RMSE: 37.3478] -2022-02-01 14:48:17,962 - easytorch-training - INFO - test:: [test_time: -40.06 (s), test_loss: 23.6803, test_MAPE: 0.1654, test_RMSE: 37.1257] -2022-02-01 14:48:17,994 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_014.pt saved -2022-02-01 14:48:17,994 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:29 -2022-02-01 14:48:17,994 - easytorch-training - INFO - epoch 15 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 14:50:44,546 - easytorch-training - INFO - train:: [train_time: 146.55 (s), lr: 1.00e-03, train_loss: 24.1676, train_MAPE: 0.1884, train_RMSE: 37.6009] -2022-02-01 14:51:25,515 - easytorch-training - INFO - val:: [val_time: 40.96 (s), val_loss: 23.9847, val_MAPE: 0.1721, val_RMSE: 37.5211] -2022-02-01 14:52:05,461 - easytorch-training - INFO - test:: [test_time: -39.94 (s), test_loss: 23.8669, test_MAPE: 0.1673, test_RMSE: 37.3795] -2022-02-01 14:52:05,497 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_015.pt saved -2022-02-01 14:52:05,498 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:51 -2022-02-01 14:52:05,498 - easytorch-training - INFO - epoch 16 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 14:54:31,102 - easytorch-training - INFO - train:: [train_time: 145.60 (s), lr: 1.00e-03, train_loss: 23.8311, train_MAPE: 0.1854, train_RMSE: 37.1001] -2022-02-01 14:55:10,582 - easytorch-training - INFO - val:: [val_time: 39.47 (s), val_loss: 23.6276, val_MAPE: 0.1839, val_RMSE: 36.5143] -2022-02-01 14:55:50,272 - easytorch-training - INFO - test:: [test_time: -39.69 (s), test_loss: 23.3782, test_MAPE: 0.1770, test_RMSE: 36.1501] -2022-02-01 14:55:50,310 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_016.pt saved -2022-02-01 14:55:50,310 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:37 -2022-02-01 14:55:50,310 - easytorch-training - INFO - epoch 17 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:27<00:00, 2.62it/s] -2022-02-01 14:58:17,362 - easytorch-training - INFO - train:: [train_time: 147.05 (s), lr: 1.00e-03, train_loss: 23.5879, train_MAPE: 0.1844, train_RMSE: 36.7242] -2022-02-01 14:58:57,032 - easytorch-training - INFO - val:: [val_time: 39.66 (s), val_loss: 22.9560, val_MAPE: 0.1673, val_RMSE: 36.1915] -2022-02-01 14:59:37,472 - easytorch-training - INFO - test:: [test_time: -40.44 (s), test_loss: 22.8487, test_MAPE: 0.1636, test_RMSE: 35.8747] -2022-02-01 14:59:37,508 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_017.pt saved -2022-02-01 14:59:37,509 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:52 -2022-02-01 14:59:37,509 - easytorch-training - INFO - epoch 18 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 15:02:03,454 - easytorch-training - INFO - train:: [train_time: 145.94 (s), lr: 1.00e-03, train_loss: 23.3388, train_MAPE: 0.1800, train_RMSE: 36.4447] -2022-02-01 15:02:43,011 - easytorch-training - INFO - val:: [val_time: 39.55 (s), val_loss: 22.3255, val_MAPE: 0.1540, val_RMSE: 35.9001] -2022-02-01 15:03:22,726 - easytorch-training - INFO - test:: [test_time: -39.71 (s), test_loss: 22.0628, test_MAPE: 0.1492, test_RMSE: 35.3673] -2022-02-01 15:03:22,758 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_018.pt saved -2022-02-01 15:03:22,758 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:44 -2022-02-01 15:03:22,758 - easytorch-training - INFO - epoch 19 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 15:05:48,154 - easytorch-training - INFO - train:: [train_time: 145.40 (s), lr: 1.00e-03, train_loss: 23.2661, train_MAPE: 0.1795, train_RMSE: 36.3578] -2022-02-01 15:06:27,759 - easytorch-training - INFO - val:: [val_time: 39.60 (s), val_loss: 22.0041, val_MAPE: 0.1530, val_RMSE: 35.2823] -2022-02-01 15:07:07,256 - easytorch-training - INFO - test:: [test_time: -39.49 (s), test_loss: 21.8270, test_MAPE: 0.1488, test_RMSE: 34.8889] -2022-02-01 15:07:07,293 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_019.pt saved -2022-02-01 15:07:07,294 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:29 -2022-02-01 15:07:07,294 - easytorch-training - INFO - epoch 20 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 15:09:34,006 - easytorch-training - INFO - train:: [train_time: 146.71 (s), lr: 1.00e-03, train_loss: 23.0197, train_MAPE: 0.1776, train_RMSE: 35.9578] -2022-02-01 15:10:13,451 - easytorch-training - INFO - val:: [val_time: 39.44 (s), val_loss: 22.3196, val_MAPE: 0.1633, val_RMSE: 35.3905] -2022-02-01 15:10:53,616 - easytorch-training - INFO - test:: [test_time: -40.16 (s), test_loss: 22.1825, test_MAPE: 0.1590, test_RMSE: 35.0361] -2022-02-01 15:10:53,653 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_020.pt saved -2022-02-01 15:10:53,656 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:34 -2022-02-01 15:10:53,656 - easytorch-training - INFO - epoch 21 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 15:13:20,357 - easytorch-training - INFO - train:: [train_time: 146.70 (s), lr: 1.00e-03, train_loss: 22.9050, train_MAPE: 0.1762, train_RMSE: 35.8480] -2022-02-01 15:13:59,914 - easytorch-training - INFO - val:: [val_time: 39.55 (s), val_loss: 22.8545, val_MAPE: 0.1636, val_RMSE: 36.2916] -2022-02-01 15:14:40,308 - easytorch-training - INFO - test:: [test_time: -40.39 (s), test_loss: 22.6783, test_MAPE: 0.1593, test_RMSE: 35.7716] -2022-02-01 15:14:40,353 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_021.pt saved -2022-02-01 15:14:40,354 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:41 -2022-02-01 15:14:40,354 - easytorch-training - INFO - epoch 22 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 15:17:06,826 - easytorch-training - INFO - train:: [train_time: 146.47 (s), lr: 1.00e-03, train_loss: 22.7329, train_MAPE: 0.1740, train_RMSE: 35.6296] -2022-02-01 15:17:47,329 - easytorch-training - INFO - val:: [val_time: 40.50 (s), val_loss: 21.7781, val_MAPE: 0.1501, val_RMSE: 35.2157] -2022-02-01 15:18:27,310 - easytorch-training - INFO - test:: [test_time: -39.98 (s), test_loss: 21.5667, test_MAPE: 0.1456, test_RMSE: 34.7356] -2022-02-01 15:18:27,351 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_022.pt saved -2022-02-01 15:18:27,351 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:51 -2022-02-01 15:18:27,351 - easytorch-training - INFO - epoch 23 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 15:20:52,844 - easytorch-training - INFO - train:: [train_time: 145.49 (s), lr: 1.00e-03, train_loss: 22.6095, train_MAPE: 0.1725, train_RMSE: 35.4749] -2022-02-01 15:21:33,125 - easytorch-training - INFO - val:: [val_time: 40.27 (s), val_loss: 21.9791, val_MAPE: 0.1490, val_RMSE: 35.1899] -2022-02-01 15:22:13,003 - easytorch-training - INFO - test:: [test_time: -39.87 (s), test_loss: 21.6810, test_MAPE: 0.1447, test_RMSE: 34.5665] -2022-02-01 15:22:13,034 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_023.pt saved -2022-02-01 15:22:13,034 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:49 -2022-02-01 15:22:13,035 - easytorch-training - INFO - epoch 24 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 15:24:39,526 - easytorch-training - INFO - train:: [train_time: 146.49 (s), lr: 1.00e-03, train_loss: 22.4533, train_MAPE: 0.1712, train_RMSE: 35.2564] -2022-02-01 15:25:19,956 - easytorch-training - INFO - val:: [val_time: 40.42 (s), val_loss: 21.9219, val_MAPE: 0.1531, val_RMSE: 35.0977] -2022-02-01 15:25:59,363 - easytorch-training - INFO - test:: [test_time: -39.40 (s), test_loss: 21.7614, test_MAPE: 0.1493, test_RMSE: 34.6317] -2022-02-01 15:25:59,400 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_024.pt saved -2022-02-01 15:25:59,400 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:52 -2022-02-01 15:25:59,400 - easytorch-training - INFO - epoch 25 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 15:28:25,264 - easytorch-training - INFO - train:: [train_time: 145.86 (s), lr: 1.00e-03, train_loss: 22.3958, train_MAPE: 0.1707, train_RMSE: 35.1749] -2022-02-01 15:29:05,527 - easytorch-training - INFO - val:: [val_time: 40.26 (s), val_loss: 21.9949, val_MAPE: 0.1562, val_RMSE: 35.1689] -2022-02-01 15:29:45,315 - easytorch-training - INFO - test:: [test_time: -39.78 (s), test_loss: 21.6862, test_MAPE: 0.1516, test_RMSE: 34.4534] -2022-02-01 15:29:45,365 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_025.pt saved -2022-02-01 15:29:45,366 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:52 -2022-02-01 15:29:45,366 - easytorch-training - INFO - epoch 26 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:27<00:00, 2.62it/s] -2022-02-01 15:32:12,799 - easytorch-training - INFO - train:: [train_time: 147.43 (s), lr: 1.00e-03, train_loss: 22.2648, train_MAPE: 0.1687, train_RMSE: 35.0182] -2022-02-01 15:32:53,224 - easytorch-training - INFO - val:: [val_time: 40.42 (s), val_loss: 21.9693, val_MAPE: 0.1552, val_RMSE: 35.3213] -2022-02-01 15:33:32,675 - easytorch-training - INFO - test:: [test_time: -39.45 (s), test_loss: 21.5389, test_MAPE: 0.1493, test_RMSE: 34.3892] -2022-02-01 15:33:32,713 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_026.pt saved -2022-02-01 15:33:32,714 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 15:33:32,714 - easytorch-training - INFO - epoch 27 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 15:35:58,425 - easytorch-training - INFO - train:: [train_time: 145.71 (s), lr: 1.00e-03, train_loss: 22.2002, train_MAPE: 0.1680, train_RMSE: 34.9415] -2022-02-01 15:36:38,957 - easytorch-training - INFO - val:: [val_time: 40.53 (s), val_loss: 21.5773, val_MAPE: 0.1489, val_RMSE: 35.0058] -2022-02-01 15:37:19,070 - easytorch-training - INFO - test:: [test_time: -40.11 (s), test_loss: 21.2586, test_MAPE: 0.1442, test_RMSE: 34.2379] -2022-02-01 15:37:19,100 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_027.pt saved -2022-02-01 15:37:19,101 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 15:37:19,101 - easytorch-training - INFO - epoch 28 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 15:39:45,162 - easytorch-training - INFO - train:: [train_time: 146.06 (s), lr: 1.00e-03, train_loss: 22.1484, train_MAPE: 0.1680, train_RMSE: 34.8519] -2022-02-01 15:40:24,928 - easytorch-training - INFO - val:: [val_time: 39.76 (s), val_loss: 21.9392, val_MAPE: 0.1519, val_RMSE: 35.5378] -2022-02-01 15:41:05,174 - easytorch-training - INFO - test:: [test_time: -40.24 (s), test_loss: 21.6994, test_MAPE: 0.1473, test_RMSE: 34.8992] -2022-02-01 15:41:05,218 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_028.pt saved -2022-02-01 15:41:05,219 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 15:41:05,219 - easytorch-training - INFO - epoch 29 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 15:43:30,924 - easytorch-training - INFO - train:: [train_time: 145.71 (s), lr: 1.00e-03, train_loss: 22.0028, train_MAPE: 0.1666, train_RMSE: 34.6630] -2022-02-01 15:44:11,127 - easytorch-training - INFO - val:: [val_time: 40.20 (s), val_loss: 21.5502, val_MAPE: 0.1518, val_RMSE: 34.7837] -2022-02-01 15:44:51,165 - easytorch-training - INFO - test:: [test_time: -40.03 (s), test_loss: 21.2273, test_MAPE: 0.1464, test_RMSE: 34.0339] -2022-02-01 15:44:51,202 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_029.pt saved -2022-02-01 15:44:51,202 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 15:44:51,202 - easytorch-training - INFO - epoch 30 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 15:47:17,408 - easytorch-training - INFO - train:: [train_time: 146.21 (s), lr: 1.00e-03, train_loss: 21.9431, train_MAPE: 0.1660, train_RMSE: 34.5892] -2022-02-01 15:47:57,813 - easytorch-training - INFO - val:: [val_time: 40.40 (s), val_loss: 21.8727, val_MAPE: 0.1573, val_RMSE: 34.8679] -2022-02-01 15:48:37,756 - easytorch-training - INFO - test:: [test_time: -39.94 (s), test_loss: 21.5798, test_MAPE: 0.1522, test_RMSE: 34.1840] -2022-02-01 15:48:37,791 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_030.pt saved -2022-02-01 15:48:37,794 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 15:48:37,794 - easytorch-training - INFO - epoch 31 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:27<00:00, 2.62it/s] -2022-02-01 15:51:04,982 - easytorch-training - INFO - train:: [train_time: 147.19 (s), lr: 1.00e-03, train_loss: 21.9488, train_MAPE: 0.1661, train_RMSE: 34.5912] -2022-02-01 15:51:45,213 - easytorch-training - INFO - val:: [val_time: 40.23 (s), val_loss: 21.6299, val_MAPE: 0.1495, val_RMSE: 35.3084] -2022-02-01 15:52:25,129 - easytorch-training - INFO - test:: [test_time: -39.91 (s), test_loss: 21.3453, test_MAPE: 0.1448, test_RMSE: 34.5382] -2022-02-01 15:52:25,160 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_031.pt saved -2022-02-01 15:52:25,160 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-01 15:52:25,160 - easytorch-training - INFO - epoch 32 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 15:54:51,091 - easytorch-training - INFO - train:: [train_time: 145.93 (s), lr: 1.00e-03, train_loss: 21.8354, train_MAPE: 0.1647, train_RMSE: 34.4483] -2022-02-01 15:55:31,492 - easytorch-training - INFO - val:: [val_time: 40.40 (s), val_loss: 21.8111, val_MAPE: 0.1489, val_RMSE: 35.0000] -2022-02-01 15:56:11,708 - easytorch-training - INFO - test:: [test_time: -40.21 (s), test_loss: 21.5368, test_MAPE: 0.1444, test_RMSE: 34.3579] -2022-02-01 15:56:11,747 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_032.pt saved -2022-02-01 15:56:11,747 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:20 -2022-02-01 15:56:11,747 - easytorch-training - INFO - epoch 33 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 15:58:38,041 - easytorch-training - INFO - train:: [train_time: 146.29 (s), lr: 1.00e-03, train_loss: 21.7102, train_MAPE: 0.1639, train_RMSE: 34.2797] -2022-02-01 15:59:18,697 - easytorch-training - INFO - val:: [val_time: 40.65 (s), val_loss: 21.4902, val_MAPE: 0.1482, val_RMSE: 34.7874] -2022-02-01 15:59:58,629 - easytorch-training - INFO - test:: [test_time: -39.93 (s), test_loss: 21.0803, test_MAPE: 0.1425, test_RMSE: 33.8990] -2022-02-01 15:59:58,665 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_033.pt saved -2022-02-01 15:59:58,666 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:25 -2022-02-01 15:59:58,666 - easytorch-training - INFO - epoch 34 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 16:02:24,987 - easytorch-training - INFO - train:: [train_time: 146.32 (s), lr: 1.00e-03, train_loss: 21.6477, train_MAPE: 0.1632, train_RMSE: 34.2090] -2022-02-01 16:03:04,461 - easytorch-training - INFO - val:: [val_time: 39.47 (s), val_loss: 21.1915, val_MAPE: 0.1445, val_RMSE: 34.4606] -2022-02-01 16:03:44,329 - easytorch-training - INFO - test:: [test_time: -39.86 (s), test_loss: 20.7389, test_MAPE: 0.1395, test_RMSE: 33.4936] -2022-02-01 16:03:44,360 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_034.pt saved -2022-02-01 16:03:44,360 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:22 -2022-02-01 16:03:44,360 - easytorch-training - INFO - epoch 35 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 16:06:10,578 - easytorch-training - INFO - train:: [train_time: 146.22 (s), lr: 1.00e-03, train_loss: 21.6170, train_MAPE: 0.1625, train_RMSE: 34.1626] -2022-02-01 16:06:50,084 - easytorch-training - INFO - val:: [val_time: 39.50 (s), val_loss: 21.3998, val_MAPE: 0.1472, val_RMSE: 34.8208] -2022-02-01 16:07:30,492 - easytorch-training - INFO - test:: [test_time: -40.40 (s), test_loss: 21.0538, test_MAPE: 0.1421, test_RMSE: 34.0377] -2022-02-01 16:07:30,535 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_035.pt saved -2022-02-01 16:07:30,535 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:22 -2022-02-01 16:07:30,535 - easytorch-training - INFO - epoch 36 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 16:09:56,586 - easytorch-training - INFO - train:: [train_time: 146.05 (s), lr: 1.00e-03, train_loss: 21.5640, train_MAPE: 0.1625, train_RMSE: 34.0925] -2022-02-01 16:10:36,739 - easytorch-training - INFO - val:: [val_time: 40.15 (s), val_loss: 21.1292, val_MAPE: 0.1444, val_RMSE: 34.5030] -2022-02-01 16:11:16,503 - easytorch-training - INFO - test:: [test_time: -39.76 (s), test_loss: 20.6853, test_MAPE: 0.1389, test_RMSE: 33.4352] -2022-02-01 16:11:16,540 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_036.pt saved -2022-02-01 16:11:16,540 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:22 -2022-02-01 16:11:16,540 - easytorch-training - INFO - epoch 37 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 16:13:43,310 - easytorch-training - INFO - train:: [train_time: 146.77 (s), lr: 1.00e-03, train_loss: 21.5184, train_MAPE: 0.1622, train_RMSE: 34.0305] -2022-02-01 16:14:22,960 - easytorch-training - INFO - val:: [val_time: 39.64 (s), val_loss: 21.1666, val_MAPE: 0.1483, val_RMSE: 34.5108] -2022-02-01 16:15:02,951 - easytorch-training - INFO - test:: [test_time: -39.98 (s), test_loss: 20.7957, test_MAPE: 0.1430, test_RMSE: 33.6164] -2022-02-01 16:15:02,985 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_037.pt saved -2022-02-01 16:15:02,985 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:23 -2022-02-01 16:15:02,985 - easytorch-training - INFO - epoch 38 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 16:17:28,946 - easytorch-training - INFO - train:: [train_time: 145.96 (s), lr: 1.00e-03, train_loss: 21.4284, train_MAPE: 0.1611, train_RMSE: 33.9161] -2022-02-01 16:18:08,846 - easytorch-training - INFO - val:: [val_time: 39.89 (s), val_loss: 21.3592, val_MAPE: 0.1513, val_RMSE: 34.6211] -2022-02-01 16:18:48,515 - easytorch-training - INFO - test:: [test_time: -39.67 (s), test_loss: 20.9824, test_MAPE: 0.1463, test_RMSE: 33.6508] -2022-02-01 16:18:48,547 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_038.pt saved -2022-02-01 16:18:48,548 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:20 -2022-02-01 16:18:48,548 - easytorch-training - INFO - epoch 39 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 16:21:15,181 - easytorch-training - INFO - train:: [train_time: 146.63 (s), lr: 1.00e-03, train_loss: 21.4198, train_MAPE: 0.1615, train_RMSE: 33.8889] -2022-02-01 16:21:55,720 - easytorch-training - INFO - val:: [val_time: 40.53 (s), val_loss: 21.1094, val_MAPE: 0.1447, val_RMSE: 34.4510] -2022-02-01 16:22:35,653 - easytorch-training - INFO - test:: [test_time: -39.93 (s), test_loss: 20.7175, test_MAPE: 0.1394, test_RMSE: 33.4898] -2022-02-01 16:22:35,691 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_039.pt saved -2022-02-01 16:22:35,691 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:25 -2022-02-01 16:22:35,691 - easytorch-training - INFO - epoch 40 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 16:25:01,775 - easytorch-training - INFO - train:: [train_time: 146.08 (s), lr: 1.00e-03, train_loss: 21.3367, train_MAPE: 0.1601, train_RMSE: 33.7901] -2022-02-01 16:25:41,779 - easytorch-training - INFO - val:: [val_time: 40.00 (s), val_loss: 21.5524, val_MAPE: 0.1496, val_RMSE: 35.0586] -2022-02-01 16:26:21,924 - easytorch-training - INFO - test:: [test_time: -40.14 (s), test_loss: 21.2120, test_MAPE: 0.1445, test_RMSE: 34.2571] -2022-02-01 16:26:21,961 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_040.pt saved -2022-02-01 16:26:21,964 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:26 -2022-02-01 16:26:21,964 - easytorch-training - INFO - epoch 41 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 16:28:48,882 - easytorch-training - INFO - train:: [train_time: 146.92 (s), lr: 1.00e-03, train_loss: 21.3150, train_MAPE: 0.1602, train_RMSE: 33.7730] -2022-02-01 16:29:28,687 - easytorch-training - INFO - val:: [val_time: 39.80 (s), val_loss: 21.4062, val_MAPE: 0.1516, val_RMSE: 34.6319] -2022-02-01 16:30:08,562 - easytorch-training - INFO - test:: [test_time: -39.86 (s), test_loss: 20.9738, test_MAPE: 0.1457, test_RMSE: 33.5433] -2022-02-01 16:30:08,593 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_041.pt saved -2022-02-01 16:30:08,594 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:28 -2022-02-01 16:30:08,594 - easytorch-training - INFO - epoch 42 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 16:32:34,703 - easytorch-training - INFO - train:: [train_time: 146.11 (s), lr: 1.00e-03, train_loss: 21.3165, train_MAPE: 0.1605, train_RMSE: 33.7388] -2022-02-01 16:33:14,484 - easytorch-training - INFO - val:: [val_time: 39.78 (s), val_loss: 21.3505, val_MAPE: 0.1531, val_RMSE: 34.3951] -2022-02-01 16:33:54,569 - easytorch-training - INFO - test:: [test_time: -40.08 (s), test_loss: 20.9458, test_MAPE: 0.1479, test_RMSE: 33.4644] -2022-02-01 16:33:54,602 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_042.pt saved -2022-02-01 16:33:54,602 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:28 -2022-02-01 16:33:54,602 - easytorch-training - INFO - epoch 43 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-01 16:36:19,957 - easytorch-training - INFO - train:: [train_time: 145.35 (s), lr: 1.00e-03, train_loss: 21.2058, train_MAPE: 0.1593, train_RMSE: 33.6061] -2022-02-01 16:37:00,040 - easytorch-training - INFO - val:: [val_time: 40.08 (s), val_loss: 21.0561, val_MAPE: 0.1420, val_RMSE: 34.2773] -2022-02-01 16:37:39,558 - easytorch-training - INFO - test:: [test_time: -39.51 (s), test_loss: 20.6689, test_MAPE: 0.1367, test_RMSE: 33.3377] -2022-02-01 16:37:39,589 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_043.pt saved -2022-02-01 16:37:39,590 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:22 -2022-02-01 16:37:39,590 - easytorch-training - INFO - epoch 44 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:24<00:00, 2.67it/s] -2022-02-01 16:40:04,228 - easytorch-training - INFO - train:: [train_time: 144.64 (s), lr: 1.00e-03, train_loss: 21.1626, train_MAPE: 0.1586, train_RMSE: 33.5570] -2022-02-01 16:40:44,630 - easytorch-training - INFO - val:: [val_time: 40.40 (s), val_loss: 21.0936, val_MAPE: 0.1466, val_RMSE: 34.4389] -2022-02-01 16:41:24,812 - easytorch-training - INFO - test:: [test_time: -40.18 (s), test_loss: 20.6489, test_MAPE: 0.1409, test_RMSE: 33.4055] -2022-02-01 16:41:24,852 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_044.pt saved -2022-02-01 16:41:24,852 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:18 -2022-02-01 16:41:24,852 - easytorch-training - INFO - epoch 45 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 16:43:50,913 - easytorch-training - INFO - train:: [train_time: 146.06 (s), lr: 1.00e-03, train_loss: 21.0918, train_MAPE: 0.1583, train_RMSE: 33.4383] -2022-02-01 16:44:30,570 - easytorch-training - INFO - val:: [val_time: 39.65 (s), val_loss: 21.1615, val_MAPE: 0.1425, val_RMSE: 34.4700] -2022-02-01 16:45:09,995 - easytorch-training - INFO - test:: [test_time: -39.42 (s), test_loss: 20.7670, test_MAPE: 0.1370, test_RMSE: 33.5363] -2022-02-01 16:45:10,037 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_045.pt saved -2022-02-01 16:45:10,037 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 16:45:10,037 - easytorch-training - INFO - epoch 46 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:27<00:00, 2.62it/s] -2022-02-01 16:47:37,174 - easytorch-training - INFO - train:: [train_time: 147.14 (s), lr: 1.00e-03, train_loss: 21.0785, train_MAPE: 0.1580, train_RMSE: 33.4505] -2022-02-01 16:48:16,623 - easytorch-training - INFO - val:: [val_time: 39.44 (s), val_loss: 21.2182, val_MAPE: 0.1451, val_RMSE: 34.6567] -2022-02-01 16:48:56,554 - easytorch-training - INFO - test:: [test_time: -39.93 (s), test_loss: 20.7965, test_MAPE: 0.1393, test_RMSE: 33.6576] -2022-02-01 16:48:56,584 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_046.pt saved -2022-02-01 16:48:56,584 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-01 16:48:56,584 - easytorch-training - INFO - epoch 47 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 16:51:23,151 - easytorch-training - INFO - train:: [train_time: 146.57 (s), lr: 1.00e-03, train_loss: 21.0713, train_MAPE: 0.1579, train_RMSE: 33.4309] -2022-02-01 16:52:03,548 - easytorch-training - INFO - val:: [val_time: 40.39 (s), val_loss: 20.8870, val_MAPE: 0.1502, val_RMSE: 33.9724] -2022-02-01 16:52:43,668 - easytorch-training - INFO - test:: [test_time: -40.12 (s), test_loss: 20.4839, test_MAPE: 0.1440, test_RMSE: 32.9388] -2022-02-01 16:52:43,705 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_047.pt saved -2022-02-01 16:52:43,705 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:20 -2022-02-01 16:52:43,705 - easytorch-training - INFO - epoch 48 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 16:55:10,132 - easytorch-training - INFO - train:: [train_time: 146.43 (s), lr: 1.00e-03, train_loss: 21.0057, train_MAPE: 0.1574, train_RMSE: 33.3574] -2022-02-01 16:55:50,607 - easytorch-training - INFO - val:: [val_time: 40.47 (s), val_loss: 20.7626, val_MAPE: 0.1446, val_RMSE: 34.0944] -2022-02-01 16:56:29,963 - easytorch-training - INFO - test:: [test_time: -39.35 (s), test_loss: 20.4017, test_MAPE: 0.1399, test_RMSE: 33.2153] -2022-02-01 16:56:30,000 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_048.pt saved -2022-02-01 16:56:30,000 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:21 -2022-02-01 16:56:30,000 - easytorch-training - INFO - epoch 49 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 16:58:56,646 - easytorch-training - INFO - train:: [train_time: 146.65 (s), lr: 1.00e-03, train_loss: 21.0164, train_MAPE: 0.1579, train_RMSE: 33.3276] -2022-02-01 16:59:36,052 - easytorch-training - INFO - val:: [val_time: 39.40 (s), val_loss: 20.8974, val_MAPE: 0.1418, val_RMSE: 34.3824] -2022-02-01 17:00:15,363 - easytorch-training - INFO - test:: [test_time: -39.31 (s), test_loss: 20.4485, test_MAPE: 0.1361, test_RMSE: 33.3115] -2022-02-01 17:00:15,401 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_049.pt saved -2022-02-01 17:00:15,401 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:18 -2022-02-01 17:00:15,401 - easytorch-training - INFO - epoch 50 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 17:02:41,649 - easytorch-training - INFO - train:: [train_time: 146.25 (s), lr: 1.00e-03, train_loss: 20.9009, train_MAPE: 0.1561, train_RMSE: 33.2011] -2022-02-01 17:03:21,249 - easytorch-training - INFO - val:: [val_time: 39.59 (s), val_loss: 20.9740, val_MAPE: 0.1491, val_RMSE: 34.0974] -2022-02-01 17:04:00,405 - easytorch-training - INFO - test:: [test_time: -39.15 (s), test_loss: 20.5681, test_MAPE: 0.1435, test_RMSE: 33.0383] -2022-02-01 17:04:00,448 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_050.pt saved -2022-02-01 17:04:00,451 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 17:04:00,451 - easytorch-training - INFO - epoch 51 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 17:06:26,765 - easytorch-training - INFO - train:: [train_time: 146.31 (s), lr: 5.00e-04, train_loss: 20.6291, train_MAPE: 0.1518, train_RMSE: 32.9633] -2022-02-01 17:07:07,351 - easytorch-training - INFO - val:: [val_time: 40.58 (s), val_loss: 20.6934, val_MAPE: 0.1422, val_RMSE: 34.0365] -2022-02-01 17:07:47,171 - easytorch-training - INFO - test:: [test_time: -39.82 (s), test_loss: 20.2642, test_MAPE: 0.1368, test_RMSE: 32.9758] -2022-02-01 17:07:47,208 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_051.pt saved -2022-02-01 17:07:47,208 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-01 17:07:47,209 - easytorch-training - INFO - epoch 52 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 17:10:13,739 - easytorch-training - INFO - train:: [train_time: 146.53 (s), lr: 5.00e-04, train_loss: 20.5762, train_MAPE: 0.1509, train_RMSE: 32.9030] -2022-02-01 17:10:53,800 - easytorch-training - INFO - val:: [val_time: 40.06 (s), val_loss: 20.5420, val_MAPE: 0.1395, val_RMSE: 33.9266] -2022-02-01 17:11:34,441 - easytorch-training - INFO - test:: [test_time: -40.64 (s), test_loss: 20.1197, test_MAPE: 0.1339, test_RMSE: 32.8589] -2022-02-01 17:11:34,473 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_052.pt saved -2022-02-01 17:11:34,474 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:21 -2022-02-01 17:11:34,474 - easytorch-training - INFO - epoch 53 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 17:14:00,067 - easytorch-training - INFO - train:: [train_time: 145.59 (s), lr: 5.00e-04, train_loss: 20.5049, train_MAPE: 0.1505, train_RMSE: 32.8032] -2022-02-01 17:14:40,737 - easytorch-training - INFO - val:: [val_time: 40.66 (s), val_loss: 20.6143, val_MAPE: 0.1423, val_RMSE: 33.8167] -2022-02-01 17:15:21,112 - easytorch-training - INFO - test:: [test_time: -40.37 (s), test_loss: 20.2000, test_MAPE: 0.1364, test_RMSE: 32.8027] -2022-02-01 17:15:21,151 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_053.pt saved -2022-02-01 17:15:21,151 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:23 -2022-02-01 17:15:21,151 - easytorch-training - INFO - epoch 54 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 17:17:46,758 - easytorch-training - INFO - train:: [train_time: 145.61 (s), lr: 5.00e-04, train_loss: 20.5322, train_MAPE: 0.1511, train_RMSE: 32.8262] -2022-02-01 17:18:26,223 - easytorch-training - INFO - val:: [val_time: 39.46 (s), val_loss: 20.5480, val_MAPE: 0.1398, val_RMSE: 33.9321] -2022-02-01 17:19:05,800 - easytorch-training - INFO - test:: [test_time: -39.57 (s), test_loss: 20.1467, test_MAPE: 0.1342, test_RMSE: 32.8977] -2022-02-01 17:19:05,844 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_054.pt saved -2022-02-01 17:19:05,844 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:18 -2022-02-01 17:19:05,844 - easytorch-training - INFO - epoch 55 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 17:21:31,546 - easytorch-training - INFO - train:: [train_time: 145.70 (s), lr: 5.00e-04, train_loss: 20.5197, train_MAPE: 0.1508, train_RMSE: 32.8203] -2022-02-01 17:22:11,554 - easytorch-training - INFO - val:: [val_time: 40.00 (s), val_loss: 20.4809, val_MAPE: 0.1383, val_RMSE: 33.7663] -2022-02-01 17:22:51,575 - easytorch-training - INFO - test:: [test_time: -40.02 (s), test_loss: 20.0742, test_MAPE: 0.1325, test_RMSE: 32.7153] -2022-02-01 17:22:51,620 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_055.pt saved -2022-02-01 17:22:51,621 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-01 17:22:51,621 - easytorch-training - INFO - epoch 56 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:24<00:00, 2.67it/s] -2022-02-01 17:25:15,997 - easytorch-training - INFO - train:: [train_time: 144.38 (s), lr: 5.00e-04, train_loss: 20.4708, train_MAPE: 0.1501, train_RMSE: 32.7691] -2022-02-01 17:25:56,753 - easytorch-training - INFO - val:: [val_time: 40.75 (s), val_loss: 20.5946, val_MAPE: 0.1391, val_RMSE: 33.9065] -2022-02-01 17:26:37,420 - easytorch-training - INFO - test:: [test_time: -40.66 (s), test_loss: 20.1468, test_MAPE: 0.1337, test_RMSE: 32.8050] -2022-02-01 17:26:37,451 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_056.pt saved -2022-02-01 17:26:37,452 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:15 -2022-02-01 17:26:37,452 - easytorch-training - INFO - epoch 57 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 17:29:02,944 - easytorch-training - INFO - train:: [train_time: 145.49 (s), lr: 5.00e-04, train_loss: 20.4636, train_MAPE: 0.1504, train_RMSE: 32.7404] -2022-02-01 17:29:42,472 - easytorch-training - INFO - val:: [val_time: 39.52 (s), val_loss: 20.7439, val_MAPE: 0.1415, val_RMSE: 34.3639] -2022-02-01 17:30:22,847 - easytorch-training - INFO - test:: [test_time: -40.37 (s), test_loss: 20.2959, test_MAPE: 0.1356, test_RMSE: 33.2203] -2022-02-01 17:30:22,885 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_057.pt saved -2022-02-01 17:30:22,885 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:13 -2022-02-01 17:30:22,886 - easytorch-training - INFO - epoch 58 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 17:32:49,303 - easytorch-training - INFO - train:: [train_time: 146.42 (s), lr: 5.00e-04, train_loss: 20.4535, train_MAPE: 0.1503, train_RMSE: 32.7474] -2022-02-01 17:33:30,125 - easytorch-training - INFO - val:: [val_time: 40.82 (s), val_loss: 20.5415, val_MAPE: 0.1383, val_RMSE: 33.8505] -2022-02-01 17:34:09,496 - easytorch-training - INFO - test:: [test_time: -39.37 (s), test_loss: 20.1455, test_MAPE: 0.1331, test_RMSE: 32.8267] -2022-02-01 17:34:09,536 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_058.pt saved -2022-02-01 17:34:09,536 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:15 -2022-02-01 17:34:09,536 - easytorch-training - INFO - epoch 59 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 17:36:35,444 - easytorch-training - INFO - train:: [train_time: 145.91 (s), lr: 5.00e-04, train_loss: 20.4257, train_MAPE: 0.1498, train_RMSE: 32.6994] -2022-02-01 17:37:16,148 - easytorch-training - INFO - val:: [val_time: 40.70 (s), val_loss: 20.5875, val_MAPE: 0.1399, val_RMSE: 33.8600] -2022-02-01 17:37:56,238 - easytorch-training - INFO - test:: [test_time: -40.09 (s), test_loss: 20.1694, test_MAPE: 0.1342, test_RMSE: 32.7805] -2022-02-01 17:37:56,274 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_059.pt saved -2022-02-01 17:37:56,275 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-01 17:37:56,275 - easytorch-training - INFO - epoch 60 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 17:40:22,206 - easytorch-training - INFO - train:: [train_time: 145.93 (s), lr: 5.00e-04, train_loss: 20.3973, train_MAPE: 0.1501, train_RMSE: 32.6430] -2022-02-01 17:41:02,393 - easytorch-training - INFO - val:: [val_time: 40.18 (s), val_loss: 20.5934, val_MAPE: 0.1404, val_RMSE: 33.8478] -2022-02-01 17:41:42,088 - easytorch-training - INFO - test:: [test_time: -39.69 (s), test_loss: 20.1092, test_MAPE: 0.1347, test_RMSE: 32.6956] -2022-02-01 17:41:42,121 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_060.pt saved -2022-02-01 17:41:42,124 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-01 17:41:42,124 - easytorch-training - INFO - epoch 61 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 17:44:08,276 - easytorch-training - INFO - train:: [train_time: 146.15 (s), lr: 5.00e-04, train_loss: 20.4287, train_MAPE: 0.1501, train_RMSE: 32.6764] -2022-02-01 17:44:47,824 - easytorch-training - INFO - val:: [val_time: 39.54 (s), val_loss: 20.6312, val_MAPE: 0.1449, val_RMSE: 33.9165] -2022-02-01 17:45:27,137 - easytorch-training - INFO - test:: [test_time: -39.31 (s), test_loss: 20.1342, test_MAPE: 0.1391, test_RMSE: 32.7023] -2022-02-01 17:45:27,169 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_061.pt saved -2022-02-01 17:45:27,169 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:13 -2022-02-01 17:45:27,169 - easytorch-training - INFO - epoch 62 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 17:47:53,304 - easytorch-training - INFO - train:: [train_time: 146.13 (s), lr: 5.00e-04, train_loss: 20.3551, train_MAPE: 0.1498, train_RMSE: 32.5988] -2022-02-01 17:48:33,136 - easytorch-training - INFO - val:: [val_time: 39.83 (s), val_loss: 20.5123, val_MAPE: 0.1427, val_RMSE: 33.9393] -2022-02-01 17:49:12,554 - easytorch-training - INFO - test:: [test_time: -39.41 (s), test_loss: 20.0541, test_MAPE: 0.1370, test_RMSE: 32.7795] -2022-02-01 17:49:12,591 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_062.pt saved -2022-02-01 17:49:12,592 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:11 -2022-02-01 17:49:12,592 - easytorch-training - INFO - epoch 63 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 17:51:38,690 - easytorch-training - INFO - train:: [train_time: 146.10 (s), lr: 5.00e-04, train_loss: 20.3696, train_MAPE: 0.1495, train_RMSE: 32.6145] -2022-02-01 17:52:18,273 - easytorch-training - INFO - val:: [val_time: 39.58 (s), val_loss: 20.4601, val_MAPE: 0.1383, val_RMSE: 33.7722] -2022-02-01 17:52:58,460 - easytorch-training - INFO - test:: [test_time: -40.18 (s), test_loss: 19.9466, test_MAPE: 0.1324, test_RMSE: 32.5205] -2022-02-01 17:52:58,498 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_063.pt saved -2022-02-01 17:52:58,498 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:10 -2022-02-01 17:52:58,498 - easytorch-training - INFO - epoch 64 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 17:55:24,769 - easytorch-training - INFO - train:: [train_time: 146.27 (s), lr: 5.00e-04, train_loss: 20.3230, train_MAPE: 0.1491, train_RMSE: 32.5609] -2022-02-01 17:56:05,395 - easytorch-training - INFO - val:: [val_time: 40.62 (s), val_loss: 20.5341, val_MAPE: 0.1391, val_RMSE: 33.9230] -2022-02-01 17:56:45,014 - easytorch-training - INFO - test:: [test_time: -39.62 (s), test_loss: 20.1022, test_MAPE: 0.1334, test_RMSE: 32.7951] -2022-02-01 17:56:45,047 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_064.pt saved -2022-02-01 17:56:45,047 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:12 -2022-02-01 17:56:45,047 - easytorch-training - INFO - epoch 65 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 17:59:10,784 - easytorch-training - INFO - train:: [train_time: 145.74 (s), lr: 5.00e-04, train_loss: 20.3105, train_MAPE: 0.1489, train_RMSE: 32.5403] -2022-02-01 17:59:50,188 - easytorch-training - INFO - val:: [val_time: 39.40 (s), val_loss: 20.4206, val_MAPE: 0.1404, val_RMSE: 33.7589] -2022-02-01 18:00:30,187 - easytorch-training - INFO - test:: [test_time: -40.00 (s), test_loss: 19.9850, test_MAPE: 0.1347, test_RMSE: 32.6104] -2022-02-01 18:00:30,218 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_065.pt saved -2022-02-01 18:00:30,218 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 18:00:30,218 - easytorch-training - INFO - epoch 66 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 18:02:56,514 - easytorch-training - INFO - train:: [train_time: 146.30 (s), lr: 5.00e-04, train_loss: 20.2875, train_MAPE: 0.1487, train_RMSE: 32.5191] -2022-02-01 18:03:36,946 - easytorch-training - INFO - val:: [val_time: 40.43 (s), val_loss: 20.5891, val_MAPE: 0.1419, val_RMSE: 33.8698] -2022-02-01 18:04:17,100 - easytorch-training - INFO - test:: [test_time: -40.15 (s), test_loss: 20.1214, test_MAPE: 0.1358, test_RMSE: 32.6849] -2022-02-01 18:04:17,137 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_066.pt saved -2022-02-01 18:04:17,137 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:11 -2022-02-01 18:04:17,137 - easytorch-training - INFO - epoch 67 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 18:06:43,212 - easytorch-training - INFO - train:: [train_time: 146.07 (s), lr: 5.00e-04, train_loss: 20.2773, train_MAPE: 0.1487, train_RMSE: 32.4999] -2022-02-01 18:07:23,607 - easytorch-training - INFO - val:: [val_time: 40.39 (s), val_loss: 20.4634, val_MAPE: 0.1425, val_RMSE: 33.7296] -2022-02-01 18:08:04,160 - easytorch-training - INFO - test:: [test_time: -40.55 (s), test_loss: 20.0186, test_MAPE: 0.1367, test_RMSE: 32.6229] -2022-02-01 18:08:04,208 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_067.pt saved -2022-02-01 18:08:04,209 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 18:08:04,209 - easytorch-training - INFO - epoch 68 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-01 18:10:29,514 - easytorch-training - INFO - train:: [train_time: 145.30 (s), lr: 5.00e-04, train_loss: 20.2687, train_MAPE: 0.1486, train_RMSE: 32.4970] -2022-02-01 18:11:09,331 - easytorch-training - INFO - val:: [val_time: 39.81 (s), val_loss: 20.5290, val_MAPE: 0.1386, val_RMSE: 33.9189] -2022-02-01 18:11:48,786 - easytorch-training - INFO - test:: [test_time: -39.45 (s), test_loss: 20.0536, test_MAPE: 0.1330, test_RMSE: 32.7052] -2022-02-01 18:11:48,822 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_068.pt saved -2022-02-01 18:11:48,823 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:10 -2022-02-01 18:11:48,823 - easytorch-training - INFO - epoch 69 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 18:14:14,791 - easytorch-training - INFO - train:: [train_time: 145.97 (s), lr: 5.00e-04, train_loss: 20.2687, train_MAPE: 0.1490, train_RMSE: 32.4851] -2022-02-01 18:14:54,592 - easytorch-training - INFO - val:: [val_time: 39.80 (s), val_loss: 20.4803, val_MAPE: 0.1406, val_RMSE: 33.7778] -2022-02-01 18:15:34,341 - easytorch-training - INFO - test:: [test_time: -39.75 (s), test_loss: 19.9582, test_MAPE: 0.1347, test_RMSE: 32.4549] -2022-02-01 18:15:34,379 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_069.pt saved -2022-02-01 18:15:34,380 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 18:15:34,380 - easytorch-training - INFO - epoch 70 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 18:17:59,966 - easytorch-training - INFO - train:: [train_time: 145.59 (s), lr: 5.00e-04, train_loss: 20.2462, train_MAPE: 0.1480, train_RMSE: 32.4550] -2022-02-01 18:18:39,405 - easytorch-training - INFO - val:: [val_time: 39.43 (s), val_loss: 20.4180, val_MAPE: 0.1382, val_RMSE: 33.8384] -2022-02-01 18:19:19,459 - easytorch-training - INFO - test:: [test_time: -40.05 (s), test_loss: 20.0081, test_MAPE: 0.1327, test_RMSE: 32.7272] -2022-02-01 18:19:19,491 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_070.pt saved -2022-02-01 18:19:19,494 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:06 -2022-02-01 18:19:19,494 - easytorch-training - INFO - epoch 71 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 18:21:45,060 - easytorch-training - INFO - train:: [train_time: 145.57 (s), lr: 5.00e-04, train_loss: 20.2383, train_MAPE: 0.1485, train_RMSE: 32.4366] -2022-02-01 18:22:25,448 - easytorch-training - INFO - val:: [val_time: 40.38 (s), val_loss: 20.4663, val_MAPE: 0.1408, val_RMSE: 33.8569] -2022-02-01 18:23:05,603 - easytorch-training - INFO - test:: [test_time: -40.15 (s), test_loss: 20.0228, test_MAPE: 0.1348, test_RMSE: 32.6693] -2022-02-01 18:23:05,639 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_071.pt saved -2022-02-01 18:23:05,639 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:06 -2022-02-01 18:23:05,639 - easytorch-training - INFO - epoch 72 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-01 18:25:31,016 - easytorch-training - INFO - train:: [train_time: 145.38 (s), lr: 5.00e-04, train_loss: 20.2318, train_MAPE: 0.1482, train_RMSE: 32.4386] -2022-02-01 18:26:10,567 - easytorch-training - INFO - val:: [val_time: 39.55 (s), val_loss: 20.4868, val_MAPE: 0.1394, val_RMSE: 33.8976] -2022-02-01 18:26:49,880 - easytorch-training - INFO - test:: [test_time: -39.31 (s), test_loss: 20.0122, test_MAPE: 0.1335, test_RMSE: 32.6550] -2022-02-01 18:26:49,922 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_072.pt saved -2022-02-01 18:26:49,922 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:01 -2022-02-01 18:26:49,922 - easytorch-training - INFO - epoch 73 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-01 18:29:15,214 - easytorch-training - INFO - train:: [train_time: 145.29 (s), lr: 5.00e-04, train_loss: 20.1792, train_MAPE: 0.1479, train_RMSE: 32.3785] -2022-02-01 18:29:55,746 - easytorch-training - INFO - val:: [val_time: 40.53 (s), val_loss: 20.4124, val_MAPE: 0.1403, val_RMSE: 33.8353] -2022-02-01 18:30:36,031 - easytorch-training - INFO - test:: [test_time: -40.28 (s), test_loss: 20.0111, test_MAPE: 0.1347, test_RMSE: 32.7289] -2022-02-01 18:30:36,071 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_073.pt saved -2022-02-01 18:30:36,072 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 18:30:36,072 - easytorch-training - INFO - epoch 74 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 18:33:02,423 - easytorch-training - INFO - train:: [train_time: 146.35 (s), lr: 5.00e-04, train_loss: 20.1558, train_MAPE: 0.1476, train_RMSE: 32.3324] -2022-02-01 18:33:42,015 - easytorch-training - INFO - val:: [val_time: 39.59 (s), val_loss: 20.4581, val_MAPE: 0.1399, val_RMSE: 33.9301] -2022-02-01 18:34:21,622 - easytorch-training - INFO - test:: [test_time: -39.60 (s), test_loss: 20.0228, test_MAPE: 0.1336, test_RMSE: 32.6921] -2022-02-01 18:34:21,659 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_074.pt saved -2022-02-01 18:34:21,659 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 18:34:21,659 - easytorch-training - INFO - epoch 75 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 18:36:47,282 - easytorch-training - INFO - train:: [train_time: 145.62 (s), lr: 5.00e-04, train_loss: 20.1620, train_MAPE: 0.1476, train_RMSE: 32.3475] -2022-02-01 18:37:27,435 - easytorch-training - INFO - val:: [val_time: 40.15 (s), val_loss: 20.3365, val_MAPE: 0.1384, val_RMSE: 33.8473] -2022-02-01 18:38:07,583 - easytorch-training - INFO - test:: [test_time: -40.14 (s), test_loss: 19.9444, test_MAPE: 0.1328, test_RMSE: 32.7852] -2022-02-01 18:38:07,627 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_075.pt saved -2022-02-01 18:38:07,627 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 18:38:07,628 - easytorch-training - INFO - epoch 76 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 18:40:34,228 - easytorch-training - INFO - train:: [train_time: 146.60 (s), lr: 5.00e-04, train_loss: 20.1843, train_MAPE: 0.1479, train_RMSE: 32.3785] -2022-02-01 18:41:13,629 - easytorch-training - INFO - val:: [val_time: 39.40 (s), val_loss: 20.6520, val_MAPE: 0.1410, val_RMSE: 33.9003] -2022-02-01 18:41:52,879 - easytorch-training - INFO - test:: [test_time: -39.25 (s), test_loss: 20.1879, test_MAPE: 0.1351, test_RMSE: 32.7062] -2022-02-01 18:41:52,923 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_076.pt saved -2022-02-01 18:41:52,924 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:58 -2022-02-01 18:41:52,924 - easytorch-training - INFO - epoch 77 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 18:44:19,777 - easytorch-training - INFO - train:: [train_time: 146.85 (s), lr: 5.00e-04, train_loss: 20.1746, train_MAPE: 0.1479, train_RMSE: 32.3644] -2022-02-01 18:45:00,330 - easytorch-training - INFO - val:: [val_time: 40.55 (s), val_loss: 20.4462, val_MAPE: 0.1383, val_RMSE: 33.9135] -2022-02-01 18:45:39,927 - easytorch-training - INFO - test:: [test_time: -39.59 (s), test_loss: 20.0056, test_MAPE: 0.1328, test_RMSE: 32.7280] -2022-02-01 18:45:39,967 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_077.pt saved -2022-02-01 18:45:39,967 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:01 -2022-02-01 18:45:39,967 - easytorch-training - INFO - epoch 78 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 18:48:06,481 - easytorch-training - INFO - train:: [train_time: 146.51 (s), lr: 5.00e-04, train_loss: 20.1090, train_MAPE: 0.1470, train_RMSE: 32.2842] -2022-02-01 18:48:46,223 - easytorch-training - INFO - val:: [val_time: 39.74 (s), val_loss: 20.4710, val_MAPE: 0.1388, val_RMSE: 33.9205] -2022-02-01 18:49:26,200 - easytorch-training - INFO - test:: [test_time: -39.97 (s), test_loss: 19.9401, test_MAPE: 0.1328, test_RMSE: 32.6044] -2022-02-01 18:49:26,237 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_078.pt saved -2022-02-01 18:49:26,237 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 18:49:26,237 - easytorch-training - INFO - epoch 79 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 18:51:51,903 - easytorch-training - INFO - train:: [train_time: 145.67 (s), lr: 5.00e-04, train_loss: 20.1131, train_MAPE: 0.1471, train_RMSE: 32.2935] -2022-02-01 18:52:32,444 - easytorch-training - INFO - val:: [val_time: 40.54 (s), val_loss: 20.3609, val_MAPE: 0.1398, val_RMSE: 33.7902] -2022-02-01 18:53:12,735 - easytorch-training - INFO - test:: [test_time: -40.29 (s), test_loss: 19.9158, test_MAPE: 0.1339, test_RMSE: 32.6096] -2022-02-01 18:53:12,778 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_079.pt saved -2022-02-01 18:53:12,778 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:03 -2022-02-01 18:53:12,778 - easytorch-training - INFO - epoch 80 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 18:55:39,647 - easytorch-training - INFO - train:: [train_time: 146.87 (s), lr: 5.00e-04, train_loss: 20.1250, train_MAPE: 0.1475, train_RMSE: 32.2974] -2022-02-01 18:56:19,980 - easytorch-training - INFO - val:: [val_time: 40.33 (s), val_loss: 20.4438, val_MAPE: 0.1422, val_RMSE: 33.7933] -2022-02-01 18:56:59,788 - easytorch-training - INFO - test:: [test_time: -39.80 (s), test_loss: 19.9129, test_MAPE: 0.1354, test_RMSE: 32.4812] -2022-02-01 18:56:59,825 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_080.pt saved -2022-02-01 18:56:59,828 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 18:56:59,829 - easytorch-training - INFO - epoch 81 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 18:59:26,739 - easytorch-training - INFO - train:: [train_time: 146.91 (s), lr: 5.00e-04, train_loss: 20.0854, train_MAPE: 0.1467, train_RMSE: 32.2726] -2022-02-01 19:00:07,117 - easytorch-training - INFO - val:: [val_time: 40.37 (s), val_loss: 20.3900, val_MAPE: 0.1375, val_RMSE: 33.7125] -2022-02-01 19:00:47,083 - easytorch-training - INFO - test:: [test_time: -39.96 (s), test_loss: 19.9329, test_MAPE: 0.1319, test_RMSE: 32.5075] -2022-02-01 19:00:47,114 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_081.pt saved -2022-02-01 19:00:47,114 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 19:00:47,114 - easytorch-training - INFO - epoch 82 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:03:12,869 - easytorch-training - INFO - train:: [train_time: 145.75 (s), lr: 5.00e-04, train_loss: 20.0900, train_MAPE: 0.1467, train_RMSE: 32.2582] -2022-02-01 19:03:52,394 - easytorch-training - INFO - val:: [val_time: 39.52 (s), val_loss: 20.6432, val_MAPE: 0.1418, val_RMSE: 34.0124] -2022-02-01 19:04:31,648 - easytorch-training - INFO - test:: [test_time: -39.25 (s), test_loss: 20.2375, test_MAPE: 0.1359, test_RMSE: 32.8853] -2022-02-01 19:04:31,691 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_082.pt saved -2022-02-01 19:04:31,692 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 19:04:31,692 - easytorch-training - INFO - epoch 83 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:06:57,457 - easytorch-training - INFO - train:: [train_time: 145.77 (s), lr: 5.00e-04, train_loss: 20.0857, train_MAPE: 0.1469, train_RMSE: 32.2556] -2022-02-01 19:07:37,004 - easytorch-training - INFO - val:: [val_time: 39.54 (s), val_loss: 20.2819, val_MAPE: 0.1380, val_RMSE: 33.6347] -2022-02-01 19:08:17,013 - easytorch-training - INFO - test:: [test_time: -40.01 (s), test_loss: 19.8368, test_MAPE: 0.1328, test_RMSE: 32.4472] -2022-02-01 19:08:17,054 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_083.pt saved -2022-02-01 19:08:17,054 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:03 -2022-02-01 19:08:17,054 - easytorch-training - INFO - epoch 84 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:10:42,883 - easytorch-training - INFO - train:: [train_time: 145.83 (s), lr: 5.00e-04, train_loss: 20.0633, train_MAPE: 0.1465, train_RMSE: 32.2250] -2022-02-01 19:11:23,511 - easytorch-training - INFO - val:: [val_time: 40.62 (s), val_loss: 20.5481, val_MAPE: 0.1392, val_RMSE: 33.8771] -2022-02-01 19:12:03,747 - easytorch-training - INFO - test:: [test_time: -40.23 (s), test_loss: 20.0777, test_MAPE: 0.1335, test_RMSE: 32.6632] -2022-02-01 19:12:03,791 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_084.pt saved -2022-02-01 19:12:03,791 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 19:12:03,792 - easytorch-training - INFO - epoch 85 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 19:14:30,101 - easytorch-training - INFO - train:: [train_time: 146.31 (s), lr: 5.00e-04, train_loss: 20.0325, train_MAPE: 0.1467, train_RMSE: 32.1788] -2022-02-01 19:15:10,522 - easytorch-training - INFO - val:: [val_time: 40.42 (s), val_loss: 20.4408, val_MAPE: 0.1384, val_RMSE: 33.8714] -2022-02-01 19:15:49,758 - easytorch-training - INFO - test:: [test_time: -39.23 (s), test_loss: 19.9148, test_MAPE: 0.1324, test_RMSE: 32.5125] -2022-02-01 19:15:49,796 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_085.pt saved -2022-02-01 19:15:49,796 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 19:15:49,796 - easytorch-training - INFO - epoch 86 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:18:15,377 - easytorch-training - INFO - train:: [train_time: 145.58 (s), lr: 5.00e-04, train_loss: 20.0216, train_MAPE: 0.1464, train_RMSE: 32.1692] -2022-02-01 19:18:55,546 - easytorch-training - INFO - val:: [val_time: 40.16 (s), val_loss: 20.3910, val_MAPE: 0.1424, val_RMSE: 33.8001] -2022-02-01 19:19:34,817 - easytorch-training - INFO - test:: [test_time: -39.27 (s), test_loss: 19.9561, test_MAPE: 0.1366, test_RMSE: 32.5569] -2022-02-01 19:19:34,848 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_086.pt saved -2022-02-01 19:19:34,848 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 19:19:34,848 - easytorch-training - INFO - epoch 87 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 19:22:01,214 - easytorch-training - INFO - train:: [train_time: 146.37 (s), lr: 5.00e-04, train_loss: 19.9969, train_MAPE: 0.1463, train_RMSE: 32.1268] -2022-02-01 19:22:40,627 - easytorch-training - INFO - val:: [val_time: 39.41 (s), val_loss: 20.3362, val_MAPE: 0.1385, val_RMSE: 33.7494] -2022-02-01 19:23:19,804 - easytorch-training - INFO - test:: [test_time: -39.17 (s), test_loss: 19.8048, test_MAPE: 0.1324, test_RMSE: 32.3949] -2022-02-01 19:23:19,835 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_087.pt saved -2022-02-01 19:23:19,836 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 19:23:19,836 - easytorch-training - INFO - epoch 88 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 19:25:45,826 - easytorch-training - INFO - train:: [train_time: 145.99 (s), lr: 5.00e-04, train_loss: 19.9976, train_MAPE: 0.1460, train_RMSE: 32.1507] -2022-02-01 19:26:26,377 - easytorch-training - INFO - val:: [val_time: 40.54 (s), val_loss: 20.4564, val_MAPE: 0.1376, val_RMSE: 33.8355] -2022-02-01 19:27:05,587 - easytorch-training - INFO - test:: [test_time: -39.21 (s), test_loss: 19.9375, test_MAPE: 0.1318, test_RMSE: 32.5719] -2022-02-01 19:27:05,623 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_088.pt saved -2022-02-01 19:27:05,623 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:59 -2022-02-01 19:27:05,623 - easytorch-training - INFO - epoch 89 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 19:29:32,219 - easytorch-training - INFO - train:: [train_time: 146.60 (s), lr: 5.00e-04, train_loss: 20.0003, train_MAPE: 0.1458, train_RMSE: 32.1520] -2022-02-01 19:30:12,137 - easytorch-training - INFO - val:: [val_time: 39.91 (s), val_loss: 20.4838, val_MAPE: 0.1386, val_RMSE: 34.0172] -2022-02-01 19:30:51,388 - easytorch-training - INFO - test:: [test_time: -39.25 (s), test_loss: 20.0046, test_MAPE: 0.1325, test_RMSE: 32.7528] -2022-02-01 19:30:51,420 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_089.pt saved -2022-02-01 19:30:51,420 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:59 -2022-02-01 19:30:51,420 - easytorch-training - INFO - epoch 90 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:33:17,181 - easytorch-training - INFO - train:: [train_time: 145.76 (s), lr: 5.00e-04, train_loss: 20.0003, train_MAPE: 0.1462, train_RMSE: 32.1467] -2022-02-01 19:33:57,614 - easytorch-training - INFO - val:: [val_time: 40.43 (s), val_loss: 20.3966, val_MAPE: 0.1374, val_RMSE: 33.6839] -2022-02-01 19:34:37,785 - easytorch-training - INFO - test:: [test_time: -40.16 (s), test_loss: 19.8695, test_MAPE: 0.1316, test_RMSE: 32.3442] -2022-02-01 19:34:37,821 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_090.pt saved -2022-02-01 19:34:37,825 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 19:34:37,825 - easytorch-training - INFO - epoch 91 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 19:37:04,143 - easytorch-training - INFO - train:: [train_time: 146.32 (s), lr: 5.00e-04, train_loss: 19.9660, train_MAPE: 0.1458, train_RMSE: 32.1031] -2022-02-01 19:37:43,687 - easytorch-training - INFO - val:: [val_time: 39.54 (s), val_loss: 20.3287, val_MAPE: 0.1390, val_RMSE: 33.8002] -2022-02-01 19:38:23,247 - easytorch-training - INFO - test:: [test_time: -39.56 (s), test_loss: 19.8695, test_MAPE: 0.1331, test_RMSE: 32.5129] -2022-02-01 19:38:23,278 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_091.pt saved -2022-02-01 19:38:23,279 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:59 -2022-02-01 19:38:23,279 - easytorch-training - INFO - epoch 92 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:40:48,989 - easytorch-training - INFO - train:: [train_time: 145.71 (s), lr: 5.00e-04, train_loss: 19.9841, train_MAPE: 0.1459, train_RMSE: 32.1208] -2022-02-01 19:41:28,396 - easytorch-training - INFO - val:: [val_time: 39.40 (s), val_loss: 20.2767, val_MAPE: 0.1372, val_RMSE: 33.6190] -2022-02-01 19:42:08,593 - easytorch-training - INFO - test:: [test_time: -40.19 (s), test_loss: 19.8738, test_MAPE: 0.1317, test_RMSE: 32.4943] -2022-02-01 19:42:08,625 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_092.pt saved -2022-02-01 19:42:08,625 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:57 -2022-02-01 19:42:08,625 - easytorch-training - INFO - epoch 93 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:44:34,263 - easytorch-training - INFO - train:: [train_time: 145.64 (s), lr: 5.00e-04, train_loss: 19.9876, train_MAPE: 0.1463, train_RMSE: 32.1324] -2022-02-01 19:45:14,371 - easytorch-training - INFO - val:: [val_time: 40.10 (s), val_loss: 20.6411, val_MAPE: 0.1420, val_RMSE: 33.9076] -2022-02-01 19:45:54,167 - easytorch-training - INFO - test:: [test_time: -39.79 (s), test_loss: 20.1851, test_MAPE: 0.1360, test_RMSE: 32.7102] -2022-02-01 19:45:54,207 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_093.pt saved -2022-02-01 19:45:54,208 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:56 -2022-02-01 19:45:54,208 - easytorch-training - INFO - epoch 94 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 19:48:20,217 - easytorch-training - INFO - train:: [train_time: 146.01 (s), lr: 5.00e-04, train_loss: 19.9418, train_MAPE: 0.1457, train_RMSE: 32.0609] -2022-02-01 19:49:00,633 - easytorch-training - INFO - val:: [val_time: 40.41 (s), val_loss: 20.5660, val_MAPE: 0.1403, val_RMSE: 34.0892] -2022-02-01 19:49:41,165 - easytorch-training - INFO - test:: [test_time: -40.53 (s), test_loss: 20.1221, test_MAPE: 0.1343, test_RMSE: 32.8596] -2022-02-01 19:49:41,196 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_094.pt saved -2022-02-01 19:49:41,197 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:58 -2022-02-01 19:49:41,197 - easytorch-training - INFO - epoch 95 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 19:52:07,083 - easytorch-training - INFO - train:: [train_time: 145.89 (s), lr: 5.00e-04, train_loss: 19.8932, train_MAPE: 0.1454, train_RMSE: 32.0111] -2022-02-01 19:52:47,668 - easytorch-training - INFO - val:: [val_time: 40.58 (s), val_loss: 20.2634, val_MAPE: 0.1385, val_RMSE: 33.6413] -2022-02-01 19:53:27,965 - easytorch-training - INFO - test:: [test_time: -40.29 (s), test_loss: 19.8377, test_MAPE: 0.1329, test_RMSE: 32.5187] -2022-02-01 19:53:28,002 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_095.pt saved -2022-02-01 19:53:28,003 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 19:53:28,003 - easytorch-training - INFO - epoch 96 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-01 19:55:53,369 - easytorch-training - INFO - train:: [train_time: 145.37 (s), lr: 5.00e-04, train_loss: 19.9475, train_MAPE: 0.1455, train_RMSE: 32.0712] -2022-02-01 19:56:33,692 - easytorch-training - INFO - val:: [val_time: 40.32 (s), val_loss: 20.3089, val_MAPE: 0.1379, val_RMSE: 33.7362] -2022-02-01 19:57:13,821 - easytorch-training - INFO - test:: [test_time: -40.12 (s), test_loss: 19.9049, test_MAPE: 0.1321, test_RMSE: 32.5600] -2022-02-01 19:57:13,870 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_096.pt saved -2022-02-01 19:57:13,870 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 19:57:13,871 - easytorch-training - INFO - epoch 97 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 19:59:40,142 - easytorch-training - INFO - train:: [train_time: 146.27 (s), lr: 5.00e-04, train_loss: 19.9036, train_MAPE: 0.1453, train_RMSE: 32.0176] -2022-02-01 20:00:20,556 - easytorch-training - INFO - val:: [val_time: 40.41 (s), val_loss: 20.4159, val_MAPE: 0.1391, val_RMSE: 33.9446] -2022-02-01 20:01:00,631 - easytorch-training - INFO - test:: [test_time: -40.07 (s), test_loss: 19.9442, test_MAPE: 0.1329, test_RMSE: 32.6288] -2022-02-01 20:01:00,679 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_097.pt saved -2022-02-01 20:01:00,679 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:01 -2022-02-01 20:01:00,680 - easytorch-training - INFO - epoch 98 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 20:03:26,965 - easytorch-training - INFO - train:: [train_time: 146.29 (s), lr: 5.00e-04, train_loss: 19.9280, train_MAPE: 0.1460, train_RMSE: 32.0337] -2022-02-01 20:04:07,147 - easytorch-training - INFO - val:: [val_time: 40.18 (s), val_loss: 20.2266, val_MAPE: 0.1388, val_RMSE: 33.6518] -2022-02-01 20:04:46,972 - easytorch-training - INFO - test:: [test_time: -39.82 (s), test_loss: 19.7763, test_MAPE: 0.1328, test_RMSE: 32.4354] -2022-02-01 20:04:47,003 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_098.pt saved -2022-02-01 20:04:47,003 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 20:04:47,003 - easytorch-training - INFO - epoch 99 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 20:07:12,934 - easytorch-training - INFO - train:: [train_time: 145.93 (s), lr: 5.00e-04, train_loss: 19.8752, train_MAPE: 0.1450, train_RMSE: 31.9975] -2022-02-01 20:07:53,349 - easytorch-training - INFO - val:: [val_time: 40.41 (s), val_loss: 20.2895, val_MAPE: 0.1391, val_RMSE: 33.7338] -2022-02-01 20:08:32,889 - easytorch-training - INFO - test:: [test_time: -39.53 (s), test_loss: 19.7824, test_MAPE: 0.1331, test_RMSE: 32.3859] -2022-02-01 20:08:32,923 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_099.pt saved -2022-02-01 20:08:32,923 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 20:08:32,923 - easytorch-training - INFO - epoch 100 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-01 20:10:58,227 - easytorch-training - INFO - train:: [train_time: 145.30 (s), lr: 5.00e-04, train_loss: 19.8599, train_MAPE: 0.1448, train_RMSE: 31.9526] -2022-02-01 20:11:38,069 - easytorch-training - INFO - val:: [val_time: 39.84 (s), val_loss: 20.3284, val_MAPE: 0.1381, val_RMSE: 33.8305] -2022-02-01 20:12:17,987 - easytorch-training - INFO - test:: [test_time: -39.91 (s), test_loss: 19.8683, test_MAPE: 0.1322, test_RMSE: 32.5500] -2022-02-01 20:12:18,026 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_100.pt saved -2022-02-01 20:12:18,030 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 20:12:18,030 - easytorch-training - INFO - epoch 101 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 20:14:44,501 - easytorch-training - INFO - train:: [train_time: 146.47 (s), lr: 5.00e-04, train_loss: 19.8528, train_MAPE: 0.1449, train_RMSE: 31.9374] -2022-02-01 20:15:24,849 - easytorch-training - INFO - val:: [val_time: 40.34 (s), val_loss: 20.2659, val_MAPE: 0.1380, val_RMSE: 33.7327] -2022-02-01 20:16:05,205 - easytorch-training - INFO - test:: [test_time: -40.35 (s), test_loss: 19.8628, test_MAPE: 0.1319, test_RMSE: 32.5866] -2022-02-01 20:16:05,247 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_101.pt saved -2022-02-01 20:16:05,247 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 20:16:05,247 - easytorch-training - INFO - epoch 102 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 20:18:30,878 - easytorch-training - INFO - train:: [train_time: 145.63 (s), lr: 5.00e-04, train_loss: 19.8662, train_MAPE: 0.1452, train_RMSE: 31.9526] -2022-02-01 20:19:10,365 - easytorch-training - INFO - val:: [val_time: 39.48 (s), val_loss: 20.2599, val_MAPE: 0.1379, val_RMSE: 33.6505] -2022-02-01 20:19:50,072 - easytorch-training - INFO - test:: [test_time: -39.70 (s), test_loss: 19.8293, test_MAPE: 0.1323, test_RMSE: 32.4380] -2022-02-01 20:19:50,110 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_102.pt saved -2022-02-01 20:19:50,110 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 20:19:50,110 - easytorch-training - INFO - epoch 103 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 20:22:15,722 - easytorch-training - INFO - train:: [train_time: 145.61 (s), lr: 5.00e-04, train_loss: 19.8558, train_MAPE: 0.1448, train_RMSE: 31.9645] -2022-02-01 20:22:55,747 - easytorch-training - INFO - val:: [val_time: 40.02 (s), val_loss: 20.6242, val_MAPE: 0.1406, val_RMSE: 33.9327] -2022-02-01 20:23:35,678 - easytorch-training - INFO - test:: [test_time: -39.93 (s), test_loss: 20.1031, test_MAPE: 0.1344, test_RMSE: 32.5890] -2022-02-01 20:23:35,716 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_103.pt saved -2022-02-01 20:23:35,716 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:59 -2022-02-01 20:23:35,716 - easytorch-training - INFO - epoch 104 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 20:26:02,157 - easytorch-training - INFO - train:: [train_time: 146.44 (s), lr: 5.00e-04, train_loss: 19.8422, train_MAPE: 0.1448, train_RMSE: 31.9432] -2022-02-01 20:26:41,824 - easytorch-training - INFO - val:: [val_time: 39.66 (s), val_loss: 20.3572, val_MAPE: 0.1368, val_RMSE: 33.7693] -2022-02-01 20:27:21,507 - easytorch-training - INFO - test:: [test_time: -39.68 (s), test_loss: 19.9259, test_MAPE: 0.1311, test_RMSE: 32.5732] -2022-02-01 20:27:21,547 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_104.pt saved -2022-02-01 20:27:21,548 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:28:59 -2022-02-01 20:27:21,548 - easytorch-training - INFO - epoch 105 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:27<00:00, 2.62it/s] -2022-02-01 20:29:48,639 - easytorch-training - INFO - train:: [train_time: 147.09 (s), lr: 5.00e-04, train_loss: 19.8159, train_MAPE: 0.1445, train_RMSE: 31.9149] -2022-02-01 20:30:28,112 - easytorch-training - INFO - val:: [val_time: 39.47 (s), val_loss: 20.2284, val_MAPE: 0.1366, val_RMSE: 33.6589] -2022-02-01 20:31:08,005 - easytorch-training - INFO - test:: [test_time: -39.89 (s), test_loss: 19.7634, test_MAPE: 0.1304, test_RMSE: 32.4034] -2022-02-01 20:31:08,045 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_105.pt saved -2022-02-01 20:31:08,045 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:00 -2022-02-01 20:31:08,045 - easytorch-training - INFO - epoch 106 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 20:33:34,406 - easytorch-training - INFO - train:: [train_time: 146.36 (s), lr: 5.00e-04, train_loss: 19.8109, train_MAPE: 0.1444, train_RMSE: 31.9031] -2022-02-01 20:34:14,461 - easytorch-training - INFO - val:: [val_time: 40.05 (s), val_loss: 20.2892, val_MAPE: 0.1403, val_RMSE: 33.7384] -2022-02-01 20:34:54,617 - easytorch-training - INFO - test:: [test_time: -40.15 (s), test_loss: 19.8459, test_MAPE: 0.1342, test_RMSE: 32.5004] -2022-02-01 20:34:54,654 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_106.pt saved -2022-02-01 20:34:54,655 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:01 -2022-02-01 20:34:54,655 - easytorch-training - INFO - epoch 107 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 20:37:20,704 - easytorch-training - INFO - train:: [train_time: 146.05 (s), lr: 5.00e-04, train_loss: 19.7783, train_MAPE: 0.1442, train_RMSE: 31.8674] -2022-02-01 20:38:01,158 - easytorch-training - INFO - val:: [val_time: 40.45 (s), val_loss: 20.3046, val_MAPE: 0.1367, val_RMSE: 33.7017] -2022-02-01 20:38:40,714 - easytorch-training - INFO - test:: [test_time: -39.55 (s), test_loss: 19.8426, test_MAPE: 0.1308, test_RMSE: 32.4766] -2022-02-01 20:38:40,745 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_107.pt saved -2022-02-01 20:38:40,746 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:01 -2022-02-01 20:38:40,746 - easytorch-training - INFO - epoch 108 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 20:41:07,011 - easytorch-training - INFO - train:: [train_time: 146.27 (s), lr: 5.00e-04, train_loss: 19.7843, train_MAPE: 0.1442, train_RMSE: 31.8804] -2022-02-01 20:41:46,783 - easytorch-training - INFO - val:: [val_time: 39.77 (s), val_loss: 20.3179, val_MAPE: 0.1396, val_RMSE: 33.7000] -2022-02-01 20:42:26,581 - easytorch-training - INFO - test:: [test_time: -39.79 (s), test_loss: 19.7967, test_MAPE: 0.1334, test_RMSE: 32.3601] -2022-02-01 20:42:26,619 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_108.pt saved -2022-02-01 20:42:26,619 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:01 -2022-02-01 20:42:26,619 - easytorch-training - INFO - epoch 109 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 20:44:53,412 - easytorch-training - INFO - train:: [train_time: 146.79 (s), lr: 5.00e-04, train_loss: 19.7841, train_MAPE: 0.1442, train_RMSE: 31.8704] -2022-02-01 20:45:33,254 - easytorch-training - INFO - val:: [val_time: 39.84 (s), val_loss: 20.2942, val_MAPE: 0.1399, val_RMSE: 33.7412] -2022-02-01 20:46:13,242 - easytorch-training - INFO - test:: [test_time: -39.98 (s), test_loss: 19.8644, test_MAPE: 0.1340, test_RMSE: 32.4614] -2022-02-01 20:46:13,281 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_109.pt saved -2022-02-01 20:46:13,281 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 20:46:13,281 - easytorch-training - INFO - epoch 110 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 20:48:39,666 - easytorch-training - INFO - train:: [train_time: 146.38 (s), lr: 5.00e-04, train_loss: 19.7997, train_MAPE: 0.1451, train_RMSE: 31.8561] -2022-02-01 20:49:19,544 - easytorch-training - INFO - val:: [val_time: 39.87 (s), val_loss: 20.2561, val_MAPE: 0.1369, val_RMSE: 33.6739] -2022-02-01 20:49:59,600 - easytorch-training - INFO - test:: [test_time: -40.05 (s), test_loss: 19.8286, test_MAPE: 0.1311, test_RMSE: 32.4875] -2022-02-01 20:49:59,637 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_110.pt saved -2022-02-01 20:49:59,641 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:02 -2022-02-01 20:49:59,641 - easytorch-training - INFO - epoch 111 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 20:52:25,603 - easytorch-training - INFO - train:: [train_time: 145.96 (s), lr: 5.00e-04, train_loss: 19.7761, train_MAPE: 0.1444, train_RMSE: 31.8432] -2022-02-01 20:53:05,700 - easytorch-training - INFO - val:: [val_time: 40.09 (s), val_loss: 20.4088, val_MAPE: 0.1379, val_RMSE: 33.8564] -2022-02-01 20:53:45,848 - easytorch-training - INFO - test:: [test_time: -40.14 (s), test_loss: 19.9344, test_MAPE: 0.1317, test_RMSE: 32.5524] -2022-02-01 20:53:45,880 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_111.pt saved -2022-02-01 20:53:45,880 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:03 -2022-02-01 20:53:45,880 - easytorch-training - INFO - epoch 112 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:27<00:00, 2.62it/s] -2022-02-01 20:56:13,146 - easytorch-training - INFO - train:: [train_time: 147.27 (s), lr: 5.00e-04, train_loss: 19.7750, train_MAPE: 0.1438, train_RMSE: 31.8635] -2022-02-01 20:56:53,390 - easytorch-training - INFO - val:: [val_time: 40.24 (s), val_loss: 20.3702, val_MAPE: 0.1372, val_RMSE: 33.7276] -2022-02-01 20:57:32,593 - easytorch-training - INFO - test:: [test_time: -39.19 (s), test_loss: 19.9528, test_MAPE: 0.1316, test_RMSE: 32.5595] -2022-02-01 20:57:32,631 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_112.pt saved -2022-02-01 20:57:32,631 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:04 -2022-02-01 20:57:32,631 - easytorch-training - INFO - epoch 113 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 20:59:59,270 - easytorch-training - INFO - train:: [train_time: 146.64 (s), lr: 5.00e-04, train_loss: 19.7478, train_MAPE: 0.1437, train_RMSE: 31.8275] -2022-02-01 21:00:39,243 - easytorch-training - INFO - val:: [val_time: 39.97 (s), val_loss: 20.3314, val_MAPE: 0.1388, val_RMSE: 33.8259] -2022-02-01 21:01:19,147 - easytorch-training - INFO - test:: [test_time: -39.90 (s), test_loss: 19.8968, test_MAPE: 0.1326, test_RMSE: 32.5386] -2022-02-01 21:01:19,184 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_113.pt saved -2022-02-01 21:01:19,184 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 21:01:19,184 - easytorch-training - INFO - epoch 114 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 21:03:44,794 - easytorch-training - INFO - train:: [train_time: 145.61 (s), lr: 5.00e-04, train_loss: 19.7322, train_MAPE: 0.1439, train_RMSE: 31.8051] -2022-02-01 21:04:25,630 - easytorch-training - INFO - val:: [val_time: 40.83 (s), val_loss: 20.2390, val_MAPE: 0.1369, val_RMSE: 33.6115] -2022-02-01 21:05:05,402 - easytorch-training - INFO - test:: [test_time: -39.77 (s), test_loss: 19.8454, test_MAPE: 0.1313, test_RMSE: 32.5060] -2022-02-01 21:05:05,447 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_114.pt saved -2022-02-01 21:05:05,447 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 21:05:05,448 - easytorch-training - INFO - epoch 115 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 21:07:31,950 - easytorch-training - INFO - train:: [train_time: 146.50 (s), lr: 5.00e-04, train_loss: 19.7589, train_MAPE: 0.1446, train_RMSE: 31.8200] -2022-02-01 21:08:12,258 - easytorch-training - INFO - val:: [val_time: 40.30 (s), val_loss: 20.5357, val_MAPE: 0.1394, val_RMSE: 33.8289] -2022-02-01 21:08:51,708 - easytorch-training - INFO - test:: [test_time: -39.45 (s), test_loss: 20.0890, test_MAPE: 0.1328, test_RMSE: 32.5717] -2022-02-01 21:08:51,743 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_115.pt saved -2022-02-01 21:08:51,743 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:06 -2022-02-01 21:08:51,743 - easytorch-training - INFO - epoch 116 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 21:11:17,867 - easytorch-training - INFO - train:: [train_time: 146.12 (s), lr: 5.00e-04, train_loss: 19.7361, train_MAPE: 0.1437, train_RMSE: 31.8091] -2022-02-01 21:11:58,131 - easytorch-training - INFO - val:: [val_time: 40.26 (s), val_loss: 20.1769, val_MAPE: 0.1387, val_RMSE: 33.5580] -2022-02-01 21:12:37,873 - easytorch-training - INFO - test:: [test_time: -39.74 (s), test_loss: 19.7736, test_MAPE: 0.1327, test_RMSE: 32.4159] -2022-02-01 21:12:37,903 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_116.pt saved -2022-02-01 21:12:37,904 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:06 -2022-02-01 21:12:37,904 - easytorch-training - INFO - epoch 117 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 21:15:04,548 - easytorch-training - INFO - train:: [train_time: 146.64 (s), lr: 5.00e-04, train_loss: 19.7164, train_MAPE: 0.1436, train_RMSE: 31.7802] -2022-02-01 21:15:44,298 - easytorch-training - INFO - val:: [val_time: 39.74 (s), val_loss: 20.3495, val_MAPE: 0.1364, val_RMSE: 33.8227] -2022-02-01 21:16:23,969 - easytorch-training - INFO - test:: [test_time: -39.66 (s), test_loss: 19.9904, test_MAPE: 0.1306, test_RMSE: 32.7215] -2022-02-01 21:16:24,001 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_117.pt saved -2022-02-01 21:16:24,001 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:06 -2022-02-01 21:16:24,001 - easytorch-training - INFO - epoch 118 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 21:18:50,666 - easytorch-training - INFO - train:: [train_time: 146.66 (s), lr: 5.00e-04, train_loss: 19.7254, train_MAPE: 0.1437, train_RMSE: 31.8061] -2022-02-01 21:19:31,340 - easytorch-training - INFO - val:: [val_time: 40.67 (s), val_loss: 20.1791, val_MAPE: 0.1371, val_RMSE: 33.6865] -2022-02-01 21:20:11,238 - easytorch-training - INFO - test:: [test_time: -39.89 (s), test_loss: 19.7415, test_MAPE: 0.1315, test_RMSE: 32.4819] -2022-02-01 21:20:11,281 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_118.pt saved -2022-02-01 21:20:11,281 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 21:20:11,281 - easytorch-training - INFO - epoch 119 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 21:22:37,547 - easytorch-training - INFO - train:: [train_time: 146.26 (s), lr: 5.00e-04, train_loss: 19.7043, train_MAPE: 0.1434, train_RMSE: 31.7666] -2022-02-01 21:23:17,831 - easytorch-training - INFO - val:: [val_time: 40.28 (s), val_loss: 20.2853, val_MAPE: 0.1374, val_RMSE: 33.8239] -2022-02-01 21:23:58,170 - easytorch-training - INFO - test:: [test_time: -40.34 (s), test_loss: 19.9254, test_MAPE: 0.1319, test_RMSE: 32.7236] -2022-02-01 21:23:58,208 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_119.pt saved -2022-02-01 21:23:58,208 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 21:23:58,209 - easytorch-training - INFO - epoch 120 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 21:26:24,634 - easytorch-training - INFO - train:: [train_time: 146.42 (s), lr: 5.00e-04, train_loss: 19.6674, train_MAPE: 0.1433, train_RMSE: 31.7129] -2022-02-01 21:27:04,640 - easytorch-training - INFO - val:: [val_time: 40.00 (s), val_loss: 20.4285, val_MAPE: 0.1389, val_RMSE: 34.0016] -2022-02-01 21:27:44,361 - easytorch-training - INFO - test:: [test_time: -39.72 (s), test_loss: 19.9912, test_MAPE: 0.1327, test_RMSE: 32.7701] -2022-02-01 21:27:44,399 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_120.pt saved -2022-02-01 21:27:44,402 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:10 -2022-02-01 21:27:44,403 - easytorch-training - INFO - epoch 121 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 21:30:10,759 - easytorch-training - INFO - train:: [train_time: 146.36 (s), lr: 5.00e-04, train_loss: 19.6889, train_MAPE: 0.1435, train_RMSE: 31.7259] -2022-02-01 21:30:50,672 - easytorch-training - INFO - val:: [val_time: 39.90 (s), val_loss: 20.2819, val_MAPE: 0.1371, val_RMSE: 33.8118] -2022-02-01 21:31:30,075 - easytorch-training - INFO - test:: [test_time: -39.40 (s), test_loss: 19.9496, test_MAPE: 0.1313, test_RMSE: 32.6978] -2022-02-01 21:31:30,119 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_121.pt saved -2022-02-01 21:31:30,120 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 21:31:30,120 - easytorch-training - INFO - epoch 122 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 21:33:56,457 - easytorch-training - INFO - train:: [train_time: 146.34 (s), lr: 5.00e-04, train_loss: 19.6639, train_MAPE: 0.1431, train_RMSE: 31.7141] -2022-02-01 21:34:36,540 - easytorch-training - INFO - val:: [val_time: 40.08 (s), val_loss: 20.2815, val_MAPE: 0.1371, val_RMSE: 33.7981] -2022-02-01 21:35:16,807 - easytorch-training - INFO - test:: [test_time: -40.26 (s), test_loss: 19.9154, test_MAPE: 0.1315, test_RMSE: 32.6993] -2022-02-01 21:35:16,838 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_122.pt saved -2022-02-01 21:35:16,838 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:10 -2022-02-01 21:35:16,838 - easytorch-training - INFO - epoch 123 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 21:37:42,309 - easytorch-training - INFO - train:: [train_time: 145.47 (s), lr: 5.00e-04, train_loss: 19.6802, train_MAPE: 0.1434, train_RMSE: 31.7521] -2022-02-01 21:38:21,833 - easytorch-training - INFO - val:: [val_time: 39.51 (s), val_loss: 20.2621, val_MAPE: 0.1368, val_RMSE: 33.7379] -2022-02-01 21:39:01,749 - easytorch-training - INFO - test:: [test_time: -39.91 (s), test_loss: 19.9080, test_MAPE: 0.1313, test_RMSE: 32.6318] -2022-02-01 21:39:01,781 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_123.pt saved -2022-02-01 21:39:01,781 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 21:39:01,781 - easytorch-training - INFO - epoch 124 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 21:41:27,644 - easytorch-training - INFO - train:: [train_time: 145.86 (s), lr: 5.00e-04, train_loss: 19.6612, train_MAPE: 0.1431, train_RMSE: 31.6960] -2022-02-01 21:42:08,055 - easytorch-training - INFO - val:: [val_time: 40.41 (s), val_loss: 20.3744, val_MAPE: 0.1372, val_RMSE: 33.8067] -2022-02-01 21:42:47,922 - easytorch-training - INFO - test:: [test_time: -39.86 (s), test_loss: 19.9311, test_MAPE: 0.1314, test_RMSE: 32.5970] -2022-02-01 21:42:47,960 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_124.pt saved -2022-02-01 21:42:47,960 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 21:42:47,960 - easytorch-training - INFO - epoch 125 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 21:45:14,181 - easytorch-training - INFO - train:: [train_time: 146.22 (s), lr: 5.00e-04, train_loss: 19.6647, train_MAPE: 0.1435, train_RMSE: 31.7078] -2022-02-01 21:45:54,314 - easytorch-training - INFO - val:: [val_time: 40.13 (s), val_loss: 20.2501, val_MAPE: 0.1369, val_RMSE: 33.6027] -2022-02-01 21:46:33,508 - easytorch-training - INFO - test:: [test_time: -39.19 (s), test_loss: 19.8709, test_MAPE: 0.1311, test_RMSE: 32.5199] -2022-02-01 21:46:33,539 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_125.pt saved -2022-02-01 21:46:33,539 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 21:46:33,540 - easytorch-training - INFO - epoch 126 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 21:48:59,265 - easytorch-training - INFO - train:: [train_time: 145.73 (s), lr: 5.00e-04, train_loss: 19.6461, train_MAPE: 0.1429, train_RMSE: 31.6967] -2022-02-01 21:49:39,595 - easytorch-training - INFO - val:: [val_time: 40.32 (s), val_loss: 20.3016, val_MAPE: 0.1376, val_RMSE: 33.7932] -2022-02-01 21:50:19,464 - easytorch-training - INFO - test:: [test_time: -39.87 (s), test_loss: 19.8799, test_MAPE: 0.1318, test_RMSE: 32.5880] -2022-02-01 21:50:19,499 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_126.pt saved -2022-02-01 21:50:19,500 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 21:50:19,500 - easytorch-training - INFO - epoch 127 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 21:52:45,479 - easytorch-training - INFO - train:: [train_time: 145.98 (s), lr: 5.00e-04, train_loss: 19.6241, train_MAPE: 0.1429, train_RMSE: 31.6511] -2022-02-01 21:53:25,810 - easytorch-training - INFO - val:: [val_time: 40.33 (s), val_loss: 20.1975, val_MAPE: 0.1387, val_RMSE: 33.6037] -2022-02-01 21:54:05,620 - easytorch-training - INFO - test:: [test_time: -39.81 (s), test_loss: 19.8120, test_MAPE: 0.1325, test_RMSE: 32.4769] -2022-02-01 21:54:05,657 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_127.pt saved -2022-02-01 21:54:05,657 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 21:54:05,658 - easytorch-training - INFO - epoch 128 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 21:56:31,115 - easytorch-training - INFO - train:: [train_time: 145.46 (s), lr: 5.00e-04, train_loss: 19.6177, train_MAPE: 0.1426, train_RMSE: 31.6595] -2022-02-01 21:57:11,788 - easytorch-training - INFO - val:: [val_time: 40.67 (s), val_loss: 20.1715, val_MAPE: 0.1381, val_RMSE: 33.6507] -2022-02-01 21:57:51,986 - easytorch-training - INFO - test:: [test_time: -40.19 (s), test_loss: 19.8043, test_MAPE: 0.1323, test_RMSE: 32.5812] -2022-02-01 21:57:52,023 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_128.pt saved -2022-02-01 21:57:52,023 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 21:57:52,024 - easytorch-training - INFO - epoch 129 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 22:00:17,887 - easytorch-training - INFO - train:: [train_time: 145.86 (s), lr: 5.00e-04, train_loss: 19.6285, train_MAPE: 0.1435, train_RMSE: 31.6435] -2022-02-01 22:00:57,459 - easytorch-training - INFO - val:: [val_time: 39.57 (s), val_loss: 20.2292, val_MAPE: 0.1386, val_RMSE: 33.7692] -2022-02-01 22:01:37,714 - easytorch-training - INFO - test:: [test_time: -40.25 (s), test_loss: 19.8478, test_MAPE: 0.1326, test_RMSE: 32.6263] -2022-02-01 22:01:37,751 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_129.pt saved -2022-02-01 22:01:37,752 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 22:01:37,752 - easytorch-training - INFO - epoch 130 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:04:04,197 - easytorch-training - INFO - train:: [train_time: 146.44 (s), lr: 5.00e-04, train_loss: 19.5936, train_MAPE: 0.1426, train_RMSE: 31.6213] -2022-02-01 22:04:44,903 - easytorch-training - INFO - val:: [val_time: 40.70 (s), val_loss: 20.3620, val_MAPE: 0.1371, val_RMSE: 33.8875] -2022-02-01 22:05:24,643 - easytorch-training - INFO - test:: [test_time: -39.74 (s), test_loss: 19.9786, test_MAPE: 0.1314, test_RMSE: 32.7651] -2022-02-01 22:05:24,686 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_130.pt saved -2022-02-01 22:05:24,690 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 22:05:24,690 - easytorch-training - INFO - epoch 131 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:07:50,986 - easytorch-training - INFO - train:: [train_time: 146.30 (s), lr: 5.00e-04, train_loss: 19.6146, train_MAPE: 0.1425, train_RMSE: 31.6623] -2022-02-01 22:08:31,602 - easytorch-training - INFO - val:: [val_time: 40.61 (s), val_loss: 20.2071, val_MAPE: 0.1400, val_RMSE: 33.6768] -2022-02-01 22:09:10,892 - easytorch-training - INFO - test:: [test_time: -39.29 (s), test_loss: 19.7998, test_MAPE: 0.1342, test_RMSE: 32.5353] -2022-02-01 22:09:10,930 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_131.pt saved -2022-02-01 22:09:10,930 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 22:09:10,930 - easytorch-training - INFO - epoch 132 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 22:11:36,700 - easytorch-training - INFO - train:: [train_time: 145.77 (s), lr: 5.00e-04, train_loss: 19.6424, train_MAPE: 0.1436, train_RMSE: 31.6643] -2022-02-01 22:12:17,051 - easytorch-training - INFO - val:: [val_time: 40.34 (s), val_loss: 20.3082, val_MAPE: 0.1368, val_RMSE: 33.7565] -2022-02-01 22:12:56,255 - easytorch-training - INFO - test:: [test_time: -39.20 (s), test_loss: 19.8947, test_MAPE: 0.1310, test_RMSE: 32.5920] -2022-02-01 22:12:56,292 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_132.pt saved -2022-02-01 22:12:56,292 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 22:12:56,292 - easytorch-training - INFO - epoch 133 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:15:22,543 - easytorch-training - INFO - train:: [train_time: 146.25 (s), lr: 5.00e-04, train_loss: 19.6052, train_MAPE: 0.1430, train_RMSE: 31.6379] -2022-02-01 22:16:02,102 - easytorch-training - INFO - val:: [val_time: 39.55 (s), val_loss: 20.2594, val_MAPE: 0.1366, val_RMSE: 33.8383] -2022-02-01 22:16:41,352 - easytorch-training - INFO - test:: [test_time: -39.25 (s), test_loss: 19.8470, test_MAPE: 0.1311, test_RMSE: 32.6073] -2022-02-01 22:16:41,383 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_133.pt saved -2022-02-01 22:16:41,384 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:07 -2022-02-01 22:16:41,384 - easytorch-training - INFO - epoch 134 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 22:19:06,895 - easytorch-training - INFO - train:: [train_time: 145.51 (s), lr: 5.00e-04, train_loss: 19.6037, train_MAPE: 0.1424, train_RMSE: 31.6475] -2022-02-01 22:19:46,394 - easytorch-training - INFO - val:: [val_time: 39.49 (s), val_loss: 20.1878, val_MAPE: 0.1380, val_RMSE: 33.6165] -2022-02-01 22:20:26,577 - easytorch-training - INFO - test:: [test_time: -40.18 (s), test_loss: 19.8043, test_MAPE: 0.1321, test_RMSE: 32.5167] -2022-02-01 22:20:26,614 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_134.pt saved -2022-02-01 22:20:26,615 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:05 -2022-02-01 22:20:26,615 - easytorch-training - INFO - epoch 135 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:22:52,652 - easytorch-training - INFO - train:: [train_time: 146.04 (s), lr: 5.00e-04, train_loss: 19.5910, train_MAPE: 0.1425, train_RMSE: 31.6250] -2022-02-01 22:23:33,266 - easytorch-training - INFO - val:: [val_time: 40.61 (s), val_loss: 20.4021, val_MAPE: 0.1365, val_RMSE: 33.8024] -2022-02-01 22:24:13,031 - easytorch-training - INFO - test:: [test_time: -39.76 (s), test_loss: 20.0118, test_MAPE: 0.1309, test_RMSE: 32.6527] -2022-02-01 22:24:13,065 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_135.pt saved -2022-02-01 22:24:13,065 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:06 -2022-02-01 22:24:13,065 - easytorch-training - INFO - epoch 136 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:26:39,464 - easytorch-training - INFO - train:: [train_time: 146.40 (s), lr: 5.00e-04, train_loss: 19.5704, train_MAPE: 0.1425, train_RMSE: 31.5852] -2022-02-01 22:27:19,353 - easytorch-training - INFO - val:: [val_time: 39.88 (s), val_loss: 20.2864, val_MAPE: 0.1362, val_RMSE: 33.7255] -2022-02-01 22:27:59,500 - easytorch-training - INFO - test:: [test_time: -40.14 (s), test_loss: 19.9726, test_MAPE: 0.1306, test_RMSE: 32.7304] -2022-02-01 22:27:59,532 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_136.pt saved -2022-02-01 22:27:59,532 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:07 -2022-02-01 22:27:59,532 - easytorch-training - INFO - epoch 137 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 22:30:25,386 - easytorch-training - INFO - train:: [train_time: 145.85 (s), lr: 5.00e-04, train_loss: 19.5625, train_MAPE: 0.1422, train_RMSE: 31.5851] -2022-02-01 22:31:05,660 - easytorch-training - INFO - val:: [val_time: 40.27 (s), val_loss: 20.1602, val_MAPE: 0.1392, val_RMSE: 33.5796] -2022-02-01 22:31:45,884 - easytorch-training - INFO - test:: [test_time: -40.22 (s), test_loss: 19.7722, test_MAPE: 0.1333, test_RMSE: 32.4420] -2022-02-01 22:31:45,922 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_137.pt saved -2022-02-01 22:31:45,923 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:07 -2022-02-01 22:31:45,923 - easytorch-training - INFO - epoch 138 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 22:34:12,635 - easytorch-training - INFO - train:: [train_time: 146.71 (s), lr: 5.00e-04, train_loss: 19.5993, train_MAPE: 0.1427, train_RMSE: 31.6313] -2022-02-01 22:34:52,705 - easytorch-training - INFO - val:: [val_time: 40.06 (s), val_loss: 20.2771, val_MAPE: 0.1370, val_RMSE: 33.9187] -2022-02-01 22:35:32,637 - easytorch-training - INFO - test:: [test_time: -39.93 (s), test_loss: 19.9268, test_MAPE: 0.1314, test_RMSE: 32.8460] -2022-02-01 22:35:32,675 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_138.pt saved -2022-02-01 22:35:32,676 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:08 -2022-02-01 22:35:32,676 - easytorch-training - INFO - epoch 139 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:37:58,816 - easytorch-training - INFO - train:: [train_time: 146.14 (s), lr: 5.00e-04, train_loss: 19.5632, train_MAPE: 0.1424, train_RMSE: 31.5865] -2022-02-01 22:38:39,260 - easytorch-training - INFO - val:: [val_time: 40.44 (s), val_loss: 20.2441, val_MAPE: 0.1361, val_RMSE: 33.7417] -2022-02-01 22:39:19,230 - easytorch-training - INFO - test:: [test_time: -39.97 (s), test_loss: 19.9173, test_MAPE: 0.1307, test_RMSE: 32.6592] -2022-02-01 22:39:19,275 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_139.pt saved -2022-02-01 22:39:19,276 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 22:39:19,276 - easytorch-training - INFO - epoch 140 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 22:41:44,847 - easytorch-training - INFO - train:: [train_time: 145.57 (s), lr: 5.00e-04, train_loss: 19.5525, train_MAPE: 0.1422, train_RMSE: 31.5738] -2022-02-01 22:42:25,631 - easytorch-training - INFO - val:: [val_time: 40.78 (s), val_loss: 20.2880, val_MAPE: 0.1433, val_RMSE: 33.6920] -2022-02-01 22:43:05,363 - easytorch-training - INFO - test:: [test_time: -39.73 (s), test_loss: 19.8802, test_MAPE: 0.1374, test_RMSE: 32.5255] -2022-02-01 22:43:05,414 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_140.pt saved -2022-02-01 22:43:05,418 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 22:43:05,418 - easytorch-training - INFO - epoch 141 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 22:45:31,166 - easytorch-training - INFO - train:: [train_time: 145.75 (s), lr: 5.00e-04, train_loss: 19.5754, train_MAPE: 0.1425, train_RMSE: 31.5876] -2022-02-01 22:46:11,283 - easytorch-training - INFO - val:: [val_time: 40.11 (s), val_loss: 20.2775, val_MAPE: 0.1361, val_RMSE: 33.8365] -2022-02-01 22:46:51,299 - easytorch-training - INFO - test:: [test_time: -40.01 (s), test_loss: 19.9347, test_MAPE: 0.1304, test_RMSE: 32.7052] -2022-02-01 22:46:51,337 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_141.pt saved -2022-02-01 22:46:51,337 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:09 -2022-02-01 22:46:51,337 - easytorch-training - INFO - epoch 142 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 22:49:17,229 - easytorch-training - INFO - train:: [train_time: 145.89 (s), lr: 5.00e-04, train_loss: 19.5390, train_MAPE: 0.1422, train_RMSE: 31.5555] -2022-02-01 22:49:57,976 - easytorch-training - INFO - val:: [val_time: 40.74 (s), val_loss: 20.2374, val_MAPE: 0.1361, val_RMSE: 33.5847] -2022-02-01 22:50:38,069 - easytorch-training - INFO - test:: [test_time: -40.09 (s), test_loss: 19.8876, test_MAPE: 0.1309, test_RMSE: 32.5813] -2022-02-01 22:50:38,106 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_142.pt saved -2022-02-01 22:50:38,107 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:10 -2022-02-01 22:50:38,107 - easytorch-training - INFO - epoch 143 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:53:04,466 - easytorch-training - INFO - train:: [train_time: 146.36 (s), lr: 5.00e-04, train_loss: 19.5449, train_MAPE: 0.1420, train_RMSE: 31.5624] -2022-02-01 22:53:45,292 - easytorch-training - INFO - val:: [val_time: 40.82 (s), val_loss: 20.1228, val_MAPE: 0.1393, val_RMSE: 33.6770] -2022-02-01 22:54:25,276 - easytorch-training - INFO - test:: [test_time: -39.98 (s), test_loss: 19.7419, test_MAPE: 0.1337, test_RMSE: 32.5604] -2022-02-01 22:54:25,307 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_143.pt saved -2022-02-01 22:54:25,307 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:11 -2022-02-01 22:54:25,307 - easytorch-training - INFO - epoch 144 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 22:56:51,547 - easytorch-training - INFO - train:: [train_time: 146.24 (s), lr: 5.00e-04, train_loss: 19.5058, train_MAPE: 0.1418, train_RMSE: 31.5075] -2022-02-01 22:57:32,505 - easytorch-training - INFO - val:: [val_time: 40.95 (s), val_loss: 20.1392, val_MAPE: 0.1384, val_RMSE: 33.6214] -2022-02-01 22:58:12,188 - easytorch-training - INFO - test:: [test_time: -39.68 (s), test_loss: 19.8339, test_MAPE: 0.1330, test_RMSE: 32.6729] -2022-02-01 22:58:12,226 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_144.pt saved -2022-02-01 22:58:12,226 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:13 -2022-02-01 22:58:12,226 - easytorch-training - INFO - epoch 145 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 23:00:38,747 - easytorch-training - INFO - train:: [train_time: 146.52 (s), lr: 5.00e-04, train_loss: 19.5190, train_MAPE: 0.1419, train_RMSE: 31.5334] -2022-02-01 23:01:19,282 - easytorch-training - INFO - val:: [val_time: 40.53 (s), val_loss: 20.2442, val_MAPE: 0.1370, val_RMSE: 33.7125] -2022-02-01 23:01:59,399 - easytorch-training - INFO - test:: [test_time: -40.11 (s), test_loss: 19.9171, test_MAPE: 0.1310, test_RMSE: 32.6889] -2022-02-01 23:01:59,437 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_145.pt saved -2022-02-01 23:01:59,437 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 23:01:59,437 - easytorch-training - INFO - epoch 146 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 23:04:25,326 - easytorch-training - INFO - train:: [train_time: 145.89 (s), lr: 5.00e-04, train_loss: 19.5131, train_MAPE: 0.1420, train_RMSE: 31.5132] -2022-02-01 23:05:06,028 - easytorch-training - INFO - val:: [val_time: 40.70 (s), val_loss: 20.2032, val_MAPE: 0.1385, val_RMSE: 33.7146] -2022-02-01 23:05:45,645 - easytorch-training - INFO - test:: [test_time: -39.61 (s), test_loss: 19.7807, test_MAPE: 0.1328, test_RMSE: 32.5041] -2022-02-01 23:05:45,678 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_146.pt saved -2022-02-01 23:05:45,679 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 23:05:45,679 - easytorch-training - INFO - epoch 147 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 23:08:11,476 - easytorch-training - INFO - train:: [train_time: 145.80 (s), lr: 5.00e-04, train_loss: 19.5160, train_MAPE: 0.1418, train_RMSE: 31.5394] -2022-02-01 23:08:51,082 - easytorch-training - INFO - val:: [val_time: 39.60 (s), val_loss: 20.0996, val_MAPE: 0.1368, val_RMSE: 33.5904] -2022-02-01 23:09:30,167 - easytorch-training - INFO - test:: [test_time: -39.08 (s), test_loss: 19.7486, test_MAPE: 0.1313, test_RMSE: 32.5156] -2022-02-01 23:09:30,199 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_147.pt saved -2022-02-01 23:09:30,199 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:12 -2022-02-01 23:09:30,199 - easytorch-training - INFO - epoch 148 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-01 23:11:56,190 - easytorch-training - INFO - train:: [train_time: 145.99 (s), lr: 5.00e-04, train_loss: 19.4984, train_MAPE: 0.1417, train_RMSE: 31.4992] -2022-02-01 23:12:36,872 - easytorch-training - INFO - val:: [val_time: 40.68 (s), val_loss: 20.2254, val_MAPE: 0.1400, val_RMSE: 33.7009] -2022-02-01 23:13:16,868 - easytorch-training - INFO - test:: [test_time: -39.99 (s), test_loss: 19.8866, test_MAPE: 0.1347, test_RMSE: 32.6494] -2022-02-01 23:13:16,906 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_148.pt saved -2022-02-01 23:13:16,906 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:13 -2022-02-01 23:13:16,906 - easytorch-training - INFO - epoch 149 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 23:15:43,073 - easytorch-training - INFO - train:: [train_time: 146.17 (s), lr: 5.00e-04, train_loss: 19.5033, train_MAPE: 0.1416, train_RMSE: 31.5087] -2022-02-01 23:16:23,103 - easytorch-training - INFO - val:: [val_time: 40.02 (s), val_loss: 20.1784, val_MAPE: 0.1387, val_RMSE: 33.6781] -2022-02-01 23:17:03,406 - easytorch-training - INFO - test:: [test_time: -40.30 (s), test_loss: 19.8469, test_MAPE: 0.1334, test_RMSE: 32.6667] -2022-02-01 23:17:03,444 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_149.pt saved -2022-02-01 23:17:03,444 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 23:17:03,444 - easytorch-training - INFO - epoch 150 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 23:19:29,551 - easytorch-training - INFO - train:: [train_time: 146.11 (s), lr: 5.00e-04, train_loss: 19.4913, train_MAPE: 0.1418, train_RMSE: 31.4930] -2022-02-01 23:20:09,938 - easytorch-training - INFO - val:: [val_time: 40.38 (s), val_loss: 20.1273, val_MAPE: 0.1376, val_RMSE: 33.5416] -2022-02-01 23:20:50,115 - easytorch-training - INFO - test:: [test_time: -40.17 (s), test_loss: 19.8046, test_MAPE: 0.1318, test_RMSE: 32.5257] -2022-02-01 23:20:50,152 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_150.pt saved -2022-02-01 23:20:50,155 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 23:20:50,155 - easytorch-training - INFO - epoch 151 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 23:23:15,723 - easytorch-training - INFO - train:: [train_time: 145.57 (s), lr: 5.00e-04, train_loss: 19.4987, train_MAPE: 0.1417, train_RMSE: 31.4948] -2022-02-01 23:23:56,231 - easytorch-training - INFO - val:: [val_time: 40.50 (s), val_loss: 20.1344, val_MAPE: 0.1372, val_RMSE: 33.6869] -2022-02-01 23:24:36,447 - easytorch-training - INFO - test:: [test_time: -40.21 (s), test_loss: 19.7549, test_MAPE: 0.1314, test_RMSE: 32.5395] -2022-02-01 23:24:36,485 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_151.pt saved -2022-02-01 23:24:36,485 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:15 -2022-02-01 23:24:36,486 - easytorch-training - INFO - epoch 152 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 23:27:02,361 - easytorch-training - INFO - train:: [train_time: 145.87 (s), lr: 5.00e-04, train_loss: 19.4800, train_MAPE: 0.1417, train_RMSE: 31.4825] -2022-02-01 23:27:41,811 - easytorch-training - INFO - val:: [val_time: 39.44 (s), val_loss: 20.2556, val_MAPE: 0.1439, val_RMSE: 33.8100] -2022-02-01 23:28:21,949 - easytorch-training - INFO - test:: [test_time: -40.13 (s), test_loss: 19.9049, test_MAPE: 0.1379, test_RMSE: 32.6689] -2022-02-01 23:28:21,980 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_152.pt saved -2022-02-01 23:28:21,980 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-01 23:28:21,980 - easytorch-training - INFO - epoch 153 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 23:30:47,606 - easytorch-training - INFO - train:: [train_time: 145.63 (s), lr: 5.00e-04, train_loss: 19.4844, train_MAPE: 0.1416, train_RMSE: 31.4824] -2022-02-01 23:31:28,390 - easytorch-training - INFO - val:: [val_time: 40.78 (s), val_loss: 20.2669, val_MAPE: 0.1366, val_RMSE: 33.8084] -2022-02-01 23:32:09,098 - easytorch-training - INFO - test:: [test_time: -40.70 (s), test_loss: 19.8563, test_MAPE: 0.1306, test_RMSE: 32.6247] -2022-02-01 23:32:09,143 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_153.pt saved -2022-02-01 23:32:09,143 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:15 -2022-02-01 23:32:09,143 - easytorch-training - INFO - epoch 154 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 23:34:35,719 - easytorch-training - INFO - train:: [train_time: 146.58 (s), lr: 5.00e-04, train_loss: 19.4457, train_MAPE: 0.1413, train_RMSE: 31.4308] -2022-02-01 23:35:16,200 - easytorch-training - INFO - val:: [val_time: 40.48 (s), val_loss: 20.2390, val_MAPE: 0.1356, val_RMSE: 33.6892] -2022-02-01 23:35:55,717 - easytorch-training - INFO - test:: [test_time: -39.51 (s), test_loss: 19.9004, test_MAPE: 0.1301, test_RMSE: 32.6287] -2022-02-01 23:35:55,753 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_154.pt saved -2022-02-01 23:35:55,754 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-01 23:35:55,754 - easytorch-training - INFO - epoch 155 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-01 23:38:22,393 - easytorch-training - INFO - train:: [train_time: 146.64 (s), lr: 5.00e-04, train_loss: 19.4608, train_MAPE: 0.1414, train_RMSE: 31.4544] -2022-02-01 23:39:01,933 - easytorch-training - INFO - val:: [val_time: 39.53 (s), val_loss: 20.2179, val_MAPE: 0.1363, val_RMSE: 33.7033] -2022-02-01 23:39:42,289 - easytorch-training - INFO - test:: [test_time: -40.35 (s), test_loss: 19.8758, test_MAPE: 0.1306, test_RMSE: 32.6442] -2022-02-01 23:39:42,327 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_155.pt saved -2022-02-01 23:39:42,327 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-01 23:39:42,327 - easytorch-training - INFO - epoch 156 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-01 23:42:07,714 - easytorch-training - INFO - train:: [train_time: 145.39 (s), lr: 5.00e-04, train_loss: 19.4895, train_MAPE: 0.1417, train_RMSE: 31.4833] -2022-02-01 23:42:48,281 - easytorch-training - INFO - val:: [val_time: 40.56 (s), val_loss: 20.1706, val_MAPE: 0.1409, val_RMSE: 33.6738] -2022-02-01 23:43:28,407 - easytorch-training - INFO - test:: [test_time: -40.12 (s), test_loss: 19.8866, test_MAPE: 0.1349, test_RMSE: 32.7346] -2022-02-01 23:43:28,438 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_156.pt saved -2022-02-01 23:43:28,439 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-01 23:43:28,439 - easytorch-training - INFO - epoch 157 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 23:45:54,483 - easytorch-training - INFO - train:: [train_time: 146.04 (s), lr: 5.00e-04, train_loss: 19.4612, train_MAPE: 0.1418, train_RMSE: 31.4345] -2022-02-01 23:46:34,305 - easytorch-training - INFO - val:: [val_time: 39.82 (s), val_loss: 20.1737, val_MAPE: 0.1407, val_RMSE: 33.6359] -2022-02-01 23:47:14,232 - easytorch-training - INFO - test:: [test_time: -39.92 (s), test_loss: 19.8791, test_MAPE: 0.1351, test_RMSE: 32.6324] -2022-02-01 23:47:14,268 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_157.pt saved -2022-02-01 23:47:14,269 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-01 23:47:14,269 - easytorch-training - INFO - epoch 158 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-01 23:49:40,501 - easytorch-training - INFO - train:: [train_time: 146.23 (s), lr: 5.00e-04, train_loss: 19.4286, train_MAPE: 0.1411, train_RMSE: 31.4121] -2022-02-01 23:50:21,318 - easytorch-training - INFO - val:: [val_time: 40.81 (s), val_loss: 20.2555, val_MAPE: 0.1363, val_RMSE: 33.8107] -2022-02-01 23:51:00,737 - easytorch-training - INFO - test:: [test_time: -39.41 (s), test_loss: 19.9686, test_MAPE: 0.1316, test_RMSE: 32.8667] -2022-02-01 23:51:00,776 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_158.pt saved -2022-02-01 23:51:00,776 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-01 23:51:00,777 - easytorch-training - INFO - epoch 159 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 23:53:26,636 - easytorch-training - INFO - train:: [train_time: 145.86 (s), lr: 5.00e-04, train_loss: 19.4307, train_MAPE: 0.1412, train_RMSE: 31.4178] -2022-02-01 23:54:07,131 - easytorch-training - INFO - val:: [val_time: 40.49 (s), val_loss: 20.1101, val_MAPE: 0.1385, val_RMSE: 33.6542] -2022-02-01 23:54:47,373 - easytorch-training - INFO - test:: [test_time: -40.24 (s), test_loss: 19.7744, test_MAPE: 0.1325, test_RMSE: 32.6212] -2022-02-01 23:54:47,410 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_159.pt saved -2022-02-01 23:54:47,410 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-01 23:54:47,410 - easytorch-training - INFO - epoch 160 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-01 23:57:13,097 - easytorch-training - INFO - train:: [train_time: 145.69 (s), lr: 5.00e-04, train_loss: 19.4254, train_MAPE: 0.1412, train_RMSE: 31.4132] -2022-02-01 23:57:53,397 - easytorch-training - INFO - val:: [val_time: 40.29 (s), val_loss: 20.3644, val_MAPE: 0.1371, val_RMSE: 33.7971] -2022-02-01 23:58:33,441 - easytorch-training - INFO - test:: [test_time: -40.04 (s), test_loss: 20.0281, test_MAPE: 0.1315, test_RMSE: 32.7821] -2022-02-01 23:58:33,475 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_160.pt saved -2022-02-01 23:58:33,479 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-01 23:58:33,479 - easytorch-training - INFO - epoch 161 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-02 00:00:59,839 - easytorch-training - INFO - train:: [train_time: 146.36 (s), lr: 5.00e-04, train_loss: 19.4250, train_MAPE: 0.1412, train_RMSE: 31.4094] -2022-02-02 00:01:39,813 - easytorch-training - INFO - val:: [val_time: 39.97 (s), val_loss: 20.1636, val_MAPE: 0.1357, val_RMSE: 33.6820] -2022-02-02 00:02:19,365 - easytorch-training - INFO - test:: [test_time: -39.55 (s), test_loss: 19.8668, test_MAPE: 0.1306, test_RMSE: 32.7164] -2022-02-02 00:02:19,401 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_161.pt saved -2022-02-02 00:02:19,402 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-02 00:02:19,402 - easytorch-training - INFO - epoch 162 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-02 00:04:45,490 - easytorch-training - INFO - train:: [train_time: 146.09 (s), lr: 5.00e-04, train_loss: 19.4510, train_MAPE: 0.1416, train_RMSE: 31.4339] -2022-02-02 00:05:25,337 - easytorch-training - INFO - val:: [val_time: 39.84 (s), val_loss: 20.2047, val_MAPE: 0.1368, val_RMSE: 33.7014] -2022-02-02 00:06:05,617 - easytorch-training - INFO - test:: [test_time: -40.28 (s), test_loss: 19.8668, test_MAPE: 0.1310, test_RMSE: 32.6502] -2022-02-02 00:06:05,654 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_162.pt saved -2022-02-02 00:06:05,654 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-02 00:06:05,654 - easytorch-training - INFO - epoch 163 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-02 00:08:30,788 - easytorch-training - INFO - train:: [train_time: 145.13 (s), lr: 5.00e-04, train_loss: 19.4226, train_MAPE: 0.1413, train_RMSE: 31.3925] -2022-02-02 00:09:11,399 - easytorch-training - INFO - val:: [val_time: 40.61 (s), val_loss: 20.2685, val_MAPE: 0.1365, val_RMSE: 33.7609] -2022-02-02 00:09:50,681 - easytorch-training - INFO - test:: [test_time: -39.28 (s), test_loss: 19.9624, test_MAPE: 0.1310, test_RMSE: 32.8096] -2022-02-02 00:09:50,712 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_163.pt saved -2022-02-02 00:09:50,712 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-02 00:09:50,712 - easytorch-training - INFO - epoch 164 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-02 00:12:16,863 - easytorch-training - INFO - train:: [train_time: 146.15 (s), lr: 5.00e-04, train_loss: 19.4570, train_MAPE: 0.1417, train_RMSE: 31.4344] -2022-02-02 00:12:56,767 - easytorch-training - INFO - val:: [val_time: 39.90 (s), val_loss: 20.1872, val_MAPE: 0.1362, val_RMSE: 33.7683] -2022-02-02 00:13:36,196 - easytorch-training - INFO - test:: [test_time: -39.43 (s), test_loss: 19.8598, test_MAPE: 0.1307, test_RMSE: 32.7611] -2022-02-02 00:13:36,227 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_164.pt saved -2022-02-02 00:13:36,227 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:15 -2022-02-02 00:13:36,227 - easytorch-training - INFO - epoch 165 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-02 00:16:01,524 - easytorch-training - INFO - train:: [train_time: 145.30 (s), lr: 5.00e-04, train_loss: 19.3897, train_MAPE: 0.1409, train_RMSE: 31.3663] -2022-02-02 00:16:41,771 - easytorch-training - INFO - val:: [val_time: 40.24 (s), val_loss: 20.2116, val_MAPE: 0.1358, val_RMSE: 33.7229] -2022-02-02 00:17:22,308 - easytorch-training - INFO - test:: [test_time: -40.53 (s), test_loss: 19.9109, test_MAPE: 0.1302, test_RMSE: 32.7273] -2022-02-02 00:17:22,340 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_165.pt saved -2022-02-02 00:17:22,340 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:15 -2022-02-02 00:17:22,340 - easytorch-training - INFO - epoch 166 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.64it/s] -2022-02-02 00:19:48,337 - easytorch-training - INFO - train:: [train_time: 146.00 (s), lr: 5.00e-04, train_loss: 19.4087, train_MAPE: 0.1411, train_RMSE: 31.3747] -2022-02-02 00:20:28,794 - easytorch-training - INFO - val:: [val_time: 40.45 (s), val_loss: 20.1233, val_MAPE: 0.1392, val_RMSE: 33.5810] -2022-02-02 00:21:08,513 - easytorch-training - INFO - test:: [test_time: -39.72 (s), test_loss: 19.8168, test_MAPE: 0.1332, test_RMSE: 32.5837] -2022-02-02 00:21:08,543 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_166.pt saved -2022-02-02 00:21:08,543 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:15 -2022-02-02 00:21:08,543 - easytorch-training - INFO - epoch 167 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.66it/s] -2022-02-02 00:23:33,816 - easytorch-training - INFO - train:: [train_time: 145.27 (s), lr: 5.00e-04, train_loss: 19.3990, train_MAPE: 0.1408, train_RMSE: 31.3849] -2022-02-02 00:24:13,277 - easytorch-training - INFO - val:: [val_time: 39.45 (s), val_loss: 20.2315, val_MAPE: 0.1355, val_RMSE: 33.6651] -2022-02-02 00:24:53,668 - easytorch-training - INFO - test:: [test_time: -40.39 (s), test_loss: 19.9027, test_MAPE: 0.1303, test_RMSE: 32.7090] -2022-02-02 00:24:53,716 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_167.pt saved -2022-02-02 00:24:53,717 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-02 00:24:53,717 - easytorch-training - INFO - epoch 168 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-02 00:27:20,419 - easytorch-training - INFO - train:: [train_time: 146.70 (s), lr: 5.00e-04, train_loss: 19.4276, train_MAPE: 0.1414, train_RMSE: 31.3928] -2022-02-02 00:28:00,632 - easytorch-training - INFO - val:: [val_time: 40.21 (s), val_loss: 20.3437, val_MAPE: 0.1377, val_RMSE: 33.7194] -2022-02-02 00:28:39,871 - easytorch-training - INFO - test:: [test_time: -39.24 (s), test_loss: 20.0465, test_MAPE: 0.1327, test_RMSE: 32.7770] -2022-02-02 00:28:39,915 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_168.pt saved -2022-02-02 00:28:39,915 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:14 -2022-02-02 00:28:39,915 - easytorch-training - INFO - epoch 169 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-02 00:31:06,769 - easytorch-training - INFO - train:: [train_time: 146.85 (s), lr: 5.00e-04, train_loss: 19.4218, train_MAPE: 0.1418, train_RMSE: 31.3648] -2022-02-02 00:31:47,637 - easytorch-training - INFO - val:: [val_time: 40.86 (s), val_loss: 20.3145, val_MAPE: 0.1378, val_RMSE: 33.7045] -2022-02-02 00:32:27,498 - easytorch-training - INFO - test:: [test_time: -39.86 (s), test_loss: 19.9784, test_MAPE: 0.1325, test_RMSE: 32.6910] -2022-02-02 00:32:27,535 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_169.pt saved -2022-02-02 00:32:27,535 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-02 00:32:27,535 - easytorch-training - INFO - epoch 170 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-02 00:34:54,029 - easytorch-training - INFO - train:: [train_time: 146.49 (s), lr: 5.00e-04, train_loss: 19.3874, train_MAPE: 0.1409, train_RMSE: 31.3578] -2022-02-02 00:35:34,436 - easytorch-training - INFO - val:: [val_time: 40.40 (s), val_loss: 20.2857, val_MAPE: 0.1366, val_RMSE: 33.7009] -2022-02-02 00:36:13,667 - easytorch-training - INFO - test:: [test_time: -39.23 (s), test_loss: 19.9251, test_MAPE: 0.1310, test_RMSE: 32.6959] -2022-02-02 00:36:13,698 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_170.pt saved -2022-02-02 00:36:13,702 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-02 00:36:13,702 - easytorch-training - INFO - epoch 171 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-02 00:38:39,513 - easytorch-training - INFO - train:: [train_time: 145.81 (s), lr: 5.00e-04, train_loss: 19.3756, train_MAPE: 0.1408, train_RMSE: 31.3333] -2022-02-02 00:39:20,318 - easytorch-training - INFO - val:: [val_time: 40.80 (s), val_loss: 20.2098, val_MAPE: 0.1358, val_RMSE: 33.6692] -2022-02-02 00:39:59,748 - easytorch-training - INFO - test:: [test_time: -39.43 (s), test_loss: 19.8593, test_MAPE: 0.1304, test_RMSE: 32.6490] -2022-02-02 00:39:59,784 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_171.pt saved -2022-02-02 00:39:59,785 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:16 -2022-02-02 00:39:59,785 - easytorch-training - INFO - epoch 172 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-02 00:42:26,684 - easytorch-training - INFO - train:: [train_time: 146.90 (s), lr: 5.00e-04, train_loss: 19.3919, train_MAPE: 0.1409, train_RMSE: 31.3515] -2022-02-02 00:43:06,716 - easytorch-training - INFO - val:: [val_time: 40.03 (s), val_loss: 20.1566, val_MAPE: 0.1371, val_RMSE: 33.7017] -2022-02-02 00:43:46,974 - easytorch-training - INFO - test:: [test_time: -40.26 (s), test_loss: 19.7863, test_MAPE: 0.1314, test_RMSE: 32.6203] -2022-02-02 00:43:47,019 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_172.pt saved -2022-02-02 00:43:47,019 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:18 -2022-02-02 00:43:47,019 - easytorch-training - INFO - epoch 173 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-02 00:46:13,624 - easytorch-training - INFO - train:: [train_time: 146.60 (s), lr: 5.00e-04, train_loss: 19.3741, train_MAPE: 0.1409, train_RMSE: 31.3362] -2022-02-02 00:46:53,130 - easytorch-training - INFO - val:: [val_time: 39.50 (s), val_loss: 20.1295, val_MAPE: 0.1356, val_RMSE: 33.6346] -2022-02-02 00:47:32,435 - easytorch-training - INFO - test:: [test_time: -39.30 (s), test_loss: 19.8507, test_MAPE: 0.1305, test_RMSE: 32.6703] -2022-02-02 00:47:32,471 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_173.pt saved -2022-02-02 00:47:32,471 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-02 00:47:32,471 - easytorch-training - INFO - epoch 174 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-02 00:49:58,776 - easytorch-training - INFO - train:: [train_time: 146.30 (s), lr: 5.00e-04, train_loss: 19.3638, train_MAPE: 0.1406, train_RMSE: 31.3371] -2022-02-02 00:50:38,947 - easytorch-training - INFO - val:: [val_time: 40.17 (s), val_loss: 20.0381, val_MAPE: 0.1383, val_RMSE: 33.5990] -2022-02-02 00:51:18,831 - easytorch-training - INFO - test:: [test_time: -39.88 (s), test_loss: 19.7740, test_MAPE: 0.1328, test_RMSE: 32.6462] -2022-02-02 00:51:18,868 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_174.pt saved -2022-02-02 00:51:18,868 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-02 00:51:18,868 - easytorch-training - INFO - epoch 175 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-02 00:53:45,080 - easytorch-training - INFO - train:: [train_time: 146.21 (s), lr: 5.00e-04, train_loss: 19.3603, train_MAPE: 0.1405, train_RMSE: 31.3376] -2022-02-02 00:54:25,058 - easytorch-training - INFO - val:: [val_time: 39.97 (s), val_loss: 20.2436, val_MAPE: 0.1370, val_RMSE: 33.7556] -2022-02-02 00:55:04,417 - easytorch-training - INFO - test:: [test_time: -39.36 (s), test_loss: 19.8873, test_MAPE: 0.1313, test_RMSE: 32.7085] -2022-02-02 00:55:04,461 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_175.pt saved -2022-02-02 00:55:04,462 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-02 00:55:04,462 - easytorch-training - INFO - epoch 176 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.64it/s] -2022-02-02 00:57:30,734 - easytorch-training - INFO - train:: [train_time: 146.27 (s), lr: 5.00e-04, train_loss: 19.4013, train_MAPE: 0.1413, train_RMSE: 31.3596] -2022-02-02 00:58:11,468 - easytorch-training - INFO - val:: [val_time: 40.73 (s), val_loss: 20.1363, val_MAPE: 0.1357, val_RMSE: 33.6415] -2022-02-02 00:58:51,108 - easytorch-training - INFO - test:: [test_time: -39.64 (s), test_loss: 19.8807, test_MAPE: 0.1302, test_RMSE: 32.7687] -2022-02-02 00:58:51,147 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_176.pt saved -2022-02-02 00:58:51,147 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:17 -2022-02-02 00:58:51,148 - easytorch-training - INFO - epoch 177 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:26<00:00, 2.63it/s] -2022-02-02 01:01:18,111 - easytorch-training - INFO - train:: [train_time: 146.96 (s), lr: 5.00e-04, train_loss: 19.3873, train_MAPE: 0.1410, train_RMSE: 31.3529] -2022-02-02 01:01:58,223 - easytorch-training - INFO - val:: [val_time: 40.11 (s), val_loss: 20.2213, val_MAPE: 0.1356, val_RMSE: 33.6509] -2022-02-02 01:02:37,829 - easytorch-training - INFO - test:: [test_time: -39.60 (s), test_loss: 19.8436, test_MAPE: 0.1301, test_RMSE: 32.5170] -2022-02-02 01:02:37,867 - easytorch-training - INFO - ckpt checkpoints/TSFormer_200/fac3814778135a6d46063e3cab20257c/TSFormer_177.pt saved -2022-02-02 01:02:37,868 - easytorch-training - INFO - The estimated training finish time is 2022-02-02 02:29:18 -2022-02-02 01:02:37,868 - easytorch-training - INFO - epoch 178 / 200 -100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 386/386 [02:25<00:00, 2.65it/s] -2022-02-02 01:05:03,487 - easytorch-training - INFO - train:: [train_time: 145.62 (s), lr: 5.00e-04, train_loss: 19.3495, train_MAPE: 0.1404, train_RMSE: 31.3000] -2022-02-02 01:05:43,845 - easytorch-training - INFO - val:: [val_time: 40.35 (s), val_loss: 20.2217, val_MAPE: 0.1361, val_RMSE: 33.7325] diff --git a/tsformer_ckpt/TSFormer_METR-LA.pt b/tsformer_ckpt/TSFormer_METR-LA.pt new file mode 100644 index 0000000..944883d Binary files /dev/null and b/tsformer_ckpt/TSFormer_METR-LA.pt differ diff --git a/utils/Similarity.py b/utils/Similarity.py deleted file mode 100644 index c5c5621..0000000 --- a/utils/Similarity.py +++ /dev/null @@ -1,84 +0,0 @@ -import math -import torch -from torch import nn -import torch.nn.functional as F - -def batch_cosine_similarity(x, y): - # ่ฎก็ฎ—ๅˆ†ๆฏ - l2_x = torch.norm(x, dim=2, p=2) + 1e-7 # avoid 0, l2 norm, num_heads x batch_size x hidden_dim==>num_heads x batch_size - l2_y = torch.norm(y, dim=2, p=2) + 1e-7 # avoid 0, l2 norm, num_heads x batch_size x hidden_dim==>num_heads x batch_size - l2_m = torch.matmul(l2_x.unsqueeze(dim=2), l2_y.unsqueeze(dim=2).transpose(1, 2)) - # ่ฎก็ฎ—ๅˆ†ๅญ - l2_z = torch.matmul(x, y.transpose(1, 2)) - # cos similarity affinity matrix - cos_affnity = l2_z / l2_m - adj = cos_affnity - return adj - -def batch_dot_similarity(x, y): - QKT = torch.bmm(x, y.transpose(-1, -2)) / math.sqrt(x.shape[2]) - W = torch.softmax(QKT, dim=-1) - return W - -def batch_bi_linear(x, y, FC): - W = torch.matmul(x, FC).bmm(y.transpose(-1, -2)) - return W - -def batch_perceptron(x, y, FC1, FC2, attn): - B, L, D = x.shape - x = torch.matmul(x, FC1) # B', L, D - y = torch.matmul(y, FC2) - x = x.unsqueeze(1).expand(-1, L, -1, -1) # B, L, L, D - y = y.unsqueeze(-2) # B, L, 1, D - W = torch.tanh(x + y).matmul(attn) # B, L, L, 1 - return W - -class Similarity(nn.Module): - def __init__(self, mode='', **model_args): - super().__init__() - self.mode = mode - assert mode in ['cosine', 'dot', 'bi-linear', 'perceptron'] - if mode == 'bi-linear': - self.FC = nn.Parameter(torch.zeros(model_args['out_channel'], model_args['out_channel'])) - nn.init.kaiming_uniform_(self.FC, a=math.sqrt(5)) # TODO other - elif mode == 'perceptron': - self.FC1 = nn.Parameter(torch.zeros(model_args['out_channel'], model_args['out_channel'])) - self.FC2 = nn.Parameter(torch.zeros(model_args['out_channel'], model_args['out_channel'])) - self.att = nn.Parameter(torch.zeros(model_args['out_channel'], 1)) - nn.init.kaiming_uniform_(self.FC1, a=math.sqrt(5)) - nn.init.kaiming_uniform_(self.FC2, a=math.sqrt(5)) - - def forward(self, input): - """ - Calculate similarity. - TODO there are some waste of calculation. - - Args: - input: B, N, L/P, D - - return: - sim: B, N, L/P, L/P - """ - B, N, L_P, D = input.shape - input = input.view(B*N, L_P, D) # B', L, D - if self.mode == 'cosine': - sim = batch_cosine_similarity(input, input) - elif self.mode == 'dot': - sim = batch_dot_similarity(input, input) - elif self.mode == 'bi-linear': - sim = batch_bi_linear(input, input, self.FC) - elif self.mode == 'perceptron': - sim = batch_perceptron(input, input, self.FC1, self.FC2, self.att) - else: - raise Exception("Error") - sim = sim.view(B, N, L_P, L_P) - return sim - -if __name__ == "__main__": - model_args = {} - model_args['out_channel'] = 36 - mode = 'perceptron' - input = torch.randn(64, 207, 48, 36) - Sim = Similarity(mode, **model_args) - sim = Sim(input) - print(sim) \ No newline at end of file diff --git a/utils/Similarity_e.py b/utils/Similarity_e.py deleted file mode 100644 index 51da5a0..0000000 --- a/utils/Similarity_e.py +++ /dev/null @@ -1,92 +0,0 @@ -import math -import torch -from torch import nn -import torch.nn.functional as F - -def batch_cosine_similarity(x, y): - # ่ฎก็ฎ—ๅˆ†ๆฏ - l2_x = torch.norm(x, dim=2, p=2) + 1e-7 # avoid 0, l2 norm, num_heads x batch_size x hidden_dim==>num_heads x batch_size - l2_y = torch.norm(y, dim=2, p=2) + 1e-7 # avoid 0, l2 norm, num_heads x batch_size x hidden_dim==>num_heads x batch_size - l2_m = torch.matmul(l2_x.unsqueeze(dim=2), l2_y.unsqueeze(dim=2).transpose(1, 2)) - # ่ฎก็ฎ—ๅˆ†ๅญ - l2_z = torch.matmul(x, y.transpose(1, 2)) - # cos similarity affinity matrix - cos_affnity = l2_z / l2_m - adj = cos_affnity - return adj - -def batch_dot_similarity(x, y): - _1 = y[:, [-1], :] - _2 = x - # TODO add QKV parameter here - QKT = torch.bmm(x, y.transpose(-1, -2)) / math.sqrt(x.shape[2]) - W = torch.softmax(QKT, dim=-1) - return W - -def batch_bi_linear(x, y, FC): - W = torch.matmul(x, FC).bmm(y.transpose(-1, -2)) - return W - -def batch_perceptron(x, y, FC1, FC2, attn): - B, L, D = x.shape - x = torch.matmul(x, FC1) # B', L, D - y = torch.matmul(y, FC2) - W = torch.tanh(x + y).matmul(attn) # B, L, L, 1 - W = W.transpose(-1, -2) - return W - -class Similarity(nn.Module): - def __init__(self, mode='', **model_args): - super().__init__() - self.mode = mode - assert mode in ['cosine', 'dot', 'bi-linear', 'perceptron'] - if mode == 'bi-linear': - self.FC = nn.Parameter(torch.zeros(model_args['out_channel'], model_args['out_channel'])) - nn.init.kaiming_uniform_(self.FC, a=math.sqrt(5)) # TODO other - elif mode == 'perceptron': - self.FC1 = nn.Parameter(torch.zeros(model_args['out_channel'], model_args['out_channel'])) - self.FC2 = nn.Parameter(torch.zeros(model_args['out_channel'], model_args['out_channel'])) - self.att = nn.Parameter(torch.zeros(model_args['out_channel'], 1)) - nn.init.kaiming_uniform_(self.FC1, a=math.sqrt(5)) - nn.init.kaiming_uniform_(self.FC2, a=math.sqrt(5)) - nn.init.kaiming_uniform_(self.att, a=math.sqrt(5)) - - def forward(self, query, keys): - """ - Calculate similarity. - TODO there are some waste of calculation. - - Args: - keys: B, N, L/P, D - query: B, N, 1, D - - return: - sim: B, N, L/P - """ - B, N, L_P, D = keys.shape - query = query.view(B*N, 1, D) - keys = keys.view(B*N, L_P, D) # B', L, D - if self.mode == 'cosine': - sim = batch_cosine_similarity(query, keys) - elif self.mode == 'dot': - sim = batch_dot_similarity(query, keys) - elif self.mode == 'bi-linear': - sim = batch_bi_linear(query, keys, self.FC) - elif self.mode == 'perceptron': - sim = batch_perceptron(query, keys, self.FC1, self.FC2, self.att) - else: - raise Exception("Error") - sim = sim.view(B, N, 1, L_P) - sim = sim.transpose(-1, -2) - return sim - -if __name__ == "__main__": - model_args = {} - model_args['out_channel'] = 36 - mode = 'dot' - keys = torch.randn(64, 207, 48, 36) - # query = torch.randn(1, 1, 1, 36) - query = keys[:, :, [-1], :] - Sim = Similarity(mode, **model_args) - sim = Sim(query, keys) - print(sim) \ No newline at end of file diff --git a/utils/__init__.py b/utils/__init__.py deleted file mode 100644 index bc6c396..0000000 --- a/utils/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from utils.log import * \ No newline at end of file diff --git a/utils/cal_adj.py b/utils/cal_adj.py deleted file mode 100644 index 735efe2..0000000 --- a/utils/cal_adj.py +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- -import scipy.sparse as sp -import numpy as np -from scipy.sparse import linalg -import torch - -def check_nan_inf(tensor, raise_ex=True): - # nan - nan = torch.any(torch.isnan(tensor)) - # inf - inf = torch.any(torch.isinf(tensor)) - # raise - if raise_ex and (nan or inf): - raise Exception({"nan":nan, "inf":inf}) - return {"nan":nan, "inf":inf}, nan or inf - -def remove_nan_inf(tensor): - tensor = torch.where(torch.isnan(tensor), torch.zeros_like(tensor), tensor) - tensor = torch.where(torch.isinf(tensor), torch.zeros_like(tensor), tensor) - return tensor - -def calculate_symmetric_normalized_laplacian(adj): - r""" - Description: - ----------- - Calculate Symmetric Normalized Laplacian. - Assuming unnormalized laplacian matrix is `L = D - A`, - then symmetric normalized laplacian matrix is: - `L^{Sym} = D^-1/2 L D^-1/2 = D^-1/2 (D-A) D^-1/2 = I - D^-1/2 A D^-1/2` - For node `i` and `j` where `i!=j`, L^{sym}_{ij} <=0. - - Parameters: - ----------- - adj: np.ndarray - Adjacent matrix A - - Returns: - ----------- - symmetric_normalized_laplacian: np.matrix - Symmetric normalized laplacian L^{Sym} - """ - adj = sp.coo_matrix(adj) - D = np.array(adj.sum(1)) - D_inv_sqrt = np.power(D, -0.5).flatten() # diagonals of D^{-1/2} - D_inv_sqrt[np.isinf(D_inv_sqrt)] = 0. - matrix_D_inv_sqrt = sp.diags(D_inv_sqrt) # D^{-1/2} - symmetric_normalized_laplacian = sp.eye(adj.shape[0]) - matrix_D_inv_sqrt.dot(adj).dot(matrix_D_inv_sqrt).tocoo() - return symmetric_normalized_laplacian - -def calculate_scaled_laplacian(adj, lambda_max=2, undirected=True): - r""" - Description: - ----------- - Re-scaled the eigenvalue to [-1, 1] by scaled the normalized laplacian matrix for chebyshev pol. - According to `2017 ICLR GCN`, the lambda max is set to 2, and the graph is set to undirected. - Note that rescale the laplacian matrix is equal to rescale the eigenvalue matrix. - `L_{scaled} = (2 / lambda_max * L) - I` - - Parameters: - ----------- - adj: np.ndarray - Adjacent matrix A - - Returns: - ----------- - L_res: np.matrix - The rescaled laplacian matrix. - """ - if undirected: - adj = np.maximum.reduce([adj, adj.T]) - L = calculate_symmetric_normalized_laplacian(adj) - if lambda_max is None: # manually cal the max lambda - lambda_max, _ = linalg.eigsh(L, 1, which='LM') - lambda_max = lambda_max[0] - L = sp.csr_matrix(L) - M, _ = L.shape - I = sp.identity(M, format='csr', dtype=L.dtype) - L_res = (2 / lambda_max * L) - I - return L_res - -def symmetric_message_passing_adj(adj): - r""" - Description: - ----------- - Calculate the renormalized message passing adj in `GCN`. - - Parameters: - ----------- - adj: np.ndarray - Adjacent matrix A - - Returns: - ----------- - mp_adj:np.matrix - Renormalized message passing adj in `GCN`. - """ - # add self loop - print("calculating the renormalized message passing adj, please ensure that self-loop has added to adj.") - adj = sp.coo_matrix(adj) - rowsum = np.array(adj.sum(1)) - d_inv_sqrt = np.power(rowsum, -0.5).flatten() - d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0. - d_mat_inv_sqrt = sp.diags(d_inv_sqrt) - mp_adj = d_mat_inv_sqrt.dot(adj).transpose().dot(d_mat_inv_sqrt).astype(np.float32).todense() - return mp_adj - -def transition_matrix(adj): - r""" - Description: - ----------- - Calculate the transition matrix `P` proposed in DCRNN and Graph WaveNet. - P = D^{-1}A = A/rowsum(A) - - Parameters: - ----------- - adj: np.ndarray - Adjacent matrix A - - Returns: - ----------- - P:np.matrix - Renormalized message passing adj in `GCN`. - """ - adj = sp.coo_matrix(adj) - rowsum = np.array(adj.sum(1)).flatten() - d_inv = np.power(rowsum, -1).flatten() - d_inv[np.isinf(d_inv)] = 0. - d_mat= sp.diags(d_inv) - # P = d_mat.dot(adj) - P = d_mat.dot(adj).astype(np.float32).todense() - return P diff --git a/utils/load_data.py b/utils/load_data.py deleted file mode 100644 index 28b6479..0000000 --- a/utils/load_data.py +++ /dev/null @@ -1,72 +0,0 @@ -import pickle -import numpy as np -from torch.utils.data import DataLoader - -from dataloader.dataset import MTSDataset -from utils.log import clock, load_pkl -from utils.cal_adj import * - -# ============ scaler ================= # -def re_max_min_normalization(x, **kwargs): - _min, _max = kwargs['min'][0, 0, 0], kwargs['max'][0, 0, 0] - x = (x + 1.) / 2. - x = 1. * x * (_max - _min) + _min - return x - -def standard_re_transform(x, **kwargs): - mean, std = kwargs['mean'], kwargs['std'] - x = x * std - x = x + mean - return x - -# ================ loader dataset ==================== # -@clock -def load_dataset(data_dir, batch_size, dataset_name, seq_len, num_core, device, pretrain): - data_dict = {} - raw_file_path = data_dir + "/data.pkl" - # dataset - for mode in ['train', 'valid', 'test']: - index_file_path = data_dir + "/" + mode + "_index.pkl" - dataset = MTSDataset(raw_file_path, index_file_path, seq_len, batch_size, device=device, pretrain=pretrain) - data_dict[mode + "_loader"] = DataLoader(dataset, batch_size=batch_size, num_workers=min(batch_size, num_core), shuffle=(True if mode=='train' else False)) - # scaler - if dataset_name in ['PEMS04', 'PEMS08']: - _min = load_pkl("datasets/" + dataset_name + "/min.pkl") - _max = load_pkl("datasets/" + dataset_name + "/max.pkl") - data_dict['scaler'] = re_max_min_normalization - data_dict['scaler_args'] = {'min': _min, 'max':_max} - elif dataset_name in ['PEMS-BAY', 'METR-LA']: - mean = load_pkl("datasets/" + dataset_name + "/mean.pkl") - std = load_pkl("datasets/" + dataset_name + "/std.pkl") - data_dict['scaler'] = standard_re_transform - data_dict['scaler_args'] = {'mean': mean, 'std':std} - else: - raise Exception("Unknown Dataset.") - return data_dict - -@clock -def load_adj(file_path, adj_type): - try: - # METR and PEMS_BAY - sensor_ids, sensor_id_to_ind, adj_mx = load_pkl(file_path) - except: - # PEMS04 - adj_mx = load_pkl(file_path) - if adj_type == "scalap": - adj = [calculate_scaled_laplacian(adj_mx).astype(np.float32).todense()] - elif adj_type == "normlap": - adj = [calculate_symmetric_normalized_laplacian(adj_mx).astype(np.float32).todense()] - elif adj_type == "symnadj": - adj = [symmetric_message_passing_adj(adj_mx).astype(np.float32).todense()] - elif adj_type == "transition": - adj = [transition_matrix(adj_mx).T] - elif adj_type == "doubletransition": - adj = [transition_matrix(adj_mx).T, transition_matrix(adj_mx.T).T] - elif adj_type == "identity": - adj = [np.diag(np.ones(adj_mx.shape[0])).astype(np.float32).todense()] - elif adj_type == 'original': - adj = adj_mx - else: - error = 0 - assert error, "adj type not defined" - return adj, adj_mx diff --git a/utils/log.py b/utils/log.py deleted file mode 100644 index 7844284..0000000 --- a/utils/log.py +++ /dev/null @@ -1,78 +0,0 @@ - -import time -import pickle -import time -import os -import shutil - -def clock(func): - def clocked(*args, **kw): - t0 = time.perf_counter() - result = func(*args, **kw) - elapsed = time.perf_counter() - t0 - name = func.__name__ - print('%s: %0.8fs...' % (name, elapsed)) - return result - return clocked - - -def load_pkl(pickle_file): - try: - with open(pickle_file, 'rb') as f: - pickle_data = pickle.load(f) - except UnicodeDecodeError as e: - with open(pickle_file, 'rb') as f: - pickle_data = pickle.load(f, encoding='latin1') - except Exception as e: - print('Unable to load data ', pickle_file, ':', e) - raise - return pickle_data - -# def load_pkl(file_path): -# with open(file_path, 'rb') as f: -# obj = pickle.load(f) -# return obj - -def dump_pkl(obj, file_path): - with open(file_path, 'wb') as f: - pickle.dump(obj, f) - - -class TrainLogger(): - r""" - Description: - ----------- - Logger class. Function: - - print all training hyperparameter setting - - print all model hyperparameter setting - - save all the python file of model - - Args: - ----------- - path: str - Log path - """ - - def __init__(self): - path = 'log/' - cur_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) - cur_time = cur_time.replace(" ", "-") - try: - # mkdir - os.makedirs(path + cur_time) - print("Backup current files to {0}".format(path+cur_time)) - # pwd = os.getcwd() + "/" - # copy model files - shutil.copytree('models', path + cur_time + "/models") - shutil.copytree('config', path + cur_time + "/config") - shutil.copytree('dataloader', path + cur_time + "/dataloader") - try: - shutil.copyfile('demo_metr.sh', path + cur_time + "/demo_metr.sh") - shutil.copyfile('demo_pems04.sh', path + cur_time + "/demo_pems04.sh") - except: - pass - shutil.copyfile('Runner_FullModel.py', path + cur_time + "/Runner_FullModel.py") - shutil.copyfile('Runner_TSFormer.py', path + cur_time + "/Runner_TSFormer.py") - shutil.copyfile('main.py', path + cur_time + "/main.py") - except FileExistsError: - pass diff --git a/utils/train.py b/utils/train.py deleted file mode 100644 index 152f7f3..0000000 --- a/utils/train.py +++ /dev/null @@ -1,85 +0,0 @@ -import torch -import numpy as np -import random - -from utils.log import clock - -def set_config(seed=0): - torch.manual_seed(seed) - torch.cuda.manual_seed(seed) - torch.cuda.manual_seed_all(seed) - random.seed(seed) - np.random.seed(seed) - torch.backends.cudnn.deterministic = True - torch.backends.cudnn.benchmark = False - -def count_parameters(model): - return sum(p.numel() for p in model.parameters() if p.requires_grad) - -def save_model(model, save_path): - torch.save(model.state_dict(), save_path) - -def load_model(model, save_path): - model.load_state_dict(torch.load(save_path)) - return model - -class EarlyStopping: - """Early stops the training if validation loss doesn't improve after a given patience.""" - - def __init__(self, patience, save_path, verbose=False, delta=0): - """ - Args: - patience (int): How long to wait after last time validation loss improved. - Default: 7 - verbose (bool): If True, prints a message for each validation loss improvement. - Default: False - delta (float): Minimum change in the monitored quantity to qualify as an improvement. - Default: 0 - """ - self.patience = patience - self.verbose = verbose - self.counter = 0 - self.best_score = None - self.early_stop = False - self.val_loss_min = np.Inf - self.delta = delta - self.save_path = save_path - - def __call__(self, val_loss, model): - - score = -val_loss - - if self.best_score is None: - self.best_score = score - self.save_checkpoint(val_loss, model) - elif score < self.best_score - self.delta: - self.counter += 1 - print(f'EarlyStopping counter: {self.counter} out of {self.patience}') - if self.counter >= self.patience: - self.early_stop = True - else: - self.best_score = score - self.save_checkpoint(val_loss, model) - self.counter = 0 - - def save_checkpoint(self, val_loss, model): - """Saves model when validation loss decrease.""" - if self.verbose: - print(f'Validation loss decreased ({self.val_loss_min:.6f} --> {val_loss:.6f}). Saving model ...') - save_model(model, self.save_path) - self.val_loss_min = val_loss - -@clock -def data_reshaper(data, device, pretrain=False): - r""" - Description: - ----------- - Reshape data to any models. - """ - if not pretrain: - data = data.to(device) - else: - data = data[..., [0]] - data = data.permute(0, 2, 3, 1) - data = data.to(device) - return data