From d2ed40eb52fa5ac6bbf10fd04d497f712516ba17 Mon Sep 17 00:00:00 2001 From: wassname Date: Mon, 13 Apr 2020 12:40:56 +0800 Subject: [PATCH] misc --- readme.md | 15 +- smartmeters.ipynb | 496 +++++++--------------------------------------- 2 files changed, 72 insertions(+), 439 deletions(-) diff --git a/readme.md b/readme.md index a75af7c..ceba7cc 100644 --- a/readme.md +++ b/readme.md @@ -22,6 +22,11 @@ I've also made lots of tweaks for flexibility and stability and [replicated the It's not heavily documented, because most of my code never gets read or used. If you are using it, and it's confusing, make a github issue are we will add comments or docs together. +```sh +git clone +git-lfs pull +``` + - [Neural Processes for sequential data](#neural-processes-for-sequential-data) - [Experiment: Comparing models on real world data](#experiment-comparing-models-on-real-world-data) @@ -41,8 +46,6 @@ It's not heavily documented, because most of my code never gets read or used. If - [ANP-RNN diagram](#anp-rnn-diagram) - [Tips](#tips) - [See also:](#see-also) -- [<<<<<<< HEAD](#head) -- [- 2018-07-04, "Conditional Neural Processes" [code](https://github.com/deepmind/neural-processes)](#ul-li2018-07-04-%22conditional-neural-processes%22-codeli-ul) - [Citing](#citing) @@ -228,25 +231,17 @@ I'm very grateful for all these authors for sharing their work. It was a pleasur Neural process papers: -<<<<<<< HEAD -======= - [2019-12-12, "Probing Uncertainty Estimates of Neural Processes"](http://bayesiandeeplearning.org/2019/papers/125.pdf) ->>>>>>> e2e96cfe857561e5b3d53d24927c9dbaf655ae42 - [2019-10-17, "Recurrent Attentive Neural Process for Sequential Data"](https://arxiv.org/abs/1910.09323) - LSTM on X before encoder, no code - [2019-10-29, "Convolutional Conditional Neural Processes"](https://arxiv.org/abs/1910.13556). [code](https://github.com/cambridge-mlg/convcnp) - [2019-10-01, "Wasserstein Neural Processes"](https://arxiv.org/abs/1910.00668) would be helpfull if the output dist never converges for your problem - [2019-08-08, "Spatiotemporal Modeling using Recurrent Neural Processes"](https://www.ri.cmu.edu/wp-content/uploads/2019/08/msr_thesis_document.pdf) (infilling spatial information, using a RNN for time information, no code) - [2019-06-13, "Recurrent Neural Processes"](https://arxiv.org/abs/1906.05915) (2d and 3d over time, using LSTM in encoder/decoder, no code) - [2019-06-19, "The Functional Neural Processes"](https://arxiv.org/abs/1906.08324) -<<<<<<< HEAD -- [2019-01-17, "Attentive Neural Processes"](https://arxiv.org/abs/1901.05761) (using attention to prevent underfitting) [code](https://github.com/deepmind/neural-processes) -- [2018-07-04, "Conditional Neural Processes"](https://arxiv.org/abs/1807.01613) [code](https://github.com/deepmind/neural-processes) -======= - [2018-12-03, "Empirical Evaluation of Neural Process Objectives"](http://bayesiandeeplearning.org/2018/papers/92.pdf) - [2019-01-17, "Attentive Neural Processes"](https://arxiv.org/abs/1901.05761) (using attention to prevent underfitting) [code](https://github.com/deepmind/neural-processes) - [2018-07-04, "Conditional Neural Processes"](https://arxiv.org/abs/1807.01613) [code](https://github.com/deepmind/neural-processes) - [2019-06-24, "Sequential Neural Processes"](https://arxiv.org/abs/1906.10264) [code](https://github.com/singhgautam/snp) modelling a 1 or 2d process evolving over time ->>>>>>> e2e96cfe857561e5b3d53d24927c9dbaf655ae42 - [2018-07-04, "Neural Processes"](https://arxiv.org/abs/1807.01622) Blogposts: diff --git a/smartmeters.ipynb b/smartmeters.ipynb index 2210dee..e9ddc73 100644 --- a/smartmeters.ipynb +++ b/smartmeters.ipynb @@ -42,8 +42,8 @@ "execution_count": 1, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:22:26.386668Z", - "start_time": "2020-04-13T04:22:23.960171Z" + "end_time": "2020-04-13T04:35:42.689889Z", + "start_time": "2020-04-13T04:35:40.244708Z" } }, "outputs": [], @@ -72,8 +72,8 @@ "execution_count": 2, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:22:26.436593Z", - "start_time": "2020-04-13T04:22:26.390008Z" + "end_time": "2020-04-13T04:35:42.738660Z", + "start_time": "2020-04-13T04:35:42.693047Z" } }, "outputs": [], @@ -88,8 +88,8 @@ "execution_count": 3, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:22:26.709356Z", - "start_time": "2020-04-13T04:22:26.439810Z" + "end_time": "2020-04-13T04:35:43.020973Z", + "start_time": "2020-04-13T04:35:42.741297Z" } }, "outputs": [ @@ -127,8 +127,8 @@ "execution_count": 4, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:22:26.764777Z", - "start_time": "2020-04-13T04:22:26.712477Z" + "end_time": "2020-04-13T04:35:43.089247Z", + "start_time": "2020-04-13T04:35:43.024168Z" } }, "outputs": [], @@ -143,8 +143,8 @@ "execution_count": 5, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:22:26.826678Z", - "start_time": "2020-04-13T04:22:26.767034Z" + "end_time": "2020-04-13T04:35:43.143874Z", + "start_time": "2020-04-13T04:35:43.091884Z" } }, "outputs": [], @@ -163,11 +163,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:23:56.742113Z", - "start_time": "2020-04-13T04:22:26.829211Z" + "start_time": "2020-04-13T04:35:40.300Z" } }, "outputs": [ @@ -175,19 +174,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "7 1 2\n", - "[PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_0.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_2.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_3.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_4.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_5.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_6.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_7.csv')] [PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_8.csv')] [PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_1.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_9.csv')]\n" + "30 5 5\n", + "[PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_0.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_2.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_3.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_4.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_5.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_6.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_7.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_10.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_11.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_12.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_13.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_14.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_16.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_18.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_19.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_20.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_21.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_23.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_24.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_26.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_27.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_28.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_30.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_31.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_32.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_34.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_35.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_37.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_38.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_39.csv')] [PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_8.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_15.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_22.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_29.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_36.csv')] [PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_1.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_9.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_17.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_25.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_33.csv')]\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "643e4b39c6ae467f9fe9bbacc3fe7283", + "model_id": "cf65ef7f5d014ae0b0392c90e4fb461b", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='test csv', max=2.0, style=ProgressStyle(description_width…" + "HBox(children=(FloatProgress(value=0.0, description='test csv', max=5.0, style=ProgressStyle(description_width…" ] }, "metadata": {}, @@ -203,12 +202,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "be9043155c8848f0911ffec68b06cad4", + "model_id": "805c7f4fd06b40739f66423a6102fdf4", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='val csv', max=1.0, style=ProgressStyle(description_width=…" + "HBox(children=(FloatProgress(value=0.0, description='val csv', max=5.0, style=ProgressStyle(description_width=…" ] }, "metadata": {}, @@ -224,23 +223,16 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5322298743ff4212ade86fc2afb01e9d", + "model_id": "3f10a59554ad4e64800520a9f1365676", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='train csv', max=7.0, style=ProgressStyle(description_widt…" + "HBox(children=(FloatProgress(value=0.0, description='train csv', max=30.0, style=ProgressStyle(description_wid…" ] }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -251,61 +243,12 @@ ")" ] }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "ExecuteTime": { - "end_time": "2020-04-13T04:27:34.327163Z", - "start_time": "2020-04-13T04:27:34.218766Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "DatetimeIndex: 272326 entries, 2011-12-03 09:00:00 to 2014-02-28 00:00:00\n", - "Data columns (total 18 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 energy(kWh/hh) 272326 non-null float64 \n", - " 1 block 272326 non-null float64 \n", - " 2 tstp 272326 non-null datetime64[ns]\n", - " 3 visibility 272326 non-null float64 \n", - " 4 windBearing 272326 non-null float64 \n", - " 5 temperature 272326 non-null float64 \n", - " 6 dewPoint 272326 non-null float64 \n", - " 7 pressure 272326 non-null float64 \n", - " 8 apparentTemperature 272326 non-null float64 \n", - " 9 windSpeed 272326 non-null float64 \n", - " 10 humidity 272326 non-null float64 \n", - " 11 holiday 272326 non-null int64 \n", - " 12 month 272326 non-null float64 \n", - " 13 day 272326 non-null float64 \n", - " 14 week 272326 non-null float64 \n", - " 15 hour 272326 non-null float64 \n", - " 16 minute 272326 non-null float64 \n", - " 17 dayofweek 272326 non-null float64 \n", - "dtypes: datetime64[ns](1), float64(16), int64(1)\n", - "memory usage: 39.5 MB\n" - ] - } - ], - "source": [ - "for name,g in df_train.groupby('block'):\n", - " g['energy(kWh/hh)'].plot()\n", - " plt.show(title='train', ylim=[0,3])" - ] - }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:29:12.551574Z", - "start_time": "2020-04-13T04:29:12.440589Z" + "start_time": "2020-04-13T04:35:40.300Z" } }, "outputs": [], @@ -313,61 +256,29 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:29:41.768311Z", - "start_time": "2020-04-13T04:29:33.964963Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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HnkkSUlJgTbsU045hdmzZwMwZ84c0tLSAtsXFBRQVOSbrfvyyy+nY8eOAKSmpnLXXXcBcOKJJzJs2DAAunTpwnnnncfHH3/MCSecQGVlJUOHDmXXrl0cfvjhdWJLT0/n1ltv5dNPP+Xoo48G4NRTT2XlypUUFxdTWVlJly5dGDBgABkZGSxcuJB77rknsP2ECRNo164dgwcPDpxhACxYsKBO+/hVV10VeJ/vv/9+YPn48eNJTk4mOTmZI488kj179tC3b18SEhJISkqisLCQrl27tvizByV0EU8KV5NuLc45brzxRh599NE6yydPnhzotZGQkBBoF6+pqWHRokV06NChwb46d+4c0WvecsstPPLIIwwaNIibb74ZgI4dOzbo8tenTx/KyspYuXJlIKF36tSJgQMHMnXqVEaMGAHAqFGjmDFjBtnZ2Rx//PGB7ZOTk+u8T4DNmzfTr18/kpKSGpQLfp/1t6+/rry8PORn0FxqQxeRqDn//PN59913yc7OBiAvL49t2xqdHJALL7yQZ599NvB81apVIcuNGTOGd955B/A1xaxZsyaw7vTTT2fHjh28+eabXHfddQB0796d6urqOkn98MMPZ/r06dx7773MmzcvsHz06NE89dRTnHHGGQCcccYZPP3004waNSps18GZM2cybty4JsuEk5ubS8+ePZs1IrQxSugiEjWDBw/moYce4sILL2TYsGFccMEFZGVlNVr+mWeeYdmyZQwbNozBgwfz0ksvhSz3s5/9jL179zJ48GDuv/9+hgwZQrdu3QLrr7nmGsaMGUP37t0Dyy688MI6XRABjjrqKD7++GPuuOMOFi/23adnzJgxbN68OZDQR4wYQWZmZp3288bMmjXrgBP63LlzGT9+/AHtI8A5F5O/U045xYlI9KSlpcU6hFZTVVXlSktLnXPOZWRkuJSUFFdeXh5YP378eDdnzpw62yxfvtz98Ic/bLWYysrKXDTy2JVXXuk2bNgQcl2o7xTfLLch86ra0EUk7pWUlHDuuedSWVmJc44XXniBpKQk9u/fz2mnncbw4cM5//zz62wzYsQIzj33XKqrqxvti34gkpOTOdCb9FRUVDBhwgSOO+64qMRkLkb3odAdi0SiKz09nRNOOCHWYUgUhfpOzWy5c25kqPJqQxcR8QgldBEPidUZt0RfS75LJXQRj+jQoQO5ublK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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" + "outputs": [], + "source": [ + "for name,g in df_train.groupby('block'):\n", + " g['energy(kWh/hh)'].resample('D').mean().plot(plt.gca(), title=f'train {name}', ylim=[0,3])\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "start_time": "2020-04-13T04:35:40.400Z" } - ], + }, + "outputs": [], "source": [ "df_train[['energy(kWh/hh)']].resample('30T').mean().plot(title='train', ylim=[0,3])\n", "df_val[['energy(kWh/hh)']].resample('30T').mean().plot(title='val', ylim=[0,3])\n", @@ -383,11 +294,10 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:23:58.963509Z", - "start_time": "2020-04-13T04:23:58.893219Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -411,11 +321,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:23:59.024355Z", - "start_time": "2020-04-13T04:23:58.967253Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -444,263 +353,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.775094Z", - "start_time": "2020-04-13T04:23:59.026980Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "now run `tensorboard --logdir lightning_logs`\n", - "trial.number -46\n", - "trial -46 {'learning_rate': 0.002, 'attention_layers': 2, 'num_heads_power': 3, 'hidden_dim_power': 7, 'latent_dim_power': 7, 'n_latent_encoder_layers': 2, 'n_det_encoder_layers': 4, 'n_decoder_layers': 4, 'dropout': 0, 'attention_dropout': 0, 'latent_enc_self_attn_type': 'uniform', 'det_enc_self_attn_type': 'uniform', 'det_enc_cross_attn_type': 'multihead', 'batchnorm': False, 'use_self_attn': True, 'use_lvar': False, 'use_deterministic_path': True, 'use_rnn': True} {'batch_size': 16, 'grad_clip': 40, 'max_nb_epochs': 200, 'num_workers': 3, 'num_context': 96, 'vis_i': '670', 'num_extra_target': 96, 'x_dim': 17, 'context_in_target': False, 'y_dim': 1, 'patience': 2, 'min_std': 0.005}\n", - "INFO:root:GPU available: True, used: True\n", - "INFO:root:VISIBLE GPUS: 0\n", - "INFO:root:\n", - " | Name | Type | Params\n", - "----------------------------------------------------------------------------------------------------------------\n", - "0 | _model | NeuralProcess | 1 M \n", - "1 | _model.norm_x | BatchNormSequence | 34 \n", - "2 | _model.norm_x.norm | BatchNorm1d | 34 \n", - "3 | _model.norm_y | BatchNormSequence | 2 \n", - "4 | _model.norm_y.norm | BatchNorm1d | 2 \n", - "5 | _model._lstm_x | LSTM | 207 K \n", - "6 | _model._lstm_y | LSTM | 199 K \n", - "7 | _model._latent_encoder | LatentEncoder | 98 K \n", - "8 | _model._latent_encoder._encoder | BatchMLP | 49 K \n", - "9 | _model._latent_encoder._encoder.initial | NPBlockRelu2d | 32 K \n", - "10 | _model._latent_encoder._encoder.initial.linear | Linear | 32 K \n", - "11 | _model._latent_encoder._encoder.initial.act | ReLU | 0 \n", - "12 | _model._latent_encoder._encoder.initial.dropout | Dropout2d | 0 \n", - "13 | _model._latent_encoder._encoder.encoder | Sequential | 0 \n", - "14 | _model._latent_encoder._encoder.final | Linear | 16 K \n", - "15 | _model._latent_encoder._self_attention | Attention | 0 \n", - "16 | _model._latent_encoder._penultimate_layer | Linear | 16 K \n", - "17 | _model._latent_encoder._mean | Linear | 16 K \n", - "18 | _model._latent_encoder._log_var | Linear | 16 K \n", - "19 | _model._deterministic_encoder | DeterministicEncoder | 672 K \n", - "20 | _model._deterministic_encoder._d_encoder | BatchMLP | 82 K \n", - "21 | _model._deterministic_encoder._d_encoder.initial | NPBlockRelu2d | 32 K \n", - "22 | _model._deterministic_encoder._d_encoder.initial.linear | Linear | 32 K \n", - "23 | _model._deterministic_encoder._d_encoder.initial.act | ReLU | 0 \n", - "24 | _model._deterministic_encoder._d_encoder.initial.dropout | Dropout2d | 0 \n", - "25 | _model._deterministic_encoder._d_encoder.encoder | Sequential | 32 K \n", - "26 | _model._deterministic_encoder._d_encoder.encoder.0 | NPBlockRelu2d | 16 K \n", - "27 | _model._deterministic_encoder._d_encoder.encoder.0.linear | Linear | 16 K \n", - "28 | _model._deterministic_encoder._d_encoder.encoder.0.act | ReLU | 0 \n", - "29 | _model._deterministic_encoder._d_encoder.encoder.0.dropout | Dropout2d | 0 \n", - "30 | _model._deterministic_encoder._d_encoder.encoder.1 | NPBlockRelu2d | 16 K \n", - "31 | _model._deterministic_encoder._d_encoder.encoder.1.linear | Linear | 16 K \n", - "32 | _model._deterministic_encoder._d_encoder.encoder.1.act | ReLU | 0 \n", - "33 | _model._deterministic_encoder._d_encoder.encoder.1.dropout | Dropout2d | 0 \n", - "34 | _model._deterministic_encoder._d_encoder.final | Linear | 16 K \n", - "35 | _model._deterministic_encoder._self_attention | Attention | 0 \n", - "36 | _model._deterministic_encoder._cross_attention | Attention | 590 K \n", - "37 | _model._deterministic_encoder._cross_attention.batch_mlp_k | BatchMLP | 32 K \n", - "38 | _model._deterministic_encoder._cross_attention.batch_mlp_k.initial | NPBlockRelu2d | 16 K \n", - "39 | _model._deterministic_encoder._cross_attention.batch_mlp_k.initial.linear | Linear | 16 K \n", - "40 | _model._deterministic_encoder._cross_attention.batch_mlp_k.initial.act | ReLU | 0 \n", - "41 | _model._deterministic_encoder._cross_attention.batch_mlp_k.initial.dropout | Dropout2d | 0 \n", - "42 | _model._deterministic_encoder._cross_attention.batch_mlp_k.encoder | Sequential | 0 \n", - "43 | _model._deterministic_encoder._cross_attention.batch_mlp_k.final | Linear | 16 K \n", - "44 | _model._deterministic_encoder._cross_attention.batch_mlp_q | BatchMLP | 32 K \n", - "45 | _model._deterministic_encoder._cross_attention.batch_mlp_q.initial | NPBlockRelu2d | 16 K \n", - "46 | _model._deterministic_encoder._cross_attention.batch_mlp_q.initial.linear | Linear | 16 K \n", - "47 | _model._deterministic_encoder._cross_attention.batch_mlp_q.initial.act | ReLU | 0 \n", - "48 | _model._deterministic_encoder._cross_attention.batch_mlp_q.initial.dropout | Dropout2d | 0 \n", - "49 | _model._deterministic_encoder._cross_attention.batch_mlp_q.encoder | Sequential | 0 \n", - "50 | _model._deterministic_encoder._cross_attention.batch_mlp_q.final | Linear | 16 K \n", - "51 | _model._deterministic_encoder._cross_attention._W_k | ModuleList | 131 K \n", - "52 | _model._deterministic_encoder._cross_attention._W_k.0 | AttnLinear | 16 K \n", - "53 | _model._deterministic_encoder._cross_attention._W_k.0.linear | Linear | 16 K \n", - "54 | _model._deterministic_encoder._cross_attention._W_k.1 | AttnLinear | 16 K \n", - "55 | _model._deterministic_encoder._cross_attention._W_k.1.linear | Linear | 16 K \n", - "56 | _model._deterministic_encoder._cross_attention._W_k.2 | AttnLinear | 16 K \n", - "57 | _model._deterministic_encoder._cross_attention._W_k.2.linear | Linear | 16 K \n", - "58 | _model._deterministic_encoder._cross_attention._W_k.3 | AttnLinear | 16 K \n", - "59 | _model._deterministic_encoder._cross_attention._W_k.3.linear | Linear | 16 K \n", - "60 | _model._deterministic_encoder._cross_attention._W_k.4 | AttnLinear | 16 K \n", - "61 | _model._deterministic_encoder._cross_attention._W_k.4.linear | Linear | 16 K \n", - "62 | _model._deterministic_encoder._cross_attention._W_k.5 | AttnLinear | 16 K \n", - "63 | _model._deterministic_encoder._cross_attention._W_k.5.linear | Linear | 16 K \n", - "64 | _model._deterministic_encoder._cross_attention._W_k.6 | AttnLinear | 16 K \n", - "65 | _model._deterministic_encoder._cross_attention._W_k.6.linear | Linear | 16 K \n", - "66 | _model._deterministic_encoder._cross_attention._W_k.7 | AttnLinear | 16 K \n", - "67 | _model._deterministic_encoder._cross_attention._W_k.7.linear | Linear | 16 K \n", - "68 | _model._deterministic_encoder._cross_attention._W_v | ModuleList | 131 K \n", - "69 | _model._deterministic_encoder._cross_attention._W_v.0 | AttnLinear | 16 K \n", - "70 | _model._deterministic_encoder._cross_attention._W_v.0.linear | Linear | 16 K \n", - "71 | _model._deterministic_encoder._cross_attention._W_v.1 | AttnLinear | 16 K \n", - "72 | _model._deterministic_encoder._cross_attention._W_v.1.linear | Linear | 16 K \n", - "73 | _model._deterministic_encoder._cross_attention._W_v.2 | AttnLinear | 16 K \n", - "74 | _model._deterministic_encoder._cross_attention._W_v.2.linear | Linear | 16 K \n", - "75 | _model._deterministic_encoder._cross_attention._W_v.3 | AttnLinear | 16 K \n", - "76 | _model._deterministic_encoder._cross_attention._W_v.3.linear | Linear | 16 K \n", - "77 | _model._deterministic_encoder._cross_attention._W_v.4 | AttnLinear | 16 K \n", - "78 | _model._deterministic_encoder._cross_attention._W_v.4.linear | Linear | 16 K \n", - "79 | _model._deterministic_encoder._cross_attention._W_v.5 | AttnLinear | 16 K \n", - "80 | _model._deterministic_encoder._cross_attention._W_v.5.linear | Linear | 16 K \n", - "81 | _model._deterministic_encoder._cross_attention._W_v.6 | AttnLinear | 16 K \n", - "82 | _model._deterministic_encoder._cross_attention._W_v.6.linear | Linear | 16 K \n", - "83 | _model._deterministic_encoder._cross_attention._W_v.7 | AttnLinear | 16 K \n", - "84 | _model._deterministic_encoder._cross_attention._W_v.7.linear | Linear | 16 K \n", - "85 | _model._deterministic_encoder._cross_attention._W_q | ModuleList | 131 K \n", - "86 | _model._deterministic_encoder._cross_attention._W_q.0 | AttnLinear | 16 K \n", - "87 | _model._deterministic_encoder._cross_attention._W_q.0.linear | Linear | 16 K \n", - "88 | _model._deterministic_encoder._cross_attention._W_q.1 | AttnLinear | 16 K \n", - "89 | _model._deterministic_encoder._cross_attention._W_q.1.linear | Linear | 16 K \n", - "90 | _model._deterministic_encoder._cross_attention._W_q.2 | AttnLinear | 16 K \n", - "91 | _model._deterministic_encoder._cross_attention._W_q.2.linear | Linear | 16 K \n", - "92 | _model._deterministic_encoder._cross_attention._W_q.3 | AttnLinear | 16 K \n", - "93 | _model._deterministic_encoder._cross_attention._W_q.3.linear | Linear | 16 K \n", - "94 | _model._deterministic_encoder._cross_attention._W_q.4 | AttnLinear | 16 K \n", - "95 | _model._deterministic_encoder._cross_attention._W_q.4.linear | Linear | 16 K \n", - "96 | _model._deterministic_encoder._cross_attention._W_q.5 | AttnLinear | 16 K \n", - "97 | _model._deterministic_encoder._cross_attention._W_q.5.linear | Linear | 16 K \n", - "98 | _model._deterministic_encoder._cross_attention._W_q.6 | AttnLinear | 16 K \n", - "99 | _model._deterministic_encoder._cross_attention._W_q.6.linear | Linear | 16 K \n", - "100 | _model._deterministic_encoder._cross_attention._W_q.7 | AttnLinear | 16 K \n", - "101 | _model._deterministic_encoder._cross_attention._W_q.7.linear | Linear | 16 K \n", - "102 | _model._deterministic_encoder._cross_attention._W | AttnLinear | 131 K \n", - "103 | _model._deterministic_encoder._cross_attention._W.linear | Linear | 131 K \n", - "104 | _model._decoder | Decoder | 607 K \n", - "105 | _model._decoder._target_transform | Linear | 16 K \n", - "106 | _model._decoder._decoder | BatchMLP | 590 K \n", - "107 | _model._decoder._decoder.initial | NPBlockRelu2d | 147 K \n", - "108 | _model._decoder._decoder.initial.linear | Linear | 147 K \n", - "109 | _model._decoder._decoder.initial.act | ReLU | 0 \n", - "110 | _model._decoder._decoder.initial.dropout | Dropout2d | 0 \n", - "111 | _model._decoder._decoder.encoder | Sequential | 294 K \n", - "112 | _model._decoder._decoder.encoder.0 | NPBlockRelu2d | 147 K \n", - "113 | _model._decoder._decoder.encoder.0.linear | Linear | 147 K \n", - "114 | _model._decoder._decoder.encoder.0.act | ReLU | 0 \n", - "115 | _model._decoder._decoder.encoder.0.dropout | Dropout2d | 0 \n", - "116 | _model._decoder._decoder.encoder.1 | NPBlockRelu2d | 147 K \n", - "117 | _model._decoder._decoder.encoder.1.linear | Linear | 147 K \n", - "118 | _model._decoder._decoder.encoder.1.act | ReLU | 0 \n", - "119 | _model._decoder._decoder.encoder.1.dropout | Dropout2d | 0 \n", - "120 | _model._decoder._decoder.final | Linear | 147 K \n", - "121 | _model._decoder._mean | Linear | 385 \n", - "122 | _model._decoder._std | Linear | 385 \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "7 1 2\n", - "[PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_0.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_2.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_3.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_4.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_5.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_6.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_7.csv')] [PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_8.csv')] [PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_1.csv'), PosixPath('data/smart-meters-in-london/halfhourly_dataset/block_9.csv')]\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "36fa337440114697a19b76d31563c1ec", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='test csv', max=2.0, style=ProgressStyle(description_width…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d671a570e94d477cb261169526618e3c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='val csv', max=1.0, style=ProgressStyle(description_width=…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "37f3db8734064fe79dbb9fee602fd263", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='train csv', max=7.0, style=ProgressStyle(description_widt…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "120c67ffe1514dca9a6c4f3e9253fd6f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='Validation sanity check', layout=Layout(flex='2'), max=5.…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "ename": "RuntimeError", - "evalue": "running_mean should contain 18 elements not 17", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mRuntimeError\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 11\u001b[0m \u001b[0muser_attrs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdefault_user_attrs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mPL_MODEL_CLS\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mPL_NeuralProcess\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mnumber\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnumber\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m )\n", - "\u001b[0;32m/media/wassname/Storage5/projects2/3ST/attentive-neural-processes/neural_processes/train.py\u001b[0m in \u001b[0;36mrun_trial\u001b[0;34m(name, PL_MODEL_CLS, params, user_attrs, MODEL_DIR, plot_from_loader, number)\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcheckpoints\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mnumber\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[1;32m 119\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--> 120\u001b[0;31m \u001b[0mtrainer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\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[0m\u001b[1;32m 121\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'KeyboardInterrupt, skipping rest of training'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, model, train_dataloader, val_dataloaders, test_dataloaders)\u001b[0m\n\u001b[1;32m 600\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 601\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msingle_gpu\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 602\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msingle_gpu_train\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[0m\u001b[1;32m 603\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 604\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muse_tpu\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# pragma: no cover\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/pytorch_lightning/trainer/distrib_parts.py\u001b[0m in \u001b[0;36msingle_gpu_train\u001b[0;34m(self, model)\u001b[0m\n\u001b[1;32m 468\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptimizers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moptimizers\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 469\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 470\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_pretrain_routine\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[0m\u001b[1;32m 471\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 472\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtpu_train\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpu_core_idx\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[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36mrun_pretrain_routine\u001b[0;34m(self, model)\u001b[0m\n\u001b[1;32m 807\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mval_dataloaders\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 808\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_sanity_val_steps\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 809\u001b[0;31m False)\n\u001b[0m\u001b[1;32m 810\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallback_metrics\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0meval_results\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 811\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/pytorch_lightning/trainer/evaluation_loop.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, model, dataloaders, max_batches, test_mode)\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;31m# RUN EVALUATION STEP\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 261\u001b[0m \u001b[0;31m# -----------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 262\u001b[0;31m \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluation_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_idx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdataloader_idx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_mode\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 263\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 264\u001b[0m \u001b[0;31m# on dp / ddp2 might still want to do something with the batch parts\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/pytorch_lightning/trainer/evaluation_loop.py\u001b[0m in \u001b[0;36mevaluation_forward\u001b[0;34m(self, model, batch, batch_idx, dataloader_idx, test_mode)\u001b[0m\n\u001b[1;32m 437\u001b[0m \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtest_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 438\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--> 439\u001b[0;31m \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidation_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\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 440\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 441\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/media/wassname/Storage5/projects2/3ST/attentive-neural-processes/neural_processes/lightning.py\u001b[0m in \u001b[0;36mvalidation_step\u001b[0;34m(self, batch, batch_idx)\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mcontext_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontext_y\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_y\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0misfinite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0md\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0my_dist\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlosses\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mextra\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontext_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontext_y\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_y\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 49\u001b[0m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlosses\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'loss_p'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# + loss_mse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m tensorboard_logs = {\n", - "\u001b[0;32m/media/wassname/Storage5/projects2/3ST/attentive-neural-processes/neural_processes/lightning.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\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[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 30\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\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 31\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtraining_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_idx\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~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 539\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_slow_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\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[1;32m 540\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--> 541\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\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 542\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhook\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_forward_hooks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\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 543\u001b[0m \u001b[0mhook_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/media/wassname/Storage5/projects2/3ST/attentive-neural-processes/neural_processes/models/neural_process/model.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, context_x, context_y, target_x, target_y)\u001b[0m\n\u001b[1;32m 307\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0;31m# https://stackoverflow.com/a/46772183/221742\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 309\u001b[0;31m \u001b[0mtarget_x\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnorm_x\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget_x\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 310\u001b[0m \u001b[0mcontext_x\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnorm_x\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontext_x\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[0mcontext_y\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnorm_y\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontext_y\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 539\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_slow_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\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[1;32m 540\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--> 541\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\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 542\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhook\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_forward_hooks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\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 543\u001b[0m \u001b[0mhook_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/media/wassname/Storage5/projects2/3ST/attentive-neural-processes/neural_processes/modules/modules.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;31m# (Batch, Channels, Sequence) so we can use BatchNorm1d\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpermute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 40\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnorm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\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 41\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpermute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 539\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_slow_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\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[1;32m 540\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--> 541\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\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 542\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhook\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_forward_hooks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\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 543\u001b[0m \u001b[0mhook_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/torch/nn/modules/batchnorm.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrunning_mean\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrunning_var\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mweight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbias\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraining\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrack_running_stats\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 81\u001b[0;31m exponential_average_factor, self.eps)\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mextra_repr\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[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/jup3.7.3/lib/python3.7/site-packages/torch/nn/functional.py\u001b[0m in \u001b[0;36mbatch_norm\u001b[0;34m(input, running_mean, running_var, weight, bias, training, momentum, eps)\u001b[0m\n\u001b[1;32m 1668\u001b[0m return torch.batch_norm(\n\u001b[1;32m 1669\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbias\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrunning_mean\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrunning_var\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1670\u001b[0;31m \u001b[0mtraining\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmomentum\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meps\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackends\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcudnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menabled\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1671\u001b[0m )\n\u001b[1;32m 1672\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mRuntimeError\u001b[0m: running_mean should contain 18 elements not 17" - ] - } - ], + "outputs": [], "source": [ "trial, trainer, model = run_trial(\n", " name=\"anp-rnn\",\n", @@ -735,8 +394,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.779570Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" }, "scrolled": true }, @@ -779,8 +437,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.781223Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -804,8 +461,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.783014Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -836,8 +492,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.784369Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -860,8 +515,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.785780Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -886,8 +540,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.787314Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -910,8 +563,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.789176Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" }, "scrolled": true }, @@ -942,8 +594,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.790471Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -963,8 +614,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.791875Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -977,8 +627,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.793280Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -1003,8 +652,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.794536Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" } }, "outputs": [], @@ -1021,8 +669,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.795897Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.400Z" }, "scrolled": true }, @@ -1048,8 +695,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.797312Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" }, "scrolled": true }, @@ -1067,8 +713,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.798622Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" } }, "outputs": [], @@ -1093,8 +738,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.799985Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" } }, "outputs": [], @@ -1111,8 +755,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.801357Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" } }, "outputs": [], @@ -1142,8 +785,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.802669Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" }, "scrolled": true }, @@ -1168,8 +810,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.804292Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" }, "scrolled": true }, @@ -1195,8 +836,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.805598Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" }, "scrolled": true }, @@ -1248,8 +888,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.807017Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" } }, "outputs": [], @@ -1263,8 +902,7 @@ "execution_count": null, "metadata": { "ExecuteTime": { - "end_time": "2020-04-13T04:25:33.808225Z", - "start_time": "2020-04-13T04:22:24.100Z" + "start_time": "2020-04-13T04:35:40.500Z" } }, "outputs": [],