From e1c86f96546466e551ac23d862436bd00bcac294 Mon Sep 17 00:00:00 2001 From: wassname Date: Fri, 30 Oct 2020 14:46:31 +0800 Subject: [PATCH] misc, fix transformer, more plots --- README.md | 1 - notebooks/05.0-mc-leaderboard.ipynb | 11820 ++------------------------ notebooks/05.0-mc-leaderboard.py | 261 +- seq2seq_time/data/data.py | 43 +- seq2seq_time/data/dataset.py | 2 +- seq2seq_time/models/transformer.py | 2 +- seq2seq_time/predict.py | 2 +- 7 files changed, 1114 insertions(+), 11017 deletions(-) diff --git a/README.md b/README.md index 1d581be..bc213bc 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,6 @@ Using sequence to sequence interfaces for timeseries regression 1.08 - MetroInterstateTraffic 1.76 -0.27 diff --git a/notebooks/05.0-mc-leaderboard.ipynb b/notebooks/05.0-mc-leaderboard.ipynb index 018fbd5..b37cbf5 100644 --- a/notebooks/05.0-mc-leaderboard.ipynb +++ b/notebooks/05.0-mc-leaderboard.ipynb @@ -25,13 +25,29 @@ "\n" ] }, + { + "cell_type": "markdown", + "metadata": { + "ExecuteTime": { + "end_time": "2020-10-29T21:57:14.511258Z", + "start_time": "2020-10-29T21:57:14.417368Z" + } + }, + "source": [ + "- [ ] tensorboard / wandb\n", + "- [ ] show test train\n", + "- [ ] val\n", + "- [ ] don't overfit\n", + "- [ ] TCN" + ] + }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:05.383922Z", - "start_time": "2020-10-27T09:14:04.747253Z" + "end_time": "2020-10-30T06:04:56.455187Z", + "start_time": "2020-10-30T06:04:56.043007Z" } }, "outputs": [], @@ -50,23 +66,14 @@ }, { "cell_type": "code", - "execution_count": 225, + "execution_count": 2, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T13:16:38.278892Z", - "start_time": "2020-10-29T13:16:38.196606Z" + "end_time": "2020-10-30T06:04:58.117548Z", + "start_time": "2020-10-30T06:04:56.459312Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], + "outputs": [], "source": [ "# Imports\n", "import torch\n", @@ -94,8 +101,8 @@ "execution_count": 3, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:06.924470Z", - "start_time": "2020-10-27T09:14:06.886088Z" + "end_time": "2020-10-30T06:04:58.159177Z", + "start_time": "2020-10-30T06:04:58.123924Z" } }, "outputs": [], @@ -109,8 +116,8 @@ "execution_count": 4, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:07.738191Z", - "start_time": "2020-10-27T09:14:06.928650Z" + "end_time": "2020-10-30T06:04:58.207947Z", + "start_time": "2020-10-30T06:04:58.162906Z" } }, "outputs": [ @@ -134,20 +141,11 @@ "execution_count": 5, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:07.777905Z", - "start_time": "2020-10-27T09:14:07.747671Z" + "end_time": "2020-10-30T06:04:58.247847Z", + "start_time": "2020-10-30T06:04:58.212316Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], + "outputs": [], "source": [ "import logging, sys\n", "# logging.basicConfig(stream=sys.stdout, level=logging.INFO)" @@ -158,8 +156,8 @@ "execution_count": 6, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:11.913203Z", - "start_time": "2020-10-27T09:14:07.781404Z" + "end_time": "2020-10-30T06:05:01.478145Z", + "start_time": "2020-10-30T06:04:58.251662Z" }, "lines_to_next_cell": 2 }, @@ -1645,7 +1643,34 @@ "import holoviews as hv\n", "from holoviews import opts\n", "from holoviews.operation.datashader import datashade, dynspread\n", - "hv.extension('bokeh')" + "hv.extension('bokeh')\n", + "\n", + "# holoview datashader timeseries options\n", + "%opts RGB [width=800 height=200 active_tools=[\"xwheel_zoom\"] default_tools=[\"xpan\",\"xwheel_zoom\", \"reset\"] toolbar=\"right\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2020-10-30T06:05:01.534412Z", + "start_time": "2020-10-30T06:05:01.482602Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", + " and should_run_async(code)\n" + ] + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" ] }, { @@ -1662,11 +1687,11 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 8, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T04:31:14.030628Z", - "start_time": "2020-10-29T04:31:13.125851Z" + "end_time": "2020-10-30T06:05:01.619419Z", + "start_time": "2020-10-30T06:05:01.539179Z" } }, "outputs": [ @@ -1683,7 +1708,7 @@ "96" ] }, - "execution_count": 36, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -1712,57 +1737,28 @@ }, { "cell_type": "code", - "execution_count": 264, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2020-10-29T13:29:14.460346Z", "start_time": "2020-10-29T13:29:14.371348Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'dict' object has no attribute 'targets'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mds_preds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m: 'dict' object has no attribute 'targets'" - ] - } - ], + "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 248, + "execution_count": 9, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T13:22:44.376665Z", - "start_time": "2020-10-29T13:22:44.288723Z" + "end_time": "2020-10-30T06:05:01.703395Z", + "start_time": "2020-10-30T06:05:01.629810Z" }, "lines_to_end_of_cell_marker": 2, "lines_to_next_cell": 0 }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], + "outputs": [], "source": [ "def plot_prediction(ds_preds, i, ax=None, title='', std=False, label='pred', legend=False):\n", " \"\"\"Plot a prediction into the future, at a single point in time.\"\"\" \n", @@ -1804,16 +1800,17 @@ " if legend:\n", " plt.legend()\n", " plt.xlabel(f'{now}')\n", - " plt.ylabel(ds_preds.attrs.targets)\n", + " plt.ylabel(ds_preds.attrs['targets'])\n", " return now\n", "\n", "def plot_performance(ds_preds, full=False):\n", " \"\"\"Multiple plots using xr_preds\"\"\"\n", " plot_prediction(ds_preds, 24, std=True, legend=True)\n", + " plt.show()\n", "\n", " ds_preds.mean('t_source').plot.scatter('t_ahead_hours', 'nll') # Mean over all predictions\n", " n = len(ds_preds.t_source)\n", - " plt.ylabel('Negative Log Likelihood (lower is better)')\n", + " plt.ylabel('NLL (lower is better)')\n", " plt.xlabel('Hours ahead')\n", " plt.title(f'NLL vs time ahead (no. samples={n})')\n", " plt.show()\n", @@ -1834,11 +1831,11 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:12.148553Z", - "start_time": "2020-10-27T09:14:12.095302Z" + "end_time": "2020-10-30T06:05:01.757797Z", + "start_time": "2020-10-30T06:05:01.707827Z" } }, "outputs": [], @@ -1850,11 +1847,175 @@ " df_histe = df_hist.set_index('epoch').groupby('epoch').mean()\n", " if len(df_histe)>1:\n", " df_histe[['loss/train', 'loss/val']].plot(title='history')\n", + " plt.show()\n", " return df_histe\n", " except Exception:\n", " pass" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datasets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2020-10-30T06:05:02.099220Z", + "start_time": "2020-10-30T06:05:01.763911Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[seq2seq_time.data.data.BejingPM25,\n", + " seq2seq_time.data.data.GasSensor,\n", + " seq2seq_time.data.data.AppliancesEnergyPrediction,\n", + " seq2seq_time.data.data.MetroInterstateTraffic,\n", + " seq2seq_time.data.data.IMOSCurrentsVel]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from seq2seq_time.data.data import IMOSCurrentsVel, AppliancesEnergyPrediction, BejingPM25, GasSensor, MetroInterstateTraffic\n", + "\n", + "datasets = [BejingPM25, GasSensor, AppliancesEnergyPrediction, MetroInterstateTraffic, IMOSCurrentsVel]\n", + "datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2020-10-30T06:05:09.451517Z", + "start_time": "2020-10-30T06:05:02.104070Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using downloaded and verified file: ../data/processed/gas-sensor-array-temperature-modulation.zip\n" + ] + }, + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":Layout\n", + " .DynamicMap.I :DynamicMap []\n", + " :Overlay\n", + " .RGB.I :RGB [index,log_pm2.5] (R,G,B,A)\n", + " .RGB.II :RGB [index,log_pm2.5] (R,G,B,A)\n", + " .RGB.III :RGB [index,log_pm2.5] (R,G,B,A)\n", + " .DynamicMap.II :DynamicMap []\n", + " :Overlay\n", + " .RGB.I :RGB [Time (s),R1 (MOhm)] (R,G,B,A)\n", + " .RGB.II :RGB [Time (s),R1 (MOhm)] (R,G,B,A)\n", + " .RGB.III :RGB [Time (s),R1 (MOhm)] (R,G,B,A)\n", + " .DynamicMap.III :DynamicMap []\n", + " :Overlay\n", + " .RGB.I :RGB [date,log_Appliances] (R,G,B,A)\n", + " .RGB.II :RGB [date,log_Appliances] (R,G,B,A)\n", + " .RGB.III :RGB [date,log_Appliances] (R,G,B,A)\n", + " .DynamicMap.IV :DynamicMap []\n", + " :Overlay\n", + " .RGB.I :RGB [date_time,traffic_volume] (R,G,B,A)\n", + " .RGB.II :RGB [date_time,traffic_volume] (R,G,B,A)\n", + " .RGB.III :RGB [date_time,traffic_volume] (R,G,B,A)\n", + " .DynamicMap.V :DynamicMap []\n", + " :Overlay\n", + " .RGB.I :RGB [TIME,SPD] (R,G,B,A)\n", + " .RGB.II :RGB [TIME,SPD] (R,G,B,A)\n", + " .RGB.III :RGB [TIME,SPD] (R,G,B,A)" + ] + }, + "execution_count": 12, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1001" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "# View train, test, val splits\n", + "l = hv.Layout()\n", + "for dataset in datasets:\n", + " d = dataset(datasets_root)\n", + " \n", + " p = dynspread(\n", + " datashade(hv.Scatter(d.df_train[d.columns_target[0]]),\n", + " cmap='red'))\n", + " p *= dynspread(\n", + " datashade(hv.Scatter(d.df_val[d.columns_target[0]]),\n", + " cmap='green'))\n", + " p *= dynspread(\n", + " datashade(hv.Scatter(d.df_test[d.columns_target[0]]),\n", + " cmap='blue'))\n", + " p = p.opts(title=f\"{dataset}\")\n", + " l += p\n", + "l.cols(1)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1864,11 +2025,11 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:12.208328Z", - "start_time": "2020-10-27T09:14:12.153093Z" + "end_time": "2020-10-30T06:05:09.515136Z", + "start_time": "2020-10-30T06:05:09.455547Z" } }, "outputs": [], @@ -1917,11 +2078,11 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:12.275835Z", - "start_time": "2020-10-27T09:14:12.212068Z" + "end_time": "2020-10-30T06:05:09.570234Z", + "start_time": "2020-10-30T06:05:09.518846Z" }, "lines_to_next_cell": 2 }, @@ -1935,11 +2096,11 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:12.488369Z", - "start_time": "2020-10-27T09:14:12.279976Z" + "end_time": "2020-10-30T06:05:09.677228Z", + "start_time": "2020-10-30T06:05:09.574429Z" }, "lines_to_end_of_cell_marker": 2, "lines_to_next_cell": 0 @@ -1963,11 +2124,11 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:12.557082Z", - "start_time": "2020-10-27T09:14:12.492776Z" + "end_time": "2020-10-30T06:05:09.744269Z", + "start_time": "2020-10-30T06:05:09.682078Z" } }, "outputs": [], @@ -1982,11 +2143,11 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 17, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:12.620178Z", - "start_time": "2020-10-27T09:14:12.565956Z" + "end_time": "2020-10-30T06:05:09.825837Z", + "start_time": "2020-10-30T06:05:09.749066Z" } }, "outputs": [], @@ -1996,30 +2157,30 @@ "# lambda: TransformerAutoR(input_size,\n", "# output_size, hidden_out_size=32),\n", " lambda: RANP(input_size,\n", - " output_size, hidden_dim=32, \n", - " latent_dim=64, n_decoder_layers=4),\n", + " output_size, hidden_dim=64, dropout=0.5, \n", + " latent_dim=32, n_decoder_layers=4),\n", " lambda: LSTM(input_size,\n", " output_size,\n", - " hidden_size=80,\n", + " hidden_size=32,\n", " lstm_layers=3,\n", - " lstm_dropout=0.3),\n", + " lstm_dropout=0.4),\n", " lambda: LSTMSeq2Seq(input_size,\n", " output_size,\n", " hidden_size=64,\n", " lstm_layers=2,\n", - " lstm_dropout=0.25),\n", + " lstm_dropout=0.4),\n", " lambda: TransformerSeq2Seq(input_size,\n", " output_size,\n", - " hidden_size=128,\n", + " hidden_size=64,\n", " nhead=8,\n", " nlayers=4,\n", - " attention_dropout=0.2),\n", + " attention_dropout=0.4),\n", " lambda: Transformer(input_size,\n", " output_size,\n", - " attention_dropout=0.2,\n", + " attention_dropout=0.4,\n", " nhead=8,\n", - " nlayers=8,\n", - " hidden_size=128),\n", + " nlayers=6,\n", + " hidden_size=64),\n", " lambda :TransformerProcess(input_size,\n", " output_size, hidden_size=16,\n", " latent_dim=8, dropout=0.5,\n", @@ -2031,55 +2192,26 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:13.442957Z", - "start_time": "2020-10-27T09:14:12.623794Z" + "end_time": "2020-10-29T13:46:01.252884Z", + "start_time": "2020-10-29T13:46:00.898754Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "[seq2seq_time.data.data.IMOSCurrentsVel,\n", - " seq2seq_time.data.data.BejingPM25,\n", - " seq2seq_time.data.data.GasSensor,\n", - " seq2seq_time.data.data.AppliancesEnergyPrediction,\n", - " seq2seq_time.data.data.MetroInterstateTraffic]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from seq2seq_time.data.data import IMOSCurrentsVel, AppliancesEnergyPrediction, BejingPM25, GasSensor, MetroInterstateTraffic\n", - "\n", - "datasets = [BejingPM25, GasSensor, AppliancesEnergyPrediction, MetroInterstateTraffic, IMOSCurrentsVel]\n", - "datasets" - ] + "outputs": [], + "source": [] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:13.514463Z", - "start_time": "2020-10-27T09:14:13.447612Z" + "end_time": "2020-10-30T06:05:09.903108Z", + "start_time": "2020-10-30T06:05:09.833636Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], + "outputs": [], "source": [ "# GasSensor(datasets_root)" ] @@ -2098,11 +2230,11 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:13.586379Z", - "start_time": "2020-10-27T09:14:13.520269Z" + "end_time": "2020-10-30T06:05:09.962465Z", + "start_time": "2020-10-30T06:05:09.907267Z" } }, "outputs": [], @@ -2113,11 +2245,33 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:13.653466Z", - "start_time": "2020-10-27T09:14:13.590276Z" + "start_time": "2020-10-30T06:29:51.876Z" + } + }, + "outputs": [], + "source": [ + "# tmp\n", + "model = Transformer(input_size,\n", + " output_size,\n", + " attention_dropout=0.4,\n", + " nhead=2,\n", + " nlayers=4,\n", + " hidden_size=16)\n", + "\n", + "x_past, y_past, x_future, y_future = next(iter(dl_val))\n", + "model(x_past, y_past, x_future, y_future)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "ExecuteTime": { + "end_time": "2020-10-30T06:05:10.024001Z", + "start_time": "2020-10-30T06:05:09.966433Z" } }, "outputs": [], @@ -2127,1519 +2281,15 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 21, "metadata": { "ExecuteTime": { - "end_time": "2020-10-27T09:14:32.606892Z", - "start_time": "2020-10-27T09:14:13.657687Z" - }, - "lines_to_next_cell": 2 - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using downloaded and verified file: ../data/processed/gas-sensor-array-temperature-modulation.zip\n" - ] - } - ], - "source": [ - "for Dataset in datasets:\n", - " dataset_name = Dataset.__name__\n", - " dataset = Dataset(datasets_root)\n", - " ds_train, ds_test = dataset.to_datasets(window_past=window_past,\n", - " window_future=window_future)\n", - "\n", - " # Init data\n", - " x_past, y_past, x_future, y_future = ds_train.get_rows(10)\n", - " input_size = x_past.shape[-1]\n", - " output_size = y_future.shape[-1]" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "ExecuteTime": { - "end_time": "2020-10-27T13:01:42.356787Z", - "start_time": "2020-10-27T09:14:32.611289Z" + "end_time": "2020-10-30T06:25:29.182689Z", + "start_time": "2020-10-30T06:05:10.027896Z" }, "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel BaselineLast\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e24c84a5e5124d0480671ce971e2e2f2", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=80.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel BaselineLast\n", - "mean_NLL 1.63\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLast
IMOSCurrentsVelnll1.633936
rmse0.257789
smape0.285106
\n", - "
" - ], - "text/plain": [ - " BaselineLast\n", - "IMOSCurrentsVel nll 1.633936\n", - " rmse 0.257789\n", - " smape 0.285106" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 109 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel RANP\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "5351bdc826d54a5e851616e3b22b3c8a", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=80.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel RANP\n", - "mean_NLL 23.31\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANP
IMOSCurrentsVelrmse0.2577890.538145
smape0.2851060.707343
nll1.63393623.305540
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP\n", - "IMOSCurrentsVel rmse 0.257789 0.538145\n", - " smape 0.285106 0.707343\n", - " nll 1.633936 23.305540" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 139 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel LSTM\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f915900dd6af45a4a425735e54fca888", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=80.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel LSTM\n", - "mean_NLL 19.44\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTM
IMOSCurrentsVelrmse0.2577890.5381450.546141
smape0.2851060.7073430.719748
nll1.63393623.30554019.444048
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141\n", - " smape 0.285106 0.707343 0.719748\n", - " nll 1.633936 23.305540 19.444048" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 114 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel LSTMSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3e08216015f94a93b4da7512a2abd5ec", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=80.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel LSTMSeq2Seq\n", - "mean_NLL 14.52\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2Seq
IMOSCurrentsVelrmse0.2577890.5381450.5461410.548482
smape0.2851060.7073430.7197480.716110
nll1.63393623.30554019.44404814.519804
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482\n", - " smape 0.285106 0.707343 0.719748 0.716110\n", - " nll 1.633936 23.305540 19.444048 14.519804" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel TransformerSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f5756cbf9b1e464fa4208e9b7e1d27d1", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=80.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel TransformerSeq2Seq\n", - "mean_NLL 46.98\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2Seq
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.579640
smape0.2851060.7073430.7197480.7161100.769928
nll1.63393623.30554019.44404814.51980446.982059
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "\n", - " TransformerSeq2Seq \n", - "IMOSCurrentsVel rmse 0.579640 \n", - " smape 0.769928 \n", - " nll 46.982059 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel Transformer\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e204c6959c234995848d7edb4ec4bad4", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:root:failed to run model\n", - "Traceback (most recent call last):\n", - " File \"\", line 52, in \n", - " trainer.fit(model, dl_train, dl_test)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 440, in fit\n", - " results = self.accelerator_backend.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 54, in train\n", - " results = self.train_or_test()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/accelerator.py\", line 66, in train_or_test\n", - " results = self.trainer.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 462, in train\n", - " self.run_sanity_check(self.get_model())\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 648, in run_sanity_check\n", - " _, eval_results = self.run_evaluation(test_mode=False, max_batches=self.num_sanity_val_batches)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 568, in run_evaluation\n", - " output = self.evaluation_loop.evaluation_step(test_mode, batch, batch_idx, dataloader_idx)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/evaluation_loop.py\", line 171, in evaluation_step\n", - " output = self.trainer.accelerator_backend.validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 76, in validation_step\n", - " output = self.__validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 86, in __validation_step\n", - " output = self.trainer.model.validation_step(*args)\n", - " File \"\", line 30, in validation_step\n", - " return self.training_step(batch, batch_idx, phase='val')\n", - " File \"\", line 19, in training_step\n", - " y_dist, extra = self.forward(*batch)\n", - " File \"\", line 13, in forward\n", - " y_dist, extra = self._model(x_past, y_past, x_future, y_future)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/models/transformer.py\", line 54, in forward\n", - " outputs = self.encoder(x, mask=mask#, src_key_padding_mask=x_key_padding_mask\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 181, in forward\n", - " output = mod(output, src_mask=mask, src_key_padding_mask=src_key_padding_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 294, in forward\n", - " key_padding_mask=src_key_padding_mask)[0]\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/activation.py\", line 927, in forward\n", - " attn_mask=attn_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/functional.py\", line 4049, in multi_head_attention_forward\n", - " raise RuntimeError('The size of the 2D attn_mask is not correct.')\n", - "RuntimeError: The size of the 2D attn_mask is not correct.\n", - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 49 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 49 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel TransformerProcess\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f87dbe3e2abb41438b236e72ea670946", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 5: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=80.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IMOSCurrentsVel TransformerProcess\n", - "mean_NLL 7.35\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n" - ] - }, { "name": "stdout", "output_type": "stream", @@ -3647,6 +2297,22 @@ "BejingPM25 BaselineLast\n" ] }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "EarlyStopping mode auto is unknown, fallback to auto mode.\n", + "EarlyStopping mode set to min for monitoring loss/val.\n", + "GPU available: True, used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", + "Using native 16bit precision.\n", + "\n", + " | Name | Type | Params\n", + "----------------------------------------\n", + "0 | _model | BaselineLast | 1 \n" + ] + }, { "data": { "application/vnd.jupyter.widget-view+json": { @@ -3664,7 +2330,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "94926921708c42beb06ac4df4014d9e0", + "model_id": "85620d5a4cf94d1abebd04d63d97acb4", "version_major": 2, "version_minor": 0 }, @@ -3843,39 +2509,11 @@ "metadata": {}, "output_type": "display_data" }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 14: reducing learning rate of group 0 to 3.0000e-05.\n" + "Epoch 12: reducing learning rate of group 0 to 3.0000e-04.\n" ] }, { @@ -3906,41 +2544,6 @@ "metadata": {}, "output_type": "display_data" }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 17: reducing learning rate of group 0 to 3.0000e-06.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", @@ -3956,7 +2559,7 @@ "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=34.0), HTML(value='')))" + "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=17.0), HTML(value='')))" ] }, "metadata": {}, @@ -3967,9 +2570,61 @@ "output_type": "stream", "text": [ "BejingPM25 BaselineLast\n", - "mean_NLL 1.71\n" + "mean_NLL 1.65\n" ] }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " loss/train step loss/val\n", + "epoch \n", + "0.0 1.658787 167.000000 1.756331\n", + "1.0 1.636618 418.333333 1.756217\n", + "2.0 1.659921 669.666667 1.755974\n", + "3.0 1.725875 921.000000 1.754428\n", + "4.0 1.760548 1172.333333 1.756869\n", + "5.0 1.749945 1423.666667 1.756687\n", + "6.0 1.663989 1692.714286 1.756530\n", + "7.0 1.668444 1968.000000 1.754043\n", + "8.0 1.650209 2219.333333 1.755664\n", + "9.0 1.663984 2470.666667 1.754636\n", + "10.0 1.674431 2722.000000 1.756556\n", + "11.0 1.671649 2973.333333 1.755431\n", + "12.0 1.653625 3242.428571 1.755806\n", + "13.0 1.658187 3517.666667 1.756253\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -3993,90 +2648,31 @@ " \n", " \n", " BaselineLast\n", - " RANP\n", - " LSTM\n", - " LSTMSeq2Seq\n", - " TransformerSeq2Seq\n", - " TransformerProcess\n", " \n", " \n", " \n", " \n", - " IMOSCurrentsVel\n", - " rmse\n", - " 0.257789\n", - " 0.538145\n", - " 0.546141\n", - " 0.548482\n", - " 0.579640\n", - " 0.541376\n", - " \n", - " \n", - " smape\n", - " 0.285106\n", - " 0.707343\n", - " 0.719748\n", - " 0.716110\n", - " 0.769928\n", - " 0.703052\n", - " \n", - " \n", - " nll\n", - " 1.633936\n", - " 23.305540\n", - " 19.444048\n", - " 14.519804\n", - " 46.982059\n", - " 7.354424\n", - " \n", - " \n", " BejingPM25\n", " nll\n", - " 1.707181\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 1.651788\n", " \n", " \n", " rmse\n", - " 1.383076\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 1.311697\n", " \n", " \n", " smape\n", - " 0.278300\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 0.256622\n", " \n", " \n", "\n", "" ], "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 nll 1.707181 NaN NaN NaN \n", - " rmse 1.383076 NaN NaN NaN \n", - " smape 0.278300 NaN NaN NaN \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 nll NaN NaN \n", - " rmse NaN NaN \n", - " smape NaN NaN " + " BaselineLast\n", + "BejingPM25 nll 1.651788\n", + " rmse 1.311697\n", + " smape 0.256622" ] }, "metadata": {}, @@ -4087,25 +2683,15 @@ "output_type": "stream", "text": [ "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", "\n", " | Name | Type | Params\n", "--------------------------------\n", - "0 | _model | RANP | 107 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 107 K \n" + "0 | _model | RANP | 251 K \n" ] }, { @@ -4132,7 +2718,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e66acd8f065c48cd931774bb3f223d7c", + "model_id": "179306525e9145d38f906e3611fea48e", "version_major": 2, "version_minor": 0 }, @@ -4199,11 +2785,25 @@ "metadata": {}, "output_type": "display_data" }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" + "Epoch 5: reducing learning rate of group 0 to 3.0000e-04.\n" ] }, { @@ -4220,6 +2820,20 @@ "metadata": {}, "output_type": "display_data" }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", @@ -4235,7 +2849,7 @@ "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=34.0), HTML(value='')))" + "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=17.0), HTML(value='')))" ] }, "metadata": {}, @@ -4246,9 +2860,54 @@ "output_type": "stream", "text": [ "BejingPM25 RANP\n", - "mean_NLL 1.48\n" + "mean_NLL 1.68\n" ] }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAACuCAYAAAAS0ogGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de3QUVYI/8G9VV3e6O++k84CEAAFEgVEcH0RHEUxEREfYXURlnAXn5yIOLOLA7oiA4qozMAwucE5YFFAXd3aUZcaZYQ+OQwYcZRUZwRFJRHmHQB4kIe/udNfj90d1d7rTCQl0JZ1Ovp9z+nR1VXXVrUtO+ObeW7cETdM0EBEREdFVESNdACIiIqJoxjBFREREFAaGKSIiIqIwMEwRERERhYFhioiIiCgMDFNEREREYWCYIqJeN2nSJDzxxBOdbl+1ahVGjhzZiyUiIrp6DFNE1OcsXboUBw4c6Pb+I0eOxKpVq3quQERElyFFugBERO3FxcUhLi6u18+rqio0TYPJZOr1cxNR9GLLFBFFzEsvvYTMzEykpKTgH//xH9HU1AQgtJuvrKwM//AP/wCHwwGr1Yrc3FysXbsWgN5lePLkSbz44osQBAGCIODMmTMAgAMHDmDixImw2WxITk7G7NmzUVVV5T+u7zzvvvsurr32WlgsFrz++uswmUw4d+5cUFm3b9+OxMRENDc393CtEFG0YZgioojYuXMnamtr8eGHH+Kdd97B//7v/2LNmjUd7vvjH/8Y9fX1KCoqwrFjx7Bt2zZkZ2cDAH77299i2LBhWLJkCcrLy1FeXo4hQ4agoqICU6ZMQXZ2Ng4ePIhdu3bh6NGjmDlzZtCxL1y4gE2bNuE///M/UVJSgsceewyjRo3CG2+8EbTfli1bMHv2bMTGxvZMhRBR1GI3HxFFxNChQ/Hv//7vAIBrr70WDz/8MIqKivDSSy+F7Hv27Fn83d/9HcaPHw8AGDZsmH9bSkoKTCYT4uLikJmZ6V9fWFiIhIQEvPXWW7BYLACAt99+G+PHj8dHH32EiRMnAgBcLhfefvtt5OTk+L87b948bNiwAStXroQoijh27Bj279+PjRs3Gl4PRBT92DJFRBFxww03BH0ePHgwKisrO9x38eLF+NnPfoYJEybgpz/9KT766KMuj19cXIy8vDx/kPKdMzExEcXFxf51GRkZQUEKAObMmYOqqip88MEHAICtW7fipptuwo033tjt6yOigYNhiogiIjDkAIAgCFBVtcN9H3/8cZw9exbz589HeXk57rvvPjz22GOGlKOjbrvU1FTMnDkTW7Zsgdvtxvbt2zFv3jxDzkdE/Q/DFBFFhUGDBuHxxx/H9u3bsW3bNvzqV79CQ0MDAD2YKYoStP/YsWNx4MABuN1u/7ovv/wS9fX1GDduXJfne/LJJ7Fr1y689tprcDqdePTRR429ICLqNximiKjPW7hwIXbv3o2TJ0+iuLgYv/3tbzFkyBDEx8cDAIYPH47/+7//Q2lpKaqrq6GqKhYuXIiGhgbMnTsXR48exf79+/HDH/4Qd955J+68884uz3nHHXdg9OjRWLp0KR555BH/uYiI2mOYIqI+T9M0LF68GOPGjcPEiRPR3NyM999/H4IgAABefPFF1NXVYfTo0UhLS0NpaSkyMjLwpz/9CWVlZbjlllvwwAMPYNy4cdi5c2e3z/tP//RPcLvd7OIjossSNE3TIl0IIqK+6F//9V+xZ88efPHFF5EuChH1YZwagYionfr6enz77bd4/fXXOR0CEXWJLVNERO1MmjQJn332GR555BFs27YNosgREUTUOYYpIiIiojB02c23adMmHD58GImJiVi3bl3I9paWFmzcuBE1NTVQFAXf//73MXny5B4pLBEREVFf02Xb9aRJk/Dcc891uv2Pf/wjsrOzsXbtWqxatQrbt2+HLMuGFpKIiIior+oyTI0ZMwZxcXGdbhcEAS6XC5qmweVyIS4ujuMLiIiIaMAI+26+qVOn4he/+AWefPJJOJ1OPPPMM90OUxcuXAj39F1yOByorq7u8fMMFKxP47FOjcX6NB7r1FisT+P1Rp0OHjy4021hh6kvv/wSQ4cOxfPPP4/Kykq89NJLuPbaa2G320P2LSoqQlFREQBg9erVcDgc4Z6+S5Ik9cp5BgrWp/FYp8ZifRqPdWos1qfxIl2nYYepffv2YcaMGRAEAZmZmUhPT8eFCxcwcuTIkH0LCgpQUFDg/9wbyZx/ARiL9Wk81qmxWJ/GY50ai/VpvKhvmXI4HPjqq69w3XXXoa6uDhcuXEB6enq4hyUiIopamqah0a2iutmDiy0eVDfLqG7xoLpFhkutgCJ7IAqAKAgQBQEmETAJAkQBMIned0GAGLjsfTeJ+vfa7y8GbfOt15dFQYDYyTlM7c4hikLQ+XzfCz1O2/kGui7nmVq/fj1KSkrQ2NiIxMREzJo1y3+33pQpU1BbW4tNmzbh0qVLAIDp06dj4sSJ3Tp5+zFTvkHsqqr6n7kVrpiYGLS2thpyrL5O0zSIogir1WpY/bXHv6iMxzo1FuvTeKzTUC0eBdUtMqqb9YBU7Q1MgcHJrQT/9yqJQKrdjNTYGHhkGYqqQdUARfO+qxpUTYOiAWrANkVF23rvvn2NKSDMBYay4GDXPsyFrjO1C4XtA2JH5zAJAm7NTcfYpJ69xsu1TEV00s72YcrpdMJsNkOSjHvKjSRJA2qqBlmW4fF4YLPZeuT4/KVqPNapsVifxhtodepR1KCAVN3iwcWAlqXqFg+a3WrQdwQAyTYJDrsER6wZad53h12Cw25GWqwZiVYTREEIuz41b6AKDFiKGhrK2paDtynttqlBgS1wP3RynOCAF3iczs6haBpUte377c/hC5Bt5+z4HL7jqu3O8eB3BuGxsQlh/stfXo928xlJVVVDg9RAJEnSgGmJIyK6Uoqq4ZJLDuh2CwhK3vc6lxLyvfgYExx2CRlxZoxNt8FhNwcEJzNS7BIksXe6uwRfaw8EmHvljH1fpAN/n0ouPdU1NdCwHoloINI0DQ2tbd1v7ccqVTd7UOOUQ7rJrJIIh11CWqwZw5NjQlqUHHYJMRLnT6TO9akw1ReMGjUKx48fN+x4hw4dwjvvvIM5c+agsrIS+fn5V/T9iooKrFy5Elu2bDGsTERE0ajFo3TQ7dY2VqmmRe5gnJLgb0Eam2H3tyj5QpIj1oxYs8g/QiksDFM9bN++fZg0aRKKi4tx5MiRDsOULMuddm9mZmYySBFRv+dWVNS0yLjY7AkZ2O1b1+IJHqckCr5xSmbkJlsxIbstIDnsEtLsZiR4xykR9SSGqU5omoaXX34Z+/btgyAIWLRoEaZPn47Kyko89dRTaGxshKIo+PnPf46bb74ZS5YswZEjRyAIAh5++GHMmzcPALB//37MmzcP+fn5cLlcOHjwIBYuXIgTJ07gzJkzKC0tRVZWFpYtW4ZFixahpaUFAPDyyy/jlltuwblz5zBnzhzs3bsX7777Lvbs2QOn04kzZ87gvvvuw4oVKyJZTUREXVJUDbVOX9dbcLebr2WpvjV0nFJijAmOWAmD4i34jq9VKWBwd4pNgqmXxikRXQ7DVCd2796N4uJi7NmzB7W1tZg2bRry8vLw3nvv4a677sLTTz8NRVHgdDpRXFyMiooK7N27FwBQX18PAKitrYUkSUhISMDSpUtx5MgRvPLKKwCAdevW4fjx43jvvfdgs9ngdDrx61//GlarFadOncKCBQvw/vvvh5SruLgYH3zwASwWCyZOnIjHH38cWVlZvVcxREQBNE1DvUvRxycFtChdDGhZutTBOCW7WfSPSxqRYkWaNyj51qVynBJFkT4bptR3tkA7dzr84wgCfLM/CEOGQ3zkn7r1vYMHD2LGjBkwmUxIS0tDXl4evvzyS4wfPx5LliyBLMu49957MW7cOOTk5KC0tBQrVqxAfn4+7rrrLgDAX/7yF/9yR6ZMmeKfwsDj8WD58uUoKSmBKIo4depUh9+54447kJCg3/55zTXX4Pz58wxTRNRjWjwKTlY34/j5ptApApr1cUqedknJLApwxOqh6PoMu3d8UnAXXKzFFKErIjJenw1TfVVeXh5+85vf4M9//jOeeeYZzJs3Dw899BD27NmDDz/8EG+//TZ27dqFV199FXv37sWTTz7Z6bECn1+4ZcsWpKWlYc+ePVBVFbm5uR1+x2Kx+JdFURxQc2gRUc/QNL0b7ly9G+cb3DhX36q/N7hxyRn8O0YUgBTvOKVRqVbcNsTsD0763W8SEmJMHNBNA0qfDVPdbUHqytVO2jlhwgT813/9Fx566CHU1dXhs88+w8qVK1FWVoZBgwbhBz/4AdxuN7766ivk5+fDbDbj/vvvx4gRI/DP//zP0DQNX3/9NcaOHQsAiIuLQ1NTU6fna2howKBBgyCKIv7nf/4HihI6foCIKByyqqG80Y2yBjfO17txrkEPTWX1bjjltsHddrOIrAQLbhxkR1Z8DEYOTkGM4kRarBnJVo5TImqvz4apSLvvvvtw6NAh3HPPPRAEAcuXL0d6ejp27NiBzZs3Q5IkxMbGYsOGDSgvL8dPfvITqKr+y2jZsmU4cuQIxo0b5//r7Pbbb0dhYSHuueceLFy4MOR8c+bMwbx587Bz505Mnjw5qNWKiOhKtHgUlNXroamsvlV/b3CjotGNwJkDUm0SshMtuDs3AdmJMchOsCA7MQbJ1uCWpUhPiEjU1/Wpx8m0tLQYHiIi9TiZ9evXY/jw4Zg+fXqvn7sn6tGHv1SNxzo11kCpT1/XXJm3ZamsodW/XBvQNWcSgEHxFmQnWpCd4AtMFmQlWGA3d2/c0kCp097C+jReb9Rp1DxOpj9ZvHhxpItARP2ArGqoaHR3GJoCu+ZskojsRAtuyLQHtDJZkBln6bXHnBANVAxTRER9QItH8Q7+Dh4EXt5B11yWt2suKyEGQ7ytTCk2iYO+iSKEYYqIqJd01jV3vt6Nmg665rISLMgbEo+sBIs/NHW3a46Ieg/DFBGRwWRVQ0WTO2QQ+PkGd9AjUXxdc9dn2vXxTIkWZCdYkBnPrjmiaMIwRUR0lXxdc/7Q1NCKsvrQrrkU711zk4YnBIUmds0R9Q8MU0REl+Hrmjvf0G6qgct0zU3IjgsaBM6uOaL+jWGqnVGjRuH48eOGHe/QoUN45513sHbt2iv63ieffILNmzdj+/bthpWFiDrn65rTJ7N043xDq38weEddc9/JtGNIQgyyEi0YkmBBRpwFZhNbmYgGIoapHrZv3z5MmjQp0sUgIq/OuuYqmtwImGlA75pLYNccEXWtyzC1adMmHD58GImJiVi3bl2H+xQXF+Ott96CoiiIj4/Hiy++aHhBe5umaXj55Zexb98+CIKARYsWYfr06aisrMRTTz2FxsZGKIqCn//857j55puxZMkSHDlyBIIg4OGHH8a8efMAAPv378e8efPwwAMPYN26dRg9ejQAYObMmVi5ciVUVcXzzz+P1tZWWK1WvPrqqxg5cmQkL50o6mmahksuJWj2b99yTUtb15zom9CyXddcVoKFD+Ilom7rMkxNmjQJU6dORWFhYYfbm5ubsXXrVixfvhwOhwP19fWGFzISdu/ejeLiYuzZswe1tbWYNm0a8vLy8N577+Guu+7C008/DUVR4HQ6UVxcjIqKCuzduxcA/HVQW1sLSZKQkJCABx98ELt27cLo0aNRWVmJyspK3HDDDWhsbMR7770HSZLw0UcfYc2aNdiyZUskL52oz/AoGpweBS0eFS0eFU7ve7NH8S/r6xU0e7c3yudxtqYZzQFdc1ZJxJBEC76TYfc/MiU7QZ/Qkl1zRBSuLsPUmDFjUFVV1en2/fv3Y8KECXA4HACAxMREQwq29fNKnL7kCvs4giDA98Sc4clWPHFzRre+d/DgQcyYMQMmkwlpaWnIy8vDl19+ifHjx2PJkiWQZRn33nsvxo0bh5ycHJSWlmLFihXIz8/HXXfdBQD4y1/+4l/+/ve/j9mzZ2Pp0qXYtWsX7r//fgD6A44XL16M06dPQxAEeDyesK+ZKNLahyD9pQQFoo7XBQcnt9L1065EQX8wr91sgt0sIjXOionDEjAkMcY/PxO75oioJ4U9Zqq8vByyLGPVqlVwOp2YNm2aP0D0R3l5efjNb36DP//5z3jmmWcwb948PPTQQ9izZw8+/PBDvP3229i1axdeffVV7N27F08++SQAYNCgQUhOTkZJSQn+8Ic/YPXq1QCAtWvX4vbbb8e2bdtw7tw5zJw5M5KXRwOcLwQ1dxJw2oJP+3UBn90qPGr3QlCsWYTNG4LsZhHJVglZ8SbYvJ/tZhF2ix6UgtYFfMdiEvhQXiKKqLDDlKIoOH36NFauXAm3240VK1Zg1KhRHT4QsKioCEVFRQCA1atX+1uzfCorKyFJepHm52WFW7SrJkkSbr/9dmzfvh2PPvooLl26hIMHD+LFF19EeXk5Bg8ejDlz5kCWZRQXF2PKlCmwWCyYPn06rrnmGixYsAAmkwnHjh3DDTfc4P9FP2PGDGzevBlNTU24/vrrAQBNTU3IysqCJEnYuXMnBEGAJEkwmUz+5SsVExMTUrdGkSSpx449UBlRp25ZRbNbQbNbRotbQbNbQZNvuVVf3+xdH7jc4pbR1Nq23J2WIJMAxMZIiLWYEGuREGuRkGGLQaxFgt1iQlyMyb8c633Fxfg+S/51MZLYI61F/Bk1HuvUWKxP40W6TsMOU6mpqYiPj4fVaoXVasV1112Hs2fPdhimCgoKUFBQ4P/c/q/H1tZWmEzGDvqUJAmyLHe9YwBZljFlyhQcPHgQkydPhiAIeO6555CSkoIdO3Zg8+bNkCQJsbGx2LBhA8rKyvCTn/wEqqqP0Vi2bBkOHz6MsWPHQlEU/3Hvu+8+rFixAosXL/aXaf78+Vi8eDFeffVV5OfnQ9M0yLIMRVH8y1eqtbW1x/4y51/9xtE0DbKqwRqfjLLKix13e7nbrZNVtLhDxxB1pyXI5OsOs+itOjZJRLxZRIbN4m39EQNaf9pafmxdtAR1j6y/lFZoTqDJCTRdVa11jT+jxmOdGov1abzeqNOOco2PoPkGFF1GVVUV1qxZ0+HdfGVlZXjjjTewfPlyyLKM5557Dk8//TRycnK6LNiFCxeCPre0tMBut3f5vStxNWHKCOvXr8fw4cMxffr0Xj93T9Sjz0D9JaBpGjyqBpdHhVNW4ZI1uGQ9zDhlFS6Pqn+WVf96l6zC5dH864L2936nGw1BegiyBIQbSUSsJbh7zGYWEduuK8y3zrd8dSEo+gzUn9GexDo1FuvTeJEOU122TK1fvx4lJSVobGzE/PnzMWvWLH84mTJlCrKzszF+/HgsXboUoiji7rvv7laQ6u8WL14c6SIMWJqmwa1oQQHGH36Cgo4aEnT0fbTgcOTdrxuNP35WSYRNEmA1i95lEfEWE9JjzbBKIqzeUGSVBKQlJ0BtdXY4HmgghSAiomjVZZjqTih48MEH8eCDDxpSIBpYAoOPM6h1RwsKO8524Sa4pUfzhyPfPt0NPgIQEG4EfVkSkWg1IUMyw+YNQ75AZDUL/uWgbQHLMZIA8QrCD/9KJSKKbpwBnbpN0zS4PArqXHJQcPG39MhawHJol5av1SdwH9dVBB9fcLF5g02S1QSrN/jYvIEmsOXHt2zzrrcGLFtMVxZ8iIiI2utTYaobw7eoGzqrR03Tx+80u713fnl8d4DpkyAGr+9ondLt4CMKCGm1sUkCkq0mDIo3+9f7w49/PyF0m3eZ3V1ERNQX9akwJYoiZFm+qukABgJN06BqgBrwrvg+q/q7W5bx1YUm/LXykj5TdEAQavF03QpklQTEmk2ItYiItZiQbDXpj9Yw65/TkuKhup1BrTtWSQjp9mLwISKigaJPpRar1QqXy4XW1lbD/iOOiYlBa2urIccKl6pqULy3w3tUQFFVeBRAUTXI3rvFFEXfLmsaZEWDrAKyqkJW9f0ul4U0Dahs9uDTcrc+p49ZRKrdjByz6A9HsRYxKCz5l723zEvi5eud43uIiIiC9akwJQgCbDabocc08j9/WdX0SRA9KpradY+1BHaJBXWRqWjyKGhx6+OHuhIbGHy8rUF2s+if6DA4CImIC9huN4swiQL+nyFXS0RERN3Rp8JUT/MovrFAHYwZCvzcyVii1i4mBfI9IywwCGXGmxFrsSLWIiKuXRBqC0r6sk3SwxARERFFj34bpsrqW7HxQDlcylk0ON1o7sZDU0UBQUEn1iIi2WYJWde+dci33iqJvDOMiIhogOm3Ycps0gdFD06yQdIsIUEozhuE7AHrrRIHTRMREdGV6bdhKiPOghfzczhgmoiIiHqUGOkCEBEREUUzhikiIiKiMDBMEREREYWBYYqIiIgoDAxTRERERGFgmCIiIiIKA8MUERERURgYpoiIiIjCwDBFREREFAaGKSIiIqIwMEwRERERhaHLMLVp0yY88cQTWLJkyWX3O3HiBB555BEcOHDAsMIRERER9XVdPuh40qRJmDp1KgoLCzvdR1VV/OpXv8INN9xgaOHCodXVQPvjb9EYnwDV7QEkCZDM3nfvsklfFgLXm8zt9vW+m6SQz4IgRPoyiYiIKMK6DFNjxoxBVVXVZfd5//33MWHCBJw8edKwgoWtqQHap3vRoiiAxw2oaqe7ald7jo7CV/vQ1Wlw861rt1+Hwc0MwXwl5/J+FkUGPiIioh7WZZjqSm1tLQ4ePIgXXngB//Ef/2FEmQwhZA+HacOv4XA4UF1dDU1VAEUBPB5AkQFZBmSP/q54gj/7lhUZWkfr5Y6OIfuPrbVf3+ry76sF7Bd8Ts9lr+eqAp8gtAteHQc8tAt4wS11EmBu27c5KRmqogIxNghWK2C1ATE273vbZ8Fsvqp/NyIiomgTdph666238IMf/ACi2PVY9qKiIhQVFQEAVq9eDYfDEe7puyRJUq+cJ1yapulhT/ZAkz3QPB7vsgx43NC8oSt4mwfweNq2edz+IBe0z+W2+b7vcUNraWrbp4NjQ1HQFFjmy12QJEGw2iDY7BCsdog2e8DntvWCze5fJ3a0zfc5xgqhGz9j0ShafkajBevTeKxTY7E+jRfpOg07TJ08eRIbNmwAADQ0NOCLL76AKIq49dZbQ/YtKChAQUGB/3N1dXW4p++Sr2UqKgkSYJYAs7X3T93uHQA0VYUjIR7VF84DLqf+anV5353Q2n2GywnN5YLa6oTicgHNTUDNxeDvddEiFyTGBlitbe++VrCgVrHg1jIhaL094HtWvQWuD4jqn9E+iPVpPNapsVifxuuNOh08eHCn28IOU4ED0wsLC3HTTTd1GKQo+gmiqLcUJSQBCUmh26/imJrs7QZt7SScuXzb2oU0334NddCqyoO/r7W1mXXVehbaRWn1hrB26/0hrn14C9gvxsoxakREA1CXYWr9+vUoKSlBY2Mj5s+fj1mzZkGWZQDAlClTeryA1L8JkgRIcUBsXOi2qziepmmAu7UtXPlDmMvbchYa2oLCWatLD2j+ba6Q1rNOA5ogeENVaEATrLaA8BUc3Fqzh0ITTEBSCmCPYyAjIooyXYapxYsXd/tgCxYsCKswROES/IHGCiQkB2+7ymNqsgdobQ0KX74wprUPZy5XQBend339JWiVF4IDXIC6wA+SGUhM1oNVYgqEpBTvcrK+nJgKJCUzdBER9SFhd/MR9Xf63Y1m41rPVNXbeuYCnC1IFDXUnT0D1NcAdbV6+KqrBS6UQvv6S8DZrH8v8CCS2R+ykJQCISlVX/YFsERvCLPHMnQREfUwhimiXiaIoncclg1ITIbF4YCYnt3p/lqrC6ivBeouQauv9QYu/V2rqwXOl0Ir+RvgbNH3D/yyL3T5W7dS9aDla+nyBS+GLiKiq8YwRdTHCTFWIH0wkD74si1hbaHLG7LqL/mDlx66znYeusyWtsCVGBCyklIg+Lodk1IAG0MXEVF7DFNE/US3Q5fLqQctX8gKCF5afS2082eA4sP6+C50Frrahax247sYuohoIGGYIhpg/HcWZnQzdNXVQqur8QcwPXRdglZ2Bjh62D+gPih0WSze7kTfGK624BXU8mWzM3QRUdRjmCKiDnU/dLUAdZe8A+dr9MDlD2G10M6dBr76XB9wj05CV2DI6qi7kaGLiPowhikiCotgtQOZdiAzq5uhyzemy9vF6GvpKj11mdAVE3rnYlB3Y6r+2WrryUslIuoQwxQR9YorC11tISvo7sX6WmhnTwJ1Nfr0EggNXdWODCgpDgiOTMCRASEtA3BkAmmZEGz2nrxEIhqgGKaIqE9pC13ZnYYuTdP0AfId3L0oNddDOX8O2qlvgZam4LAVFw84MiGk6UELaZkQHBn6ckoaBJOpF66QiPobhikiijqCIAA2u/5qF7qSAh54qjU3AdWVQHUFtIsVwMVKaNUV0M4cBw5/AihKW9gSRSA13dualekNXXrggiMTQgeTthIRAQxTRNSPCbHe5z4OHRHSyqUpit5deNEbtKor9eXqSmiHPwWaGoJbteyxeguWL2T5WrjSvK1akrkXr4yI+hKGKSIakASTSW+JSk2HcO31Ids1Z4u3VavSG7YqoF2sBC6chXbkICDLbWFLEIEUh96q5fC1ZnlbuNIygbgE3o1I1I8xTBERdUCw2YEhw4Ehw0NbtVRVHxjvC1jVFf7QpR09pI/fQsDg+Bib3oIV0HUoeFu54EiHYLb05qURkcEYpoiIrpAgeluiUhwQrhkXsl1rdQHVVW1jtXytW1UXoJUcBtzu4C7EpFQgLUO/A9Hbdei7GxGJyWzVIurjGKaIiAwmxFiBrBwgKye0VUvTgIY67/gsfVC8b1k7dgT4dK++n+8LFguQ6m3NCuw+9E39EBPTm5dGRB1gmCIi6kWCIOiTjiYmQxh5Xch2zeMGaqr8dx7qA+S9dyR+cxRodQa3aiUmtxur1TZAHkkpeisaEfUohikioj5EMFuAzOwO59nSNA1oagyY6iFgrNaJr4GDHwOa2ha2JKndHYjtuhKtnMSUyAgMU0REUUIQBCA+AYhPgDD8mpDtmuwBai96A1ZlUFeidvIY4GxuN4lpQttgePxaIj8AAA4pSURBVF8Xom852cFJTIm6iWGKiKifECQzkD4YSO/44dT6JKaBXYeXmcTUZAJS0oC0TDSOGA01fTCEnBH644BEhiyiQF2GqU2bNuHw4cNITEzEunXrQrZ//PHH+P3vfw9N02Cz2fDEE09g2LBhPVFWIiIKgz6J6Uhg6MiOJzG9VO2fuNTfhVhVjpYPfge4W/WgZYnRp4vIyQVyRugBa/AQTlpKA1qXYWrSpEmYOnUqCgsLO9yenp6OVatWIS4uDl988QVef/11/OxnPzO8oERE1HMEk8k7viojJGilJieh+ugRaKUngdKT0EpPQvt0H7Bvtx6wJAnIGtYWsIaOALKGQrDwTkMaGLoMU2PGjEFVVVWn20ePHu1fHjVqFGpqaowpGRER9QmCSYKQlQMhKwe4bTIA78SlFyv0gHXWG7AOfwp8/Cc9YIkiMGhIcAtWznAOeqd+ydAxU3v37sWNN95o5CGJiKgPEkQRyBgMIWMwcMudALx3G9ZebAtXpaegFX8BfLpPD1iCoI/nysnVn5eYMwLIyYUQGx/RayEKl2Fh6ujRo9i3bx/+7d/+rdN9ioqKUFRUBABYvXo1HA6HUafvlCRJvXKegYL1aTzWqbFYn8a7ojpNSwNGjwlapdRWQz71DTynvvW+fwP1rx/7B7uL6YNgzh0NKfca/X3EaJiSUoy9iD6EP6PGi3SdGhKmzp49i9deew3Lli1DfHznf2EUFBSgoKDA/7m6utqI01+Ww+HolfMMFKxP47FOjcX6NJ4hdTpstP66+/sQAIhNDUDpKX8LVuupb9F64MO2/ZNS/N2DwlC9qxDJjn7xaB3+jBqvN+p08ODBnW4LO0xVV1fjl7/8JRYuXHjZExEREfkIcQnAmPEQxoz3r9NamoGy095xWN6g9dUhaJqq7xCX4B3gnuvtIhyhz5PVDwIWRbcuw9T69etRUlKCxsZGzJ8/H7NmzYIsywCAKVOmYOfOnWhqasLWrVsBACaTCatXr+7ZUhMRUb8j2GOBa8YFPTxaa231BqxTbXcS/un30BT9/yHYYr1TNYwAfCGLc2FRLxM0TdO63q1nXLhwocfPweZUY7E+jcc6NRbr03h9rU41jwe4UNo2VcPZk0DZGcDj1nfo43Nh9bX67A+ivpuPiIioNwlms3434NAR/nWaogAVZXqw8rVgfcK5sKh3MEwREVHUE0wmPRxlDQVuvxuAdy6sqnJvC5Z3DNahTzqYC2tE21QNQ4ZxLiy6YgxTRETULwmiqI+fyswCbp0IoLO5sA4Dn+7lXFh01RimiIhowBAEAUhNB1LTIXz3Nv96ra62rXvw7CloJ48BAXNhITXdH678g90TkiNyDdT3MEwREdGAJySlAEkpEK6/xb9Oa2wAzunhyh+0Dn/aFrD68VxYdGUYpoiIiDogxCcAY26EMKbtMWlaSzNw7nTQnYScC4sYpoiIiLpJsMcCo8dBGB04F5YLKDvT9tDnc6dC58LKyYUwJBcYmgvPmOuhtXoAqx2w2vS7EymqMUwRERGFQYixAiOuhTDiWv+6jubC0v7yPuBxo7b9AUwSYLUFv2L0d6H9eu+2Dtf7tpk4YWlvY5giIiIy2OXmwopvaUBDVRXgcgKuFqDV6V12QvO+w9kMXKqGFrANqtp2rMud3GLxh7G2l70tgIVsaxfOArfHWNlF2Q0MU0RERL3ANxeW1eFA0xXO1q1pmj7Du8sZ/GoNCGAdvPxhrKEOWlV50PeCjt9poQUgxtph0Oqs1SwouLV/SeZ+Gc4YpoiIiPo4QRD0x+RYYoCEpOBtV3E8TVUBt6vjABYYuDrbVnMxuNXM9ygf3/E7O7HJ1GHLGKw2CJ2tbxfUgrb1kS5NhikiIqIBRhBFbzAJne39qsKZLAOtgeGsrfuys5azoDBWVxsc4hSl7diXO7HZAlhtaJwyHZg68ypKbgyGKSIiIgqLIEmAFAfExoVuu8JjaZoGyJ7LtJq1hLSaSUOGo9WYS7kqDFNERETUZwiCoLc4mS1AfGLwtk6+Y3M40HyF49CMJEbszERERET9AMMUERERURgYpoiIiIjCIGiadtmB8kRERETUuX7fMvXss89Gugj9CuvTeKxTY7E+jcc6NRbr03iRrtN+H6aIiIiIehLDFBEREVEYTKtWrVoV6UL0tNzc3EgXoV9hfRqPdWos1qfxWKfGYn0aL5J1ygHoRERERGFgNx8RERFRGPrt42T+9re/4c0334SqqsjPz8eMGTMiXaSotmnTJhw+fBiJiYlYt25dpIsT9aqrq1FYWIi6ujoIgoCCggJMmzYt0sWKam63Gy+88AJkWYaiKMjLy8OsWbMiXayop6oqnn32WaSkpET8jqn+YMGCBbBarRBFESaTCatXr450kaJac3MzNm/ejHPnzkEQBDz11FO45pprer0c/TJMqaqKbdu2YcWKFUhNTcWyZctw8803Izs7O9JFi1qTJk3C1KlTUVhYGOmi9Asmkwk//OEPkZubC6fTiWeffRbXX389f0bDYDab8cILL8BqtUKWZTz//PMYP358RH6x9ie7d+9GVlYWnE5npIvSb7zwwgtISEiIdDH6hTfffBPjx4/HkiVLIMsyWlsj87jjftnNd+LECWRmZiIjIwOSJOH222/HX//610gXK6qNGTMGcXGhTwOnq5OcnOwfLGmz2ZCVlYXa2toIlyq6CYIAq9UKAFAUBYqi6A9MpatWU1ODw4cPIz8/P9JFIQrR0tKCr7/+GnfffTcAQJIkxMbGRqQs/bJlqra2Fqmpqf7PqampOH78eARLRNS5qqoqnD59GiNHjox0UaKeqqr46U9/ioqKCtx7770YNWpUpIsU1d566y089thjbJUy2CuvvAIAuOeee1BQUBDh0kSvqqoqJCQkYNOmTTh79ixyc3Mxd+5c/x9VvalftkwRRQuXy4V169Zh7ty5sNvtkS5O1BNFEWvXrsXmzZtx8uRJlJaWRrpIUevQoUNITEzkLfwGe+mll7BmzRo899xz+OCDD1BSUhLpIkUtRVFw+vRpTJkyBb/4xS8QExOD3/3udxEpS78MUykpKaipqfF/rqmpQUpKSgRLRBRKlmWsW7cOd955JyZMmBDp4vQrsbGxGDt2LP72t79FuihR65tvvsHnn3+OBQsWYP369Th69Cg2btwY6WJFPd//RYmJibjllltw4sSJCJcoeqWmpiI1NdXfAp2Xl4fTp09HpCz9MkyNGDEC5eXlqKqqgizL+OSTT3DzzTdHulhEfpqmYfPmzcjKysIDDzwQ6eL0Cw0NDWhubgag39l35MgRZGVlRbhU0Wv27NnYvHkzCgsLsXjxYowbNw6LFi2KdLGimsvl8neZulwuHDlyBDk5OREuVfRKSkpCamoqLly4AAD46quvInYTT78cM2UymfCjH/0Ir7zyClRVxeTJkzFkyJBIFyuqrV+/HiUlJWhsbMT8+fMxa9Ys/6A/unLffPMNPvroI+Tk5OBf/uVfAACPPvoovvvd70a4ZNHr0qVLKCwshKqq0DQNt912G2666aZIF4vIr76+Hr/85S8B6F1Ud9xxB8aPHx/hUkW3H/3oR9i4cSNkWUZ6ejp+/OMfR6QcnAGdiIiIKAz9spuPiIiIqLcwTBERERGFgWGKiIiIKAwMU0RERERhYJgiIiIiCgPDFBENWFVVVZg1axYURYl0UYgoijFMEREREYWBYYqIiIgoDP1yBnQiil61tbV444038PXXX8NqteL+++/HtGnTsGPHDpw7dw6iKOKLL77AoEGD8NRTT2HYsGEAgLKyMmzduhVnzpxBSkoKZs+e7X+MlNvtxjvvvIMDBw6gubkZOTk5WLlypf+cH3/8Md5991243W7cf//9+Pu///tIXDoRRSm2TBFRn6GqKtasWYNhw4bhtddew/PPP4/du3f7H1j8+eef47bbbsMbb7yB733ve1i7di1kWYYsy1izZg2uv/56bN261f+ICd8zu7Zv345Tp07h5ZdfxptvvonHHnsMgiD4z3vs2DFs2LABK1euxM6dO1FWVhaR6yei6MQwRUR9xsmTJ9HQ0ICZM2dCkiRkZGQgPz8fn3zyCQAgNzcXeXl5kCQJDzzwADweD44fP47jx4/D5XJhxowZkCQJ48aNw3e/+13s378fqqpi3759mDt3LlJSUiCKIkaPHg2z2ew/70MPPQSLxYJhw4Zh6NChOHv2bKSqgIiiELv5iKjPuHjxIi5duoS5c+f616mqiuuuuw4OhwOpqan+9aIoIjU1FZcuXQIAOBwOiGLb34dpaWmora1FY2MjPB4PMjMzOz1vUlKSfzkmJgYul8vAqyKi/o5hioj6DIfDgfT0dGzcuDFk244dO1BTU+P/rKoqampqkJycDACorq6Gqqr+QFVdXY1BgwYhPj4eZrMZFRUV/vFVRERGYjcfEfUZI0eOhM1mw+9+9zu43W6oqorS0lKcOHECAHDq1Cl89tlnUBQFu3fvhtlsxqhRozBq1CjExMTgD3/4A2RZRnFxMQ4dOoTvfe97EEURkydPxvbt21FbWwtVVfHtt9/C4/FE+GqJqL8QNE3TIl0IIiKf2tpabN++HcXFxZBlGYMHD8bDDz+MY8eOBd3Nl5mZifnz5yM3NxcAcO7cuaC7+R599FHceuutAPS7+f77v/8bn376KVwuF4YNG4bly5ejrq4OCxcuxK9//WuYTCYAwKpVq3DnnXciPz8/YnVARNGFYYqIosKOHTtQUVGBRYsWRbooRERB2M1HREREFAaGKSIiIqIwsJuPiIiIKAxsmSIiIiIKA8MUERERURgYpoiIiIjCwDBFREREFAaGKSIiIqIwMEwRERERheH/A4RIf1SHC6tgAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " loss/train model_loss/train step loss/val\n", + "epoch \n", + "0.0 1.409629 1.409631 167.000000 1.517618\n", + "1.0 1.394854 1.394857 418.333333 1.554822\n", + "2.0 1.365533 1.365542 669.666667 1.583307\n", + "3.0 1.305416 1.305419 921.000000 1.616589\n", + "4.0 1.225966 1.225968 1172.333333 1.711403\n", + "5.0 1.108863 1.108864 1423.666667 1.779881\n", + "6.0 1.078389 1.078390 1692.714286 1.771446\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -4273,89 +2932,34 @@ " \n", " BaselineLast\n", " RANP\n", - " LSTM\n", - " LSTMSeq2Seq\n", - " TransformerSeq2Seq\n", - " TransformerProcess\n", " \n", " \n", " \n", " \n", - " IMOSCurrentsVel\n", - " rmse\n", - " 0.257789\n", - " 0.538145\n", - " 0.546141\n", - " 0.548482\n", - " 0.579640\n", - " 0.541376\n", - " \n", - " \n", - " smape\n", - " 0.285106\n", - " 0.707343\n", - " 0.719748\n", - " 0.716110\n", - " 0.769928\n", - " 0.703052\n", - " \n", - " \n", - " nll\n", - " 1.633936\n", - " 23.305540\n", - " 19.444048\n", - " 14.519804\n", - " 46.982059\n", - " 7.354424\n", - " \n", - " \n", " BejingPM25\n", " rmse\n", - " 1.383076\n", - " 1.087366\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 1.311697\n", + " 1.079460\n", " \n", " \n", " smape\n", - " 0.278300\n", - " 0.226529\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 0.256622\n", + " 0.214426\n", " \n", " \n", " nll\n", - " 1.707181\n", - " 1.478179\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 1.651788\n", + " 1.677931\n", " \n", " \n", "\n", "" ], "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 NaN NaN \n", - " smape 0.278300 0.226529 NaN NaN \n", - " nll 1.707181 1.478179 NaN NaN \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN " + " BaselineLast RANP\n", + "BejingPM25 rmse 1.311697 1.079460\n", + " smape 0.256622 0.214426\n", + " nll 1.651788 1.677931" ] }, "metadata": {}, @@ -4366,25 +2970,15 @@ "output_type": "stream", "text": [ "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", "\n", " | Name | Type | Params\n", "--------------------------------\n", - "0 | _model | LSTM | 135 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 135 K \n" + "0 | _model | LSTM | 23 K \n" ] }, { @@ -4411,7 +3005,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "210cbc1f0e574455853c30ff4c593869", + "model_id": "93d47d87f5d94fb5afae7afa0f6ff646", "version_major": 2, "version_minor": 0 }, @@ -4478,11 +3072,25 @@ "metadata": {}, "output_type": "display_data" }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" + "Epoch 5: reducing learning rate of group 0 to 3.0000e-04.\n" ] }, { @@ -4499,6 +3107,20 @@ "metadata": {}, "output_type": "display_data" }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", @@ -4514,7 +3136,7 @@ "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=34.0), HTML(value='')))" + "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=17.0), HTML(value='')))" ] }, "metadata": {}, @@ -4525,9 +3147,54 @@ "output_type": "stream", "text": [ "BejingPM25 LSTM\n", - "mean_NLL 1.41\n" + "mean_NLL 1.71\n" ] }, + { + "data": { + "image/png": "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JTsj7naX7EyGXn0wJlFfYpjyM3r0aJw6dSpkxzty5AjeeecdbNq06Zr2+/jjj7Fjxw7s3r07ZG0hIgql7kp2t7BkR/0Ew1QvKykpQX5+fribQUQUFP+S3cnadlz0KdkZMGtMKsamGzHObMQAI/96of6Df9q7oCgKXnzxRZSUlEAQBCxbtgxz5sxBdXU1lixZgpaWFkiShF/96leYOHEiVqxYgdLSUgiCgIceegiLFi0CABw6dAiLFi3C7NmzsXnzZowZMwYAMG/ePKxduxayLGPdunWw2WwwGAx4+eWXA76Kh4ior11stuHIpVacaqxB6aWmTiW7aSzZEQFgmOrS/v37UVZWhgMHDsBisWDmzJnIy8vDe++9h7vuugtPP/00JElCe3s7ysrKcPnyZRw8eBAA0NTUBACwWCzQarVITk7GAw88gH379mHMmDGorq5GdXU1br75ZrS0tOC9996DVqvFRx99hI0bN+K1114L508non7KKSsor2nD55eu4LNLV1DZ4gAADE4x4JbsBIxLj2fJjiiAiA1TOz+vxtkGa9DHEQQB7oe8D0814ImJGT3a7/Dhw5g7dy40Gg3S09ORl5eH48ePY8KECVixYgWcTifuvfde5ObmIicnBxUVFVizZg0KCgpw1113AQD++te/eqbvv/9+LFiwACtXrsS+ffswa9YsAEBzczOWL1+Os2fPQhAEOByOoH8zEVFPtdgkHK1Uw9PRqla02mVoRQE3ZcTj/rEmTMpOxLihWXxiN9FVRGyYilR5eXn4r//6L/zv//4vfvazn2HRokV48MEHceDAAXz44Yd46623sG/fPrz88ss4ePAgnnzySQBAVlYWUlNTUV5ejj//+c/YsGEDAGDTpk24/fbbsWvXLly4cAHz5s0L588johinKAouNdvxmWv06URtO2QFSDFocNuQJEzKTsTNmQkwxrFsR9RTERumejqC1J3rfTff5MmT8fbbb+PBBx9EY2MjPv30U6xduxYXL15EVlYWvv/978Nut+PLL79EQUEB4uLiMGvWLIwcORI//elPoSgKTpw4gRtvvNFzzAceeAC//e1v0dLSgvHjxwMAWlpakJmZCQDYs2dPSH4zEZE3d/nOHaCqXOW74al6zLsxDROzEzE6zcDSHdF1itgwFW733Xcfjhw5gnvuuQeCIGD16tUYOHAg9uzZgx07dkCr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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " loss/train step loss/val\n", + "epoch \n", + "0.0 1.325296 167.000000 1.403983\n", + "1.0 1.265529 418.333333 1.429530\n", + "2.0 1.236666 669.666667 1.427215\n", + "3.0 1.197539 921.000000 1.493497\n", + "4.0 1.173833 1172.333333 1.693657\n", + "5.0 1.096162 1423.666667 1.847756\n", + "6.0 1.088881 1692.714286 1.869237\n" + ] + }, + { + "data": { + "image/png": "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ubfffjsvvfQSN954Iy+99BJdunTh1KlT5OXlMWnSJDp27IharWbdunVMmjSJwMBAmxm0OXPmcMMNN7BgwQImTJjA3r17mT9/Po899pjNjF1zXHPNNYwePZqlS5fafP3w4cPk5eXV2Zaammr99969e+sd06tXL6e7Do1GI4cPHwagtLSUgoIC9u7dS0BAAD179gSqJxHcfffd/OMf/2Dw4MGUlJQwbtw4zp07x5dffolarSY7OxuozkwGBQU5fH4hhPMk0BJC2BQfH8+PP/7IU089xYQJEyguLiYhIYHhw4fTtm1boDo79dFHH/H000/z8ssv07dvX5YsWcJNN93UYLnBwcFs3ryZJ554gttuu43S0lI6derE7Nmzred98cUXWbBgAY888gjDhw9n06ZN9coZN24c77zzDgsWLGDu3LnExsYyffp05s2b55b2qLk+W6699tp623788UegOjPXr1+/eq9nZWU1OtjflgsXLtQpa9euXaxZs4aOHTtaF3gtLy/n6NGjlJeXW/epWcbh8vFq7777Lvfcc49TdRBCOEelKIri6UoIIYQQQrRGMuVECCGEEMJNJNASQgghhHATCbSEEEIIIdxEAi0hhBBCCDeRQEsIIYQQwk0k0BJCCCGEcBOvXkfrwoULLi0vJiam3qKCwnHSfs6TNms6Z9puzZqvKC9X0bnz791cK98QERFBUVGRp6vhtaR9HKfTQVSUhehoM5GRCnFxjf9dms1QWqri0iU1BQVqDAaVU+eLirLQo4epudX2iIaeuODVgZYQQgghPKeqCi5eVHPxohqVCtq2VVFVpUWrVdBqQaWq3qeqSkV5uYqKChWyOmddEmj5gTlz5rB161aGDx8OYP33iy++6OGaCSGE8BWKAmVlUFQko46cIYGWH9i6dSsZGRmoVCoURbH+WwjR+q1YsYL9+/fTp08f7r//fk9XRwi/I4GWHxg+fDgqlYr09HSAOv8WojWIjW1HXp58y7Zl//79ZGdnyZcrITxEAq1Wonb3YE2XYO1tW7du9XANhXCf7t0HcOyYfJzZ0qdPH1QqFb179/Z0VYTwS/LJ1ErUdA/m5+fXCa6km1AI/ybdhUJ4lgRarURN92Bubq41uLq8y1D4BlvZSdG4H35YR1mZio4db/B0VYQQog4JtFqJ2t2F27ZtIz093e5NWm7o3uPybt7LM5G2Zo7q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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -4553,88 +3220,37 @@ " BaselineLast\n", " RANP\n", " LSTM\n", - " LSTMSeq2Seq\n", - " TransformerSeq2Seq\n", - " TransformerProcess\n", " \n", " \n", " \n", " \n", - " IMOSCurrentsVel\n", - " rmse\n", - " 0.257789\n", - " 0.538145\n", - " 0.546141\n", - " 0.548482\n", - " 0.579640\n", - " 0.541376\n", - " \n", - " \n", - " smape\n", - " 0.285106\n", - " 0.707343\n", - " 0.719748\n", - " 0.716110\n", - " 0.769928\n", - " 0.703052\n", - " \n", - " \n", - " nll\n", - " 1.633936\n", - " 23.305540\n", - " 19.444048\n", - " 14.519804\n", - " 46.982059\n", - " 7.354424\n", - " \n", - " \n", " BejingPM25\n", " rmse\n", - " 1.383076\n", - " 1.087366\n", - " 1.032753\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 1.311697\n", + " 1.079460\n", + " 1.081479\n", " \n", " \n", " smape\n", - " 0.278300\n", - " 0.226529\n", - " 0.212408\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 0.256622\n", + " 0.214426\n", + " 0.215373\n", " \n", " \n", " nll\n", - " 1.707181\n", - " 1.478179\n", - " 1.407227\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 1.651788\n", + " 1.677931\n", + " 1.706878\n", " \n", " \n", "\n", "" ], "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 NaN \n", - " smape 0.278300 0.226529 0.212408 NaN \n", - " nll 1.707181 1.478179 1.407227 NaN \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN " + " BaselineLast RANP LSTM\n", + "BejingPM25 rmse 1.311697 1.079460 1.081479\n", + " smape 0.256622 0.214426 0.215373\n", + " nll 1.651788 1.677931 1.706878" ] }, "metadata": {}, @@ -4645,24 +3261,14 @@ "output_type": "stream", "text": [ "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", "\n", " | Name | Type | Params\n", "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 108 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "---------------------------------------\n", "0 | _model | LSTMSeq2Seq | 108 K \n" ] }, @@ -4690,7 +3296,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0fe558affae4417a8e618dd3e0f61faa", + "model_id": "ab686dd404f0498cb8031c7ced3b09cd", "version_major": 2, "version_minor": 0 }, @@ -4757,11 +3363,25 @@ "metadata": {}, "output_type": "display_data" }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" + "Epoch 5: reducing learning rate of group 0 to 3.0000e-04.\n" ] }, { @@ -4778,6 +3398,20 @@ "metadata": {}, "output_type": "display_data" }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", @@ -4793,7 +3427,7 @@ "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=34.0), HTML(value='')))" + "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=17.0), HTML(value='')))" ] }, "metadata": {}, @@ -4804,9 +3438,54 @@ "output_type": "stream", "text": [ "BejingPM25 LSTMSeq2Seq\n", - "mean_NLL 1.39\n" + "mean_NLL 2.93\n" ] }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkkAAACuCAYAAAAiXpknAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXQUdYIH8G9VV9+504EcJEAgHBIVOSSoIE5A5Riv5VBHF/TNRBmRwcEZcRVwnrrCMLjgeziMeC3O7ijrjL51l3kujLgMq6DiEQyg3CSSg6Rz91nH/tFHukPnADrpdPL9vJeX7qrqql9+kzFffqegaZoGIiIiIgojxroARERERH0RQxIRERFRBAxJRERERBEwJBERERFFwJBEREREFAFDEhEREVEEDElEFDUzZszAT3/60w7PP/PMMxg5cmQvloiI6NIxJBFRr3n88cexf//+bl8/cuRIPPPMMz1XICKiTkixLgARDRwJCQlISEjo9eeqqgpN06DT6Xr92UQUv9iSRERR9+yzzyIzMxNpaWn4x3/8R7S0tAC4sLutoqIC//AP/wCbzQaTyYT8/Hxs2LABgK/r7sSJE/jNb34DQRAgCAJOnz4NANi/fz+mT58Os9mM1NRU3HvvvaipqQneN/Ccd955B2PGjIHBYMArr7wCnU6H8vLysLJu374dycnJaG1t7eFaIaJ4w5BERFH17rvvwm634+OPP8bbb7+N//qv/8L69esjXvvzn/8cjY2N2L17N44ePYrXXnsNQ4YMAQD85S9/wbBhw7By5UpUVlaisrISubm5qKqqws0334whQ4bgs88+wwcffIBvv/0W8+fPD7v3uXPn8PLLL+Nf//VfcfjwYdx3330oKCjA66+/Hnbdtm3bcO+998JqtfZMhRBR3GJ3GxFF1dChQ/Ev//IvAIAxY8Zg0aJF2L17N5599tkLrj1z5gzuvPNOjB8/HgAwbNiw4Lm0tDTodDokJCQgMzMzeHzLli1ISkrCm2++CYPBAAB46623MH78eOzduxfTp08HALhcLrz11lvIy8sLfrakpASbN2/G6tWrIYoijh49in379uGll16Kej0QUfxjSxIRRdXVV18d9j47OxvV1dURr12xYgX++Z//GVOmTMETTzyBvXv3dnn/srIyFBUVBQNS4JnJyckoKysLHhs8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4403cN9990EQhOBzjx49is2bN2P16tV49913UVFREZOfn4jiE0MSEfW4EydOoKmpCfPnz4ckSRg8eDCKi4vxySefAADy8/NRVFQESZIwb948eL1eHDt2DMeOHYPL5cIdd9wBSZJQWFiICRMmYN++fVBVFXv27MGSJUuQlpYGURQxevRo6PX64HMXLFgAg8GAYcOGYejQoThz5kysqoCI4hC724iox50/fx719fVYsmRJ8Jiqqhg7dixsNhvS09ODx0VRRHp6Ourr6wEANpsNotj277mMjAzY7XY0NzfD6/UiMzOzw+empKQEXxuNRrhcrij+VETU3zEkEVGPs9lsGDRoEF566aULzu3YsQN1dXXB96qqoq6uDqmpqQCA2tpaqKoaDEq1tbXIyspCYmIi9Ho9qqqqguOXiIiiid1tRNTjRo4cCbPZjPfffx8ejweqquLs2bM4fvw4AODkyZM4cOAAFEXBzp07odfrUVBQgIKCAhiNRvznf/4nZFlGWVkZDh48iOuvvx6iKOKmm27C9u3bYbfboaoqvv/+e3i93hj/tETUXwiapmmxLgQR9X92ux3bt29HWVkZZFlGdnY2Fi1ahKNHj4bNbsvMzMTDDz+M/Px8AEB5eXnY7LZ77rkH1157LQDf7LZ///d/x6effgqXy4Vhw4bhqaeeQkNDA5YtW4Y//elP0Ol0AIBnnnkG06ZNQ3FxcczqgIjiC0MSEcXUjh07UFVVheXLl8e6KEREYdjdRkRERBQBQxIRERFRBOxuIyIiIoqALUlEREREETAkEREREUXAkEREREQUAUMSERERUQQMSUREREQRMCQRERERRfD/uBhhkOmKL1cAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " loss/train step loss/val\n", + "epoch \n", + "0.0 1.274902 167.000000 1.425981\n", + "1.0 1.217166 418.333333 1.456909\n", + "2.0 1.141105 669.666667 1.588053\n", + "3.0 1.075355 921.000000 1.849539\n", + "4.0 1.000663 1172.333333 2.422608\n", + "5.0 0.868863 1423.666667 3.205956\n", + "6.0 0.787605 1692.714286 3.678635\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAACuCAYAAADux6PMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de1yUVf4H8M/MwDAgCAyMoqigoiaaoqIVKqhgtq55yzJ/poJ5+5mXdG012zRrS6344T0tzdum6Zqkla2JKd7ajTS0wAt4SwPkMqIgggxzfn+wTA4zgw+XYRj4vF8vXjpnzvOcM3PmGb6cc55zZEIIASIiIiKqcXJbV4CIiIiovmKgRURERGQlDLSIiIiIrISBFhEREZGVMNAiIiIishIGWkRERERWwkCLqA47evQoZDIZbt68aeuqmHXt2jXIZDKcOHGiTpev1+vRrVs37Nmzp5ZqZj8iIyMRERFh62rUKUuXLsVzzz1n62pQPcFAi+xWZGQkZDIZ/vrXvxql37x5EzKZDEePHjWkyWQy/OMf/zB7HlsHC2UcHBywZcsWo7SQkBCkp6ejefPmtqlUPbF582YIIfjL0w6UXdd///vfjdI//vhjhIeHw8vLy+L1WnZs+R+dTmfI89Zbb5nNk5qaasgze/ZsHDt2zObfCVQ/MNAiu6ZSqbBq1Spcv37d1lWxCqVSCR8fH8jlvFSrIyYmBlOmTIFMJrN1VagCW7ZswS+//GL2D4uCggIMGDAA77//foXn6Nu3L9LT041+HBwcjPL4+/ub5GndurXheRcXF4wZMwYrVqyomRdGDRq/vcmuhYSEoGvXrli4cGGtlfnJJ5/A3d0dhYWFRunLly9Hq1atoNfrUVxcjLlz56JFixZwcnJCs2bN8OKLL1o8p7+/P0pKShAVFWX4CxswHTose3zgwAE89dRTcHZ2Ro8ePZCUlISkpCT06dMHLi4u6NWrF5KTk43KOH36NJ5++mm4urpCo9Fg5MiRjwxQd+zYgSeeeALu7u7w9vbGn//8Z1y6dMkkX1paGoYMGQIXFxe0adPGpGcuPz8fs2fPhq+vL1xcXNCtWzfs3bvXKM8bb7yBjh07wsXFBS1btsS0adNw584dozy7d+9GQEAAVCoVQkJCcO7cuQrrDwCJiYlISkrC8OHDjdJlMhnWrVuHcePGwc3NDS1atMDSpUuN8uTl5WHq1KnQaDRwcnJCcHAwvvvuu0eWWd7GjRvRsWNHqFQqqNVqhIaGGtr09u3beOmll9CqVSs4OzujQ4cOiI6OxsObdpQN761evRotWrSAq6srJk2ahOLiYqxfvx5+fn7w9PTElClT8ODBA8Nx/fr1w8SJE7FgwQJ4e3ujcePGmDJlislnt7zPP/8cQUFBUKlU8Pf3x9y5c3Hv3j3D8ydOnEDv3r3h5uYGNzc3dO3aFQcPHqz0+/Kw5ORkLFiwAJ9//jkcHR1Nnn/11VfxxhtvIDw8vMLzlP1x8vBPeQqFwiSPQqEwyjNixAjs27cPeXl51XpdRBBEdmrChAkiPDxcHDt2TMhkMpGQkCCEEOLGjRsCgDhy5IghLwCxfft2s+e5evWqACCOHz8uqdzc3FyhUqnE559/bpQeGBgoXn/9dSGEENHR0cLX11ccOXJEXL9+Xfz4448iJibG4jkzMzOFQqEQK1asEOnp6SI9PV0IIcSRI0cEAHHjxg2jx0FBQeLw4cMiKSlJPPnkk+Lxxx8Xffv2FXFxcSI5OVn07t1b9OrVy3D+pKQk0ahRI7Fo0SJx/vx5ce7cOTFq1CjRrl07cf/+fYv1+vTTT8X+/ftFamqqOHPmjHj22WdFQECAKCoqMnrvWrduLXbt2iVSUlLE66+/LhQKhbh48aIQQgi9Xi/69esnwsLCxPHjx8Xly5fFhg0bhKOjo4iLizOU9c4774hjx46Jq1eviri4ONGhQwcxfvx4w/NnzpwRcrlcLFiwQFy4cEF88cUXwt/f/5Ftt2LFCuHr62uSDkA0adJEfPzxxyI1NVWsWbNGADCq06hRo4Sfn5/417/+JZKTk8WsWbOEo6OjOH/+vMXyyvvpp5+EQqEQW7duFdeuXRPnzp0Tn3zyiaFN09PTxdKlS8Xp06fFlStXxPbt20WjRo3Ep59+ajjHhAkThJubmxg/frxITk4W+/fvF05OTuKZZ54R48aNE8nJyeLrr78WKpVKrFu3znBcWFiYcHNzE5MmTTIcp9FoxKuvvmp07vDwcMPjzZs3Cw8PD7Ft2zZx+fJlER8fLx5//HHx0ksvCSGEKC4uFp6enmLOnDni0qVL4tKlS2Lv3r3i2LFjhnMEBgaKRo0aVfhz/fp1Q/579+6JTp06iW3btgkhhPDz8xPvvPOO2fezouu17H1q2rSp8Pf3FyNHjhS//vqrUZ7FixcLJycn4evrK3x9fcUzzzwjTp48aXKu/Px8IZPJxIEDB8zWg0gqBlpktx7+BTF8+HARFhYmhLB+oCWEEKNHjxaDBw82PE5ISBAAxIULF4QQQsyaNUv0799f6PV6yedUKBRi8+bNRmmWAq3Y2FhDnt27dwsAYs+ePYa0vXv3CgAiLy9PCFH6Xo0ePdro3IWFhcLZ2dnoXI+Sk5MjAIgTJ04IIf5476Kjow15dDqdcHV1FevXrzfU2cnJSeTm5hqdKyoqSgwbNsxiWXv37hVKpVKUlJQIIYQYO3asCAkJMcqzevXqR7bd7NmzjYLOMgDEzJkzjdIee+wxsWDBAiGEECkpKQKA+Oabb4zydOvWTURFRVksz9zraNy4sbhz547kY2bNmiUiIiIMjydMmCA0Go0hwBVCiMGDBwsvLy9RWFhoSBs6dKh47rnnDI/DwsKEn5+f0Ol0hrQNGzYIJycnkZ+fbzj3w4GWn5+f+Oijj4zqEx8fLwAIrVYrtFqtyfVV3rVr10RKSkqFP8XFxYb8kZGRYty4cUZ1qEqgtWPHDrF3715x7tw5cejQITFo0CDh7OwsfvnlF0Oeb775RuzYsUMkJiaKY8eOibFjxwq5XC6+++47k/N5enqKNWvWWHydRFIYD1wT2anly5ejU6dO2L9/P7p372718iZMmIChQ4ciMzMTTZo0wbZt29CrVy906NABABAVFYWBAwciICAAAwcOxMCBA/Hss89CqVTWSPldu3Y1/L9saKRLly4maZmZmXB1dUVCQgJSU1Ph6upqdJ7CwkKkpKRYLCcxMRFLlixBYmIisrOzDcNZ169fR+/evQ35goKCDP9XKBRo0qQJbt26BQBISEjAgwcP4Ovra3TuBw8eoF27dobHe/fuxYoVK5Camoq7d+9Cr9fjwYMHyMjIQPPmzZGcnGwybNSnT58K3qVS9+/fh0qlMvvcw/UGgObNmxvqXTb0GhoaapQnNDQUP/zwwyPLLTNw4EC0adMGrVu3xsCBAzFgwACMHDkS3t7eAErviHz//ffx+eef4+bNmygsLERxcTH8/PyMztOxY0ejz4+Pjw86dOgAJycno7Tz588bHderVy+jYbHevXujqKgIly9fNvrMAEBWVhauX7+OuXPnYt68eYb0snZPTU1Fz549MWnSJAwaNAgDBgxAWFgYRowYYfjsAzCpe0U+++wznDx5EmfOnJF8jCVjxowx/P/xxx9HaGgoOnXqhFWrVuHjjz8GAAwePNjomL59++LmzZv44IMPMHDgQKPnVCoV7t+/X+16UcPGOVpUL7Rv3x5Tp07F/Pnzje4wspann34a3t7e2LFjB4qLi/H5559jwoQJhueDgoJw9epVfPjhh1AqlZg9ezaCgoJw9+7dGin/4TksZfO5zKXp9XrDv+PGjUNiYqLRz6VLlzBp0iSzZRQUFODpp5+GTCbD5s2b8eOPPyIhIQEymcxoHhAAkwBSJpMZle3u7m5SdnJyMr799lsAwH/+8x88//zzCA0NRWxsLM6cOYP169cDgElZlaXRaKDVas0+V1G9a4qrqyt++uknxMbGon379li/fj0CAgJw+vRpAEB0dDSWLl2KWbNm4dChQ0hMTMSkSZNMXnf5eUsymcxsWnXqX3bsypUrjdrq7NmzSElJweOPPw6gdJ7i6dOnMXDgQMTHx6Nz587YsGGD4TydOnWCq6trhT+//fYbAODQoUNITU2Fh4cHHBwc4ODggOvXr2Px4sUWA2SplEolgoODce3atQrzPfXUU2bzaLVaaDSaatWBiD1aVG8sXrwY27dvN/zlak0KhQJjx47F9u3b0aZNG9y5c8dksrurqytGjBiBESNGYOHChWjWrBni4+Px7LPPmj2nUqlESUmJVeobHByMc+fOoW3btpLvvDt//jyysrLw7rvvomPHjgCAU6dOGU3Sllp2bm4uCgsL0blzZ7N5Tpw4AW9vb6Nb+suveRUYGIhTp04ZpZ08efKR5Xfv3h3R0dEoLi42O8nakk6dOgEAjh07ZtQLcuzYMXTr1k3yeYDSz0toaChCQ0OxZMkSBAYGYseOHejRoweOHTuGZ555BhMnTjTkr6iXsbISEhJQUlJi6NU6deoUnJyc0LZtW5O8TZs2RcuWLXHx4kVMnjy5wvN27twZnTt3xty5czFt2jR8/PHHmDp1KgDgwIEDKC4urvD4sjsL3333XaPeMwAYNGgQnnvuOcP5qqqkpARnz57FU089VWG+M2fOoGXLlkZpKSkpKCoqQnBwcLXqQMRAi+oNjUaDBQsW4J133jH7/G+//YbExESjtIdvIzc3tObv7w8PDw+z5xs/fjyio6OxePFiDBkyBGq12vDcBx98gObNmyMoKAguLi7YuXMnFAoF2rdvb7H+rVu3xpEjR/CnP/0JSqXSMLRUExYuXIhevXrhpZdewuzZs6HRaHDt2jV8+eWXmD17Ntq0aWNyjJ+fH5ycnLB69Wr85S9/wbVr17BgwYJKL5EwYMAAREREYOTIkXj//ffRpUsX3L59G6dOnYJKpcLkyZPRoUMHZGVlYdOmTejfvz9OnDiBdevWGZ1nzpw56NmzJ9544w1MmDABSUlJiI6OfmT5/fv3BwD8+9//Rt++fSXXu23btnj++ecxffp0bNiwAX5+fvjoo4/w66+/YseOHYZ84eHh6NWrl8kdi2X27duHK1euIDQ0FBqNBqdPn8aNGzcQGBgIAOjQoQO2b9+OI0eOwNfXF9u2bcN//vMfeHp6Sq5rRXJycvDKK69g9uzZuHLlCt58801MnToVjRo1Mpv/3XffxcsvvwxPT08MGzYMjo6OOH/+PL799lts2LABqamp+OSTT/Dss8+iZcuWSEtLw/Hjx42G7CszdOjr62syrOzo6IgmTZoYgl0AyMjIQEZGBtLS0gD8cb2W3TWYn5+PRYsW4bnnnoOvry8yMzPxwQcf4MqVK0Zr6M2dOxdDhgyBv78/7t69i08++QSHDh3Cvn37jOpw9OhR+Pn5GdWBqEpsPEeMqMrKT+IVQoj79++Lli1bmp0Mb+5n6dKlhsm15n527txZYR2CgoIEAPHll18apa9fv150795duLm5iUaNGong4GCTPOV9++234rHHHhOOjo6i7NK0NBm+7LEQQhw/flwAEFevXjWk/fDDDwKASElJMaSdO3dODB06VHh4eAiVSiXatm0rJk+eLHJycizW6Z///KcICAgQTk5OIigoSBw9etRo0r6liclt27YVixcvNjwuKCgQ8+fPF/7+/sLR0VE0bdpUDBo0SBw+fNiQ529/+5to0qSJcHFxEX/605/Ejh07TF7Xzp07RZs2bYRSqRS9evUSX375paQbGSIjI8XkyZON0mDmBonw8HAxYcIEw+M7d+6IKVOmCG9vb6FUKkWPHj3EwYMHjY7x8/MzOqa8+Ph40b9/f+Ht7S2cnJxEQECAWLp0qeH53Nxc8fzzzws3NzehVqvF9OnTxd/+9jfh5+dnyGPus/7yyy8bbgApM3XqVNG7d2/D47CwMBEVFSXmzZsn1Gq1cHV1FS+//LIoKCio8NyxsbHiySefFM7OzsLNzU107dpVLFmyRAghRFpamhgxYoTw9fUVSqVSNGvWTEyaNMnkZofqMDcZfvHixWav0bLPWUFBgRg0aJBo2rSpcHR0FM2bNxfPPvusOH36tNF5XnzxRUPdNRqNCA8PN/oclgkNDRXvvfdejb0marhkQlRyHICIyM6UTeJOSkpqUKvs9+vXDwEBAdi4caOtq2JXfvzxRwwdOhSXLl1C48aNbV0dsnOPHDrU6XRISUnB9evXce/ePTRq1Ah+fn5o166dyWq7RER1UUBAADZs2ICrV682qECLqubWrVv4xz/+wSCLaoTFHq28vDzExsYiPj4erq6u8PX1hUqlQmFhIX7//Xfk5+cjLCwMw4cP54eRiKgOYo8Wke1ZDLTmzJmD/v37o0+fPkaTfMtotVqcOHECR44cQUxMjNUrSkRERGRvLAZaOp1O0tCg1HxEREREDY3FBUvLgie9Xo+ZM2daXBOFQRYRERGReY9cGV4ul0Mulz9y8TkiIiIiMiZpeYeDBw/ip59+wogRI6BWq40WLGzatKnVKle2MJ21eHt7Izs726plkHWw7ewX286+sf3sF9vOuizd0Sxp3O/TTz8FAJw7d87kuV27dlWjWkRERET1l6RAi8EUUd2hz8oA9n0GkauFzEMNDBtb+kS5NLnGxyp5q3u8TvcA+i2rTY4nKs/cZ4qfFbI3lZrJnp2dDa1WW+F+bURUeZZ+oZRPF32eBratBrIyAJTuQYJLSYBMBmiz/ki7chEl42fWfN4aOP62QgGRfcvoeP2ct0vfiGoEelQ91Q2UazpQN/tZ/+9nTXbiu2r9UUFUmyTN0crOzsbKlStx7do1AMD27dvx73//G4mJiZg2bZrVKsc5WmSJPbfdo36hAAA0PkC54AUA4KQCigqlFeTVBMjJrPm81ji+ay8g7Tfj1+rpbRSoWUzT+EBWiUDNnn7R1laPJACImEWS3n+5QgH9fwNlAJY/q5Vov0p91sunV6b8/+Y1F6g1BPb8vWkPLM3RkhRovffee3jssccwfPhwvPzyy9i8eTMKCgowb948rFu3rsYrW4aBFllS19quqj1SACz/Qqlu8OLcCLh/r+bzWuN4N3cg707Vj5caqFXwi7a2hqmq9VmpTKBSmUCneSvg7I9Vf1G2DtQrc7yZQM1SoF7fArC69r1Z31RrMnxqaioWLFgAufyP1SBcXFxQUFBQM7UjsiOVGeIwSU/8j2lQZamHqqAagQsAuFQi+KlMXmscX11XLpoGarfN/ELJygDWvAPx3/e8wrayMEwFoMo9StX+rFh6TVtWmgYa5vJaOr7wvml6ZVT3s1qbx5d/T7MyIHZtNArUHzVMSVQZkgItd3d3ZGRkGEVrN2/ehLe3t9UqRlSbqjVHytwvREu//KQO+wGWg5fyf5FXt5fDWkM/lRl6qm6PSmVIbStzQVl156hZ67NS3UCluqwVqJf/rFvq/a1u+eYC9QqCcgZfVBmKt956661HZVIqldi0aRNUKhV+/vlnaDQabN68GcOHD4efn5/VKpeXl2e1cwPslbNn1Wk7fVYGxM4N0H//DZCcCL2LG7BheekvxpxM4PfrwLkECF9/0/Qzp4C7ucYnLNFZLkwncaFfJ5XxeTQ+wIRZQGoyUJBvnD75Ncj0JYBrY8gCOkI2cQ5kIeGQ5d/9Iy1yNhR+bYEuPY3Tq5u3Bo5XDx6FwuxbRsfLOncHziUYv1ZP7//+Ai2oOE3jA7RqC9z6Xdp7bYm5tirftoUFxmUDpXW+9CvwcPBoKW9NfFbMcfesXqDRsSugL5H0/std3SAeDuwsfVYr034SP+sYNdF8Pqnll7/OHk5/UGSaXj5vQX7pd8D1y0bfFejSE6Ig3+h7RbRsA1kjV9Nz2hB/51mXm5ub2XRJc7QAICEhAXFxccjKyoK3tzciIiLQq1evGq1keZyjRZZIbTubzpGydLyFyby2nDdUmyy1Xa1M5q4L8+HMkfpZsVKPZGVuJlB7qqGthbsOLX3WpfY+Sxm6Nbx/1e1RNTdHsJYn3kt5/erImdDe1lbr/SfLqjUZPiUlBe3atTNJT01NRUBAQPVrZwEDLbJEStvpszJMf/lW5q69yvzylHonVAO/6wmw3nVXrV+0tXmHZzU/K+VfU00FOlLZ+/empfepWt8Vlm7mqOYfVQBq9A8NmVcTCCGkBer8rqq0agVaEyZMwNatW03So6KisHnz5urXzgIGWmRJ+bYz+yW17zOI/8RXvRD2SFmFra87m971Vw8+K7ZuP2upVu93Ze6arc7yFLV912glvuuoioGWXq8HAERGRmLr1q14OOutW7fw5ptvYuPGjY8s/MGDB1i8eDF0Oh1KSkrw5JNP4oUXXnjkcQy0yJKH285sz5XGB3B1B65elHZC9kjVGnu67qy1Cr89s6f2qy7Ja97ZenmM6i6PUs3e+4ayPMajVCnQGj16tMUTyuVyjBgxQlLAJIRAUVERVCoVdDodFi1ahMjIyEeuMM9Ai8zRZ2XA6V97UHgrvfTLr/C++S859kjVSbzu7FtDbz+rDD3aeh06ayw4XAPDpPb2XVulQCsrKwtCCLz11ltYsmTJHwfJZGjcuDGUSmWlK1JUVIRFixZh0qRJZud9PYyBFpVntvfKwdH8HVut2wP5d9kjVcfwurNvbD/zbHrjjcQFeys1R8uKc9SsMcwOwObBW7XmaO3fvx9Dhw41Sf/6668xZMgQSRXQ6/WYP38+MjIyMGjQILz00kuPPIaBFpWn3xgted6V7ImwP+ZqMaiqM3jd2Te2n3TV2m7LCneNVuauQ6vNUbPGjSOVfK+s9TugzkyGv3fvHj788ENERUWhVatWRs/FxcUhLi4OALBs2TI8ePCgUueuLAcHB+h0FaxrQzany0jDvZ0fo0SbDYXaG7qM36G7lGSa0VEJFP/xeVE09YXHWyvh4GP+g0+2w+vOvrH9qqf8d1qjMVPg4NPcbDoASWlSv+cq23bl6+QUMQz5a99DyUNr1ima+kLRqg0eJByXdlIXV+P1zipJ3sQH+syMR2e0QBX6NNznvFXl4ytiaZSvwkDr119/BVAa9CxYsMDouVu3buGLL76o0l6He/bsgVKpNNtL9jD2aDVslVqeoWsvyFTO7LmyA7zu7Bvbz37VRNtVe46ardes6/A4FPPerfrxFajSXocfffQRAKC4uNjwf6B0jpa7uzsmTpwoqfC7d+9CoVCgUaNGePDgAc6dO4dhw4ZJrTs1AJaWZzC6cIHSC9fcXS+jJzGwIiKyMrnGB5j0F5N0/Zy3a3aY1ErbLck81FU+tsplShk6XLNmDWbMmFHlQq5fv461a9dCr9dDCIGnnnoKo0aNeuRx7NFqGCq9PEPr9lC19DfcdcjeK/vC686+sf3sV223nVVW8a+vc7QAQKfTISUlBbdv30ZISAgKC0sjTZVKVXO1LIeBVsNgcYK7hS5m2RNhaLJgKdvOTvG6s29sP/tlb21XnUCtLt11WOHQYZnffvsNy5cvh6OjI3JychASEoLk5GTEx8djzpw5NVpRqv9M7m6xNLGxsQcgl5v+RVN2ARERUb1laZjSUrrktFomKdD65JNPMHr0aISGhiIqKgoAEBgYiA0bNli1clT/lB8mFEDpWLwZsibNgMnzuDwDERHZLUmB1s2bN9G3b1+jNJVKZfXlF6geqsQEd0NQVQf+IiEiIqoKSYGWRqPBlStX0LZtW0NaamoqfHzYs0AVkzxM2LwVZE2aseeKiIjqFUmB1ujRo7Fs2TIMHDgQOp0OsbGxOHToEKZOnWrt+pEdq+wwoZw9V0REVM/IpWTq0aMHFi5ciLt37yIwMBBZWVmYN28eunbtau36kT2raJjwYZzgTkRE9ZSkHi0AaN26NSZNmmTNupAdM3e7rcjVms/MYUIiImogJAVaOp0OX3zxBU6ePInbt2/D09MTISEhGDlypMW9fajhMDtEeOUi0LyV2fwcJiQiooZC8vIOaWlpiIqKgkajQVZWFmJjY6HVajF9+nRr15HqGJMJ7oX3TYcIszJKAy2ND9fBIiKiBktSoJWQkIDVq1ejUaNGAIAWLVqgXbt2mDlzplUrR3WP2d4rB0fzmQvvQ1Zu/ysOExIRUUMiKdDy8PBAUVGRIdACgAcPHsDT09NqFaO6QVLvla7Y7LEyDzXXwSIiogbNYqD166+/Gv4fGhqK9957D8888wy8vLyQk5ODgwcPIjQ0tFYqSbZRqd4rR0eg+KGAi0OERERElgOtjz76yCQtNjbW6HFcXByGDx9e87WiWmd2k05zyzNY6L1CYDfIVM4cIiQiInqIxUBr7dq1tVkPsiGLdw26ups/wEzvlWz0JAZWRERE5UheR4vqMXM9V1kZgF5vPj97r4iIiCRhoNUASd5/sLEHIJebLM/A3isiIiJpGGg1MJXdfxCT53F5BiIioipioNXQVLT/YFHhH2n/vWuQyzMQERFVnaRA6+7du1AqlVCpVNDr9YiPj4dMJkNoaCjkckn7UpONSB4m5P6DRERENU5SoLVs2TJMnjwZrVu3xs6dO3H69GkoFApcu3YNkZGRVq4iVVVlhwm5/yAREVHNktQdlZ6eDn9/fwDA8ePHsXDhQixevBinTp2yZt2ouioaJnwYFxclIiKyCkk9WnK5HDqdDunp6XBxcYG3tzf0ej0KCwsffTCA7OxsrF27Frm5uZDJZIiIiMDgwYOrVXEyZm7BUZGrNZ+Zw4RERES1QlKgFRQUhJiYGOTl5SEkJAQAcPPmTajVakmFKBQKjBs3Dm3atMH9+/exYMECdOnSBS1atKh6zcnA4oKjzVuZzc9hQiIiotohKdCaNm0a4uPjoVAoDPsb5uXl4fnnn5dUiKenp2EDamdnZ/j6+kKr1TLQqimWFhxt3qp0WLDcOlgcJiQiIqodkgItR0dHREREGKV16tSpSgVmZmbi6tWrCAgIqNLxZMriEGHhfcjmvM11sIiIiGzEYqC1YcMGTJ06FQCwevVqyGQys/lmzJghubDCwkJER0cjMjISLi4uJs/HxcUhLi4OQOmdjt7e3pLPXRUODg5WL8MadBlpuLfzY5Ros6FQe0PR2AMPzORTNW0G946dgY5La72O1mavbUdsO3vH9rNfbDvbsASKLAYAABTHSURBVBhoNWnSxPB/H5/q94DodDpER0ejb9++eOKJJ8zmiYiIMOo5y87Orna5FfH29rZ6GTWt/HysYgDw9AbUGkCb9UdGjQ+Knhlld69PKntsOyrFtrNvbD/7xbazrubNm5tNtxhojRgxwvB/qXOxLBFCYP369fD19cWQIUOqda4Gz9x8rNvZQNdekLUL5BAhERFRHVIrW/BcvHgRx44dQ6tWrfDaa68BAMaMGYPu3bvXRvH1SkXzseQz/la7lSEiIqIK1Uqg9dhjj2H37t21UVS9Y7I+lsrZbD6Zh7SlNoiIiKj2cFPpOszs+lgW5mNxyQYiIqK655Fb8Oj1euzatQvFxcW1UR96mKX5WC1bQ/ZEGNDhccieCINsztucj0VERFQHPbJHSy6X47vvvqv2hHiqPM7HIiIism+Shg5DQ0Nx6NAhDBo0yNr1abDM7VUo81CXDheWw/lYRERE9kFSoJWamop//etf2L9/P7y8vIwWL12yZInVKtdQWNyrcPzM0n+5hQ4REZFdkhRohYeHIzw83Np1abgs7FUoO/EdwC10iIiI7JakQKtfv35WrkbDZmkulsjVQqHxASb9pZZrRERERDVBUqAlhMDhw4dx8uRJ5OXl4cMPP0RycjJyc3MREhJi7TrWe5yLRUREVD89cnkHANi1axeOHDmCiIgIwz5JXl5e2Ldvn1UrV1/pszKg3xiNkg/fgH5jNESfp0vnXj2Mc7GIiIjsnqQerfj4eCxfvhyNGzfGxo0bAZRuOp2ZmWnVytVHFU18l534jnOxiIiI6hFJgZZer4dKpTJKKywsNEkjCSqY+C7nXCwiIqJ6RdLQYbdu3bBt2zbD6vBCCOzatQs9evSwauXqo4omvhMREVH9IinQGj9+PG7fvo3IyEgUFBRg/PjxyMrKwtixnENUWZYmuHPiOxERUf0jaejQxcUFr732GnJzc5GdnQ1vb294eHhYu271QvkV30Wfp7kIKRERUQMhKdA6cOAAOnXqBD8/PwZYlcCJ70RERA2bpEDrypUr+Prrr3H//n107NgRgYGBCAwMROvWrY2246FyOPGdiIioQZMUaM2YMQMAkJmZieTkZCQnJ2PPnj0AgC1btlitcvaOE9+JiIgaNkmBFgCkpaUhOTkZSUlJuHjxIpo1a4bAwEBr1s3uccV3IiKihk1SoDV58mSoVCo8+eSTCAsLw5QpU+Ds7GztutmV8pPeMWxs6Q8nvhMRETVYkgKtHj164MKFC0hISMC9e/eQn5+PwMBAqNXsmQEsT3qXzXkbsjlvmwRgnPhORETUMEgKtKZNmwYAyM3Nxfnz55GcnIyNGzfCzc0Nq1evfuTx69atw5kzZ+Du7o7o6Ojq1bgusjDpHfs+K530zonvREREDZKkBUsB4OrVqzh58iSOHz+OEydOwMnJCQEBAZKO7devHxYuXFjlStZ1nPRORERE5kjq0YqKioKLiws6duyI4OBgjB8/Hj4+0oe/AgMD6/UG1Jz0TkREROZICrSWL1+OJk2aWLsu9ouT3omIiMgMSYFWkyZNkJ6ejpMnT0Kr1UKtViMkJATNmzev0crExcUhLi4OALBs2TJ4e3vX6PnLc3BwqFIZuow03Nv5MUq02VCovdFozBTg7TUmaQ4+Nfv+0B+q2nZke2w7+8b2s19sO9uQCSHMjXoZ+emnn7B69Wp0794dGo0G2dnZOH36NGbOnIng4GBJBWVmZmL58uWVmgyflpYmOW9VeHt7Izs7u1LHlL/DEACg8YFsztu8m7AWVaXtqG5g29k3tp/9YttZl6XOJ0k9Wjt37sRrr72Gzp07G9KSkpLw6aefSg606o0K7jDk3YVERET0MEmBllarRceOHY3SHnvsMeTk5EgqZMWKFUhOTkZeXh6mTZuGF154AQMGDKh8besA3mFIREREUkkKtPz9/fHVV19h+PDhhrSvv/4a/v7+kgp59dVXq1S5uoh3GBIREZFUkgKtSZMmYfny5fj222/h5eWFnJwcKJVKzJ8/39r1q3t4hyERERFJJCnQ8vX1RUxMDC5duoTbt29DrVYjICAADg6S96S2W+b2MOS2OkRERCSF5EhJoVCYzNOq7yraw1DOie9ERET0CBYDrf/93/+VdIKPPvqoxipT5/AOQyIiIqoGi4HWzJkza7MedRLvMCQiIqLqsBhoBQYG1mY96iTeYUhERETVIbf0xIEDB1BcXFzhwcXFxThw4ECNV6rOGDa29I7Ch/EOQyIiIpLIYo9Wbm4uZs2ahW7duiEwMBDNmzeHSqVCYWEh0tLSkJycjJ9//hlhYWG1Wd9aJdf4QM87DImIiKiKKtzr8O7duzh69CgSExPx22+/4d69e3B1dUWrVq3QrVs3hIWFwc3NzWqVq829Ds0t48CAqu7inl32i21n39h+9ottZ11V2uuwcePGGDp0KIYOHWqVStUVlpZx0HOjaCIiIqoGi3O0GpSKlnEgIiIiqiIGWuAyDkRERGQdDLRgebkGLuNARERE1VGtQEuv19dUPWyLyzgQERGRFVQ50CouLsaYMWNqsi42I9f4QDbnbcieCAM6PA7ZE2Gl+xlyIjwRERFVg+RNpes7ucaH+xcSERFRjeIcLSIiIiIrYaBFREREZCUVDh0uWrQIMpnM7HP1ZiI8ERERkZVUGGgNGDCgwoPDw8NrtDK1pWy7He29POgbuXG7HSIiIrKKCgOtfv36WXxOr9fj6NGjNVwd63t4u53iskRut0NERERWUOU5WiUlJdiwYYPk/ImJiZg9ezZmzpyJL7/8sqrFVh+32yEiIqJaUiuT4fV6PTZt2oSFCxciJiYGJ0+exM2bN2ujaBPcboeIiIhqS60EWqmpqfDx8UHTpk3h4OCAkJAQJCQk1EbRJrjdDhEREdWWCudo3bp1y+JzxcXFFp8rT6vVwsvLy/DYy8sLKSkpko+vUcPGAlcuGg8fcrsdIiIisoIKA61Zs2bVVj0AAHFxcYiLiwMALFu2DN7e3jVfiLc3dG+vwb2dH0N/OwdyTy80GjMFDj7Na74sshoHBwfrfD7I6th29o3tZ7/YdrZRYaC1a9euGilErVYjJyfH8DgnJwdqtelQXUREBCIiIgyPs7Oza6R8Ew5KYNwMeHt7Izs7G7mlhVmnLLKKsrYj+8O2s29sP/vFtrOu5s3Nd9jUyhyttm3bIj09HZmZmdDpdDh16hSCg4Nro2giIiIim5EJIYSlJ5csWVLxwTIZFi1aJKmgM2fOYOvWrdDr9ejfvz9GjhxZuZoSERER2ZkKe7T69u1r9qdTp0747bffcOnSJckFde/eHStXrsTq1avrTJC1YMECW1eBqohtZ7/YdvaN7We/2Ha2UaktePLy8hAbG4vDhw8jJCQEo0aNsmrliIiIiOxZhYFWmYKCAuzfvx8HDx5E9+7dsXz5cvj4cLsaIiIioopUGGg9ePAA33zzDb7++msEBgbi7bffRsuWLWurblb38B2OZF/YdvaLbWff2H72i21nGxVOhp88eTL0ej2GDh2Ktm3bms3TuXNnq1WOiIiIyJ5V2KOlVCoBAN99953Z52UyGdasWVPztSIiIiKqByrs0aqvEhMTsXnzZuj1eoSHh2P48OG2rhKZ8corr0ClUkEul0OhUGDZsmXIz89HTEwMsrKyoNFoMGfOHLi6ukIIgc2bN+Pnn3+Gk5MTpk+fjjZt2tj6JTQY69atw5kzZ+Du7o7o6GgAqFJbHT16FHv37gUAjBw5Ev369bPVS2owzLXd7t27cfjwYTRu3BgAMGbMGHTv3h0AEBsbi++//x5yuRxRUVEICgoCwO9VW8jOzsbatWuRm5sLmUyGiIgIDB48mNdeXSMamJKSEjFjxgyRkZEhiouLxbx588SNGzdsXS0yY/r06eLOnTtGadu3bxexsbFCCCFiY2PF9u3bhRBCnD59Wrz77rtCr9eLixcvitdff73W69uQJSUlicuXL4u5c+ca0irbVnl5eeKVV14ReXl5Rv8n6zLXdrt27RL79u0zyXvjxg0xb9488eDBA3Hr1i0xY8YMUVJSwu9VG9FqteLy5ctCCCEKCgrErFmzxI0bN3jt1TG1sjJ8XZKamgofHx80bdoUDg4OCAkJQUJCgq2rRRIlJCQgLCwMABAWFmZou59++gmhoaGQyWRo37497t27h9u3b9uyqg1KYGAgXF1djdIq21aJiYno0qULXF1d4erqii5duiAxMbHWX0tDY67tLElISEBISAgcHR3RpEkT+Pj4IDU1ld+rNuLp6WnokXJ2doavry+0Wi2vvTpG0vIO9YlWq4WXl5fhsZeXF1JSUmxYI6rIu+++CwAYOHAgIiIicOfOHXh6egIAPDw8cOfOHQCl7frwZqleXl7QarWGvFT7KttW5a9NtVoNrVZbu5Umg4MHD+LYsWNo06YNxo8fD1dXV2i1WrRr186Q5+E24veqbWVmZuLq1asICAjgtVfHNLhAi+zHO++8A7VajTt37uDvf/+7yYadMpkMMpnMRrWjymBb2Zenn37asCD1rl27sG3bNkyfPt3GtSJLCgsLER0djcjISLi4uBg9x2vP9hrc0KFarUZOTo7hcU5ODtRqtQ1rRJaUtYu7uzt69uyJ1NRUuLu7G4YEb9++bZisq1arjXalZ7vaXmXbqvy1qdVq2YY24uHhAblcDrlcjvDwcFy+fBmA6fdnWRvxe9V2dDodoqOj0bdvXzzxxBMAeO3VNQ0u0Grbti3S09ORmZkJnU6HU6dOITg42NbVonIKCwtx//59w//PnTuHVq1aITg4GPHx8QCA+Ph49OzZEwAQHByMY8eOQQiBS5cuwcXFhcOGNlbZtgoKCsLZs2eRn5+P/Px8nD171nBHG9Wuh+c3/vjjj4aFqoODg3Hq1CkUFxcjMzMT6enpCAgI4PeqjQghsH79evj6+mLIkCGGdF57dUuDXN7hzJkz2Lp1K/R6Pfr3719nNrmmP9y6dQsffvghAKCkpAR9+vTByJEjkZeXh5iYGGRnZ5vctrxp0yacPXsWSqUS06dPt7jILtW8FStWIDk5GXl5eXB3d8cLL7yAnj17Vrqtvv/+e8TGxgIovcW8f//+tnxZDYK5tktKSsK1a9cgk8mg0WgwZcoUwx8ue/fuxZEjRyCXyxEZGYlu3boB4PeqLVy4cAGLFi1Cq1atDMODY8aMQbt27Xjt1SENMtAiIiIiqg0NbuiQiIiIqLYw0CIiIiKyEgZaRERERFbCQIuIiIjIShhoEREREVkJAy0ioockJSVh2rRptVLW7t27sWrVqlopi4hsg4EWEVnFK6+8gnPnzhmlHT16FG+++aaNakREVPsYaBGR3SspKbF1FYiIzOKm0kRkMzdv3sTGjRtx7do1qNVq/M///I9h65a33noLffv2RXh4OIDS3rDDhw/jnXfeAQC88MILmDhxIg4cOICSkhKsWbMGW7duxYkTJ1BcXAxvb2/Mnj0brVq1Min3yJEj2L9/P3JyctC4cWMMGzYMAwcONMrz1VdfYd++fZDL5RgzZoxhpezi4mLs3LkTP/zwA3Q6HXr27InIyEgolUrk5+djzZo1SElJgV6vR4cOHTB58mR4eXkBADIzM7F27VpcvXoV7dq1M9konYjqH/ZoEZFN6HQ6LF++HF26dMHGjRsxceJErFq1CmlpaZLPkZCQgPfeew8xMTE4e/Yszp8/j5UrV2LLli2YM2cO3NzczB7n7u6O+fPnY+vWrZg+fTq2bt2KK1euGJ7Pzc1FQUEB1q9fj2nTpmHTpk3Iz88HAHz22WdIT0/HBx98gFWrVkGr1WLPnj0ASvee69evH9atW4d169ZBqVRi06ZNhvOuXLkSbdq0waZNm/Dcc88Z9qMjovqLgRYRWc0HH3yAyMhIw8/GjRsNz6WkpKCwsBDDhw+Hg4MDOnfujO7du+PEiROSzz9ixAi4urpCqVTCwcEBhYWF+P333yGEQIsWLSxuLN69e3f4+PhAJpMhMDAQXbp0wYULFwzPKxQKjBo1Cg4ODujevTtUKhXS0tIghMDhw4cxYcIEuLq6wtnZGSNHjsTJkycBAG5ubnjyySfh5ORkeO78+fMAgOzsbFy+fBmjR4+Go6MjAgMD0aNHj6q8rURkRzh0SERW89prr6FLly6Gx2XDfwBw+/ZteHt7Qy7/4+89jUYDrVYr+fxlQ3IA0LlzZwwaNAibNm1CdnY2evXqhXHjxsHFxcXkuJ9//hl79uwxBE9FRUVGQ4xubm5QKBSGx05OTigsLMTdu3dRVFSEBQsWGJ4TQkCv1wMAioqKsHXrViQmJuLevXsAgPv370Ov10Or1aJRo0ZQqVRGrzc7O1vy6yUi+8NAi4hswtPTE9nZ2dDr9YZgKzs7G82aNQNQGtwUFRUZ8ufm5pqcQyaTGT0ePHgwBg8ejDt37iAmJgb79+/Hiy++aJSnuLgY0dHRmDFjBoKDg+Hg4ID3339fUp3d3NygVCrxf//3f1Cr1SbPf/XVV0hLS8N7770HDw8PXLt2DX/9618hhICnpyfu3buHwsJCQ7DFIIuo/uPQIRHZRLt27eDk5IT9+/dDp9MhKSkJp0+fRu/evQEA/v7++PHHH1FUVISMjAx8//33FZ4vNTUVKSkp0Ol0cHJygqOjo1FvWRmdTofi4mI0btwYCoUCP//8s8kyFJbI5XKEh4djy5YtuHPnDgBAq9UiMTERAFBYWAilUgkXFxfk5+fjn//8p+FYjUaDtm3bYvfu3dDpdLhw4QJOnz4tqVwisl/s0SIim3BwcMD8+fOxceNGxMbGQq1WY8aMGfD19QUA/PnPf8bly5cxefJk+Pn5oU+fPvjll18snu/+/fvYunUrbt26BaVSia5du2Lo0KEm+ZydnREVFYWYmBgUFxejR48ehjsdpRg7diz27NmDN954A3l5eVCr1Rg4cCCCgoIwePBgrFq1Ci+//DLUajWGDBmChIQEw7GzZs3C2rVrERUVhfbt2yM0NNQwxEhE9ZNMCCFsXQkiIiKi+ohDh0RERERWwkCLiIiIyEoYaBERERFZCQMtIiIiIithoEVERERkJQy0iIiIiKyEgRYRERGRlTDQIiIiIrISBlpEREREVvL/Lfn/yZH2FQsAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -4833,87 +3512,40 @@ " RANP\n", " LSTM\n", " LSTMSeq2Seq\n", - " TransformerSeq2Seq\n", - " TransformerProcess\n", " \n", " \n", " \n", " \n", - " IMOSCurrentsVel\n", - " rmse\n", - " 0.257789\n", - " 0.538145\n", - " 0.546141\n", - " 0.548482\n", - " 0.579640\n", - " 0.541376\n", - " \n", - " \n", - " smape\n", - " 0.285106\n", - " 0.707343\n", - " 0.719748\n", - " 0.716110\n", - " 0.769928\n", - " 0.703052\n", - " \n", - " \n", - " nll\n", - " 1.633936\n", - " 23.305540\n", - " 19.444048\n", - " 14.519804\n", - " 46.982059\n", - " 7.354424\n", - " \n", - " \n", " BejingPM25\n", " rmse\n", - " 1.383076\n", - " 1.087366\n", - " 1.032753\n", - " 1.026793\n", - " NaN\n", - " NaN\n", + " 1.311697\n", + " 1.079460\n", + " 1.081479\n", + " 1.158571\n", " \n", " \n", " smape\n", - " 0.278300\n", - " 0.226529\n", - " 0.212408\n", - " 0.210056\n", - " NaN\n", - " NaN\n", + " 0.256622\n", + " 0.214426\n", + " 0.215373\n", + " 0.225714\n", " \n", " \n", " nll\n", - " 1.707181\n", - " 1.478179\n", - " 1.407227\n", - " 1.386666\n", - " NaN\n", - " NaN\n", + " 1.651788\n", + " 1.677931\n", + " 1.706878\n", + " 2.927547\n", " \n", " \n", "\n", "" ], "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN " + " BaselineLast RANP LSTM LSTMSeq2Seq\n", + "BejingPM25 rmse 1.311697 1.079460 1.081479 1.158571\n", + " smape 0.256622 0.214426 0.215373 0.225714\n", + " nll 1.651788 1.677931 1.706878 2.927547" ] }, "metadata": {}, @@ -4924,25 +3556,15 @@ "output_type": "stream", "text": [ "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", "\n", " | Name | Type | Params\n", "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n" + "0 | _model | TransformerSeq2Seq | 733 K \n" ] }, { @@ -4969,7 +3591,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0b7ac22c7eb2417aa7cc7e5da0ad885f", + "model_id": "6835c62d9294452299a8ff6f65754f79", "version_major": 2, "version_minor": 0 }, @@ -5022,2387 +3644,14 @@ "metadata": {}, "output_type": "display_data" }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=34.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BejingPM25 TransformerSeq2Seq\n", - "mean_NLL 2.86\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.165701NaN
smape0.2783000.2265290.2124080.2100560.232141NaN
nll1.7071811.4781791.4072271.3866662.859907NaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse 1.165701 NaN \n", - " smape 0.232141 NaN \n", - " nll 2.859907 NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BejingPM25 Transformer\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3345032e42cb46829a394cd274fbe103", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:root:failed to run model\n", - "Traceback (most recent call last):\n", - " File \"\", line 52, in \n", - " trainer.fit(model, dl_train, dl_test)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 440, in fit\n", - " results = self.accelerator_backend.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 54, in train\n", - " results = self.train_or_test()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/accelerator.py\", line 66, in train_or_test\n", - " results = self.trainer.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 462, in train\n", - " self.run_sanity_check(self.get_model())\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 648, in run_sanity_check\n", - " _, eval_results = self.run_evaluation(test_mode=False, max_batches=self.num_sanity_val_batches)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 568, in run_evaluation\n", - " output = self.evaluation_loop.evaluation_step(test_mode, batch, batch_idx, dataloader_idx)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/evaluation_loop.py\", line 171, in evaluation_step\n", - " output = self.trainer.accelerator_backend.validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 76, in validation_step\n", - " output = self.__validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 86, in __validation_step\n", - " output = self.trainer.model.validation_step(*args)\n", - " File \"\", line 30, in validation_step\n", - " return self.training_step(batch, batch_idx, phase='val')\n", - " File \"\", line 19, in training_step\n", - " y_dist, extra = self.forward(*batch)\n", - " File \"\", line 13, in forward\n", - " y_dist, extra = self._model(x_past, y_past, x_future, y_future)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/models/transformer.py\", line 54, in forward\n", - " outputs = self.encoder(x, mask=mask#, src_key_padding_mask=x_key_padding_mask\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 181, in forward\n", - " output = mod(output, src_mask=mask, src_key_padding_mask=src_key_padding_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 294, in forward\n", - " key_padding_mask=src_key_padding_mask)[0]\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/activation.py\", line 927, in forward\n", - " attn_mask=attn_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/functional.py\", line 4049, in multi_head_attention_forward\n", - " raise RuntimeError('The size of the 2D attn_mask is not correct.')\n", - "RuntimeError: The size of the 2D attn_mask is not correct.\n", - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 49 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 49 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BejingPM25 TransformerProcess\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "44213affb81f49a0b565a0d57d98e57b", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=34.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BejingPM25 TransformerProcess\n", - "mean_NLL 1.44\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse 1.165701 1.074965 \n", - " smape 0.232141 0.224733 \n", - " nll 2.859907 1.438450 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using downloaded and verified file: ../data/processed/gas-sensor-array-temperature-modulation.zip\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor BaselineLast\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4d75180d4dfa4927b1334b85ab358881", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 8: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=231.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor BaselineLast\n", - "mean_NLL 1.88\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensornll1.879850NaNNaNNaNNaNNaN
rmse41.511017NaNNaNNaNNaNNaN
smape1.292102NaNNaNNaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "GasSensor nll 1.879850 NaN NaN NaN \n", - " rmse 41.511017 NaN NaN NaN \n", - " smape 1.292102 NaN NaN NaN \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse 1.165701 1.074965 \n", - " smape 0.232141 0.224733 \n", - " nll 2.859907 1.438450 \n", - "GasSensor nll NaN NaN \n", - " rmse NaN NaN \n", - " smape NaN NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 106 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 106 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor RANP\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3bca54f128c640188261cdb4ca42bb8f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=231.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor RANP\n", - "mean_NLL -2.24\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.036231NaNNaNNaNNaN
smape1.2921020.300914NaNNaNNaNNaN
nll1.879850-2.236591NaNNaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "GasSensor rmse 41.511017 2.036231 NaN NaN \n", - " smape 1.292102 0.300914 NaN NaN \n", - " nll 1.879850 -2.236591 NaN NaN \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse 1.165701 1.074965 \n", - " smape 0.232141 0.224733 \n", - " nll 2.859907 1.438450 \n", - "GasSensor rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 132 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 132 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor LSTM\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4dac078eb6c7444daf6f96e0001d899a", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 5: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=231.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor LSTM\n", - "mean_NLL 16.40\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.486523NaNNaNNaN
smape1.2921020.3009140.562990NaNNaNNaN
nll1.879850-2.23659116.395840NaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 NaN \n", - " smape 1.292102 0.300914 0.562990 NaN \n", - " nll 1.879850 -2.236591 16.395840 NaN \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse 1.165701 1.074965 \n", - " smape 0.232141 0.224733 \n", - " nll 2.859907 1.438450 \n", - "GasSensor rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 104 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 104 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor LSTMSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a2469764109149f58852f5f133141b94", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=231.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor LSTMSeq2Seq\n", - "mean_NLL -1.53\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaNNaN
smape1.2921020.3009140.5629900.337733NaNNaN
nll1.879850-2.23659116.395840-1.527772NaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 2.139018 \n", - " smape 1.292102 0.300914 0.562990 0.337733 \n", - " nll 1.879850 -2.236591 16.395840 -1.527772 \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse 1.165701 1.074965 \n", - " smape 0.232141 0.224733 \n", - " nll 2.859907 1.438450 \n", - "GasSensor rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor TransformerSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d017e77dace74577af317d1aff46e876", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:failed to run model\n", "Traceback (most recent call last):\n", - " File \"\", line 52, in \n", - " trainer.fit(model, dl_train, dl_test)\n", + " File \"\", line 52, in \n", + " trainer.fit(model, dl_train, dl_val)\n", " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 440, in fit\n", " results = self.accelerator_backend.train()\n", " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 54, in train\n", @@ -7423,9 +3672,9 @@ " output = self.__training_step(args)\n", " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 70, in __training_step\n", " output = self.trainer.model.training_step(*args)\n", - " File \"\", line 19, in training_step\n", + " File \"\", line 19, in training_step\n", " y_dist, extra = self.forward(*batch)\n", - " File \"\", line 14, in forward\n", + " File \"\", line 14, in forward\n", " assert torch.isfinite(y_dist.loc).all(), 'output should be finite'\n", "AssertionError: output should be finite\n", "EarlyStopping mode auto is unknown, fallback to auto mode.\n", @@ -7443,24 +3692,24 @@ "\n", " | Name | Type | Params\n", "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n", + "0 | _model | Transformer | 499 K \n", "INFO:lightning:\n", " | Name | Type | Params\n", "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n" + "0 | _model | Transformer | 499 K \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "GasSensor Transformer\n" + "BejingPM25 Transformer\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3e1d064b079d4666ae30d36ba9f3b696", + "model_id": "9650b4880da54949bf1b82e9b6c37c85", "version_major": 2, "version_minor": 0 }, @@ -7477,8 +3726,8 @@ "text": [ "ERROR:root:failed to run model\n", "Traceback (most recent call last):\n", - " File \"\", line 52, in \n", - " trainer.fit(model, dl_train, dl_test)\n", + " File \"\", line 52, in \n", + " trainer.fit(model, dl_train, dl_val)\n", " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 440, in fit\n", " results = self.accelerator_backend.train()\n", " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 54, in train\n", @@ -7497,2482 +3746,11 @@ " output = self.__validation_step(args)\n", " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 86, in __validation_step\n", " output = self.trainer.model.validation_step(*args)\n", - " File \"\", line 30, in validation_step\n", + " File \"\", line 30, in validation_step\n", " return self.training_step(batch, batch_idx, phase='val')\n", - " File \"\", line 19, in training_step\n", + " File \"\", line 19, in training_step\n", " y_dist, extra = self.forward(*batch)\n", - " File \"\", line 13, in forward\n", - " y_dist, extra = self._model(x_past, y_past, x_future, y_future)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/models/transformer.py\", line 54, in forward\n", - " outputs = self.encoder(x, mask=mask#, src_key_padding_mask=x_key_padding_mask\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 181, in forward\n", - " output = mod(output, src_mask=mask, src_key_padding_mask=src_key_padding_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 294, in forward\n", - " key_padding_mask=src_key_padding_mask)[0]\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/activation.py\", line 927, in forward\n", - " attn_mask=attn_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/functional.py\", line 4049, in multi_head_attention_forward\n", - " raise RuntimeError('The size of the 2D attn_mask is not correct.')\n", - "RuntimeError: The size of the 2D attn_mask is not correct.\n", - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "GasSensor TransformerProcess\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 48 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 48 K \n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "28b3d26c7e0a43fdbca9ca48d385d47d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 12: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=231.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GasSensor TransformerProcess\n", - "mean_NLL 0.63\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM LSTMSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 0.548482 \n", - " smape 0.285106 0.707343 0.719748 0.716110 \n", - " nll 1.633936 23.305540 19.444048 14.519804 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 1.026793 \n", - " smape 0.278300 0.226529 0.212408 0.210056 \n", - " nll 1.707181 1.478179 1.407227 1.386666 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 2.139018 \n", - " smape 1.292102 0.300914 0.562990 0.337733 \n", - " nll 1.879850 -2.236591 16.395840 -1.527772 \n", - "\n", - " TransformerSeq2Seq TransformerProcess \n", - "IMOSCurrentsVel rmse 0.579640 0.541376 \n", - " smape 0.769928 0.703052 \n", - " nll 46.982059 7.354424 \n", - "BejingPM25 rmse 1.165701 1.074965 \n", - " smape 0.232141 0.224733 \n", - " nll 2.859907 1.438450 \n", - "GasSensor rmse NaN 20.294767 \n", - " smape NaN 0.626682 \n", - " nll NaN 0.632958 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction BaselineLast\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ce16f59cf56445dbb7254e74a2da3766", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 8: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=15.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction BaselineLast\n", - "mean_NLL 1.56\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionnll1.556087NaNNaNNaNNaNNaN
rmse0.749960NaNNaNNaNNaNNaN
smape0.118430NaNNaNNaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction nll 1.556087 NaN NaN \n", - " rmse 0.749960 NaN NaN \n", - " smape 0.118430 NaN NaN \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction nll NaN NaN \n", - " rmse NaN NaN \n", - " smape NaN NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction nll NaN \n", - " rmse NaN \n", - " smape NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 110 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 110 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction RANP\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8a20668730674d8b8fb61026424dde6c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 7: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=15.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction RANP\n", - "mean_NLL 1.31\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.562423NaNNaNNaNNaN
smape0.1184300.089899NaNNaNNaNNaN
nll1.5560871.306983NaNNaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 NaN \n", - " smape 0.118430 0.089899 NaN \n", - " nll 1.556087 1.306983 NaN \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 141 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 141 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction LSTM\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "7177f658e01a4d85be3d9af4839f030c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 6: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=15.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction LSTM\n", - "mean_NLL 1.94\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.569487NaNNaNNaN
smape0.1184300.0898990.088473NaNNaNNaN
nll1.5560871.3069831.939970NaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 118 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 118 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction LSTMSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "52bddda129194ffa84dbe179d32a54e3", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 5: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=15.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction LSTMSeq2Seq\n", - "mean_NLL 1.57\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.543795NaNNaN
smape0.1184300.0898990.0884730.084181NaNNaN
nll1.5560871.3069831.9399701.566483NaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 NaN \n", - " smape 0.084181 NaN \n", - " nll 1.566483 NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction TransformerSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8d1332c9d2064912a47a039346c20bcf", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=15.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction TransformerSeq2Seq\n", - "mean_NLL 2.33\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.566450NaN
smape0.1184300.0898990.0884730.0841810.091806NaN
nll1.5560871.3069831.9399701.5664832.329622NaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction Transformer\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0d64490ed26f489da06d0c665430b5f8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:root:failed to run model\n", - "Traceback (most recent call last):\n", - " File \"\", line 52, in \n", - " trainer.fit(model, dl_train, dl_test)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 440, in fit\n", - " results = self.accelerator_backend.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 54, in train\n", - " results = self.train_or_test()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/accelerator.py\", line 66, in train_or_test\n", - " results = self.trainer.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 462, in train\n", - " self.run_sanity_check(self.get_model())\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 648, in run_sanity_check\n", - " _, eval_results = self.run_evaluation(test_mode=False, max_batches=self.num_sanity_val_batches)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 568, in run_evaluation\n", - " output = self.evaluation_loop.evaluation_step(test_mode, batch, batch_idx, dataloader_idx)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/evaluation_loop.py\", line 171, in evaluation_step\n", - " output = self.trainer.accelerator_backend.validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 76, in validation_step\n", - " output = self.__validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 86, in __validation_step\n", - " output = self.trainer.model.validation_step(*args)\n", - " File \"\", line 30, in validation_step\n", - " return self.training_step(batch, batch_idx, phase='val')\n", - " File \"\", line 19, in training_step\n", - " y_dist, extra = self.forward(*batch)\n", - " File \"\", line 13, in forward\n", + " File \"\", line 13, in forward\n", " y_dist, extra = self._model(x_past, y_past, x_future, y_future)\n", " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", " result = self.forward(*input, **kwargs)\n", @@ -10019,7 +3797,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "AppliancesEnergyPrediction TransformerProcess\n" + "\n", + "BejingPM25 TransformerProcess\n" ] }, { @@ -10039,7 +3818,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b3610174160a4dcd953e8601f8ea3c59", + "model_id": "8ea6e14fd3064dc58aa862c419526c3b", "version_major": 2, "version_minor": 0 }, @@ -10180,7 +3959,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Epoch 9: reducing learning rate of group 0 to 3.0000e-05.\n" + "Epoch 9: reducing learning rate of group 0 to 3.0000e-04.\n" ] }, { @@ -10204,3824 +3983,167 @@ "\n" ] }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=15.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AppliancesEnergyPrediction TransformerProcess\n", - "mean_NLL 1.08\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stderr", "output_type": "stream", "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------\n", - "0 | _model | BaselineLast | 1 \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic BaselineLast\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2cdbe4db46e342c4a4c66b7ab957da60", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 16: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 20: reducing learning rate of group 0 to 3.0000e-06.\n", + "ERROR:root:Internal Python error in the inspect module.\n", + "Below is the traceback from this internal error.\n", "\n" ] }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=41.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "MetroInterstateTraffic BaselineLast\n", - "mean_NLL 1.76\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
MetroInterstateTrafficnll1.763111NaNNaNNaNNaNNaN
rmse2800.038818NaNNaNNaNNaNNaN
smape0.799299NaNNaNNaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "MetroInterstateTraffic nll 1.763111 NaN NaN \n", - " rmse 2800.038818 NaN NaN \n", - " smape 0.799299 NaN NaN \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "MetroInterstateTraffic nll NaN NaN \n", - " rmse NaN NaN \n", - " smape NaN NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 \n", - "MetroInterstateTraffic nll NaN \n", - " rmse NaN \n", - " smape NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 107 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | RANP | 107 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic RANP\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "80304c3dda1e476986c59a869d2c3b97", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 8: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 12: reducing learning rate of group 0 to 3.0000e-06.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=41.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic RANP\n", - "mean_NLL -0.27\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
MetroInterstateTrafficrmse2800.038818486.489319NaNNaNNaNNaN
smape0.7992990.103380NaNNaNNaNNaN
nll1.763111-0.266901NaNNaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "MetroInterstateTraffic rmse 2800.038818 486.489319 NaN \n", - " smape 0.799299 0.103380 NaN \n", - " nll 1.763111 -0.266901 NaN \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "MetroInterstateTraffic rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 \n", - "MetroInterstateTraffic rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 135 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "--------------------------------\n", - "0 | _model | LSTM | 135 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic LSTM\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e192e7e8aeb64054afd6f0d73f3cbfa0", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 16: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=41.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic LSTM\n", - "mean_NLL -0.17\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
MetroInterstateTrafficrmse2800.038818486.489319487.994751NaNNaNNaN
smape0.7992990.1033800.106410NaNNaNNaN
nll1.763111-0.266901-0.173646NaNNaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "MetroInterstateTraffic rmse 2800.038818 486.489319 487.994751 \n", - " smape 0.799299 0.103380 0.106410 \n", - " nll 1.763111 -0.266901 -0.173646 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "MetroInterstateTraffic rmse NaN NaN \n", - " smape NaN NaN \n", - " nll NaN NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 \n", - "MetroInterstateTraffic rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 108 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | LSTMSeq2Seq | 108 K \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic LSTMSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d8d5b45ce28a42beb46f366a236dde85", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 17: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=41.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic LSTMSeq2Seq\n", - "mean_NLL -0.25\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
MetroInterstateTrafficrmse2800.038818486.489319487.994751494.512085NaNNaN
smape0.7992990.1033800.1064100.105370NaNNaN
nll1.763111-0.266901-0.173646-0.246719NaNNaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "MetroInterstateTraffic rmse 2800.038818 486.489319 487.994751 \n", - " smape 0.799299 0.103380 0.106410 \n", - " nll 1.763111 -0.266901 -0.173646 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "MetroInterstateTraffic rmse 494.512085 NaN \n", - " smape 0.105370 NaN \n", - " nll -0.246719 NaN \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 \n", - "MetroInterstateTraffic rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerSeq2Seq | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic TransformerSeq2Seq\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3aa7f450548f46b4951081c155893b35", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 4: reducing learning rate of group 0 to 3.0000e-05.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=41.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic TransformerSeq2Seq\n", - "mean_NLL 4.15\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
MetroInterstateTrafficrmse2800.038818486.489319487.994751494.5120851762.025879NaN
smape0.7992990.1033800.1064100.1053700.492156NaN
nll1.763111-0.266901-0.173646-0.2467194.152735NaN
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "MetroInterstateTraffic rmse 2800.038818 486.489319 487.994751 \n", - " smape 0.799299 0.103380 0.106410 \n", - " nll 1.763111 -0.266901 -0.173646 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "MetroInterstateTraffic rmse 494.512085 1762.025879 \n", - " smape 0.105370 0.492156 \n", - " nll -0.246719 4.152735 \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 \n", - "MetroInterstateTraffic rmse NaN \n", - " smape NaN \n", - " nll NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", - "\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "---------------------------------------\n", - "0 | _model | Transformer | 2 M \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic Transformer\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "259e3550902f473fbd8381f6b29f1ddd", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:root:failed to run model\n", "Traceback (most recent call last):\n", - " File \"\", line 52, in \n", - " trainer.fit(model, dl_train, dl_test)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 440, in fit\n", - " results = self.accelerator_backend.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 54, in train\n", - " results = self.train_or_test()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/accelerator.py\", line 66, in train_or_test\n", - " results = self.trainer.train()\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 462, in train\n", - " self.run_sanity_check(self.get_model())\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 648, in run_sanity_check\n", - " _, eval_results = self.run_evaluation(test_mode=False, max_batches=self.num_sanity_val_batches)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\", line 568, in run_evaluation\n", - " output = self.evaluation_loop.evaluation_step(test_mode, batch, batch_idx, dataloader_idx)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/trainer/evaluation_loop.py\", line 171, in evaluation_step\n", - " output = self.trainer.accelerator_backend.validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 76, in validation_step\n", - " output = self.__validation_step(args)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/pytorch_lightning/accelerators/gpu_accelerator.py\", line 86, in __validation_step\n", - " output = self.trainer.model.validation_step(*args)\n", - " File \"\", line 30, in validation_step\n", - " return self.training_step(batch, batch_idx, phase='val')\n", - " File \"\", line 19, in training_step\n", - " y_dist, extra = self.forward(*batch)\n", - " File \"\", line 13, in forward\n", - " y_dist, extra = self._model(x_past, y_past, x_future, y_future)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/models/transformer.py\", line 54, in forward\n", - " outputs = self.encoder(x, mask=mask#, src_key_padding_mask=x_key_padding_mask\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 181, in forward\n", - " output = mod(output, src_mask=mask, src_key_padding_mask=src_key_padding_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/transformer.py\", line 294, in forward\n", - " key_padding_mask=src_key_padding_mask)[0]\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 722, in _call_impl\n", - " result = self.forward(*input, **kwargs)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/modules/activation.py\", line 927, in forward\n", - " attn_mask=attn_mask)\n", - " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/torch/nn/functional.py\", line 4049, in multi_head_attention_forward\n", - " raise RuntimeError('The size of the 2D attn_mask is not correct.')\n", - "RuntimeError: The size of the 2D attn_mask is not correct.\n", - "EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "INFO:lightning:EarlyStopping mode auto is unknown, fallback to auto mode.\n", - "EarlyStopping mode set to min for monitoring loss/val.\n", - "INFO:lightning:EarlyStopping mode set to min for monitoring loss/val.\n", - "GPU available: True, used: True\n", - "INFO:lightning:GPU available: True, used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "INFO:lightning:TPU available: False, using: 0 TPU cores\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "INFO:lightning:LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", - "Using native 16bit precision.\n", - "INFO:lightning:Using native 16bit precision.\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 535, in get\n", + " value = obj._trait_values[self.name]\n", + "KeyError: 'style'\n", "\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 49 K \n", - "INFO:lightning:\n", - " | Name | Type | Params\n", - "----------------------------------------------\n", - "0 | _model | TransformerProcess | 49 K \n" + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 535, in get\n", + " value = obj._trait_values[self.name]\n", + "KeyError: 'comm'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3417, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"\", line 58, in \n", + " scaler=dataset.output_scaler)\n", + " File \"/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/predict.py\", line 22, in predict\n", + " for i, batch in enumerate(tqdm(load_test, desc='predict', leave=False)):\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/tqdm/notebook.py\", line 224, in __init__\n", + " self.fp, total, self.desc, self.ncols)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/tqdm/notebook.py\", line 101, in status_printer\n", + " pbar = IProgress(min=0, max=total)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget_float.py\", line 26, in __init__\n", + " super(_Float, self).__init__(**kwargs)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\", line 415, in __init__\n", + " self.open()\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\", line 428, in open\n", + " state, buffer_paths, buffers = _remove_buffers(self.get_state())\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\", line 518, in get_state\n", + " value = to_json(getattr(self, k), self)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 575, in __get__\n", + " return self.get(obj, cls)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 538, in get\n", + " default = obj.trait_defaults(self.name)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 1578, in trait_defaults\n", + " return self._get_trait_default_generator(names[0])(self)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 511, in default\n", + " return self.make_dynamic_default()\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/trait_types.py\", line 169, in make_dynamic_default\n", + " **(self.default_kwargs or {}))\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\", line 415, in __init__\n", + " self.open()\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\", line 427, in open\n", + " if self.comm is None:\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 575, in __get__\n", + " return self.get(obj, cls)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 538, in get\n", + " default = obj.trait_defaults(self.name)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 1578, in trait_defaults\n", + " return self._get_trait_default_generator(names[0])(self)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\", line 1561, in _get_trait_default_generator\n", + " if name in c.__dict__.get('_trait_default_generators', {}):\n", + "KeyboardInterrupt\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2044, in showtraceback\n", + " stb = value._render_traceback_()\n", + "AttributeError: 'KeyboardInterrupt' object has no attribute '_render_traceback_'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1169, in get_records\n", + " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 316, in wrapped\n", + " return f(*args, **kwargs)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 350, in _fixed_getinnerframes\n", + " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/inspect.py\", line 1502, in getinnerframes\n", + " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/inspect.py\", line 1460, in getframeinfo\n", + " filename = getsourcefile(frame) or getfile(frame)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/inspect.py\", line 696, in getsourcefile\n", + " if getattr(getmodule(object, filename), '__loader__', None) is not None:\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/inspect.py\", line 742, in getmodule\n", + " os.path.realpath(f)] = module.__name__\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/posixpath.py\", line 395, in realpath\n", + " path, ok = _joinrealpath(filename[:0], filename, {})\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/posixpath.py\", line 443, in _joinrealpath\n", + " path, ok = _joinrealpath(path, os.readlink(newpath), seen)\n", + " File \"/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/posixpath.py\", line 415, in _joinrealpath\n", + " name, _, rest = rest.partition(sep)\n", + "KeyboardInterrupt\n" ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic TransformerProcess\n" + "ename": "TypeError", + "evalue": "object of type 'NoneType' has no len()", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, obj, cls)\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 535\u001b[0;31m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_trait_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 536\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'style'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, obj, cls)\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 535\u001b[0;31m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_trait_values\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 536\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'comm'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + " \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0mdevice\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 58\u001b[0;31m scaler=dataset.output_scaler)\n\u001b[0m\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/predict.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(model, ds_test, batch_size, device, scaler)\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mxrs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtqdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mload_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdesc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'predict'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mleave\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/tqdm/notebook.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 223\u001b[0m self.container = self.status_printer(\n\u001b[0;32m--> 224\u001b[0;31m self.fp, total, self.desc, self.ncols)\n\u001b[0m\u001b[1;32m 225\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisplay\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/tqdm/notebook.py\u001b[0m in \u001b[0;36mstatus_printer\u001b[0;34m(_, total, desc, ncols)\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtotal\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 101\u001b[0;31m \u001b[0mpbar\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mIProgress\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtotal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 102\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# No total? Show info style bar with no progress tqdm status\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget_float.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, value, **kwargs)\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'value'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_Float\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0mWidget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_widget_constructed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 415\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 416\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 427\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomm\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 428\u001b[0;31m \u001b[0mstate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer_paths\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_remove_buffers\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_state\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 429\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\u001b[0m in \u001b[0;36mget_state\u001b[0;34m(self, key, drop_defaults)\u001b[0m\n\u001b[1;32m 517\u001b[0m \u001b[0mto_json\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrait_metadata\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'to_json'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_trait_to_json\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 518\u001b[0;31m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mto_json\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 519\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mPY3\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtraits\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36m__get__\u001b[0;34m(self, obj, cls)\u001b[0m\n\u001b[1;32m 574\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 575\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 576\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, obj, cls)\u001b[0m\n\u001b[1;32m 537\u001b[0m \u001b[0;31m# Check for a dynamic initializer.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 538\u001b[0;31m \u001b[0mdefault\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrait_defaults\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 539\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdefault\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36mtrait_defaults\u001b[0;34m(self, *names, **metadata)\u001b[0m\n\u001b[1;32m 1577\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnames\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmetadata\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1578\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_trait_default_generator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnames\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1579\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36mdefault\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'make_dynamic_default'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake_dynamic_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 512\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/trait_types.py\u001b[0m in \u001b[0;36mmake_dynamic_default\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 168\u001b[0m return self.klass(*(self.default_args or ()),\n\u001b[0;32m--> 169\u001b[0;31m **(self.default_kwargs or {}))\n\u001b[0m\u001b[1;32m 170\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0mWidget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_widget_constructed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 415\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 416\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipywidgets/widgets/widget.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 426\u001b[0m \u001b[0;34m\"\"\"Open a comm to the frontend if one isn't already open.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 427\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomm\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 428\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer_paths\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_remove_buffers\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_state\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36m__get__\u001b[0;34m(self, obj, cls)\u001b[0m\n\u001b[1;32m 574\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 575\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 576\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, obj, cls)\u001b[0m\n\u001b[1;32m 537\u001b[0m \u001b[0;31m# Check for a dynamic initializer.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 538\u001b[0;31m \u001b[0mdefault\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrait_defaults\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 539\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdefault\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36mtrait_defaults\u001b[0;34m(self, *names, **metadata)\u001b[0m\n\u001b[1;32m 1577\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnames\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmetadata\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1578\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_trait_default_generator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnames\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1579\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/traitlets/traitlets.py\u001b[0m in \u001b[0;36m_get_trait_default_generator\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 1560\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1561\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'_trait_default_generators'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1562\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_trait_default_generators\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mshowtraceback\u001b[0;34m(self, exc_tuple, filename, tb_offset, exception_only, running_compiled_code)\u001b[0m\n\u001b[1;32m 2043\u001b[0m \u001b[0;31m# in the engines. This should return a list of strings.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2044\u001b[0;31m \u001b[0mstb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_render_traceback_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2045\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'KeyboardInterrupt' object has no attribute '_render_traceback_'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + " \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mshowtraceback\u001b[0;34m(self, exc_tuple, filename, tb_offset, exception_only, running_compiled_code)\u001b[0m\n\u001b[1;32m 2045\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2046\u001b[0m stb = self.InteractiveTB.structured_traceback(etype,\n\u001b[0;32m-> 2047\u001b[0;31m value, tb, tb_offset=tb_offset)\n\u001b[0m\u001b[1;32m 2048\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2049\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_showtraceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, value, tb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1434\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1435\u001b[0m return FormattedTB.structured_traceback(\n\u001b[0;32m-> 1436\u001b[0;31m self, etype, value, tb, tb_offset, number_of_lines_of_context)\n\u001b[0m\u001b[1;32m 1437\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1438\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, value, tb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1334\u001b[0m \u001b[0;31m# Verbose modes need a full traceback\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1335\u001b[0m return VerboseTB.structured_traceback(\n\u001b[0;32m-> 1336\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb_offset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_lines_of_context\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1337\u001b[0m )\n\u001b[1;32m 1338\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'Minimal'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mstructured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1191\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1192\u001b[0m formatted_exception = self.format_exception_as_a_whole(etype, evalue, etb, number_of_lines_of_context,\n\u001b[0;32m-> 1193\u001b[0;31m tb_offset)\n\u001b[0m\u001b[1;32m 1194\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1195\u001b[0m \u001b[0mcolors\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mColors\u001b[0m \u001b[0;31m# just a shorthand + quicker name lookup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mformat_exception_as_a_whole\u001b[0;34m(self, etype, evalue, etb, number_of_lines_of_context, tb_offset)\u001b[0m\n\u001b[1;32m 1148\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1149\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1150\u001b[0;31m \u001b[0mlast_unique\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursion_repeat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfind_recursion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0morig_etype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1151\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1152\u001b[0m \u001b[0mframes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat_records\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecords\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlast_unique\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursion_repeat\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/IPython/core/ultratb.py\u001b[0m in \u001b[0;36mfind_recursion\u001b[0;34m(etype, value, records)\u001b[0m\n\u001b[1;32m 449\u001b[0m \u001b[0;31m# first frame (from in to out) that looks different.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 450\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mis_recursion_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0metype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 451\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 452\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 453\u001b[0m \u001b[0;31m# Select filename, lineno, func_name to track frames with\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: object of type 'NoneType' has no len()" ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validation sanity check'), FloatProgress(value=1.0, bar_style='info', layout=Layout…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "9c25d90977ce4307898c0ba77f1efbfe", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Training'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), max…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Validating'), FloatProgress(value=1.0, bar_style='info', layout=Layout(flex='2'), m…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='predict'), FloatProgress(value=0.0, max=41.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MetroInterstateTraffic TransformerProcess\n", - "mean_NLL -0.27\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
MetroInterstateTrafficrmse2800.038818486.489319487.994751494.5120851762.025879501.883423
smape0.7992990.1033800.1064100.1053700.4921560.112702
nll1.763111-0.266901-0.173646-0.2467194.152735-0.269533
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "MetroInterstateTraffic rmse 2800.038818 486.489319 487.994751 \n", - " smape 0.799299 0.103380 0.106410 \n", - " nll 1.763111 -0.266901 -0.173646 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "MetroInterstateTraffic rmse 494.512085 1762.025879 \n", - " smape 0.105370 0.492156 \n", - " nll -0.246719 4.152735 \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 \n", - "MetroInterstateTraffic rmse 501.883423 \n", - " smape 0.112702 \n", - " nll -0.269533 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
BaselineLastRANPLSTMLSTMSeq2SeqTransformerSeq2SeqTransformerProcess
IMOSCurrentsVelrmse0.2577890.5381450.5461410.5484820.5796400.541376
smape0.2851060.7073430.7197480.7161100.7699280.703052
nll1.63393623.30554019.44404814.51980446.9820597.354424
BejingPM25rmse1.3830761.0873661.0327531.0267931.1657011.074965
smape0.2783000.2265290.2124080.2100560.2321410.224733
nll1.7071811.4781791.4072271.3866662.8599071.438450
GasSensorrmse41.5110172.03623110.4865232.139018NaN20.294767
smape1.2921020.3009140.5629900.337733NaN0.626682
nll1.879850-2.23659116.395840-1.527772NaN0.632958
AppliancesEnergyPredictionrmse0.7499600.5624230.5694870.5437950.5664500.536980
smape0.1184300.0898990.0884730.0841810.0918060.088910
nll1.5560871.3069831.9399701.5664832.3296221.080932
MetroInterstateTrafficrmse2800.038818486.489319487.994751494.5120851762.025879501.883423
smape0.7992990.1033800.1064100.1053700.4921560.112702
nll1.763111-0.266901-0.173646-0.2467194.152735-0.269533
\n", - "
" - ], - "text/plain": [ - " BaselineLast RANP LSTM \\\n", - "IMOSCurrentsVel rmse 0.257789 0.538145 0.546141 \n", - " smape 0.285106 0.707343 0.719748 \n", - " nll 1.633936 23.305540 19.444048 \n", - "BejingPM25 rmse 1.383076 1.087366 1.032753 \n", - " smape 0.278300 0.226529 0.212408 \n", - " nll 1.707181 1.478179 1.407227 \n", - "GasSensor rmse 41.511017 2.036231 10.486523 \n", - " smape 1.292102 0.300914 0.562990 \n", - " nll 1.879850 -2.236591 16.395840 \n", - "AppliancesEnergyPrediction rmse 0.749960 0.562423 0.569487 \n", - " smape 0.118430 0.089899 0.088473 \n", - " nll 1.556087 1.306983 1.939970 \n", - "MetroInterstateTraffic rmse 2800.038818 486.489319 487.994751 \n", - " smape 0.799299 0.103380 0.106410 \n", - " nll 1.763111 -0.266901 -0.173646 \n", - "\n", - " LSTMSeq2Seq TransformerSeq2Seq \\\n", - "IMOSCurrentsVel rmse 0.548482 0.579640 \n", - " smape 0.716110 0.769928 \n", - " nll 14.519804 46.982059 \n", - "BejingPM25 rmse 1.026793 1.165701 \n", - " smape 0.210056 0.232141 \n", - " nll 1.386666 2.859907 \n", - "GasSensor rmse 2.139018 NaN \n", - " smape 0.337733 NaN \n", - " nll -1.527772 NaN \n", - "AppliancesEnergyPrediction rmse 0.543795 0.566450 \n", - " smape 0.084181 0.091806 \n", - " nll 1.566483 2.329622 \n", - "MetroInterstateTraffic rmse 494.512085 1762.025879 \n", - " smape 0.105370 0.492156 \n", - " nll -0.246719 4.152735 \n", - "\n", - " TransformerProcess \n", - "IMOSCurrentsVel rmse 0.541376 \n", - " smape 0.703052 \n", - " nll 7.354424 \n", - "BejingPM25 rmse 1.074965 \n", - " smape 0.224733 \n", - " nll 1.438450 \n", - "GasSensor rmse 20.294767 \n", - " smape 0.626682 \n", - " nll 0.632958 \n", - "AppliancesEnergyPrediction rmse 0.536980 \n", - " smape 0.088910 \n", - " nll 1.080932 \n", - "MetroInterstateTraffic rmse 501.883423 \n", - " smape 0.112702 \n", - " nll -0.269533 " - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ "for Dataset in datasets:\n", " dataset_name = Dataset.__name__\n", " dataset = Dataset(datasets_root)\n", - " ds_train, ds_test = dataset.to_datasets(window_past=window_past,\n", + " ds_train, ds_val, ds_test = dataset.to_datasets(window_past=window_past,\n", " window_future=window_future)\n", "\n", " # Init data\n", @@ -14035,7 +4157,7 @@ " shuffle=True,\n", " pin_memory=num_workers == 0,\n", " num_workers=num_workers)\n", - " dl_test = DataLoader(ds_test,\n", + " dl_val = DataLoader(ds_val,\n", " batch_size=batch_size,\n", " num_workers=num_workers)\n", "\n", @@ -14047,21 +4169,21 @@ " print(dataset_name, model_name)\n", "\n", " # Wrap in lightning\n", - " patience = 2\n", + " patience = 3\n", " model = PL_MODEL(pt_model,\n", - " lr=3e-4, patience=patience,\n", + " lr=3e-3, patience=patience,\n", " weight_decay=1e-5).to(device)\n", "\n", " # Trainer \n", " trainer = pl.Trainer(\n", " gpus=1,\n", " min_epochs=2,\n", - " max_epochs=20,\n", + " max_epochs=300,\n", " amp_level='O1',\n", " precision=16,\n", " \n", - " limit_train_batches=1000,\n", - " limit_val_batches=100,\n", + " limit_train_batches=300,\n", + " limit_val_batches=30,\n", " logger=CSVLogger(\"../outputs\", name=f'{dataset_name}_{model_name}'),\n", " callbacks=[\n", " EarlyStopping(monitor='loss/val', patience=patience * 2, verbose=True),\n", @@ -14069,7 +4191,7 @@ " )\n", "\n", " # Train\n", - " trainer.fit(model, dl_train, dl_test)\n", + " trainer.fit(model, dl_train, dl_val)\n", "\n", " ds_preds = predict(model.to(device),\n", " ds_test,\n", @@ -14081,9 +4203,9 @@ " print(f'mean_NLL {ds_preds.nll.mean().item():2.2f}')\n", " loss = ds_preds.nll.mean().item()\n", "\n", - " # Performance\n", - "# print(plot_hist(trainer))\n", - "# plot_performance(ds_preds)\n", + "# Performance TODO tensorboard, wandb\n", + " print(plot_hist(trainer))\n", + " plot_performance(ds_preds)\n", "\n", " metrics = dict(\n", " rmse=rmse(ds_preds.y_true, ds_preds.y_pred).item(), \n", @@ -14117,23 +4239,14 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 22, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T04:41:03.553104Z", - "start_time": "2020-10-29T04:41:03.032085Z" + "end_time": "2020-10-30T06:25:30.204048Z", + "start_time": "2020-10-30T06:25:30.127418Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], + "outputs": [], "source": [ "def bold_min(data):\n", " '''\n", @@ -14151,20 +4264,13 @@ " index=data.index, columns=data.columns)" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we have the negative liklihood loss, over 96 units ahead" - ] - }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 23, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T04:41:32.542586Z", - "start_time": "2020-10-29T04:41:32.442986Z" + "end_time": "2020-10-30T06:25:30.592796Z", + "start_time": "2020-10-30T06:25:30.334908Z" } }, "outputs": [ @@ -14180,64 +4286,32 @@ "data": { "text/html": [ "\n", + " }
IMOSCurrentsVel BejingPM25 GasSensor AppliancesEnergyPrediction MetroInterstateTraffic
\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", "
BejingPM25
BaselineLast1.6300001.7100001.8800001.5600001.760000BaselineLast1.650000
RANP23.3100001.480000-2.2400001.310000-0.270000RANP1.680000
LSTM19.4400001.41000016.4000001.940000-0.170000LSTM1.710000
LSTMSeq2Seq14.5200001.390000-1.5300001.570000-0.250000
TransformerSeq2Seq46.9800002.860000nan2.3300004.150000
TransformerProcess7.3500001.4400000.6300001.080000-0.270000LSTMSeq2Seq2.930000
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 71, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -14250,11 +4324,11 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 24, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T04:41:36.502593Z", - "start_time": "2020-10-29T04:41:36.405337Z" + "end_time": "2020-10-30T06:25:30.694050Z", + "start_time": "2020-10-30T06:25:30.599532Z" }, "lines_to_next_cell": 0 }, @@ -14267,76 +4341,36 @@ "over 96 steps\n" ] }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - }, { "data": { "text/html": [ "\n", + " }
IMOSCurrentsVel BejingPM25 GasSensor AppliancesEnergyPrediction MetroInterstateTraffic
\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", "
BejingPM25
BaselineLast0.2900000.2800001.2900000.1200000.800000BaselineLast0.260000
RANP0.7100000.2300000.3000000.0900000.100000RANP0.210000
LSTM0.7200000.2100000.5600000.0900000.110000LSTM0.220000
LSTMSeq2Seq0.7200000.2100000.3400000.0800000.110000
TransformerSeq2Seq0.7700000.230000nan0.0900000.490000
TransformerProcess0.7000000.2200000.6300000.0900000.110000LSTMSeq2Seq0.230000
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 72, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -14345,23 +4379,17 @@ "print(f'Symmetric mean absolute percentage error (SMAPE)\\nover {window_future} steps')\n", "d=df_results.xs('smape', level=1).T.round(2)\n", "d.style.apply(bold_min)\n", - "# # Plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# plots" + "# # Plots\n", + "# # plots" ] }, { "cell_type": "code", - "execution_count": 156, + "execution_count": 25, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T12:53:22.666279Z", - "start_time": "2020-10-29T12:53:21.293504Z" + "end_time": "2020-10-30T06:25:31.498952Z", + "start_time": "2020-10-30T06:25:30.698555Z" } }, "outputs": [], @@ -14384,81 +4412,56 @@ }, { "cell_type": "code", - "execution_count": 244, + "execution_count": 26, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T13:21:10.358647Z", - "start_time": "2020-10-29T13:21:10.279535Z" + "end_time": "2020-10-30T06:25:31.575554Z", + "start_time": "2020-10-30T06:25:31.504332Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], + "outputs": [], "source": [ "data_i = 100" ] }, { "cell_type": "code", - "execution_count": 245, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T13:21:14.552493Z", - "start_time": "2020-10-29T13:21:10.478701Z" + "end_time": "2020-10-30T06:26:14.204091Z", + "start_time": "2020-10-30T06:26:14.128877Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "ExecuteTime": { + "end_time": "2020-10-30T06:25:32.319697Z", + "start_time": "2020-10-30T06:25:31.580400Z" }, "scrolled": false }, "outputs": [ { - "data": { - "image/png": "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5ZdfsmXLFtdNHzVqFHfccQcJCQm8++67lJSUoFar8fPzY968eY2vhMvAk/T3yiuvkJycjJ+fHwBBQUGuX0TNgYbU5erVq1mxYgVKpZKgoCAeeeSRCr/6yjlz5gwfffQRVquVnj17MnXqVCRJapZz8WI8SZeePC89SU+LFy/m8OHDKJVKjEYjU6dOJSoq6orq43LwJF1eTHMxyDxJf19//TV79uxxzcUHH3ywxu8kT6fZGGQCgUAgEAgEVyvNLqhfIBAIBAKB4GpDGGQCgUAgEAgETYwwyAQCgUAgEAiaGGGQCQQCgUAgEDQxwiATCAQCgUAgaGKEQSYQCAQCgUDQxDSbxLACgeDKYrPZ+M9//sPhw4cpLi4mLCyMu+66i169ernaHD58mEWLFpGdnU27du3429/+RnBwMABHjhzhxx9/5OzZsxiNxkplTRITE/nvf/9LUlISer2euLg4brvttmrlyczM5P/+7/84ffo0QUFBTJ06le7duwNlCUqXLl1KSkoKarWa2NhY7r//fvR6fbX9bdmyha+//pqioiK6devG3/72N1fepNmzZ5OVlVVBFz179uSZZ56p1M+pU6dYsmQJZ8+eRaFQ0KVLFx544AFXwkpZlvnqq69Yt24dAKNGjeKee+6ptgbsSy+9RHJyMna7nZCQEO64444KSTZrkvtSbDYbCxcuZOfOnWg0Gm666aYKyTwTExP5v//7P1JTU4mIiGDGjBm0atWqWp0JBIJGRBYIBIIqMJlM8pIlS+QLFy7IDodD3rNnjzxlyhT5woULsizLckFBgXzffffJ27Ztky0Wi/z555/Lzz33nOv806dPyxs3bpTj4+Plv/3tb5X6nzlzpvz111/LDodDTk9Pl6dPny7v3r27Wnmee+45+bPPPpMtFou8fft2+f7775cLCgpkWZblzZs3y/v375fNZrNcVFQkv/baa/Inn3xSbV/JycnylClT5KNHj8omk0l+//335fnz51fZ1ul0yo888oi8YcOGKo/v27dP3rZtm1xSUiKbzWb5ww8/lF999VXX8dWrV8uPPfaYnJ2dLefk5MgzZ86UV61aVa1siYmJst1ul2VZlk+dOiVPmTJFzs3NrbPcsizLX331lfz888/LRUVFckpKivzggw/K+/fvl2VZlm02mzxjxgx5+fLlstVqlX/77Td5xowZss1mq7Y/gUDQeIglS4FAUCU6nY477riDkJAQFAoFsbGxhISEcPbsWQB27dpFVFQUAwcORKPRcPvtt5OYmEhqaioAMTExDBs2jJCQkCr7z8rKYujQoSgUCsLCwujYsSMpKSlVtk1LS+PcuXPccccdaDQaBgwYQMuWLdmxYwcAQ4YMoWfPnmi1WoxGI6NHj+bkyZPVXtvmzZuJjY2lc+fO6HQ6Jk+ezM6dOzGZTJXaHj9+nIKCAlfNvkvp1asXAwcOxGAwoNVque666yqMvXHjRiZOnEhgYCABAQFMnDiRjRs3VitbdHQ0SqUSAEmScDgcrlp+dZG7fOxbb70Vo9FIZGQko0ePZsOGDQAcPXoUh8PB9ddfj1qtZsKECciyzJEjR6qVTSAQNB7CIBMIBG6Rn59Penq6q0xOSkoK0dHRruM6nY6wsLBqjapLmTBhAhs3bsRut5OWlsapU6fo1q1blW3Pnz9PaGhohSXI6Ohozp8/X2X748eP11jO5/z58xVkDwsLQ6VSkZ6eXqnthg0bGDBgADqdzq3runTsS/UUHR1dQUdvvvkmy5Ytq9DHm2++yT333MNzzz1H586dadOmjVtyL1u2jDfffBOA4uJi8vLyKrRv1aqVa+xyuS5eOr1UNoFAcOUQMWQCgaBW7HY7//73vxk+fLirVpzZbMbHx6dCO4PBgNlsdqvP2NhYPvjgA5YvX47T6eS2224jJiamyrZmsxmDwVBprNzc3EptDx06xMaNG3nttdeqHbu6/i71NFksFnbu3MlTTz3l1jUlJSXxww8/VGh/6VjlOpJlGUmSqoxLe+aZZ7Db7Rw+fJjU1FQUCoVbck+aNKnCuOXHLx27LjoQCARXBmGQCQSCGnE6nXzwwQeoVCqmTp3qel+n01X68i4tLXXLk1RcXMzrr7/O1KlTGTJkCPn5+cybNw9fX1/GjRtXIaj+ueeeQ6fTUVpaWqEPk8lUKWj/1KlTLFiwgNmzZ9OiRQugzGP1+uuvAxAcHMy8efOqlL2q/nbu3InRaKRz5861XlNGRgavv/46DzzwAJ06dXK9f+lYJpMJnU5XbVB/OSqVil69evH7778TFhZGnz593Ja7fNzy4xqNBqh4f6q7fzVthBAIBI2HMMgEAkG1yLLMxx9/TEFBAc8++ywq1Z+PjKioqAqxUGazmQsXLtS4VFjOhQsXUCgUDB8+HIDAwEAGDRrE/v37GTduHPPmzavQPi0tjczMzArGR1JSEoMHD3a1OXfuHG+//TYzZsyosPTZqVMnvvjiiwr9RUZGkpSUVEEem81GeHh4hXYbN25k2LBhtRpPWVlZvPLKK9x6660MGzaswrGoqCgSExNd3r/ExES3dFSO0+kkIyOjTnIDGI1G/P39SUpKcu1GTUpKco0dFRXFr7/+6vLUASQnJ3Pddde5LZtAIGg4RAyZQCColoULF5KamsrTTz/t8rKU069fP5KTk9mxYwdWq5UffviB6Oho15Km0+nEarXicDiQZRmr1YrdbgcgPDwcWZbZsmULTqeT/Px8tm3bViHe6WJatGhBq1at+P7777FarezatYukpCQGDBgAlBkS5R63Pn361HpdQ4cOZe/evRw/fhyz2cySJUvo379/Be9QTk4OR48edRmN1ZGbm8vLL7/MuHHjGDt2bKXjw4YN47fffiM3N5fc3Fx+/fXXavtMTU1l//79Ll1t2rSJY8eOuTx07sh96dg//vgjxcXFpKamsnbtWkaMGAFAly5dUCgUrFixApvNxsqVKwHo2rVrrfoTCAQNjyTLstzUQggEAs8jKyuLRx55BLVa7YphAnjooYcYOnQoUBav9d///pesrCxXHrLyXZVHjx7lpZdeqtBn586defHFF4GyPGVfffUVaWlpaDQaYmNjeeCBB9BqtVXKk5mZyUcffeTKQzZt2jSX5+ejjz5i48aNFYzG8uXJ6tiyZQtfffUVxcXFVebzWrp0Kfv37+fll1+uUU/ff/8933//fSW5y71y8h95yNauXQvA6NGjK+Qhe/311+nYsSO33HIL58+f56OPPuL8+fMoFArCw8O5+eab6devn1ty//TTT5w4cYLnnnsOqD0P2blz5/j44485f/48kZGRPPzww7Ru3brG6xUIBI2DMMgEAoFAIBAImhixZCkQCAQCgUDQxAiDTCAQCAQCgaCJEQaZQCAQCAQCQRMjDDKBQCAQCASCJkYYZAKBQCAQCARNjDDIBAKBQCAQCJoYYZAJBAKBQCAQNDHCIBMIBAKBQCBoYoRBJhAIBAKBQNDE/D/SJPvGlOsdVwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "ename": "KeyError", + "evalue": "'targets'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mresults\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mds_preds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresults\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mplot_prediction\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds_preds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata_i\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34mf\"{model}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlegend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mplot_prediction\u001b[0;34m(ds_preds, i, ax, title, std, label, legend)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlegend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'{now}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 41\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds_preds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'targets'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 42\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'targets'" + ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAACuCAYAAADux6PMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABwIklEQVR4nO3dd3hUVfrA8e+dPumdhAQSIGBC771JEQR0rYCuFcRdV1cBC6w/BLtSBFFwFVaxrgsqgqJSpYqgFOktpBIS0tv0cn9/xAwJ6b1wPs/DQzJz77nnnrmZeeecc98jybIsIwiCIAiCINQ5RWNXQBAEQRAEoaUSgZYgCIIgCEI9EYGWIAiCIAhCPRGBliAIgiAIQj0RgZYgCIIgCEI9EYGWIAiCIAhCPRGBliAITU5ERASvvvqq6/eRI0fyyCOPNGKNBEEQakYEWoIg1JmHHnoISZJc/7y9vRk0aBA//vhjtcr5/fffmTVrluv39evXs3Tp0rquLh9//HGJ+rZq1YpJkyZx4sQJ1zYjR45EkiSefvrpUvu//fbbSJJEZGSk67GNGzcyYcIEgoODcXNzo0uXLixfvpziKQvj4+NLHLfo37x58+r8HAVBaFwi0BIEoU4NGzaMlJQUUlJSOHDgAL179+a2227j4sWLVS4jMDAQd3d31+9+fn54eXnVR3VRKpWu+m7YsIG0tDTGjRtHbm6ua5u2bdvyySefYLVaS+y7evVqwsPDSzy2a9cuBg0axPr16zl58iRPP/00c+fOZdGiRaWOvXHjRtexU1JSmDt3br2coyAIjUcEWoIg1CmNRkNwcDDBwcFER0fz5ptvYrPZOH78OAB2u50XX3yRdu3aodPp6NKlCx988EGJMiobOiz6/ZVXXiE4OBg/Pz8eeughDAaDaxun08nzzz9PYGAgHh4eTJ06lbfffhuVSlWqzkX1HTRoEMuWLXMFiUVGjx6Np6cn3377reuxffv2kZSUxN13312irGXLlvHCCy8wePBg2rdvz7Rp03jkkUdYt25dqeP6+fm5jh0cHIyHh0dVm1kQhGZCBFqCINQbq9XK6tWr0Wq19O7dG4BHHnmE9evX88EHH3DmzBnmz5/PnDlz+PDDD6tV9tdff01WVha7du3iv//9Lxs2bCjRa/T222/zzjvvsHTpUo4ePUr//v15+eWXKy1Xr9cDYLPZXI8pFAqmT5/O6tWrXY+tWrWKe++9t0TPW3lyc3MJCAgo9fi9995LQEAAffv2ZenSpSWOKQhCy1D6q50gCEIt7Nq1y9UzYzQacXNz49NPPyU8PJy4uDg+/fRTTp8+TVRUFADt2rXj3LlzvPvuu0yfPr3Kx2nbti3Lli0DICoqiqlTp7J161ZeeuklAN566y1mzZrF/fffD8Ds2bP57bff+Prrr8stMz09nQULFuDl5UX//v1LPDd9+nRefvllLl68iL+/P19//TX79u3ju+++q7Q9vvzyS9avX+96zMPDgyVLljB06FC0Wi27d+/mhRde4OjRo3z22WdVbgNBEJo+EWgJglCnBgwYwCeffAJAQUEBW7du5cEHH8Tb25u8vDxkWaZv374l9rHb7SiVymodp2fPniV+Dw0NZevWrQDk5eVx+fJlBg4cWGKbQYMGlQq0HA6HKzA0GAxERUXx9ddfExQUVGK7kJAQJkyYwIcffugaFu3du3eFgdaBAwe47bbbePHFF7nllltcjwcEBJSYXN+zZ088PT2ZPn06b775JqGhoVVvCEEQmjQRaAmCUKf0en2Ju/B69uzJjh07eO2113j88ccB2L9/P25ubiX2kySpWsfRaDSl9nc6nQCuO/yqUqZSqeSPP/5AkiSCgoLw9PQsd9tHH32U6dOn4+fnx5NPPllhubt27eKWW27hX//6F88//3yl9Rg8eDAACQkJItAShBZEBFqCINQ7lUqF0WikT58+ACQmJjJp0qR6O563tzetW7fm119/ZcKECa7Hi09wL654YFiR8ePHo9VqSUhI4N577y13ux9++IG7776bV155pcy0EGU5evQoAGFhYVXaXhCE5kEEWoIg1Cmr1UpqaipQOBS3ZcsWtmzZwksvvURkZCTTpk1jxowZLFq0iEGDBmEwGDh8+DDp6enMmTOnzurx9NNPs2DBAqKioujfvz8//PADW7durXbPWXEKhYITJ07gdDrL7fn66quv+Otf/8rcuXP561//6moLpVJJYGAgUJi/S6lU0rt3b3Q6HXv37uXZZ5/lrrvuom3btjWunyAITY8ItARBqFN79+4lJCQEKBxGbNeuHW+++SazZ88GCu/We+utt3jttdeIjY3Fy8uLLl268MQTT9RpPWbOnEl6ejpPPfUUZrOZSZMm8fTTT/PGG2/UqtyKhhYBVq5cic1m45VXXuGV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d33CkeNbSUpKrGpTCUKzVq30Du+//z5Go5G77rqL119/nXvuuYcRI0bUW+WaYnqHjh07cuHChRKPxcTEMHfuXHJzc7FarQwYMIAJEybw2muvARAfH09wcDA6nY7o6GimTp3K3XffzZIlS7jnnsJbuE+ePMm4ceOYPn06d955J3a7nQULFmCxWLBardx6660lhlWrGmiZTCYeffRREhISUCqVjB07lueff77cei9atKhFDB02pfQOItCquRY7DCvb8UtcBqjIavskSKWnROTn53Pw4EHOnDmDWq2mf//+dO/evdL5k3a7nXPnznH8+HHS09NRKpW0a9eO7t274+fnV+HfRXnXqt1uJyMjgxkzZhAeHk7btm3R6XQoFApCQ0Pp0KEDkZGRuLm54XTIpF62kXDRSsYVO5IEIWFq2nXS0q1HeJnlNyUt9pprBNdbW9ZJeoe//e1vLF++nOeff55//OMfDB48uE4q19zNnz+fGTNmMG5cYUK0M2fOEB0dzciRIwG46667eOGFF1zB0f79+4mOjua7775zBVobN26kffv2rjJnzpzJ+++/T5cuXXA4HK78YzXx97//nSFDhmC1WpkyZQo///wzo0aNKrPegtCS/fjjjwBMmDChUeuxfM5EXnu0NxOe2c7HG2aVeM5gMHD48GFOnDiBLMv06NGDvn37VvmLg0qlokuXLnTp0oW0tDTXfKmi9f18fHwIDAzE398fNzc33NzcXFNCwsPD0el0uLm58euvv5KTk0N2djZZWVk4nU7Gjh1LTk4O586dY86cOYSHh7sm7uflODh1zsSlBCtWi4zOTeKGrjrattfU+A5CQWgJKgy05s+fX2qM3263o9Vq2bJlC1u2bAEK70y8nqWlpRESEuL6PTo6utJ9WrduTUFBAenp6QQEBLBz584SdxRmZmbSqlVhbhilUulKo2E0Gpk3bx5nz57Fbrfz9NNPM27cOEwmE7Nnz+bChQtERkZy6dIlXnvtNXr06MGQIUMA0Gg0dOvWjZSUlArr7XA4eOWVV/j111+xWq08+OCD3H///ciyzLx58/jll19c2ZunTJnCpEmTatN8LV5T/eZ+PWoKr4XSeoX5D/Xgm10JbPv9aq99fn4+R48e5cSJEzidTqKiohgwYEClw50OR+GgRFnLiwQFBREUFMTIkSOx2WwcO3aMtLQ0rly5UqpnHmDq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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmcAAACuCAYAAABzyqpEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABjQUlEQVR4nO3dd3xT5f7A8c9J0jbdk1JoSxlltIDsJVBWARkqIEOUISj+BFSGqKCIekXBC4IgIENElCsWQfbee28oYAsUWijddK8k5/dHbWzppmmTlud9X1ybk5PnfM/Tk+ab5zxDkmVZRhAEQRAEQTAJCmMHIAiCIAiCIPxLJGeCIAiCIAgmRCRngiAIgiAIJkQkZ4IgCIIgCCZEJGeCIAiCIAgmRCRngiAIgiAIJkQkZ4IgCIIgCCZEJGeCIJic2NhYpk2bhq+vL1ZWVjg6OtK0aVM+/fRTQkNDDXacLVu20KFDB5ycnLC2tsbb25vXX3+dhIQEgx1DEAShpERyJgiCSQkNDaVZs2asW7eOadOmcerUKU6fPs2sWbOIiYlh7ty5BjnOgQMHGDBgAN27d+fYsWNcuXKFxYsXY2dnR3p6ukGOUZYyMjKMHYIgCGVFFgRBMCF9+/aV3dzc5Pj4+Hyf1+l0sizL8p49e+ROnTrJjo6Osp2dnezn5yefPn06174rVqyQGzRoIFtYWMhOTk5yx44d5dDQUFmWZXnChAlyixYtiownKChIHjBggGxvby87ODjI3bt3l69cuaJ/ftWqVbJSqZSPHTsmN2vWTLa0tJRbtmwpnzt3Tr9PRkaGPGnSJNnd3V02NzeX3dzc5CFDhuQ6pzlz5si1atWSzczM5Nq1a8vz58/PFYeXl5f86aefymPHjpWdnJzkli1bFhm7IAgVk2g5EwTBZMTGxrJjxw7ee+897Ozs8t1HkiQAkpKSGD9+PKdOneLEiRPUrVuXF154gZiYGADOnz/PO++8w7Rp07h16xaHDh1ixIgR+nKqVatGcHAwZ86cKTCeiIgIOnTogKurK0ePHuXUqVPUr1+fzp07ExUVpd9Pp9Mxbdo0FixYwIULF3B0dGTw4MFoNBoAfvjhB9atW8eaNWsICgpiy5YttG3bVv/6JUuW8NlnnzF16lSuX7/Ohx9+yNSpU1m5cmWueBYuXIirqysnT55k9erVJaxdQRAqDGNnh4IgCNlOnz4tA/Jff/2Va3u7du1ka2tr2draWvb19c33tVqtVnZwcJDXrFkjy7Is//XXX7KdnV2BLXDJycnyiy++KAOym5ub/PLLL8vff/+9HB0drd/n888/l9u0aZPrdTqdLlfL1qpVq2RAPn/+vH6fkydPyoB88+ZNWZZl+f3335e7dOmib/V7koeHh/zhhx/m2jZx4kS5Vq1a+sdeXl5y165d8329IAiVi2g5EwTBZMiynO/2gIAALl26xNtvv01ycjIAd+/eZfjw4Xh7e2NnZ4ednR3x8fHcu3cPgO7du1O7dm1q1arFq6++yvLly4mOjtaXaWVlxZYtW7h79y6zZs2ievXqzJo1i/r163Pjxg0Azp49y/nz57GxsdH/s7W1JSQkhKCgIH1ZkiTRpEkT/WN3d3cgq+UNYNSoUVy9ehVvb2/eeecdNmzYoO8zlpCQQFhYGH5+frnOuVOnToSEhJCSkqLf1rp166erWEEQKhSRnAmCYDLq1q2LQqEgMDAw13ZPT0+8vb1xcnLSb+vbty/3799n8eLFnDp1ikuXLuHq6qpPemxsbDh37hwbN26kXr16LF26FG9vb86fP5+r7Jo1a/LGG2+wZMkSbty4gSRJ/Pe//wWybld269aNS5cu5fp369YtvvjiC30ZCoUCpVKpf5x961Wn0wHQtGlT7t69y9y5czE3N2fChAk0bdo016jQ7Ndkyy9Rtba2LnZdCoJQcYnkTBAEk+Hk5ESvXr344YcfiI+PL3C/mJgYAgMDmTp1Kj179sTX1xe1Wk1kZGSu/ZRKJX5+fvznP//h/PnzVKtWjd9//73Ach0dHXFzc9OX07JlS65fv467uzve3t65/lWpUqVE52ZjY0P//v1ZuHAh586d48aNGxw+fBg7Ozs8PDw4fPhwrv2PHDlCrVq1sLKyKtFxBEGo+FTGDkAQBCGnJUuW0L59e5o1a8YXX3xB06ZNsbGx4datW2zbtg2lUomjoyNVqlRhxYoV1KlTh5iYGD766CMsLS315WzevJk7d+7g5+dHlSpVOH/+PKGhofj6+gLwxRdfkJSURJ8+fahZsyZJSUmsXr2aa9euMWHCBADeffddVq5cSb9+/Zg+fTqenp6EhYWxc+dO+vTpw/PPP1+sc5ozZw7Vq1enadOmWFlZsXbtWpRKJfXq1QNg2rRpfPDBB9StW5fOnTtz4MABfvzxRxYvXmzg2hUEoSIQyZkgCCalRo0aXLx4kTlz5jBr1ixCQkIAqFWrFj179mTChAkoFAr+/PNP3n//fZ577jm8vLz45ptv+Pjjj/XlODo6snXrVr755hsSExPx9PRk+vTpjB49Gsjq07V06VJGjRrFo0ePsLGxoX79+qxZs4bXX38dgKpVq3Ly5Ek++eQTBgwYQEJCAm5ubnTs2JFq1aoV+5zs7OyYN28eQUFB6HQ6fHx82LBhA/Xr1wdg7NixJCcn88033zBu3Dg8PT2ZPXs2b775poFqVRCEikSSC+qBKwiCIAiCIJQ70edMEARBEATBhIjkTBAEQRAEwYSI5EwQBEEQBMGEiORMEARBEATBhIjkTBAEQRAEwYSI5EwQBEEQBMGEVKp5zh4+fGjwMl1cXHKtxyc8PVGXhiPqsnSKW38rVqwAYMyYMWUdUoUlrsXSEfVnOBWtLqtXr17gc6LlTBAEQRAEwYSI5EwQBEEQBMGElMttzSVLlnDhwgXs7e357rvvAEhKSmL+/PlERUVRpUoVJk2ahI2NDQAbN27kwIEDKBQKRo0aRdOmTcsjTEEQKgkPDw9kWUaSJMLCwowdjiBUKOL9Y3zl0nLWuXNnPvnkk1zbNm3aROPGjVm4cCGNGzdm06ZNAISFhXHixAnmzZvHp59+ysqVK9HpdOURppAPDw8P3N3d8fDwMHYoglBs2avSlXZ1OqVSiVKpNERIglBh5Hz/5PcZID4Xyl65JGe+vr76VrFsZ8+epVOnTkDWAsRnz57Vb3/++ecxMzPD1dUVNzc3goODyyNMIR+G+pAThPIkSVKu/z6t0aNH6xdKF4RnRc73T36fAeJzoewZbbRmfHw8jo6OADg6OpKQkABAbGwsdevW1e/n5OREbGysUWIU/n1zlvZDThDKQkG3X8StGEF4etnvn/g0DS9+sQpNcjypESGExKVR01EtPhfKgclNpVGSTHzfvn3s27cPgNmzZ+Pi4mLweFQqVZmUW1GkpaUZrKxnvS4NSdRllpzf4D09PdHpdCgUClJTUwt9XXHrb9asWQBMmzat9MFWUuJaLB1Trr+l26/SvpYjCmUVEmVfvtp8nqkDOxr0c8GQTLkuS6rI5Eyr1XLu3DkuXLjAvXv3SE5OxtraGi8vL5o1a0arVq2eqk+Gvb09cXFxODo6EhcXh52dHQDOzs7ExMTo94uNjcXJySnfMvz9/fH399c/Lov5TSravCmmTNSl4Yi6zJLzG3x231SdTldk3ZS0/kRdF0xci6VjqvV3IzKF+xePUi0jArXaIishS4XlAXHIL3elnouVsUPMw1TrsiCFzXNWaHK2d+9e/vrrLzw8PPDx8aFFixao1WrS0tIICwtj//79rF69mv79+9OjR48SBdWyZUsOHz5Mv379OHz4MK1atdJvX7hwIX379iUuLo7w8HC8vb1LVLZQOgXdKhIjeARTU9D1mZ+cz5vqN39BMAVancxvhy7hlvGIFq1a075dWzIzM9l74BDcusFvmzJ4Z1Av3O0txedCGSk0OQsPD2fWrFk4ODjkea5169YAxMXFsXXr1kIP8v333xMYGEhiYiLvvPMOgwcPpl+/fsyfP58DBw7g4uLC5MmTAfD09KRdu3ZMnjwZhULBm2++iUIhpmMrTwV19hSdQAVTVtQHg7h+BaF4tl4LxyniMlYOzrRtndVwYmZmRq8e/uxVW8Hl86zeuIupI/uJ91UZKTQ5GzFiRJEFODo6FrnfxIkT890+Y8aMfLcPGDCAAQMGFHlsoWwU1NlTdAIVKjJx/QpC0WRZ5tLp4ziipV/vnvpuSzlbyOYs/w2Cr7L15DXxviojJRoQkJKSwsOHD/PcEmjUqJFBgxKMI+eb78GDB3meF03WQkVT2lsuKpXJjZkShDIV9jgNh9RHOHrVw9bWictnUrB3UmKptiUlNQFZlhnYoyMLQu8RfOE4V2/cwtHW2thhVzrF/stz6NAhVq5ciVqtxtzcXL9dkiQWLVpUJsEJ5Us0TwuVTWmv6VGjRhkyHEEweRdvh6FApm5NTy6cTCE6QgN34dsvD3P2wnbWrv8PZioVnbr4c3zXRgK27eWdof2MHXalU+zkbO3atUyePJlmzZqVZTyCERW3eVp0ABUqCnHLRRBK5m7oQyTAMtOV0AgNTVpZYuegJPRuBmaq/gzoPxidTqZVPQ+OXfEl4+F1Lt4IoplP3SLLFoqv2MmZTqejSZMmZRmLYGTFTbREC5tQUZT2y8OKFSsAGDNmjCHCEQSTlxATib3KitDbKjxrmVOjtgUADk4qbOyUXLuQyqUzKTRrY8XrL7Rn1eo7HD1+kqYNvMWXIAMq9jDIl19+mQ0bNoh1LgWDLY0jCIIgmI6YlEws0mKxNnfF1l5B4+aWuZ6vVdeC+o3VPLiXyc2rabjaqLGv3RhSHnP22i0jRV05FdpyNnbs2FyPHz9+zJYtW/Ksk/njjz8aPjLBZIlbmYIgCJXPpXvRqHXpWCir4FXHAqUq7xfwuj4WpCTpuH0zHY+a5gzu1Jzld65z8uQpWjWqL760G0ihydl7771XXnEIgiAIgmBEt0Kyvnirzarg5JL/yj+SJOHznJpHYZlcu5BK207WVKnbhOSbJzhxKZD2zRqWZ8iVVqHJma+vb3nFIVRQYnCAUBFZWlqi0+nEdSsIOURHRuAgKbFSO2JrX/CyjBZqBfUbq7l2IZVHDzIZ5NeUJcFXOHvmNO2a+IiJ4w2g2AMCNBoNhw4dIiQkJM88Z++++67BAxMqBjE4QKiIsvvOFnXd5pw2SBAqs8R0LVJyDBbmzjhVsUChKPz2pFcdc+7dTuf6xVQ697Kjar0mJAYe5+SVm7RvKhp2SqvY6e2iRYvYvn07arWaqlWr5vonPLvE4AChIsr+Zl/UdTty5EhGjhxZHiEJglFdf5SArSYBtbIKTi5Ft9soFBKNmluRmiITEpTOl2NfJ1lSs3fffvFl3QCK3XJ2+fJlFi1ahLW1mAlY+Je4JSRURKmpqURHRxe5X/Y+Li4uZR2SIBjVjZBwFMhYFNLf7EkuriqquKm4fSsdhUbL1ZAI2nrZc+7GHVr51injiCu3Yrecubi4kJmZWZaxCBWch4cH7u7ueHh4GDsUQTCIjRs3snHjRmOHIQhlLj4mEgC1eRUcnIu/bFn9Rmoy0mU6d3yNk9v+IF0y49jps2UV5jOj0OTs2rVr+n9+fn7MmTOHY8eO5dp+7dq18opVMHE5+5+JJE0QBKHiuBd8CyRz7ocGocpnCo2CODqrcK2mYnD/yQRdu4ZDTV+UiZFcuS3uqpRGoelxfvOXrV27NtdjU15bU5Zl0tLS9KOynkZERATp6ekGjqxymj17dp5tKSkp+p+NXZeyLKNQKFCr1aKPXAUnRgkLgmFZm6swU5pz4+4FwK9Er63XUM2xfUncDUqnf6dW/Bpynf3HT/NcHfEF/WkVmpwtXry4vOIoE2lpaZiZmaFSFb+J9kkqlQqlsnj33591w4cPB7L6J2azsrLS/2wKdanRaEhLS8PS0rLonQWTZahRwiLJE4QstiowU1hz++6+Er82u/Xs9q10unrbYudZn5T71zkf/IAW3u5lEG3lV2TWMnbsWJo2bUqzZs147rnnUKvVBjv4w4cPmT9/vv5xZGQkgwcPJjk5mf3792NnZwfA0KFDad68eYnL1+l0pUrMhKdjymuwqlQq0RJaCRhqQfOcSZ5I1IRnVaZWh4WcgVJpxV+bVj1VGQ0aW3JkTyJBgen895OJvPPO//HH5u00nzxG3Kl4CkVmLt988w0XL17kyJEjLFu2jJo1a9KsWTOaN29O9erVS3Xw6tWrM2fOHCArkfq///s/WrduzcGDB+nTpw8vvfRSqcoXF4SQH3FdVHyGSp5yJnn5tcYZ8suoIJiqyMRUFHImKjNrLNRPN4GsvaMSz1rm3A1Kx1JlTeD9SBrXcKH9gDe4d2af+NJTQkX+FhwdHenatStTpkxh+fLl9O/fn9jYWObMmcN7773Hzz//zKVLl0o9kvPq1au4ublRpUqVUpVjajw9PenevTv+/v707NmTs2cNO4pl4sSJbNu2DYApU6bw999/P1U5AQEBfPrpp6WKZdeuXU99fEEwhrCwMB48eEBYWFi+c/YNHz5cf7teECqrR7GJAFiorYrYs3ANGqtRSNC/7yQObw1AJ0u079QFFAox91kJleien1KppFGjRjRq1IgRI0YQGRnJhQsX2LlzJ/fv3y9VS9fx48dp3769/vHu3bs5cuQItWvXZsSIEXkWW68o1Go1e/fuBeDQoUPMnj2bDRs2lMmx5s6dWyblFteuXbvw9/enXr16Ro1DEJ5Gft/qg4ODAfD29i7vcASh3ETHJQBgVcrPWbWlgjoN1Gi1PXlv0ivsP3sYKTiQOp1f4c7B9YYI9ZnxVB2yspc+cXFxoUePHrzwwgulCkKj0XD+/Hlee+01AHr06MHAgQOBrBadX3/9lXHjxuV53b59+9i3L6vz4uzZs/NMFBkREWGQPmelLSP79SkpKTg4OKBSqUhOTmbEiBHEx8eTmZnJ1KlT6dWrF8nJybz99ts8fPgQrVbL5MmT6devH5cvX+bzzz8nOTkZJycnFi5cSNWqVVEoFCiVSlQqFf379+fzzz+nadOm1KpVizFjxrB3717UajWrV6/G1dWV6OhoPvroIx48eADAsGHD8PX1JSwsDIVCkedcP/roIy5dukRaWhp9+/blo48+AuCrr75iz549KJVKOnfuTJ8+fdi7dy+nTp1i4cKF/Pzzz9SsWdPgdWkIFhYWFX5SUZVKVeHPwZiKW38rVqwAoG3btmUdUoUlrsXSMYX6S0m/CkBVV5dSx2LfXkdYyD1uXM7gtZde4Lvvb9Kl4/McW/8zTtZluxyaKdSloRT7k/LOnTusXLmS+/fvk5GRkeu5gICAUgVx8eJFatWqhYODA4D+vwDdunXj22+/zfd1/v7++Pv76x8/OeN3enq6fnSg7o8VyKF3Sxxbzr4oeZ7zrIXi1TGFvj4tLY0uXbqQnp5OZGQk69atQ6PRoFQq+emnn7C1tSU2NpYXX3wRf39/9u3bh6urK6tXrwYgISGB1NRUpk2bxqpVq3B2dmbz5s18/fXXzJs3D51Oh1arRaPRIMuy/ueUlBSaNm3KRx99xMyZM/n111+ZOHEin376KW+99RatW7fmwYMHvPLKKyxbtgxZltHpdGg0mlzxf/jhhzg6OqLVahkyZAhXrlyhWrVq7NixgyNHjiBJEvHx8djb2+tv3/bt2xcgT1kqlSrPNmNIT08v1uzwpszFxaXCn4MxlbT+RF0XTFyLpWMK9RcTGQOAnbW5QWJp2EzN2WPJBF5OxPe5pty4dJ7vNh1jUs/nSl12YUyhLkuisH77xU7OFi9eTIsWLRg7diwWFhYGCSzbk7c04+LicHR0BODMmTN4enoa9HjlKedtzXPnzjFhwgQOHDiALMvMnj2b06dPI0kSjx49IioqigYNGvDVV1/x9ddf4+/vT5s2bbh58ya3bt3i1VdfBbJaLl1dXQs9rrm5Od27dwegcePGHD16FICjR4/m6heWkpKSay6yJ23dupX//e9/aLVaIiIiCAoKol69elhYWDBlyhS6deuWK0EWhMoge+Tm559/LgaQCJVeWnIKCskcO3vDfLa7uZvhXsOMvwPTaNe5BTcDA0m6fYFrj+rQyE0sAVkcxU7OoqOjGTp0qMH/UKWnp3PlyhXefvtt/bY1a9YQEhKCJElUqVIl13NPq6gWroIYsrWnZcuWxMbGEhMTw/79+4mJiWHnzp2YmZnRpk0b0tPTqVOnDjt37uTAgQPMmjWLTp068cILL1CvXj22bt1aorizf1dKpVJ/Djqdji1btuSZ5+v+/fvExcXl2bZs2TK2b9+Og4MDEydOJC0tDZVKxfbt2zl27BibN29m1apV/Pnnn6WsHUEwHaLzsvAs0aalYK60wtLq6UZq5qdhc0uiIjRcv5iJX/vnOXxwP78fusCXg9pjpjTccSqrYidnrVq14vLlyzRt2tSgAVhYWPDzzz/n2vbee+8Z9BimIjg4GK1Wi6OjI4mJibi4uGBmZsbx48f1nZEfPXqEg4MDr7zyCtbW1qxbt47x48cTGxvLuXPnaNmyJZmZmdy5c4f69euXOIZOnTrxyy+/MHbsWCBria5GjRrlu29iYiKWlpbY2dkRFRXFwYMHadeuHcnJyaSmptKtWzeaN29Ohw4dALCxsSE5OTlXGTknpG3RokWJ4xUEYyisO4MgVDZyZioqhRVW1oZLmiwsFDRuYcn5Eym4VquFtYMzDtE3+N+F2rzRSkxMW5RCk7MffvhB3/qSmZnJ3LlzadCgQa4+YQDvvvtumQVY0aWlpelvL8qyzPfff49SqWTAgAGMHDmSXr160bBhQ/1osJs3bzJz5kwkScLMzIxZs2Zhbm7OsmXLmDFjBgkJCWi1Wt56662nSs6++uorPvnkE/z9/dFoNLRp00bfp2/dunXs2rVLv+/WrVtp1KgRXbp0oUaNGrRq1QqApKQkRo8eTXp6uv7WD8DLL7/Mhx9+yMqVK1m+fHm+AwIEoSLI/rL0+++/GzkSQSh7kiYFpYUzZuZPeWdM1oGsRUKHjARIICmo7mFGZE1zggIz2LlpLx07NSPw/CkCvXrh61q6aTsqO0ku5OthcW9VDRo0yGABlcbDhw9zPU5JScm1fNDTMJVO7BVVzpaznK0RxlxFwBDXhbFVtI6vpkbUn+GIuiwdY9dfRqaGpT8uwd7uOUa+0bnI/RWZj7GMP4VZehgKzWOUmgQkueB5TmWUpGksSUw1515EBFqVPZdSqrB77f+4eSeaw6eug2SYFjtj12VJFTYgoNDkrKIRyZlpy5moieSsdCraHyFTU9z62zq8H15KmYSEBNq1a1cOkVU8ZmZmpZ6E/Flm7Pq7p7Bim5kdLlYNGRK3v8D9lDYyNvXA8p/xeZmPQZsC2lSQNVmNZ+hA33CW/V8laNRqEmyrYa2IxtoqEbXZv+XKWtAkQmb8P//isspGV/JWPEPWZXFmYyitUo3WnDRpEj4+Pvj6+uLj44Ozs7NBgxOeHaIfj1DR1PDywiklnoSEBGOHIghlIlKZ9UVVjS7f55U2MrYNQO0BaCHlLiQHgzalJMlTOo+sbbnqPBjHx4cJ1N5B4ehADU0k/VweY2YHFlXByitrb1kHmY9lMmIgIxoyokDWPlujpotMzgYMGMCNGzf466+/ePDgAa6urvj4+Oj/ubm5lUecQiXQvHlz0QopVCj7vVpyX1mV9evHEPbXQWOHY5KcRCtuqRi7/mJOXIJzR3CoWx9lp+767YrMx1jH7kOdeAFZMiPFvi0pjh2RG9hAT1CW8Dg1gaSLqdz9uxNedlW4FXSObVbPkVCjNQMbZjX6KDQJqNLCMEsPxcwqBGunUGzqapFRkmlZi3TrBqTbNEKnss/3GMauS0MqMjnr2LEjHTt2BLImRL158yY3btxgz549LF++HAcHB3788ccyD1SoPEzl9qYgFCVVK+GZFsz7y7ej0cmoFM/Wt3eh8ouPSwLAxdkOAEmXjlXsQazij4Msk+rQnmTHTsjK0i+h2LCJmpQkLREPffD0fIwcGsTOM9aYKRrxso8TOpUdGTa+ZNj4Zr1Al4lZ2j3MU/7GIuUWttHbsI3eRoa6Jmm2zUi3bYKsMOy8q6aiRGvp2NnZ4ebmpp+rKyoqKs98WYJQEiJRE0yZi5RMMqAMOsKAo4c5/+tsJFnOdx1OQaiIUpKSkSQVrk6WWCRexCZ6J0ptIqm2zUh26o7OzNFgx5IUEs3bWnP8QCIJCa1xcoynYcwl1p+24Ou52zj9039yz6WqMCPTyptMK2+S6Y0yIwqLpKuok65gF7URXfQO0uyakWrfHq155Vi2KVuRydnt27cJDAwkMDCQ4OBgqlatSv369fHz8+Ptt9+usAuSC4IgFEWpsKKKjQf3oy7Qyc0SRn7KxTVzjB2WIBhMRkoKbrZK6mb+gmVECJkWHsRXG4ZGXaNMjqcyk2jb2YZTh5LQaTvxIHUNTTmFomMv2k+YR+jmHwi9F5Lva7XmVUhx6kqKYxdUafexTDiNZcI5LONPk27TBKz6A2W7fmd5KTI5++STT3B3d+fll19m0qRJmJtXjhMvL56enjRo0ACtVounpycLFy7E3v7f++X+/v7Uq1ePJUuW6LdNnDiRo0ePcuLECSwsLIiNjaVXr16cPn2a0NBQOnfuTO3atcnMzKRNmzbMmjULhaLizLics4UsZ8uZaEUTTI0m3YGqds0ITYkhnft0drVA/d5/eZSYgZut+FsoVHCyhk7ud/GrGY2kVZNQpT9pdi0NNrVFQSwsFLTrbMOpwxJ1MgYTHLaOJpxF0awNltVqE5mUiauNWcEFSBIaSy8SLb1Idu6F5eOjWMafRrpyGRv7tiQ7dUdWVuy7ekX+Bt59910aNGjA5s2bmTRpEj/88AP79u0TzfrFlL225oEDB3BwcOCXX37RPxcUFIQsy5w+fTrP+pYKhYI//vgj3zK9vLzYu3cv+/btIygoKNfEsRVNkyZN9P8EwdTMnD2W39f/h4b1u9DKdyg21ta0M3/El5vPcyYs0djhCcJTU6U/xCl0MV1qR3Ej0oWYGpNJs29d5olZNnMLBW07W+Pu4YxPrRFoMySaxJ+ngaOSSTvucDq0eO8vncqWZJfexNT8CKp2xjL+FM73vkOdcAEq8OwATz0gIHttyLp16/Lhhx+WeaCVQYsWLbhx44b+8caNG3nllVcICgpiz5499OvXT//cW2+9xYoVK3j99dcLLE+lUtGyZUtCQkLKMGpBMA3Zi5FLklRuXw4DAgIA8K5tx/kTybg7vECEtJf6cef5aU8aEy+cI3Tbj8iaDPGFVagYZB1WcYexjt2HTmnFr2edeJjelNEdyr+Lkrm5gradbQi8pETiVRLST6JICOHRg0j+e6gNj87vY++c97EyK3psqKy0Rq71Go/NG2MTtRm7yD8xTwki0bVfhRw0UKoBAZGRkVy8eLGsYjOon85FcDcurcSvK2xurlqOat5qWbVY5Wi1Wo4dO8bQoUP127Zs2cIff/zB7du3WbVqVa7kzN3dndatW7Nhwwb98k9PSk1N5dixY0yZMqX4J2TCROuZUJjs92F5zpUXGBgIQPv27enob8uFU0oyM7oTG7OBRvJVnBrX4nKdJdz5a0G5xSQIT0vSpmEXEYBFyk3SbJ7jgbobf0f9QYachIeHh1G+YCgUEo2aW2HvpOLqOT+U0k10cWewj9xPUOMmTNh2l/Ftq9G3Vf1ifTnTWFTjsfvbWMUdwjp2H6r0+8S7DUdrUbGm/Sr2gIAbN25w69Yt0tPT8fb2pkGDBvr+UkLBstfWDAsLo3Hjxvj5+QFw6dIlnJ2d8fDwoFq1akyePJnHjx/nWrf0vffeY9SoUXTr1i1Xmffu3aN79+5IkkTPnj3p2rVreZ6SIBhF9helXKO5ypGtvZKO/jb8HagCeTDR8eeolvY39koLqr45nQUnH/JGM1fs1SX6zisI5UKRGYvDw1UoM2NJdHmJVPu2PLr3AIDElFSjTxDuWdMcF1cVV841xlzpysPoAzyXfI1HSSHMSmxGzaGfELb1RzITY4suTFKQ4tSVTMta2D1ai+ODZcRXG0mmZc0yPw9DKfKvyJdffkn9+vVp0KABffv2pW7dupiZFdJRz0QVt4XrSaVdvim7z1lCQgIjR47kl19+4c0332TTpk0EBwfTpk0bIGsx8R07dvDaa6/pX1urVi0aNmzI1q1bc5WZ3eessso5MCAn0bL2bDOF24YKpUSDxpa88WZfBr38MZ41ehKTdJLmCeeJuPKQ90Pq80ozD3rXcxRzogkmxTL+FMrMOB67v0WmZS0AImKz5jiLexxjtC89OVlaKWjd0Rr3e54EXh5IZEwgcuJ5qsQe4Z53TZynrCTswB9kanWYKYvuG5dpWYs4j7E4PFyJw8OVxLu9Roa1TzmcSekVmZz98ssvKBQKUlNT853TLDo6GheXyjW/SFmws7Pjq6++YtSoUQwbNoxt27axb98+qlWrBsDx48dZsGBBruQM4P3332fEiBHGCNnkiNGcgqk4dWY/siwTHpZJ4GVXHkZcgeSrVIl8xKEjXuy5WY/XmlenractChP40BMEhS4VndJan5gBxD3OGog2aFB/Fn47zlih5SJJEh41zXHzMOP2zRZcOleVxPTr1E6/Ry1VBDe79ealxQcJ3fETj68fIyw0tNDydGaOxLm/g0P4L9iHr+Fx9VFkWnmX09k8vSJTz+wpGmbPnp1nQdGIiAg+//zzUgUwfvx4PvjgAz788EOmTp0KZLUiffXVV7z//vt89dVXJCUlleoYpqJRo0b4+vqydetW3Nzc9IkZQNu2bQkKCiIiIiLXa+rXr0/jxo3LO1RBEIogSRLVPc3p2tuRLt2eR01LbC1rUjMtBO/7+9mw6xAvzd3CyfuJ6CrwqDGhcpB06ciK3NO/JCclA+DsZG2MkAqlUknUb6Sm36u1adu6B+7OvVBLtvgkB9JJDqLd4P/DZ8JSjt9PKPL9JatseFz9LbTmrtg/WoMy/VE5ncXTk+Ri3mj+7bffCA0N5eOPP0apVPLw4UNmzpzJK6+8kqdPVEmMHz+eWbNmYWdnp9+2Zs0abGxs6NevH5s2bSIpKYlhw4YVWdbDhw9zPU5JScHKyuqpY4PS39YU/lXauszvdufTtKAZ4rowNpdKtIacMRS3/jZu3AhA//79i9y3Rg0vmjb2p2e311FbJ5Kcfg8ZiQiL6txMUhJ0YD2xlw8j8e/AhvIceVpWxLVYOuVVf/YPf0GhTSLO8139tlV/7CUpMoihI8bg4mDa3ZXSUnUEBaZy48YdYuIvkKmNJxlLgm3rcz86gfB9a3h4bi+xMTEFlqHIfIxj2I8gScR5jC1wjc7yUr169QKfK/aEJsOHD8fJyYkFCxZw//59/vOf/zBkyJBSJWYFOXv2LJ06dQKgU6dOnD171uDHECoeMR+aUN769+9frMQM4P79e2zZvpJxk7rwR8D/SE/wwt6yHm7pj+hsdp+BfXvj98FCHJt0QSbrVqexO2ELz46slrPcU0pkpqeiVKhxsCnpMublT22poHELa156pSF+zw+kqmMH7JUqmiReoqvFI9q8Oo7Rv1/kdGhige8rnZkD8dVHImlTsQ9fA7K2nM+i+Eo0rOj//u//WLBgAZ988gnjxo3j+eefN0gQX3/9NQDdu3fH39+f+Ph4HB2z1vNydHQkISHBIMcRKh8xeEAoS/v37wco0ZdQSZLYe2AdAG3b+NOjywjqeNdAkfo37ZTRNO7Tg+v+/bmy7y9iLx/C3d29UrSgCaZN0qWjUznk2qbJSENSWKBSVZwVZtSWCho2s6aub1Nu36rPqVPnUWXepkniJVJv/c1PD7z5NOoxD/esJuHW2TzvK41FdRJdX8E+Yi1WcQdJcfI30pkUrtDkbMaMGXlGcGg0GiwsLNi9eze7d+8GskZ0Pq2vvvoKJycn4uPjmTlzZqHNfE/at28f+/btA7L6xD05MCEiIgKVqvTD2g1RhpDFEHXZokUL/c/nz58v8XEsLCwq/CAWlUpV4c/BmIpbf3fu3AFgyJAhT3Wc4NuXAEhKzOTqhRjOnz+PMuEqbZRxPNenJxe79efanvXEXTtaYX+f4losnfKqPylUA5a2uY4la9NRKC0r7O+vuju07eDJjatx7NixHzPdfRonXaG+lRVBr79PcHg0Pp36khB8UT+wEQCXrsjaO1hHH8SqehuwqVX4gYyg0E/K8pg/y8nJCQB7e3tatWpFcHAw9vb2xMXF4ejoSFxcXK7+aDn5+/vj7/9v1vvkffv09HSUytI114o+Z4ZTnnWZnbTl14KWnp5e4fvIiH4+pVPS+jNEXddtqKJm3daE3G7EpQuBRMZd5nlVHM1ffpnT3Qax50oIzapZm8SUBiUhrsXSKa/6c9akkpEJiTmOpdOkoVI7VvjfX3UvmDn7TVo170PXzn0xU0XSMOkq9eysCR45hRsh9wjbviLXeUq2PXF6fBP51jJiPd8HRfmvlVtYY1ShyVnnzp0NHUsuaWlpyLKMpaUlaWlpXLlyhYEDB9KyZUsOHz5Mv379OHz4MK1atSrTOJ41lWlKivziF4upC6bKzFyiro81deq3JOxeQ86cusSj6Ct0sshk77bDbK1Rn/9rX0Msqi4YnOKJPmeyLCPr0lGYqY0YleGE3LuLi4sLUVFRRDzM5NzZW4Q+uIBP0hXqVrXnxvhvWXQqnDeauWJjoURWWpLgOgjHhz9hE7uPJJfexj6FXApNzs6dO0fLli2LLKS4+z0pPj6euXPnAlnLG3Xo0IGmTZtSp04d5s+fz4EDB3BxcWHy5MklLlsQnpSdqF25coXhw4cbORrhWaZQSNSoZYVnzXY8CG3E0SMniYq9hXXwA5Y9aMi2vX/y8Nh6JExj8l2hgpN1SHImuhytQ+np6YAOlXnlSM6ySZKEm7s5fd0bExtdn9Mnb3Dn3lkaJ50n41I4b12owpX184m/dRZJkoi/sBDLx8dJtW1uUks8FZqcHT9+nLVr19KhQwd8fX2pXr06lpaWpKamEh4eTmBgIEePHsXLy+upkrOqVasyZ86cPNttbW2ZMWNGicszRXXr1iUoKCjXtuDgYKZOnUp8fDwZGRm0adOG3r176wdGhISE4ObmhlqtxsfHh1dffZVBgwYxd+5c/dqc165do2fPnnz22We888475X5epixnC1lBAwYEwRRIkoRHDTuGDutJrxeW07NnDxx153mrS2cute7DzhWVY91cwbgkXQYAsvRvy1l0XNYcZ+bqypWc5eTkYk6vF5sQH1efHxauwt4xgvZSFE2GfcDOS2e5u2URSc49sUi6hm3UZh67vw0m0q2g0ORswoQJ3L9/n71797Jo0SIiIyP1z7m5udGsWTMmTpyIp6dnmQdamcyYMYMxY8bQs2dPAG7cuIGPj4/+NvLAgQP57LPP9EnGiRMn8PHxYcuWLfrkbPPmzfj6+j7V8Z+l23siURNKw93dvdyOdfXaaa5dP0PvXq/QsJFEI3M19T/8meN3EmhfO/9+t4JQHJKcDpDrtmZETCIAltZ5V/6pbOwd1Sxd8TW1a/rwcr9XsJYvMtTXk/N1f+ZughIL517YRf2FOvEiaXbNjR0uUIypNGrUqMGbb74JZDWDJicnY21tjYWFRRGvFAoSGRmZa3UAH5+i1/qqXr06SUlJREVF4eLiwsGDB8tkjrnKLDtRq1u3rpEjESqK3r3Lrx9KztuXkZGRbN68E23ScW4eiONWaCOGdXDFvBjrCQrCkyRddnL2723NuMdZLWe2thV7Qu7iyn5/ybLMqZOXOXfuGM0U8azb6kjjNnUYauWJTcwOMqy80amM/2Wo2PManDt3jubNm+tHV1Y01y6kkPC45BPOSZJU4IR2dg5KGjUv+YU9ZswYBg8eTMuWLfHz82PIkCHY2xc9U3GfPn3Ytm0bjRo1onHjxpibi07DT2PDhg1MnTpVPyqusszULhjejh07gPJN0gBcXV15443XmDz5Y+rWBXVgLJ9er8GGZe+TEfNQXKtCifybnP3bqJKQkLWupqODjVFiMhZJkmj3fFNq1qzO1q3bUT8+Qsjx5rz6SMv6IZnYh68hzn0MKIy7YkKxv4YFBAQwZswYVq5cmacPlVAyQ4YM4dChQ/Tt25eTJ0/y4osv/tM5s3Avvvgi27ZtY9OmTfTr16/sA63kZFnWJ95ipnYhPw8ePODBgwdGObaZmRl//RXAnj37SM2IoJbuOmMnrsCmRkOjxCNUXPo+ZzmSs9SUrDm/qro8W8lZtmrVXRn5xmtERT4mM+k8zavU5csz9TFLD8U2ajMY+TOh2C1nc+bMISQkhKNHj/Ldd99hYWGBn58fHTt2xNXVtSxjNIinaeGCspuby83NjVdffZVXX32Vrl27cuvWLZ577rlCX+Pq6opKpeLIkSP85z//4dy5cwaP61nyZMuZIJgaSZK4ePE8ERHhvDp0OGrdccaN+Zqz9xNpVcPW2OEJFYS+5SzHgID0tFQkyQxXx2f3DoyFhQW/rF5O3z4D8PEFC2111t6ux9A659FYVCPVob3RYivRdO01a9akZs2aDBs2jKtXr/Lbb7+xbt06GjRogL+/P+3bt0ehEH0iinLw4EE6dOiAmZkZkZGRxMXF4eZWvCG8U6ZMISYmptST6z7LXnnlFTGVhlAh5Lx9mZyczJ9/biYh4STn9qWR0KER3eo5GC84ocL4d0DAv4lYZkYaCoUaC9Wz/VkSGhoKwMBXhuDXqT1Btx256FQDT4swsJeNNnqzxGvpPHr0iKNHj3L06FEkSWLIkCG4uLiwa9cuTp8+zZQpYuh3TqmpqbmWG3r77bcJDw9nxowZ+kEV06dPL3bro5iQt+x4eHiI/meCybK2tub11wfx1187iIi4wN+HU/j8q/0c++1bY4cmmLj8bmvqMrPW1RSyrN8QQFDQbXbt2sW2s2pualz487+eRvssKHZytmvXLo4ePcqjR49o164d7777LvXq1dM/36ZNG956660yCbIiK+gX+8UXXxT4mvXr1+d6/Pzzz+e7yPwHH3xQqtiE3ET/M8HUmZmZMWjQi3zwwafUqgXDOnYg4Fwkg1tUEbfmhQIp8hkQoNOmIanErfGc6tatg6VlfzZs+AuPzL+N+llQ7OTs0qVL9O3bl1atWuW7qLSFhYVoNRMqtOyRueJDTshWu3ZtY4eQh0Kh4M8/f6NPn4E0bAix59LpuzacrXPfRSGuXSEf//Y5+3cEoqxLR6mqmAuelyUPj+qs/mUVWp3WqJ8FxU7Opk6dWuQ+z9LkpkLlk7OVU9ziFACTnUsw+5ocPmwMrVpDX29XFu67z/iunpiJudCEJ0i6dHSSOUhZ14ZOp0OnS0dZyZZuMpQLF88bO4TiJ2eLFi3KvwCVCmdnZ1q1akXNmjUNFZcgGJW4xSkAbNy4EYD+/fsbOZL8HTy0k7S0VDr6tcEi6BhzM9sxqUdN1CqRoAn/kuSMXLc04+NTABkzC5Gcmapiv4MtLS05e/Yssizj5OSELMucO3cOhULBgwcPmD59OocPHy7LWAWh3ORsznZ3d8fDw8OI0QjGEh0dTXR0tLHDKFBYWBh/rl9Dt64vkKmJwz7kGN/tuENyRskn3BYqL0mXnnvppugkACysKv/STRVVsVvOwsPDmTZtGg0aNNBv+/vvvwkICOCzzz7j0qVL/PLLL3Tq1KlMAhWE8pR92yh7bUXRgiaYsoaN6jJlygf06t0Dx9BjzN8u837v2thZPNvTJAhZspKzf6fRiI7NSs5sbJ6NpZsqomK3nAUFBeVZk7B27doEBwcDWf3NYmJiDBudIBhZdguaGCQgmLorV8+zadNWNNpkHB8c5eNlh/CqW/S6vULlJ+nSc01A+/ifpZvs7a2NFZJQhGInZzVr1mTt2rVkZGTNl5KRkUFAQIC+n1lkZCQ2Ns/mMhCFyW+R7eDgYAYOHEj37t3p1KkTH330EYcOHaJ79+50796dunXr0rFjR7p3787777/PiRMncHd3Z+3atfoyrl27hru7O0uXLgXg/Pnz9O3bV1/md99991TxpqamMnz4cPz8/OjSpQvffPNNoXFXdmFhYTx48ICwsDA8PDzELU7BZEmSxK1b1/jzz/VodWk0Utyl33uLSBK3OJ95T/Y5S07OWrrJ1VkkZ6aq2Lc1x48fz8KFCxk5ciQ2NjYkJSVRp04d3n//fQCSkpJKPM9ZdHQ0ixcv5vHjx0iShL+/P71792bdunXs378fO7usleGHDh1K8+bNS1S2KZsxYwZjxoyhZ8+eANy4cQMfHx86d+4MwMCBA/nss8/0o19PnDiBj48PW7ZsYejQoQBs3rwZX19ffZkTJ05k6dKlNGzYEK1Wy+3bt586vnfeeYf27duTkZHBkCFDOHDgAF27ds037meJGCTw7PF2TqZZ9UTsH/4KEvzzf8j825Iqkft6yHpOKnhmcVmGXK+RnnicY3t2Gblek//2xLOz9Mc/cOAQNWrUQCGFk3LlFq7VbDBT5IznyeNJxTunfF4rxVpgl2tt4CfOPdf7Rc5Vdu5y8z5fGvmVnRXd05efqfYixdGvdIEZgaRLRzbLsXRT6j/JmZNIzkxVsZIznU7HtWvXmDFjBgkJCcTFxeHo6IiLy79zpNSpU6fEB1cqlQwfPpzatWuTmprK1KlT9etL9unTh5deeqnEZVYEkZGRVKtWTf/Yx6foWw/Vq1cnKSmJqKgoXFxcOHjwYK5h/jExMVStWhXIqtfsCYJTUlKYPn06N2/eRKPR8MEHH9CzZ09SU1OZPHkyQUFBeHt7ExYWxtdff02TJk1o3z5rPTFzc3MaN25MeHh4oXFrtVq++eYbTp48SUZGBiNHjmT48OHIssz06dM5fvw4np6eSJLE4MGD6du3bylr0DhyzoMmptp4NtSqUR1X69soNI//2SLr07OcH/w50qasR08kJLlIT96wyFlWzkRN/ufH7CVkciRH2eXn2v7v8z06NESj1fH4cTzwiMeRapwdrVApnkxY/o1BeiJhzHNOkHXcJ5NOnRKVNmfrXHZ8OfbLkdjmLvufffN9vrhdCfJPtnL9Lgo4fkkotYmYpdyuuMlZjpazzIxUJMkCe8tnd11NU1es5EyhUPDrr7/StWtXXFxcciVlpeHo6IijoyOQNRrU3d2d2NhYg5T9pCNHjhAVFVXi12V/IOenSpUq+PmV/I06ZswYBg8eTMuWLfHz82PIkCHY29sX+bo+ffqwbds2GjVqROPGjTE3//eNNWbMGPz8/GjXrh2dO3dm0KBBqNVqFixYQPv27Zk3bx7x8fH06dOHjh078ttvv2Fpacm+ffsIDAzkhRdeyHO8+Ph49u7dy5tvvllo3GvXrsXW1pYdO3aQnp5Ov3796NSpE9euXeP27dvs37+fqKgounTpwuDBg0tcX6YiZxImBgo8G2q2HEwGkGHsQJ5SI99GjBnzLkqlhgz7VvR+oRG+VQ3bWuLi4kKsCY9oNRSruMPYxOzKk+hUBIonBgRo/1m6SakobgIslLdi9zlr0aIF586dK7NAIiMjuXv3Lt7e3gDs3r2bKVOmsGTJEpKSksrsuMYwZMgQDh06RN++fTl58iQvvvgi6bluC+TvxRdfZNu2bWzatIl+/frlem7SpEns2LEDPz8/Nm3axLBhw4CspHTx4sV0796dgQMHkp6ezoMHDzh9+jQDBgwAwNfXN0/rnUajYfz48YwePRovL69C4z58+DDr16+ne/fu9O3bl7i4OO7evcupU6fo168fSqUSNzc3OnToYIDaMw1iqo1nw59//smff/5p7DCeWkLCYxYtmktGugLz+NPs3n6OI3fjjR1WhaRTZi11pNAkGjmSEpJ1SHJmrgEBmekpaFGJv1smrNh9zjIzM5k3bx716tXD2dk514fTu+++W6og0tLS+O6773jjjTewsrKiR48eDBw4EICAgAB+/fVXxo0bl+d1+/btY9++fQDMnj07T4teRESEfqmprl27lirG0shvuSsPDw+GDRvGsGHD8PPzIzg4WN/HTJIklEql/nVKpRJJkqhevTpmZmYcPXqUb775hgsXLqBQKPT7eXt74+3tzciRI/H19SUhIQGAn3/+WZ/0ZpMkCZVKpX/tk8f84IMPqF27NmPHji0ybkmSmDVrFl26dMm178GDB3OVmX0u+dVHebKwsCh1629aWpq+LMhqQTNUi3JxqFSqcj1eZVPc+nv8+DFAha3r7Os0IyODqR9/hQ2XubQ3mfjOfrzRzssgo5CfmWvRzAMiwdFGAXaGO98yrz9NVv8yS1snLF1csrpjkEmmzrzc/26Vtcp0LRb7U9LT0xNPT0+DB6DRaPjuu+/o2LEjbdq0AcDBwUH/fLdu3fj222/zfa2/vz/+/v76x09OFpmeno5SWbp5flQqFRqNplRlPPn6gwcP0qFDB8zMzIiMjCQuLo4qVaro95NlGa1Wq3+s1WqRZVnfZywmJgZZlv9ZgkOHRqNh3759dOvWDUmSCAoKQqFQYG1tjZ+fHytWrGDmzJlIksS1a9do1KgRrVu3Zv369bRt25abN28SGBioP+a3335LQkICc+bMyRV7QXH7+fmxatUq2rZti5mZGbdv36ZatWq0bt2aNWvWMGDAAKKjozl+/Dgvv/xyqeuztNLT0w02sWjOfmjlOVmpi4uLSU+Oaihl1bevpPVXGep6yY9zGP76WKq5B3PvQDJfhLfhnQ6emClLl6A9K9eiMl3GGUiMCSU9w8lg5ZZ1/Sk08bgASaka0qKjSUnWotUmk6xRlfvfrbJW0a7F6tWrF/hcsZOzQYMGGSSYnGRZZunSpbi7u+fqJJ494ADgzJkzZZIUlpfU1FRatGihf/z2228THh7OjBkz9K0u06dPx9XVtVjltWrVKt/tGzZs4IsvvsDS0hKVSsWiRYtQKpVMnDiRzz//HH9/f2RZxsPDg19//ZURI0YwefJk/P398fX1pWnTpgA8fPiQhQsX4u3trR+VOWrUKF577TUOHz6cb9yvvfYaoaGhvPDCC/oVJH7++Wd69erF8ePH6datG7Vr16Zdu3ZPW40mS6zHWbbECFnD+nXNEl7sMxTfRhKKawd446QtSyf1w1ZMVlsknSpr9gCFtmLd1tQvev5Pn7OIiARktHjUri3+TpkwSS7BX70rV65w/Phx4uPjmTp1Krdv3yY1NZVGjRo91cFv3rzJjBkzqFGjhr55fejQoRw/fpyQkBAkSaJKlSq8/fbb+mStMA8fPsz1OCUlBSur0s2AbIiWs4rgyek7ysLkyZPp2rWr0UdrGuK6yE/2IAGABw8eGLz8nCraN8SnZeyWsxUrVgBZg2Eqk1f6Dadztw6Ajjjn5ozu2xQPu6fr5P6sXIvIMlXuzCDFvh3JLr0NVmxZ158qLRSnsCU8rjaCDGsfDh0N4srFnXg296d/B9+iC6hAKtq1aJCWs507d7Jjxw66devGqVOngKypFlatWsXMmTOfKrAGDRqwbt26PNsr05xmwrNDTLVheKLuysbpcwd5+CiU114biUP0aX5bG0WXFzrS1qvoUePPLElCp7RFWcEGBEi6rLHG2QMCoqMfA+BZ3XC3ZgXDK3ZytmPHDj777DNcXV3ZvHkzkNVS8GRrlVAxrV+/vsyPsXDhwkrdCimm2qh8WrdubewQykT2tVqvrg9jxnyINXc4s/0xwc3aM7RNTTHFQgG0KjsU2gRjh1Eikpx9WzMrOUtOjAcU1HYTyZkpK/ZUGqmpqXlGQWg0GqOPvBMEUySm2qgcmjRpUqa3+o0tJTWR7xd8RtCtOCRtInHndvLRgr94lFj01D7PIp3StsJNpfFkn7OMtERQWuNoaWbMsIQiFDs58/HxYdOmTbm27dy5k4YNGxo6JkGo8LLX5MwmWtAqpt9//53ff//d2GGUmezr9IfFn7N5404kbPFSPiDgf1vYdeWhuG6foFPZVryWs+zbmgoLdFoZjSYRzG0NMo2KUHaKnZyNHj2aM2fOMH78eNLS0pgwYQKnTp1i5MiRZRmfIFRo2X8As/uhiVa0iiU5OZnk5GRjh1Eubv59gTlzZxAVpUCREUnQ4U1MnRdAhGhF09Op7FDo0kFXcdaM+LflzILkJC0aTSJKtY2RoxKKUux7ko6OjsyaNYvg4GCio6NxdnbG29sbhaLY+Z1gZJcvX9b/XJlv1ZgS0Q9NqChyXqs9ug/gpZdewd0skoBfAzgUeJd1P8z4Z23OZ1f2KgFKTQJa84ox2akiOzmTzAh/FIeMFutiLBcoGFeJOoxJkkTdunVzLXKu0+lEglaA2NhYhgwZAkBUVBRKpRInp6xOmNu3b8+1NmZpBQcHM3bsWCRJYvny5dSsWdNgZRdXaGgonTt3pnbt2mRmZtKmTRtmzZolro9/iNGcQkUReOMMN26eZ/CQ96hVM53O9R1ZtHIT7bu0o5W3m7HDMxptjrnOtFSM5EzSpaOTzEFSEPowa+1qF1cH4wYlFKnYydmdO3dYuXIl9+/fJyMjd5NuQECAwQOrDJycnNi7dy8A3333HdbW1rzzzjv65w05oGLXrl307NmTKVOmFGt/WZaRZdlgiVP2KEwvLy/27t2LRqNh8ODB7Nq1i969e+fa71kdRFJQK5q7u7tI0gSTkn0tenh44OriyesjJmCe+pCTO9azJcOat0f2x7OKg3GDNIKKuL6mJGfoR2rGxD4GoEa1ipFYPsuK/Sm5ePFiWrRowdixY/UzxAslN3HiRBwcHLh27RqNGzfmpZde4vPPPyctLQ21Ws28efPw9vYmICCAvXv3kpqaSkhICL169WL69OlotVo++OADrly5giRJDBkyhDp16vDTTz+hVCo5deoU69evZ9myZfqkeejQoYwZMwYnJyeGDRvG888/z4cffsiXX37Jxx9/TOvWrblw4QK+vr4MHjyY7777jujoaBYtWkSzZs1ISUlh+vTp3Lx5U7+EVM+ePQkICGD//v2kp6eTkpLCvHnz9OepUqlo2bIlISEh+v0yMjJITk5m+fLlfPDBB9y/fx+1Ws1///tffH19SU5OZvr06fpzmzRpEn369OHw4cPMnTuXjIwMvLy8mD9/PtbW1nzzzTfs2bMHlUqFn58fM2bMYOvWrcyfPx+FQoGdnR1//fWXsX7VhcpuRcuWvXqDaE0TTEnO67Dfy2/So0dfqpiHsXHt/whPVLD1r1U8unfHiBGWr39XCag4gwIkXbp+pGZKUvY0Gg5GjUkoWrGTs+joaIYOHVphR3jYRG1FlR5e4tc9+SGak8aiGklVXixxmXfu3CEgIAClUkliYiJ//fUXKpWKI0eO8O233+pnJb9+/Tq7d+/G3NwcPz8/Ro0aRUxMDI8ePeLAgQMAxMfHY29vz/Dhw/Utc1euXGHdunVs27YNWZbp27cv7dq1w97entu3bzNv3jxmzZpFaGgoISEhLFu2jP/+97/07t2bTZs2sWnTJvbs2cMPP/zAzz//zIIFC2jfvj3z5s0jPj6ePn360LFjRwDOnz/Pvn37cHR0JDQ0VH+OqampHDt2jClTphAVFcX58+c5dOgQtra2TJ8+nUaNGvHzzz9z7NgxJkyYwN69e/n++++xtbVl//79QNai07GxsSxYsICAgACsrKxYvHgxy5cv54033mDnzp0cOXIESZKIj48H4Pvvv+d///sf1apV028zRTlbJrITMrFUkenp0qWLsUMwGefO7+bc+T106zGSdq1aUs02lLdHjuCb73+lTdumNPEueLbzykJWWCJLqorVcqZL17ecZf4zjYaNhZhGw9QVOzlr1aoVly9f1q/BKDy9vn376hdkT0hIYOLEidy9exdJksjMzNTv16FDB+zssr6p1atXjwcPHlCvXj3u37/P9OnT6datG506dcpT/pkzZ3jhhRf0SxT16tWL06dP06NHDzw8PHKt9enp6YmPj4/+GB06dECSJBo0aKBPto4cOcLevXtZunQpkLVwePY0EX5+frmW1rp37x7du3dHkiR69uxJ165dCQgI0O+n0Wg4c+aMPgHt0KEDcXFxJCQkcPToUZYsWaIvy8HBgb179/L333/z8ssvA5CZmUmLFi2wtbXFwsKCKVOm0K1bN/z9/QFo2bIlkyZN4sUXX6RXr15P/TsqLwWtzSla0UyDt7e3sUMwGTmvwxo1vPDrNpznW7ciPfYuh3cEc9iiCtXq+tCjnS/2lobrT2tSslcJqFAtZxnIkgWZmTIabSKYi5GaFUGxk7PMzEzmzp1LgwYNcHBwyPXcu+++a+i4DO5pWrigbNbWzLmu45w5c3j++edZuXIloaGhDBw4UP9czgEDCoUCjUajT1gOHTrEL7/8wtatW3PdToTCW16eXFMy5y1qhUKhP6ZCoUCr1erLW758eZ4PqgsXLuQpL7vPWWHHzS++nJ3lnzwXPz+/XElbtu3bt3Ps2DE2b97MqlWr+PPPP/n222+5cOEC+/fvp0ePHuzZs0c/CMPUiT5ppue3334DYPjw4UaOxLTcv38PyLpOmzbvQbduL2GRGUv4tSOsvn4KycGLeo3r0cHXC2vzytXHVKeqWBPRSnI6OqUtSQkaNJpEVPauxg5JKIZi9wb38PDg5Zdfpn79+lStWjXXP+HpJSYm4uaWNfopv3VGnxQbG4tOp6NPnz58+OGHXL16Nc8+bdu2Zffu3aSmppKSksKuXbto06bNU8fYqVMnVq1apU+qrl279tRlZceX3RfsxIkTODk5YWtrqz9OtsePH9OiRQvOnj3L3bt3gazbpbdv3yY5OZnExES6devGl19+SWBgIAAhISE0b96cDz/8ECcnpwq7vFh+SWrOedIsLS3FnGnlIC0tjbS0NGOHYbIkSeLShT3Mm/seK1b8xKNISyxUrshxt7l1ZDvLl//Ch3NX88L/TSM4OgVdJbhlr1XaVazk7J/bmg/C45HRYiOm0agQiv2VZtCgQVy5coVjx46RkJDA1KlTuX37NqmpqWUZX6U3duxYJk6cyPLly2nfvn2R+4eHhzN58mR0Oh0A06ZNy7NP48aNGTRoEH369AGyBgQ0atQoV5+wkpg4cSKff/45/v7++iTh119/faqyACZPnszkyZPx9/dHrVbz/fffAzBhwgQ++eQTunbtikKhYPLkyfTu3Zv58+czfvx4/Sjhjz76CBsbG0aPHk16ejqyLPP5558DMHPmTO7evYssy3To0KHCrmBRVJ+0nD+LljXBWMLCwnBxcSE6OhoPDw9Wr/oCM5U5LZr3oN3zPbCz0eFp/gjPhtXYtvY34pUO3I6Oo/9LffBydcTWQomzlRlOlhWndU2nskWRGmzsMIpN0mWN1gz7ZxoN16qORbxCMAWSXMzexzt37mTHjh1069aNjRs3snr1akJDQ1m2bBkzZ84s6ziL5clWkpSUlDy33UqqLG5rPqtMpS4NcV0YQ85ETZIkfYKe7clbw6LPWsGyE4qiZPeNHDNmTFmHVGHlV5fZ16qtjRMtmvWgWbO2ODiYk5bxCN0/C3FrFVYkqByINLMj/GE4Hw5/idY1HFBIIAMKEx18ZhV7CJvY3UTW/hIUpe9bV9xr8anLv/05Kbat+WlXFaIfn6L7K6/h4145p9Io67o0tOrVCx5EU+yvKzt27OCzzz7D1dWVzZs3A1n9DSrqbSNBqGhyJlk5WysKG+1ZUUd+igERFVt+vzNv7wbU927Nc43a4lWzJiqzDMwzo3DMeEh9ezizZQ0nlDYkK214rLQmJiWNmPAwxo18lZrONnjYmWOnNn4Lm071zyoB2kS0CmcjR1MEWYdCziA+QUlqWgQ6FPTs0Jr7d5+d6U8qqmJf6ampqbi45M62y3pC0UuXLrFq1Sp0Oh3dunWjX79+ZXYsQaiIChrtCeQ7wKKiENOKVD7BwTf1P3t4eGBj7UTtmk2oX7cZHh41cHC0QycnYqmNxyEjnJoSUB2C9/7B35IZmQpLUjEnKVNLfFpa1rqniYkkxseRkhDPovlzcbRRY6dWYWehxExZNiuTZCdnCk0iWjPTTs4kOasryP2wJJLTHvJ3ggJthlgrtSIodmbl4+PDpk2bGDBggH7bzp07y6xPj06nY+XKlUyfPh1nZ2emTZtGy5YtRQfoEhLraT47KlMLU0Gjd8tb//79jXr8yiq/a9XDwwMnh2q4V6+HR/W6VKtWA2dnZ2xsrVEoNGi0ydhok3FSpqCzygArBVSxB7I6uB/b9BsyEjrJDJ2kQouSTFkiUyeTqdWRkakhPSOdjIx00tJSycxIz/qXnoYmMwNNeto/P6frH2szMti6ZSNmSiUKhQIrKyuUyn8motWY/nQa2YueR8eHkiFZs+u3BUZ/TwnFU+zkbPTo0Xz77bfs37+ftLQ0JkyYgJWVFR9//HGZBBYcHIybm5t+NOjzzz/P2bNnS5SciW/dQn7EdWH6TCXRfPJugVB2CkrYZFnGytIOZ2d3nByq4ehQFUcHNxzsHbG1tcPaxhYLC3PMzJRICh06XQY6OR2dLhOdnIksZ6JTaZDNJXRWKmRZAoq/ys26P/7Q/yyjRKezYlZfSIyOIzlDg6WVAnNzCYXS9JKelOQUAFIzM2jl14c7771t5IiE4ip2cubo6MisWbO4ffs2UVFRODs74+3tXWaLWsfGxuLs/G+TsbOzM0FBQSUqI3tuMEPdes3ZCiVUTBqN5plaiL2wW505k1RTe95UkrPVq1cDMHLkSCNH8mwqyXXg4eGBUqHCysoOS7UtFhbWqNXWqC2ssbCwxNzMEnNzNeZmaizUVpirrbBQW6KyUGNmZo5KZYZKpUKhUKJUKVFIEgqFAoVCQpIUKBQgEYcmM4xMrYSrZg8Zjw78c3Q5z///S877Y448LhmwLFGtFEXWF28jAeYQlWzGpD5dTeZ9JRStRFmLJEl4e3uXy6zZBU1UmtO+ffvYt28fALNnz87zLVeWZWJjY0s1QlCn0+ljuXLlylOXYyyvvfaa/ufsSWWNJWddGouZmRlVq1at8E37KpWqWK06xR0kYGrPl3WLVXHrL3v6FtGCVrDi1mVZK4v56CwtLdHpdPovdDqdjrotO+JTrSm1nTQ5JgqV/km4FP8+1qdI/3zxyLGvnHtD7iLybtYr6K+n9M//+OfvmoSEVtaRqckgLjGVr+YuK5f3lbGZyrVoCMYf+lIAZ2dnYmJi9I9jYmJyLRME4O/vr1+2ByhwCG32UklPI+fQ3GnTppl0a0N+z5vSzOamMMxZluVc11VFVdy6LGh6jeyfc+5nSs+X9XVS0mvR2NetKTOF93VZKWhuyOwW6WxPe/3nNy1OWb3XyuN9ZWwV7Vo0yFQa5a1OnTqEh4cTGRmJk5MTJ06c4P333zdqTKJJWKhoxDUrCIZnyPdVRUsohPJhssmZUqlk9OjRfP311+h0Orp06YKnp6exwxIEQRAEQShTJpucATRv3pzmzZsbOwxBEARBEIRyU+zlmwRBEARBEISy9+zMKfCUpk6dauwQKg1Rl4Yj6rJ0RP0ZjqjL0hH1ZziVqS5FciYIgiAIgmBCRHImCIIgCIJgQkRyVoSc86gJpSPq0nBEXZaOqD/DEXVZOqL+DKcy1aUYECAIgiAIgmBCRMuZIAiCIAiCCTHpec6eRnR0NIsXL+bx48dIkoS/vz+9e/cmKSmJ+fPnExUVRZUqVZg0aRI2NjYkJiYyb948goOD6dy5M2+++aa+LI1Gw8qVKwkMDESSJF599VXatm2b55h37txh8eLFZGRk0KxZM0aNGoUkSfzyyy9cv34dyFqjLz4+nl9++aW8qqLUTKkus2NJTk5Gp9Px2muvVag58EypLqOiovjxxx9JSEjAxsaG9957D2dn5/KsjhIzRv2tXbuWI0eOkJSUxG+//abfnpmZyaJFi7hz5w62trZMnDgRV1fXcqmH0jKlegwMDGT16tXcu3ePiRMn5vtaU2RKdbht2zb279+PUqnEzs6OsWPHUqVKlXKph9IyVD2mpqYyY8YMfbmxsbF07NiRN954I88xC/qbaJLXolzJxMbGyrdv35ZlWZZTUlLk999/Xw4NDZV/++03eePGjbIsy/LGjRvl3377TZZlWU5NTZVv3Lgh7969W/7pp59ylRUQECCvXbtWlmVZ1mq1cnx8fL7HnDp1qnzr1i1Zp9PJX3/9tXzhwoU8++zYsUNevHixoU6zXJhSXS5dulTevXu3LMuyHBoaKo8bN87g51uWTKkuv/vuO/ngwYOyLMvy1atX5YULFxr6dA3OGPV369YtOTY2Vh42bFiu7bt27ZKXLVsmy7IsHzt2TJ43b57BzrOsmVI9RkREyCEhIfIPP/wgnzx50pCnWaZMqQ6vXr0qp6WlybIsy7t3735mr8WcPvroI/n69ev5PlfQ30RTvBYr3W1NR0dHateuDYClpSXu7u7ExsZy9uxZOnXqBECnTp04e/YsAGq1mgYNGmBubp6nrIMHD9KvXz8AFAoFdnZ2efaJi4sjNTWVevXqIUkSfn5++rJzOn78OB06dDDUaZYLU6pLSZJISUkBICUlBUdHR4Ofb1kypboMCwujcePGADRs2JBz584Z/HwNrbzrD6BevXr5Xmfnzp2jc+fOALRt25Zr167lWnjalJlSPbq6uuLl5aVfnLuiMKU6bNSoERYWFgDUrVuX2NjYUp9feTFkPWYLDw8nISEBHx+fPM8V9jfRFK/FSndbM6fIyEju3r2Lt7c38fHx+ovb0dGRhISEQl+bnJwMQEBAAIGBgVStWpXRo0fj4OCQa7/Y2Nhct4ScnZ3zvEGioqKIjIykUaNGBjgr4zB2XQ4aNIiZM2eya9cu0tPT+eyzzwx4duXL2HXp5eXF6dOn6d27N2fOnCE1NZXExERsbW0NeJZlpzzqrzA561apVGJlZUViYmKBH6ymytj1WBmYUh0eOHCApk2bPtVrja009ZjT8ePHadeuXb5JVnE+q01JpWs5y5aWlsZ3333HG2+8gZWVVYlfr9VqiYmJoX79+nz77bfUq1cv173+bMX5xnz8+HHatm2LQlExq9sU6vL48eN07tyZpUuXMm3aNH744Qd0Ol2JYzE2U6jL4cOHExgYyEcffURgYCBOTk4olcoSx2IM5VV/hcmvbk3pG3dxmEI9VnSmVIdHjhzhzp07vPTSS0/1emMqbT3mVNgdqorSup2tUracaTQavvvuOzp27EibNm0AsLe3Jy4uDkdHR+Li4or8lmtra4uFhQWtW7cGsm5fHDhwAJ1Ox8cffwxAy5Yt6dGjBzExMfrXxcTE4OTklKusEydO5OoEWpGYSl0eOHCATz75BMhq4s/MzCQxMRF7e3uDn3NZMZW6dHJyYsqUKUDWH8bTp0+X+o9ieSjP+hsyZEiBZTg7OxMTE4OzszNarZaUlBRsbGwMdJZlz1TqsSIzpTq8cuUKGzdu5IsvvsDMzMwAZ1d+DFGP2UJCQtDpdPpbpU/zWW1KKl1yJssyS5cuxd3dnb59++q3t2zZksOHD9OvXz8OHz5Mq1atCi1HkiRatGhBYGAgjRo14tq1a3h4eKBQKJgzZ06ufS0tLfn777+pW7cuR44c4YUXXtA/9/DhQ5KTk6lXr55hT7QcmFJduri4cO3aNTp37kxYWBiZmZkV6jaSKdVl9ihNhULBxo0b6dKli+FP2MCMUX8FadGiBYcOHaJevXqcOnWKhg0bVpiWM1Oqx4rKlOrw7t27rFixgk8++aRCfVEFw9VjtuPHj9O+fXv945J+VpuaSjcJ7c2bN5kxYwY1atTQ/8EcOnQodevWZf78+URHR+Pi4sLkyZP133bHjx9PSkoKGo0Ga2trpk+fjoeHB1FRUSxatIjk5GTs7OwYN24cLi4ueY55+/ZtlixZQkZGBk2bNmX06NH6Y69bt47MzExef/318qsEAzGlugwLC2PZsmWkpaUBMGzYMJo0aVJ+lVFKplSXp06d4vfff0eSJHx8fHjzzTdN/hu3MepvzZo1HDt2TP8tvmvXrgwePJiMjAwWLVrE3bt3sbGxYeLEiVStWrVc6+NpmVI9BgcHM3fuXJKTkzEzM8PBwYF58+aVa308DVOqw6+++or79+/r+6m5uLjoW4tMnSHrEeDdd99l2rRpuLu7F3jMgv4mmuK1WOmSM0EQBEEQhIqsYvZQFwRBEARBqKREciYIgiAIgmBCRHImCIIgCIJgQkRyJgiCIAiCYEJEciYIgiAIgmBCRHImCIIgCIJgQirdJLSC8KzJzMzkp59+4urVqyQlJeHm5sbQoUNp1qyZfp+rV6+ycuVKoqOjqVu3LuPGjaNKlSoAXLt2jQ0bNnDnzh1sbGxYvHhxnmPs2LGD7du3k5CQgIuLCx9++CHVq1fPN54//viDs2fP8uDBAwYMGMDgwYNzPX/s2DF+//13EhMTady4MePGjSt0hv3C9l+8eDHHjh1Dpfr3T9nq1asLXCqtsHoAuHPnDqtXr+bOnTuo1Wr69+9P79698y1r/PjxPH78WH+s+vXrM3369Dz7LVmyhEOHDrFw4ULc3NzyLWvNmjUcP36clJQUrK2t8ff3Z8CAAUDWRNZr1qzh1q1b6HQ6vL29GTVqVIH1ny0pKYkJEyZQvXp1vvrqK/32kJAQfvzxRx48eIC7uztjx46lZs2a+ue3bdvG5s2bycjIoE2bNowZM0Y/D15SUhI//vgjV65cwdbWltdeey3XcjmF1a8sy/zvf//jwIEDAHTt2pXXX3+9wkzgKwjlShYEoUJLTU2VAwIC5IiICFmr1crnzp2Thw8fLkdERMiyLMvx8fHyiBEj5BMnTsjp6enyr7/+Kn/yySf61wcFBcmHDx+W9+7dK48bNy5P+fv27ZM/+OADOTQ0VNbpdHJ4eLicmJhYYDwHDx6UL1y4IH/77bdyQEBArufu378vDx8+XL5+/bqcmpoqf//99/L8+fMLLKuo/RctWiSvXbu2WPVUVD3Ex8fLb775pnzkyBE5IyNDTklJkUNDQwssb9y4cfLly5cLPeaNGzfkGTNmyIMGDZLDw8ML3O/BgwdyamqqLMuyHBMTI0+aNEk+deqULMtZv5/9+/fLiYmJcmZmprx27Vp5woQJRZ7vjz/+KM+YMUOePn26fltmZqY8duxYeevWrXJGRoa8fft2eezYsXJmZqYsy7J88eJF+a233pLv378vJyYmyp9//rm8Zs0a/evnz58vz5s3T05NTZVv3LghjxgxQr5//74sy0XX7549e+T3339fjo6OlmNiYuSJEyfKu3fvLvI8BOFZJG5rCkIFp1arGTx4MK6urigUClq0aIGrqyt37twB4MyZM3h6etKuXTvMzc0ZNGgQISEhPHjwAABvb2/8/PxwdXXNU7ZOp2P9+vWMHDkSDw8PJEnCzc2t0Jauzp0706xZM9RqdZ7njh49SosWLfD19UWtVjNkyBBOnz5NampqvmWVdP/CFFUP27Zto0mTJnTs2BEzMzMsLS31s48/Da1Wy88//8zo0aOL3Ld69eq56kuSJB49egRk/X66du2KjY0NKpWKvn378vDhQxITEwss7++//yY0NJTOnTvn2n79+nW0Wi19+vTBzMyM3r17I8sy165dA+Dw4cN06dIFT09PbGxseOWVVzh06BDw7zqsQ4YMQa1W06BBA1q2bMmRI0eAouv38OHDvPjiizg7O+Pk5MSLL77I4cOHi12fgvAsEcmZIFQyjx8/Jjw8HE9PTwBCQ0Px8vLSP69Wq3FzcyM0NLTIsmJjY4mJiSE0NJSxY8cyfvx41q1bh06ne6rYwsLCcsXi5uaGSqUiPDz8qfffvXs3o0aN4uOPP+bUqVMFHruoeggKCsLGxobp06fz1ltvMXv2bKKjo/X7z549m02bNuUq84cffuDNN99k5syZhISE5Hpu+/bt+Pj45Dpmtk2bNjF79uw824YPH84777xDenp6rtuFOQUGBuLg4ICtrW2+z+t0OlauXMmbb76Z55Zhdh3k3O7l5aWvg7CwsFy3OL28vIiPjycxMZHw8HAUCkWu26k5X1tU/T75fM7XCoKQm+hzJgiViEaj4YcffqBTp076NebS0tLyLBJvZWWlX6e0MDExMQBcvnxZv/bc119/jZOTE/7+/iWOLy0tDSsrqzyxFNQSVtT+vXr1YsSIEVhZWXH58mW+//57HBwcaNCgQb5lFVYPsbGx3L17l+nTp1OjRg3WrFnDggUL9P21pk6dmuu17733HrVr10aWZXbs2MHXX3/N999/j7W1NdHR0ezdu5dvv/023/Pq169fvttefvllQkJCOHv2bJ7zhqzfx8qVKxkxYkS+5UJW/0Bvb29q167N/fv389RBYfX55PPZP6emphb42uz6K6p+8ys7LS0NWZZFvzNBeIJoOROESkKn07Fo0SJUKlWuW2lqtTpP8pOSkpLvbccnmZubA/Dyyy9jbW2Nq6sr/v7+XLx4EYDJkyczfPhwhg8fzo0bN4osL79YUlNTsbS05MaNG/qyJk+eXOT+ALVr18bW1halUknz5s3p0KEDZ86cKfaxc9aDubk5rVu3xtvbW39b7tatW6SkpORbXoMGDTA3N8fCwoL+/ftjbW2tr4NffvmFgQMH5ptgFUaSJGrVqoW5uTnr1q3L9VxCQgIzZ86kZ8+eBbaqxcbGsnPnToYOHVqiOsiuT7Vanet8s/e1tLQs8HeRXX9F1e+Tz2e/ViRmgpCXaDkThEpAlmWWLl1KfHw806ZNyzV60dPTM1ffnrS0NCIiIvS3PQtTvXr1XGU9ad68eSWK08PDg3v37ukfR0REkJmZSbVq1bC0tOS3334r9v75kSQJWZbzfa6oeqhRo0aesoACy8vv2NmuXbvGrVu3WLNmjX7bp59+yqhRowpMrHLSarVEREToHyclJTFz5kxatmypH8WZn+DgYB4/fsykSZMAyMjIICMjgzFjxrBs2TI8PT3Ztm1brtaq+/fv88ILLwD/1vfzzz8PwL1797C3t8fW1hYzMzO0Wi3h4eH6+r93756+/oqqX09PT0JCQvD29gayRo0W5xoUhGeRaDkThEpgxYoVPHjwgI8//ljf2pWtdevW3L9/n1OnTpGRkcH69evx8vLS3/bU6XRkZGSg1WqRZZmMjAw0Gg0AFhYWPP/882zZsoXU1FRiYmLYv38/LVq0KDAWjUZDRkYGsizry87uo9axY0fOnz/PjRs3SEtLIyAggDZt2uhbbp5U1P6nTp0iLS0NnU7H5cuXOXr0KC1btsy3rKLqoUuXLpw9e5aQkBA0Gg3r16+nQYMGWFtb5ykrOjqamzdv6s91y5YtJCQkUL9+fQAWLFjAnDlz9P8APv74Y1q3bp2nLJ1Ox969e0lKSkKWZYKDg9m9ezeNGjUCslqfvv76a+rXr8/rr79eYL0DNGvWjMWLF+uPO2TIEGrVqsWcOXNQKBQ0bNgQhULBzp07yczMZNeuXQD6Y3Xq1IkDBw4QFhZGUlISGzZs0A8qUKvVtGnThoCAANLS0rh58yZnz57Fz8+vWPXr5+fH9u3biY2NJTY2lm3bttGpU6dCz0cQnlWSXNyvhYIgmKSoqCjGjx+PmZlZrvm93n77bTp27AjAlStX+Pnnn4mKitLPP5U9OvP69et8+eWXucr09fXliy++ALKSg+XLl3PhwgWsra3p1q0br7zySoG3oxYvXpxnFN64ceP0H/LHjh3jf//7H0lJScWe56yg/WfMmKFvWXN1daVfv360b9++wLIKqweAPXv2sGHDBjIyMqhfvz5vvfUWLi4uAHzzzTc0aNCAAQMGEBoayoIFC4iIiMDMzIyaNWvy+uuvU6dOnXyPO3jw4FzznP3111/cvHmTTz75BJ1Ox6xZswgODkaj0eDk5ESnTp3o378/kiRx6NAhlixZgoWFRa4y58+fj4uLC0ePHmXjxo35tmIeOnSI/fv355rn7O7duyxdupSwsDA8PDx45513qFWrlv75ouY5W7JkCVevXsXGxobXX389V0tgYfUr/zPP2f79+wHo1q2bmOdMEAogkjNBEARBEAQTIm5rCoIgCIIgmBCRnAmCIAiCIJgQkZwJgiAIgiCYEJGcCYIgCIIgmBCRnAmCIAiCIJgQkZwJgiAIgiCYEJGcCYIgCIIgmBCRnAmCIAiCIJgQkZwJgiAIgiCYkP8Hwp/Fxk/E+60AAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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PgoKCtxW1dOnT7uXgRvD4cOHsVgsTJw4sdFtyMjI1I6stMnIyNTKPffcw8CBA0lLS2PWrFmoVKpq510uFzNnzuSpp56qUTcgIKDO9vV6fY1j59p1eb7dmH93qj9T1uVynbPOmXPff/893bp1q3H+bMf6v8tpMBjYvXs3W7duZd26dSxZsoQnnniC9evXM3jw4HP2ecUVVxAYGMjixYuJiopCrVYzatSoapsIziVrU+a5tjGYTCYmTpzIqFGj+Pjjj92+cL17965TnvrSkjt2ZWQ6CrLSJiMjUys9e/Zk6NChbN26lc8++6zG+SFDhnDgwAFiYmLO+YBWq9U4nc569de7d282b95c7djmzZsRBIFevXo1fABnyQBVVjSFQuHuS6vVcvLkSS6//PIGt6lQKIiPjyc+Pp4XXniBXr168fXXXzN48OBa+yssLOTIkSOsWrWKSZMmAZCRkUFeXl4NWf8+X/WZ54Zy9OhR8vPzefnll+nZsycA27Ztc1vbmkKvXr3QarWsXbu22g5TGRmZpiNvRJCRkTkna9eupaCggJiYmBrnnnnmGY4ePcqMGTPYuXMnp06dYuPGjTz88MOcPHkSgC5dupCTk8P27dspKCjAZDKds6/HH3+cvXv3MmfOHI4dO8aaNWv4xz/+wc0333zOZc760KVLFwB+/vln8vPzqaiowGAw8Mwzz/DMM8/w7rvvkpSUxOHDh/n222958sknz9veTz/9xMKFC9mzZw9paWmsWLGC9PR0t2JZW39+fn4EBQXxwQcfcPz4cbZv386NN96ITqerIevGjRvJysqioKAAqN88N5TOnTuj0Wh45513SElJYf369Tz88MMeUQoNBgOPPvoozz//PIsXL+b48ePs37+fV155pclty8h0dGSlTUZG5px4eXmdMwZXz5492bZtGxUVFUyaNIlevXpx1113YTab8fX1BWDKlClcd911TJ48maCgIP71r3+ds69+/frx888/s3nzZvr378/MmTOZPHkyS5YsadIYhg4dysMPP8y9995LSEgIDz74IADz5s1j4cKFfPjhh/Tv359Ro0axcOHCOoMB+/n5sXLlSi699FK6devGE088wdy5c907VmvrTxRFvv/+e1JSUujXrx+33XYbs2fPJiwsrFrbb775Jnv27KFLly5un7r6zHNDCQwM5MsvvyQxMZHevXvz2GOP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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -14480,34 +4483,16 @@ }, { "cell_type": "code", - "execution_count": 262, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-10-29T13:28:27.910307Z", - "start_time": "2020-10-29T13:28:26.688378Z" + "end_time": "2020-10-30T06:25:32.323248Z", + "start_time": "2020-10-30T06:25:31.817Z" }, + "lines_to_next_cell": 0, "scrolled": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/wassname/anaconda/envs/seq2seq-time/lib/python3.7/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - }, - { - "data": { - "image/png": "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SViyZAliYmIwevRonDhxAjt27EBycjIApfJ/6qmn8PLLL6O5uRn3338/qqqqcObMGbz66qsYO3Ysxo8fj2nTpmHt2rXo378/qqurcebMGbi6umLu3LnYvXs3GIbBkCFD4OPjg+PHj6O+vh69evVStfvhhx9Gz5490dzcjP379yM8PNykAQeFYksMKutnn31W9TosLExvxjFakYvSGZg0aRLefvttLF++HA0NDRg1ahTWrVuHJ5980qzzeHl5YePGjbhz5w4YhkFcXBx+/PFH9OzZU+8xDz/8ML744gusWbMGK1euREBAAF5++WWsWrWqrc3SSZcuXfDnn39i+fLlmDZtGurq6hAUFIQRI0YgODjYJtecP38+Ghsb8eGHH+Lll19GeHg41qxZgxdeeEG1z549e/Cvf/0L77zzDoqKihAYGIgnnngCgNKF/n//939477338Prrr6OwsBB+fn4YMGAA3nzzTQDKbIrr16/Hm2++iZaWFkRFReGzzz7DuHHjACjd7q+99hry8/MhEolw33334fDhw06XA57S8TA5KQqgTNZw4sQJ1NfXY9asWSgqKkJLSwsmT55sSxkpFAqFQunUmKyst27ditTUVLi6uqKlpQVisRgKhQL19fX4+uuvbS0nhUKhUCidFpNTkp85cwbz58/H3r17IRKJkJycjE8++cTsZVwUCoVCoVDMw2RlTQjBiBEjNLaZWnWLQqFQKBSK5ZisrMPDw/Hhhx+q1mECllXdolAoFAqFYh4G56znz5+ves0wDKqrq1XvuVwuuFwuPD09sXPnTttKSaFQKBRKJ8agsr5586bGe0IICgsLUVtbCy8vL4SGhoLL5arWKFIoFAqFQrE+Zi3dsje0nrXpdPZ+6OztZ2lrPxw4cAiNjRx06zbVilLZH29vb9TW1ra3GHajs7VXH/bsBz8/BrGxcque01A9a5Ojw+RyOX7//Xfk5uaiublZ47MFCxZYLh2FQqFQOgS7du3CtWvX0K9fP8ydO7e9xelUmKyst2/fjrt372LQoEEaifwpFEtJSkpCSkoKRowYgY8++qi9xaFQHA5HU47Xrl1DSUkxzejWDpisrP/66y9s375dZ6UcCsUSUlJSkJOTQ3/4FIoeHEU5soMGPp+P4OAQ9O3bt13l6YyYrKzFYjFkMpktZaF0MkaMGAEOh4PExMT2FoVCcUj69esH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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "dataset='BejingPM25'\n", "n = len(results[dataset].keys())\n", @@ -14557,14 +4542,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, + "metadata": { + "lines_to_next_cell": 2 + }, "outputs": [], "source": [] } @@ -14604,7 +4584,7 @@ "height": "calc(100% - 180px)", "left": "10px", "top": "150px", - "width": "209.2px" + "width": "209.197px" }, "toc_section_display": true, "toc_window_display": true diff --git a/notebooks/05.0-mc-leaderboard.py b/notebooks/05.0-mc-leaderboard.py index c387f36..b12dd9c 100644 --- a/notebooks/05.0-mc-leaderboard.py +++ b/notebooks/05.0-mc-leaderboard.py @@ -19,15 +19,22 @@ # # In this notebook we are going to tackle a harder problem: # - predicting the future on a timeseries -# - using an LSTM +# - by outputing sequence of predictions # - with rough uncertainty (uncalibrated) -# - outputing sequence of predictions +# - using forecasted information (like weather report, week, or cycle of the moon) +# +# Not many papers benchmark movels for multivariate regression, much less seq prediction with uncertainty. So this notebook will try a range of models on a range of dataset. +# +# We do this using a sequence to sqequence interface # # # -# -# https://medium.com/@boitemailjeanmid/smart-meters-in-london-part1-description-and-first-insights-jean-michel-d-db97af2de71b -# + +# - [ ] tensorboard / wandb +# - [ ] show test train +# - [ ] val +# - [ ] don't overfit +# - [ ] TCN # OPTIONAL: Load the "autoreload" extension so that code can change. But blacklist large modules # %load_ext autoreload @@ -49,10 +56,11 @@ from torch.autograd import Variable import torch import torch.utils.data +import xarray as xr import pandas as pd import numpy as np import matplotlib.pyplot as plt -plt.rcParams['figure.figsize'] = (12.0, 3.0) +plt.rcParams['figure.figsize'] = (10.0, 2.0) plt.style.use('ggplot') from pathlib import Path @@ -71,11 +79,19 @@ from seq2seq_time.util import dset_to_nc import logging, sys # logging.basicConfig(stream=sys.stdout, level=logging.INFO) +# + import holoviews as hv from holoviews import opts from holoviews.operation.datashader import datashade, dynspread hv.extension('bokeh') +# holoview datashader timeseries options +# %opts RGB [width=800 height=200 active_tools=["xwheel_zoom"] default_tools=["xpan","xwheel_zoom", "reset"] toolbar="right"] +# - + + +import warnings +warnings.filterwarnings("ignore") # ## Parameters @@ -91,15 +107,16 @@ num_workers = 5 freq = '30T' max_rows = 5e5 datasets_root = Path('../data/processed/') - - +window_past # - # ## Plot helpers + + # + -def plot_prediction(ds_preds, i): - """Plot a prediction into the future, at a single point in time.""" +def plot_prediction(ds_preds, i, ax=None, title='', std=False, label='pred', legend=False): + """Plot a prediction into the future, at a single point in time.""" d = ds_preds.isel(t_source=i) # Get arrays @@ -109,18 +126,16 @@ def plot_prediction(ds_preds, i): yt = d.y_true now = d.t_source.squeeze() - - plt.figure(figsize=(12, 4)) - - plt.scatter(xf, yt, label='true', c='k', s=6) + plt.scatter(xf, yt, c='k', s=6, label='true' if legend else None) ylim = plt.ylim() # plot prediction - plt.fill_between(xf, yp-2*s, yp+2*s, alpha=0.25, - facecolor="b", - interpolate=True, - label="2 std",) - plt.plot(xf, yp, label='pred', c='b') + if std: + plt.fill_between(xf, yp-2*s, yp+2*s, alpha=0.25, + facecolor="b", + interpolate=True, + label="2 std" if legend else None,) + plt.plot(xf, yp, label=label) # plot true plt.scatter( @@ -131,24 +146,26 @@ def plot_prediction(ds_preds, i): ) # plot a red line for now - plt.vlines(x=now, ymin=0, ymax=1, label='now', color='r') + plt.vlines(x=now, ymin=ylim[0], ymax=ylim[1], color='grey', ls='--') plt.ylim(*ylim) now=pd.Timestamp(now.values) - plt.title(f'Prediction NLL={d.nll.mean().item():2.2g}') - plt.xlabel(f'{now.date()}') - plt.ylabel('energy(kWh/hh)') - plt.legend() - plt.xticks(rotation=45) - plt.show() - + plt.title(title or f'Prediction NLL={d.nll.mean().item():2.2g}') + plt.xticks(rotation=0) + if legend: + plt.legend() + plt.xlabel(f'{now}') + plt.ylabel(ds_preds.attrs['targets']) + return now + def plot_performance(ds_preds, full=False): """Multiple plots using xr_preds""" - plot_prediction(ds_preds, 24) + plot_prediction(ds_preds, 24, std=True, legend=True) + plt.show() ds_preds.mean('t_source').plot.scatter('t_ahead_hours', 'nll') # Mean over all predictions n = len(ds_preds.t_source) - plt.ylabel('Negative Log Likelihood (lower is better)') + plt.ylabel('NLL (lower is better)') plt.xlabel('Hours ahead') plt.title(f'NLL vs time ahead (no. samples={n})') plt.show() @@ -175,10 +192,39 @@ def plot_hist(trainer): df_histe = df_hist.set_index('epoch').groupby('epoch').mean() if len(df_histe)>1: df_histe[['loss/train', 'loss/val']].plot(title='history') + plt.show() return df_histe except Exception: pass +# ## Datasets + + + +# + +from seq2seq_time.data.data import IMOSCurrentsVel, AppliancesEnergyPrediction, BejingPM25, GasSensor, MetroInterstateTraffic + +datasets = [BejingPM25, GasSensor, AppliancesEnergyPrediction, MetroInterstateTraffic, IMOSCurrentsVel] +datasets +# - + +# View train, test, val splits +l = hv.Layout() +for dataset in datasets: + d = dataset(datasets_root) + + p = dynspread( + datashade(hv.Scatter(d.df_train[d.columns_target[0]]), + cmap='red')) + p *= dynspread( + datashade(hv.Scatter(d.df_val[d.columns_target[0]]), + cmap='green')) + p *= dynspread( + datashade(hv.Scatter(d.df_test[d.columns_target[0]]), + cmap='blue')) + p = p.opts(title=f"{dataset}") + l += p +l.cols(1) # ## Lightning @@ -262,30 +308,30 @@ models = [ # lambda: TransformerAutoR(input_size, # output_size, hidden_out_size=32), lambda: RANP(input_size, - output_size, hidden_dim=32, - latent_dim=64, n_decoder_layers=4), + output_size, hidden_dim=64, dropout=0.5, + latent_dim=32, n_decoder_layers=4), lambda: LSTM(input_size, output_size, - hidden_size=80, + hidden_size=32, lstm_layers=3, - lstm_dropout=0.3), + lstm_dropout=0.4), lambda: LSTMSeq2Seq(input_size, output_size, hidden_size=64, lstm_layers=2, - lstm_dropout=0.25), + lstm_dropout=0.4), lambda: TransformerSeq2Seq(input_size, output_size, - hidden_size=128, + hidden_size=64, nhead=8, nlayers=4, - attention_dropout=0.2), + attention_dropout=0.4), lambda: Transformer(input_size, output_size, - attention_dropout=0.2, + attention_dropout=0.4, nhead=8, - nlayers=8, - hidden_size=128), + nlayers=6, + hidden_size=64), lambda :TransformerProcess(input_size, output_size, hidden_size=16, latent_dim=8, dropout=0.5, @@ -294,11 +340,7 @@ models = [ ] # models -# + -from seq2seq_time.data.data import IMOSCurrentsVel, AppliancesEnergyPrediction, BejingPM25, GasSensor, MetroInterstateTraffic -datasets = [IMOSCurrentsVel, BejingPM25, GasSensor, AppliancesEnergyPrediction, MetroInterstateTraffic] -datasets # + # GasSensor(datasets_root) @@ -309,25 +351,26 @@ datasets from collections import defaultdict results = defaultdict(dict) +# + +# tmp +model = Transformer(input_size, + output_size, + attention_dropout=0.4, + nhead=2, + nlayers=4, + hidden_size=16) + +x_past, y_past, x_future, y_future = next(iter(dl_val)) +model(x_past, y_past, x_future, y_future) +# - + from seq2seq_time.metrics import rmse, smape -for Dataset in datasets: - dataset_name = Dataset.__name__ - dataset = Dataset(datasets_root) - ds_train, ds_test = dataset.to_datasets(window_past=window_past, - window_future=window_future) - - # Init data - x_past, y_past, x_future, y_future = ds_train.get_rows(10) - input_size = x_past.shape[-1] - output_size = y_future.shape[-1] - - # + for Dataset in datasets: dataset_name = Dataset.__name__ dataset = Dataset(datasets_root) - ds_train, ds_test = dataset.to_datasets(window_past=window_past, + ds_train, ds_val, ds_test = dataset.to_datasets(window_past=window_past, window_future=window_future) # Init data @@ -341,7 +384,7 @@ for Dataset in datasets: shuffle=True, pin_memory=num_workers == 0, num_workers=num_workers) - dl_test = DataLoader(ds_test, + dl_val = DataLoader(ds_val, batch_size=batch_size, num_workers=num_workers) @@ -353,21 +396,21 @@ for Dataset in datasets: print(dataset_name, model_name) # Wrap in lightning - patience = 2 + patience = 3 model = PL_MODEL(pt_model, - lr=3e-4, patience=patience, + lr=3e-3, patience=patience, weight_decay=1e-5).to(device) # Trainer trainer = pl.Trainer( gpus=1, min_epochs=2, - max_epochs=20, + max_epochs=300, amp_level='O1', precision=16, - limit_train_batches=1000, - limit_val_batches=100, + limit_train_batches=300, + limit_val_batches=30, logger=CSVLogger("../outputs", name=f'{dataset_name}_{model_name}'), callbacks=[ EarlyStopping(monitor='loss/val', patience=patience * 2, verbose=True), @@ -375,7 +418,7 @@ for Dataset in datasets: ) # Train - trainer.fit(model, dl_train, dl_test) + trainer.fit(model, dl_train, dl_val) ds_preds = predict(model.to(device), ds_test, @@ -387,9 +430,9 @@ for Dataset in datasets: print(f'mean_NLL {ds_preds.nll.mean().item():2.2f}') loss = ds_preds.nll.mean().item() - # Performance -# print(plot_hist(trainer)) -# plot_performance(ds_preds) +# Performance TODO tensorboard, wandb + print(plot_hist(trainer)) + plot_performance(ds_preds) metrics = dict( rmse=rmse(ds_preds.y_true, ds_preds.y_pred).item(), @@ -408,20 +451,88 @@ for Dataset in datasets: df_results = pd.concat({k:pd.DataFrame(v) for k,v in results.items()}) display(df_results) -# + -# File "/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/models/transformer.py", line 54, in forward -# outputs = self.encoder(x, mask=mask#, src_key_padding_mask=x_key_padding_mask -# File "/media/wassname/Storage5/projects2/3ST/seq2seq-time/seq2seq_time/models/transformer.py", line 54, in forward -# outputs = self.encoder(x, mask=mask#, src_key_padding_mask=x_key_padding_mask + # - -df_results.xs('nll', level=1).round(2) +# # Leaderboard -# + -# ds_preds.to_netcdf(trainer.logger.experiment.log_dir+'/ds_preds2.nc') -# - +def bold_min(data): + ''' + highlight the maximum in a Series or DataFrame + ''' + attr = 'font-weight: bold' + #remove % and cast to float + data = data.replace('%','', regex=True).astype(float) + if data.ndim == 1: # Series from .apply(axis=0) or axis=1 + is_min = data == data.min() + return [attr if v else '' for v in is_min] + else: # from .apply(axis=None) + is_min = data == data.min().min() + return pd.DataFrame(np.where(is_min, attr, ''), + index=data.index, columns=data.columns) +print(f'Negative Log-Likelihood (NLL).\nover {window_future} steps') +d=df_results.xs('nll', level=1).T.round(2) +d.style.apply(bold_min) +print(f'Symmetric mean absolute percentage error (SMAPE)\nover {window_future} steps') +d=df_results.xs('smape', level=1).T.round(2) +d.style.apply(bold_min) # # Plots +# # plots +# Load saved preds +results = defaultdict(dict) +for Dataset in datasets: + dataset_name = Dataset.__name__ + for m_fn in models: + pt_model = m_fn() + model_name = type(pt_model).__name__ + + checkpoint_name = f"{dataset_name}_{model_name}" + save_dir = Path(f"../outputs")/checkpoint_name + fs = sorted(save_dir.glob("**/ds_preds.nc")) + if len(fs)>0: + ds_preds = xr.open_dataset(fs[-1]) + results[dataset_name][model_name] = ds_preds + +data_i = 100 + + + +# Plot mean of predictions +for dataset in results.keys(): + for model in results[dataset].keys(): + ds_preds = results[dataset][model] + plot_prediction(ds_preds, data_i, label=f"{model}") + plt.title(dataset) + plt.legend() + plt.show() + +# + +dataset='BejingPM25' +n = len(results[dataset].keys()) + +plt.figure(figsize=(8, 1.5*n)) +plt.suptitle(f'Plots with confidence for {dataset} ') +for i, model in enumerate(results[dataset].keys()): + plt.subplot(n, 1, i+1) + ds_preds = results[dataset][model] + if i==n-1: + # The last one has the legend + plot_prediction(ds_preds, data_i, title=f"{model}", std=True, legend=True) + else: + plot_prediction(ds_preds, data_i, title=f"{model}", std=True, ) + + # share the x axis + locs, _ = plt.xticks() + plt.xticks(locs, labels=[]) + plt.xlabel(None) +plt.subplots_adjust() +# - + + + + + diff --git a/seq2seq_time/data/data.py b/seq2seq_time/data/data.py index 6a56ec1..4a4a8d7 100644 --- a/seq2seq_time/data/data.py +++ b/seq2seq_time/data/data.py @@ -26,7 +26,7 @@ class RegressionForecastData: self.df = self.download() self.df_norm, self.scaler = self.normalize(self.df) self.output_scaler = next(filter(lambda r:r[0][0] in self.columns_target, self.scaler.features))[-1] - self.df_train, self.df_test = self.split(self.df_norm) + self.df_train, self.df_val, self.df_test = self.split(self.df_norm) # Check processing self.check() @@ -46,7 +46,8 @@ class RegressionForecastData: def split(self, df_norm: pd.DataFrame) -> Tuple[pd.DataFrame, pd.DataFrame]: df_train, df_test = timeseries_split(df_norm) - return df_train, df_test + df_test, df_val = timeseries_split(df_test, 0.5) + return df_train, df_val, df_test def check(self) -> None: """Check the resulting dataframe""" @@ -61,8 +62,9 @@ class RegressionForecastData: def to_datasets(self, window_past: int, window_future: int, valid:bool=False) -> Tuple[Seq2SeqDataSet, Seq2SeqDataSet]: """Convert to torch datasets""" ds_train = Seq2SeqDataSet(self.df_train, window_past=window_past, window_future=window_future, columns_target=self.columns_target, columns_past=self.columns_past) + ds_val = Seq2SeqDataSet(self.df_val, window_past=window_past, window_future=window_future, columns_target=self.columns_target, columns_past=self.columns_past) ds_test = Seq2SeqDataSet(self.df_test, window_past=window_past, window_future=window_future, columns_target=self.columns_target, columns_past=self.columns_past) - return ds_train, ds_test + return ds_train, ds_val, ds_test def __repr__(self): return f'<{type(self).__name__} {self.df.shape if (self.df is not None) else None}>' @@ -76,27 +78,32 @@ class GasSensor(RegressionForecastData): columns_forecast = ['Flow rate (mL/min)', 'Heater voltage (V)'] def download(self): + # TODO cache in faster format url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/00487/gas-sensor-array-temperature-modulation.zip' # download if needed # extract_path = self.datasets_root/'gas-sensor-array-temperature-modulation.zip' download_url(url, self.datasets_root) + outfile = self.datasets_root / 'gas-sensor-array-temperature-modulation.pk' + if not outfile.exists(): - # Load csv's from inside zip - zf = zipfile.ZipFile(self.datasets_root / 'gas-sensor-array-temperature-modulation.zip') - dfs=[] - for f in zf.namelist(): - if f.endswith('.csv'): - now = pd.to_datetime(Path(f).stem, format='%Y%m%d_%H%M%S') - df = pd.read_csv(zf.open(f)) - df.index = pd.to_timedelta(df['Time (s)'], unit='s') + now - dfs.append(df) - self.df = pd.concat(dfs).dropna(subset=self.columns_target) + # Load csv's from inside zip + zf = zipfile.ZipFile(self.datasets_root / 'gas-sensor-array-temperature-modulation.zip') + dfs=[] + for f in zf.namelist(): + if f.endswith('.csv'): + now = pd.to_datetime(Path(f).stem, format='%Y%m%d_%H%M%S') + df = pd.read_csv(zf.open(f)) + df.index = pd.to_timedelta(df['Time (s)'], unit='s') + now + dfs.append(df) + self.df = pd.concat(dfs).dropna(subset=self.columns_target) - df = df[[ 'CO (ppm)', 'Humidity (%r.h.)', 'Temperature (C)', - 'Flow rate (mL/min)', 'Heater voltage (V)', 'R1 (MOhm)']] - df = df.resample('0.3S').first() - + df = df[[ 'CO (ppm)', 'Humidity (%r.h.)', 'Temperature (C)', + 'Flow rate (mL/min)', 'Heater voltage (V)', 'R1 (MOhm)']] + df = df.resample('0.3S').first() + + df.to_pickle(outfile) + df = pd.read_pickle(outfile) return df @@ -304,6 +311,6 @@ class IMOSCurrentsVel(RegressionForecastData): columns=['HEIGHT_ABOVE_SENSOR', 'NOMINAL_DEPTH']) df['SPD'] = np.sqrt(df.VCUR**2 + df.UCUR**2) df.dropna(subset=self.columns_target, inplace=True) - df = df.resample('30T').first() + df = df.resample('30T').first()[:'2015'] return df diff --git a/seq2seq_time/data/dataset.py b/seq2seq_time/data/dataset.py index 4974602..60eb4a6 100644 --- a/seq2seq_time/data/dataset.py +++ b/seq2seq_time/data/dataset.py @@ -31,7 +31,7 @@ class Seq2SeqDataSet(torch.utils.data.Dataset): assert df.index.freq is not None, 'should have freq' assert_no_objects(df) - self.freq = self.df.index.freq + self.freq = df.index.freq self.df = df.dropna(subset=columns_target).ffill() self.window_past = window_past diff --git a/seq2seq_time/models/transformer.py b/seq2seq_time/models/transformer.py index 69b2022..b9f4474 100644 --- a/seq2seq_time/models/transformer.py +++ b/seq2seq_time/models/transformer.py @@ -48,7 +48,7 @@ class Transformer(nn.Module): x = self.enc_emb(x).permute(1, 0, 2) - B, S, _ = x.shape + S, B, _ = x.shape mask = mask_upper_triangular(S, device) outputs = self.encoder(x, mask=mask#, src_key_padding_mask=x_key_padding_mask diff --git a/seq2seq_time/predict.py b/seq2seq_time/predict.py index 5ff8a13..443dc1c 100644 --- a/seq2seq_time/predict.py +++ b/seq2seq_time/predict.py @@ -49,7 +49,7 @@ def predict(model, ds_test, batch_size, device='cpu', scaler=None): "y_true": (["t_source", "t_ahead",], y_future), }, coords={"t_source": t_source, "t_ahead": t_ahead, "t_behind": t_behind}, - attrs={'freq': ds_test.freq, "model": str(model), "targets": ds_test.columns_target} + attrs={'freq': str(ds_test.freq), "model": str(type(model)), "targets": ds_test.columns_target} ) xrs.append(xr_out)