diff --git a/VAE/01-VAE-with-MNIST.nbconvert.ipynb b/VAE/01-VAE-with-MNIST.nbconvert.ipynb index d5a02baa350b1d68e4bfa6d65d2dc873fe71e07c..60759164b657681798045997b5baf625313834a5 100644 --- a/VAE/01-VAE-with-MNIST.nbconvert.ipynb +++ b/VAE/01-VAE-with-MNIST.nbconvert.ipynb @@ -51,12 +51,109 @@ "execution_count": 1, "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + "<style>\n", + "\n", + "div.warn { \n", + " background-color: #fcf2f2;\n", + " border-color: #dFb5b4;\n", + " border-left: 5px solid #dfb5b4;\n", + " padding: 0.5em;\n", + " font-weight: bold;\n", + " font-size: 1.1em;;\n", + " }\n", + "\n", + "\n", + "\n", + "div.nota { \n", + " background-color: #DAFFDE;\n", + " border-left: 5px solid #92CC99;\n", + " padding: 0.5em;\n", + " }\n", + "\n", + "div.todo:before { content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1My44OTEyIiBoZWlnaHQ9IjE0My4zOTAyIiB2aWV3Qm94PSIwIDAgNTMuODkxMiAxNDMuMzkwMiI+PHRpdGxlPjAwLUJvYi10b2RvPC90aXRsZT48cGF0aCBkPSJNMjMuNDU2OCwxMTQuMzAxNmExLjgwNjMsMS44MDYzLDAsMSwxLDEuODE1NywxLjgyNEExLjgyMDksMS44MjA5LDAsMCwxLDIzLjQ1NjgsMTE0LjMwMTZabS0xMC42NjEyLDEuODIyQTEuODI3MiwxLjgyNzIsMCwxLDAsMTAuOTgsMTE0LjMsMS44MiwxLjgyLDAsMCwwLDEyLjc5NTYsMTE2LjEyMzZabS03LjcwNyw0LjU4NzR2LTVzLjQ4NjMtOS4xMjIzLDguMDIxNS0xMS45Njc1YTE5LjIwODIsMTkuMjA4MiwwLDAsMSw2LjA0ODYtMS4yNDU0LDE5LjE3NzgsMTkuMTc3OCwwLDAsMSw2LjA0ODcsMS4yNDc1YzcuNTM1MSwyLjgzNDcsOC4wMTc0LDExLjk2NzQsOC4wMTc0LDExLjk2NzR2NS4wMjM0bC4wMDQyLDcuNjgydjIuNGMuMDE2Ny4xOTkyLjAzMzYuMzkyMS4wMzM2LjU4NzEsMCwuMjEzOC0uMDE2OC40MTA5LS4wMzM2LjYzMzJ2LjA1ODdoLS4wMDg0YTguMzcxOSw4LjM3MTksMCwwLDEtNy4zNzM4LDcuNjU0N3MtLjk5NTMsMy42MzgtNi42OTMzLDMuNjM4LTYuNjkzNC0zLjYzOC02LjY5MzQtMy42MzhhOC4zNyw4LjM3LDAsMCwxLTcuMzcxNi03LjY1NDdINS4wODQzdi0uMDU4N2MtLjAxODktLjIyLS4wMjk0LS40MTk0LS4wMjk0LS42MzMyLDAtLjE5MjkuMDE2Ny0uMzgzNy4wMjk0LS41ODcxdi0yLjRtMTguMDkzNy00LjA0YTEuMTU2NSwxLjE1NjUsMCwxLDAtMi4zMTI2LDAsMS4xNTY0LDEuMTU2NCwwLDEsMCwyLjMxMjYsMFptNC4wODM0LDBhMS4xNTk1LDEuMTU5NSwwLDEsMC0xLjE2MzYsMS4xN0ExLjE3NSwxLjE3NSwwLDAsMCwyNy4yNjE0LDEyNC4zNzc5Wk05LjM3MzksMTE0LjYzNWMwLDMuMTA5MywyLjQxMzIsMy4zMSwyLjQxMzIsMy4zMWExMzMuOTI0MywxMzMuOTI0MywwLDAsMCwxNC43MzQ4LDBzMi40MTExLS4xOTI5LDIuNDExMS0zLjMxYTguMDc3Myw4LjA3NzMsMCwwLDAtMi40MTExLTUuNTUxOWMtNC41LTMuNTAzMy05LjkxMjYtMy41MDMzLTE0Ljc0MTEsMEE4LjA4NTEsOC4wODUxLDAsMCwwLDkuMzczOSwxMTQuNjM1WiIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjMzLjE0MzYiIGN5PSIxMjQuNTM0IiByPSIzLjgzNjMiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48cmVjdCB4PSIzNS42NjU5IiB5PSIxMTIuOTYyNSIgd2lkdGg9IjIuMDc3IiBoZWlnaHQ9IjEwLjU0NTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxLjYgMjQxLjExMjEpIHJvdGF0ZSgtMTU1Ljc0NikiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48Y2lyY2xlIGN4PSIzOC44NzA0IiBjeT0iMTEzLjQyNzkiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjUuMjI0OCIgY3k9IjEyNC41MzQiIHI9IjMuODM2MyIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxyZWN0IHg9IjEuNDE2NCIgeT0iMTI0LjYzMDEiIHdpZHRoPSIyLjA3NyIgaGVpZ2h0PSIxMC41NDU4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjkwOTcgMjU5LjgwNikgcm90YXRlKC0xODApIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PGNpcmNsZSBjeD0iMi40MDkxIiBjeT0iMTM3LjA5OTYiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxwYXRoIGQ9Ik0xOC4wNTExLDEwMC4xMDY2aC0uMDE0NlYxMDIuNjFoMi4zdi0yLjQyNzlhMi40MjI5LDIuNDIyOSwwLDEsMC0yLjI4NTQtLjA3NTVaIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PHBhdGggZD0iTTM5LjQyMTQsMjcuMjU4djEuMDVBMTEuOTQ1MiwxMS45NDUyLDAsMCwwLDQ0LjU5NTQsNS43OWEuMjQ0OS4yNDQ5LDAsMCwxLS4wMjM1LS40MjI3TDQ2Ljc1LDMuOTUxNWEuMzg5Mi4zODkyLDAsMCwxLC40MjYyLDAsMTQuODQ0MiwxNC44NDQyLDAsMCwxLTcuNzU0MywyNy4yNTkxdjEuMDY3YS40NS40NSwwLDAsMS0uNzA0Ny4zNzU4bC0zLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsMC0uNzUxNmwzLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsLjY5NDYuMzc1OFpNNDMuMjMsMi41ODkyLDM5LjM4NzguMDc5NGEuNDUuNDUsMCwwLDAtLjcwNDYuMzc1OHYxLjA2N2ExNC44NDQyLDE0Ljg0NDIsMCwwLDAtNy43NTQzLDI3LjI1OTEuMzg5LjM4OSwwLDAsMCwuNDI2MSwwbDIuMTc3Ny0xLjQxOTNhLjI0NS4yNDUsMCwwLDAtLjAyMzUtLjQyMjgsMTEuOTQ1MSwxMS45NDUxLDAsMCwxLDUuMTc0LTIyLjUxNDZ2MS4wNWEuNDUuNDUsMCwwLDAsLjcwNDYuMzc1OGwzLjg1NTMtMi41MWEuNDUuNDUsMCwwLDAsMC0uNzUxNlpNMzkuMDUyMywxNC4yNDU4YTIuMTIwNiwyLjEyMDYsMCwxLDAsMi4xMjA2LDIuMTIwNmgwQTIuMTI0LDIuMTI0LDAsMCwwLDM5LjA1MjMsMTQuMjQ1OFptNi4wNzMyLTQuNzc4MS44MjU0LjgyNTVhMS4wNTY4LDEuMDU2OCwwLDAsMSwuMTE3NSwxLjM0MjFsLS44MDIsMS4xNDQyYTcuMTAxOCw3LjEwMTgsMCwwLDEsLjcxMTQsMS43MTEybDEuMzc1Ny4yNDE2YTEuMDU2OSwxLjA1NjksMCwwLDEsLjg3NTcsMS4wNHYxLjE2NDNhMS4wNTY5LDEuMDU2OSwwLDAsMS0uODc1NywxLjA0bC0xLjM3MjQuMjQxNkE3LjExLDcuMTEsMCwwLDEsNDUuMjcsMTkuOTNsLjgwMTksMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLS4xMTc0LDEuMzQyMmwtLjgyODguODQ4OWExLjA1NywxLjA1NywwLDAsMS0xLjM0MjEuMTE3NGwtMS4xNDQyLS44MDE5YTcuMTMzOCw3LjEzMzgsMCwwLDEtMS43MTEzLjcxMTNsLS4yNDE2LDEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLTEuMDQuODc1N0gzOC40Njg0YTEuMDU2OCwxLjA1NjgsMCwwLDEtMS4wNC0uODc1N2wtLjI0MTYtMS4zNzI0YTcuMTM1NSw3LjEzNTUsMCwwLDEtMS43MTEzLS43MTEzbC0xLjE0NDEuODAxOWExLjA1NzEsMS4wNTcxLDAsMCwxLTEuMzQyMi0uMTE3NGwtLjgzNTUtLjgyNTVhMS4wNTcsMS4wNTcsMCwwLDEtLjExNzQtMS4zNDIxbC44MDE5LTEuMTQ0MmE3LjEyMSw3LjEyMSwwLDAsMS0uNzExMy0xLjcxMTJsLTEuMzcyNC0uMjQxNmExLjA1NjksMS4wNTY5LDAsMCwxLS44NzU3LTEuMDRWMTUuNzgyNmExLjA1NjksMS4wNTY5LDAsMCwxLC44NzU3LTEuMDRsMS4zNzU3LS4yNDE2YTcuMTEsNy4xMSwwLDAsMSwuNzExNC0xLjcxMTJsLS44MDItMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLC4xMTc1LTEuMzQyMmwuODI1NC0uODI1NEExLjA1NjgsMS4wNTY4LDAsMCwxLDM0LjMyNDUsOS4zNmwxLjE0NDIuODAxOUE3LjEzNTUsNy4xMzU1LDAsMCwxLDM3LjE4LDkuNDUxbC4yNDE2LTEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLDEuMDQtLjg3NTdoMS4xNjc3YTEuMDU2OSwxLjA1NjksMCwwLDEsMS4wNC44NzU3bC4yNDE2LDEuMzcyNGE3LjEyNSw3LjEyNSwwLDAsMSwxLjcxMTIuNzExM0w0My43NjY2LDkuMzZBMS4wNTY5LDEuMDU2OSwwLDAsMSw0NS4xMjU1LDkuNDY3N1ptLTIuMDMsNi44OTg3QTQuMDQzMyw0LjA0MzMsMCwxLDAsMzkuMDUyMywyMC40MWgwQTQuMDQ2NSw0LjA0NjUsMCwwLDAsNDMuMDk1NSwxNi4zNjY0WiIgc3R5bGU9ImZpbGw6I2UxMjIyOSIvPjxwb2x5Z29uIHBvaW50cz0iMzkuNDEzIDM0Ljc1NyAzOS41MzcgMzQuNzU3IDM5LjY3NSAzNC43NTcgMzkuNjc1IDEwOS41MSAzOS41MzcgMTA5LjUxIDM5LjQxMyAxMDkuNTEgMzkuNDEzIDM0Ljc1NyAzOS40MTMgMzQuNzU3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojOTk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjMwODg1NDQ1MDU2MDE2MThweDtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==);\n", + " float:left;\n", + " margin-right:20px;\n", + " margin-top:-20px;\n", + " margin-bottom:20px;\n", + "}\n", + "div.todo{\n", + " font-weight: bold;\n", + " font-size: 1.1em;\n", + " margin-top:40px;\n", + "}\n", + "div.todo ul{\n", + " margin: 0.2em;\n", + "}\n", + "div.todo li{\n", + " margin-left:60px;\n", + " margin-top:0;\n", + " margin-bottom:0;\n", + "}\n", + "\n", + "div .comment{\n", + " font-size:0.8em;\n", + " color:#696969;\n", + "}\n", + "\n", + "\n", + "\n", + "</style>\n", + "\n" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "**FIDLE 2020 - Practical Work Module**" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Version : 0.6.1 DEV\n", + "Notebook id : VAE1\n", + "Run time : Saturday 19 December 2020, 17:56:34\n", + "TensorFlow version : 2.0.0\n", + "Keras version : 2.2.4-tf\n", + "Datasets dir : /home/pjluc/datasets/fidle\n", + "Running mode : full\n", + "Update keras cache : False\n", + "Save figs : True\n", + "Path figs : ./run/figs\n" + ] + }, + { + "data": { + "text/markdown": [ + "<br>**FIDLE 2020 - Variational AutoEncoder (VAE)**" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "FIDLE 2020 - Variational AutoEncoder (VAE)\n", "TensorFlow version : 2.0.0\n", "VAE version : 1.28\n" ] @@ -66,12 +163,14 @@ "import numpy as np\n", "import sys, importlib\n", "\n", - "import modules.vae\n", - "import modules.loader_MNIST\n", + "sys.path.append('..')\n", + "import fidle.pwk as pwk\n", "\n", "from modules.vae import VariationalAutoencoder\n", "from modules.loader_MNIST import Loader_MNIST\n", "\n", + "datasets_dirs = pwk.init('VAE1')\n", + "\n", "VariationalAutoencoder.about()" ] }, @@ -117,15 +216,41 @@ "execution_count": 3, "metadata": {}, "outputs": [ + { + "data": { + "text/markdown": [ + "<br>**Model initialized.**" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outputs will be in : ./run/MNIST.001\n" + ] + }, + { + "data": { + "text/markdown": [ + "<br>**Encoder :**" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "Model initialized.\n", - "Outputs will be in : ./run/MNIST.001\n", - "\n", - " ---------- Encoder -------------------------------------------------- \n", - "\n", "Model: \"model_1\"\n", "__________________________________________________________________________________________________\n", "Layer (type) Output Shape Param # Connected to \n", @@ -152,10 +277,25 @@ "Total params: 105,220\n", "Trainable params: 105,220\n", "Non-trainable params: 0\n", - "__________________________________________________________________________________________________\n", - "\n", - " ---------- Encoder -------------------------------------------------- \n", - "\n", + "__________________________________________________________________________________________________\n" + ] + }, + { + "data": { + "text/markdown": [ + "<br>**Decoder :**" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Model: \"model_2\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", @@ -178,9 +318,7 @@ "Trainable params: 102,017\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", - "Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.\n", - "Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.\n", - "Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.\n", + "\n", "Config saved in : ./run/MNIST.001/models/vae_config.json\n" ] } @@ -204,12 +342,12 @@ " {'type':'Conv2DTranspose', 'filters':1, 'kernel_size':(3,3), 'strides':1, 'padding':'same', 'activation':'sigmoid'}\n", " ]\n", "\n", - "vae = modules.vae.VariationalAutoencoder(input_shape = input_shape, \n", - " encoder_layers = encoder, \n", - " decoder_layers = decoder,\n", - " z_dim = z_dim, \n", - " verbose = verbose,\n", - " run_tag = tag)\n", + "vae = VariationalAutoencoder(input_shape = input_shape, \n", + " encoder_layers = encoder, \n", + " decoder_layers = decoder,\n", + " z_dim = z_dim, \n", + " verbose = verbose,\n", + " run_tag = tag)\n", "vae.save(model=None)" ] }, @@ -257,7 +395,7 @@ "batch_size = 100\n", "epochs = 100\n", "initial_epoch = 0\n", - "k_size = 1 # 1 mean using 100% of the dataset" + "k_size = .1 # 1 mean using 100% of the dataset" ] }, { @@ -269,210 +407,42 @@ "name": "stdout", "output_type": "stream", "text": [ - "Train on 60000 samples, validate on 10000 samples\n", + "Train on 6000 samples, validate on 1000 samples\n", "Epoch 1/100\n", - " 100/60000 [..............................] - ETA: 23:20 - loss: 231.3020 - vae_r_loss: 231.3009 - vae_kl_loss: 0.0012WARNING:tensorflow:Method (on_train_batch_end) is slow compared to the batch update (0.204730). Check your callbacks.\n", - "60000/60000 [==============================] - 7s 115us/sample - loss: 64.2543 - vae_r_loss: 61.7709 - vae_kl_loss: 2.4833 - val_loss: 52.9003 - val_vae_r_loss: 49.1967 - val_vae_kl_loss: 3.7036\n", + "6000/6000 [==============================] - 6s 988us/sample - loss: 104.4901 - vae_r_loss: 101.9539 - vae_kl_loss: 2.5361 - val_loss: 67.7148 - val_vae_r_loss: 66.5085 - val_vae_kl_loss: 1.2063\n", "Epoch 2/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 51.2057 - vae_r_loss: 47.0966 - vae_kl_loss: 4.1091 - val_loss: 49.8133 - val_vae_r_loss: 45.4482 - val_vae_kl_loss: 4.3652\n", + "6000/6000 [==============================] - 5s 841us/sample - loss: 69.0901 - vae_r_loss: 68.0103 - vae_kl_loss: 1.0798 - val_loss: 64.4509 - val_vae_r_loss: 62.6715 - val_vae_kl_loss: 1.7794\n", "Epoch 3/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 49.1852 - vae_r_loss: 44.6769 - vae_kl_loss: 4.5083 - val_loss: 48.4312 - val_vae_r_loss: 43.8612 - val_vae_kl_loss: 4.5701\n", + "6000/6000 [==============================] - 5s 841us/sample - loss: 64.8233 - vae_r_loss: 63.1682 - vae_kl_loss: 1.6551 - val_loss: 59.2293 - val_vae_r_loss: 56.8333 - val_vae_kl_loss: 2.3960\n", "Epoch 4/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 48.0964 - vae_r_loss: 43.4097 - vae_kl_loss: 4.6867 - val_loss: 48.0231 - val_vae_r_loss: 43.2757 - val_vae_kl_loss: 4.7474\n", + "6000/6000 [==============================] - 5s 838us/sample - loss: 59.9215 - vae_r_loss: 57.2821 - vae_kl_loss: 2.6394 - val_loss: 56.9929 - val_vae_r_loss: 54.2415 - val_vae_kl_loss: 2.7514\n", "Epoch 5/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 47.3871 - vae_r_loss: 42.5845 - vae_kl_loss: 4.8026 - val_loss: 47.2221 - val_vae_r_loss: 42.6021 - val_vae_kl_loss: 4.6200\n", + "6000/6000 [==============================] - 5s 889us/sample - loss: 58.3423 - vae_r_loss: 55.4671 - vae_kl_loss: 2.8752 - val_loss: 56.2066 - val_vae_r_loss: 53.4385 - val_vae_kl_loss: 2.7681\n", "Epoch 6/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 46.8934 - vae_r_loss: 41.9934 - vae_kl_loss: 4.9000 - val_loss: 46.9390 - val_vae_r_loss: 41.8111 - val_vae_kl_loss: 5.1278\n", + "6000/6000 [==============================] - 6s 951us/sample - loss: 57.2656 - vae_r_loss: 54.1724 - vae_kl_loss: 3.0932 - val_loss: 54.8276 - val_vae_r_loss: 51.0939 - val_vae_kl_loss: 3.7337\n", "Epoch 7/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 46.4743 - vae_r_loss: 41.4820 - vae_kl_loss: 4.9924 - val_loss: 46.2958 - val_vae_r_loss: 41.2182 - val_vae_kl_loss: 5.0776\n", - "Epoch 8/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 46.1191 - vae_r_loss: 41.0788 - vae_kl_loss: 5.0403 - val_loss: 46.2291 - val_vae_r_loss: 41.0391 - val_vae_kl_loss: 5.1900\n", - "Epoch 9/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 45.7910 - vae_r_loss: 40.7070 - vae_kl_loss: 5.0840 - val_loss: 45.9437 - val_vae_r_loss: 40.7491 - val_vae_kl_loss: 5.1946\n", - "Epoch 10/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 45.5396 - vae_r_loss: 40.3924 - vae_kl_loss: 5.1471 - val_loss: 45.9343 - val_vae_r_loss: 40.7377 - val_vae_kl_loss: 5.1966\n", - "Epoch 11/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 45.2789 - vae_r_loss: 40.0885 - vae_kl_loss: 5.1904 - val_loss: 45.4758 - val_vae_r_loss: 40.3435 - val_vae_kl_loss: 5.1323\n", - "Epoch 12/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 45.1051 - vae_r_loss: 39.8695 - vae_kl_loss: 5.2355 - val_loss: 45.4878 - val_vae_r_loss: 40.1696 - val_vae_kl_loss: 5.3181\n", - "Epoch 13/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 44.8887 - vae_r_loss: 39.6061 - vae_kl_loss: 5.2826 - val_loss: 45.1749 - val_vae_r_loss: 39.8426 - val_vae_kl_loss: 5.3323\n", - "Epoch 14/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 44.7158 - vae_r_loss: 39.3846 - vae_kl_loss: 5.3312 - val_loss: 45.0787 - val_vae_r_loss: 39.6166 - val_vae_kl_loss: 5.4621\n", - "Epoch 15/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 44.5586 - vae_r_loss: 39.2236 - vae_kl_loss: 5.3350 - val_loss: 44.8298 - val_vae_r_loss: 39.6147 - val_vae_kl_loss: 5.2150\n", - "Epoch 16/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 44.3802 - vae_r_loss: 39.0108 - vae_kl_loss: 5.3694 - val_loss: 44.6618 - val_vae_r_loss: 39.2968 - val_vae_kl_loss: 5.3649\n", - "Epoch 17/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 44.2723 - vae_r_loss: 38.8741 - vae_kl_loss: 5.3981 - val_loss: 44.8400 - val_vae_r_loss: 39.4563 - val_vae_kl_loss: 5.3837\n", - "Epoch 18/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 44.1674 - vae_r_loss: 38.7606 - vae_kl_loss: 5.4068 - val_loss: 44.7985 - val_vae_r_loss: 39.3888 - val_vae_kl_loss: 5.4097\n", - "Epoch 19/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 44.0322 - vae_r_loss: 38.5949 - vae_kl_loss: 5.4373 - val_loss: 44.6795 - val_vae_r_loss: 39.3680 - val_vae_kl_loss: 5.3115\n", - "Epoch 20/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 43.9153 - vae_r_loss: 38.4687 - vae_kl_loss: 5.4466 - val_loss: 44.5306 - val_vae_r_loss: 39.0573 - val_vae_kl_loss: 5.4733\n", - "Epoch 21/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 43.8438 - vae_r_loss: 38.3777 - vae_kl_loss: 5.4661 - val_loss: 44.5254 - val_vae_r_loss: 39.0821 - val_vae_kl_loss: 5.4433\n", - "Epoch 22/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 43.7249 - vae_r_loss: 38.2270 - vae_kl_loss: 5.4978 - val_loss: 44.4218 - val_vae_r_loss: 38.9123 - val_vae_kl_loss: 5.5095\n", - "Epoch 23/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 43.6932 - vae_r_loss: 38.1905 - vae_kl_loss: 5.5027 - val_loss: 44.7400 - val_vae_r_loss: 39.4295 - val_vae_kl_loss: 5.3105\n", - "Epoch 24/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 43.6025 - vae_r_loss: 38.0754 - vae_kl_loss: 5.5271 - val_loss: 44.1321 - val_vae_r_loss: 38.5209 - val_vae_kl_loss: 5.6112\n", - "Epoch 25/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 43.4873 - vae_r_loss: 37.9447 - vae_kl_loss: 5.5426 - val_loss: 44.4036 - val_vae_r_loss: 38.8846 - val_vae_kl_loss: 5.5190\n", - "Epoch 26/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 43.3999 - vae_r_loss: 37.8558 - vae_kl_loss: 5.5441 - val_loss: 44.2643 - val_vae_r_loss: 38.8511 - val_vae_kl_loss: 5.4132\n", - "Epoch 27/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 43.3879 - vae_r_loss: 37.8274 - vae_kl_loss: 5.5606 - val_loss: 44.1832 - val_vae_r_loss: 38.7677 - val_vae_kl_loss: 5.4155\n", - "Epoch 28/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 43.2868 - vae_r_loss: 37.7082 - vae_kl_loss: 5.5785 - val_loss: 44.3540 - val_vae_r_loss: 38.8401 - val_vae_kl_loss: 5.5138\n", - "Epoch 29/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 43.1959 - vae_r_loss: 37.6151 - vae_kl_loss: 5.5807 - val_loss: 44.1458 - val_vae_r_loss: 38.7440 - val_vae_kl_loss: 5.4018\n", - "Epoch 30/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 43.2025 - vae_r_loss: 37.6125 - vae_kl_loss: 5.5900 - val_loss: 44.0534 - val_vae_r_loss: 38.6051 - val_vae_kl_loss: 5.4484\n", - "Epoch 31/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 43.1147 - vae_r_loss: 37.4968 - vae_kl_loss: 5.6179 - val_loss: 44.0018 - val_vae_r_loss: 38.4451 - val_vae_kl_loss: 5.5567\n", - "Epoch 32/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 43.0382 - vae_r_loss: 37.4231 - vae_kl_loss: 5.6151 - val_loss: 44.0717 - val_vae_r_loss: 38.4346 - val_vae_kl_loss: 5.6371\n", - "Epoch 33/100\n", - "60000/60000 [==============================] - 4s 67us/sample - loss: 43.0075 - vae_r_loss: 37.3852 - vae_kl_loss: 5.6223 - val_loss: 43.9579 - val_vae_r_loss: 38.3620 - val_vae_kl_loss: 5.5959\n", - "Epoch 34/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.9493 - vae_r_loss: 37.3046 - vae_kl_loss: 5.6447 - val_loss: 43.9678 - val_vae_r_loss: 38.6328 - val_vae_kl_loss: 5.3351\n", - "Epoch 35/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.8854 - vae_r_loss: 37.2427 - vae_kl_loss: 5.6427 - val_loss: 44.0184 - val_vae_r_loss: 38.2289 - val_vae_kl_loss: 5.7894\n", - "Epoch 36/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 42.8633 - vae_r_loss: 37.2043 - vae_kl_loss: 5.6590 - val_loss: 43.9505 - val_vae_r_loss: 38.4289 - val_vae_kl_loss: 5.5216\n", - "Epoch 37/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.8121 - vae_r_loss: 37.1433 - vae_kl_loss: 5.6688 - val_loss: 44.0720 - val_vae_r_loss: 38.3158 - val_vae_kl_loss: 5.7562\n", - "Epoch 38/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 42.7729 - vae_r_loss: 37.0933 - vae_kl_loss: 5.6796 - val_loss: 43.9354 - val_vae_r_loss: 38.2530 - val_vae_kl_loss: 5.6825\n", - "Epoch 39/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.7009 - vae_r_loss: 37.0158 - vae_kl_loss: 5.6851 - val_loss: 43.9757 - val_vae_r_loss: 38.3211 - val_vae_kl_loss: 5.6547\n", - "Epoch 40/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.6597 - vae_r_loss: 36.9727 - vae_kl_loss: 5.6870 - val_loss: 43.9979 - val_vae_r_loss: 38.3241 - val_vae_kl_loss: 5.6738\n", - "Epoch 41/100\n", - "60000/60000 [==============================] - 4s 66us/sample - loss: 42.6643 - vae_r_loss: 36.9573 - vae_kl_loss: 5.7070 - val_loss: 43.8959 - val_vae_r_loss: 38.0727 - val_vae_kl_loss: 5.8232\n", - "Epoch 42/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 42.6094 - vae_r_loss: 36.9091 - vae_kl_loss: 5.7003 - val_loss: 43.7527 - val_vae_r_loss: 38.0132 - val_vae_kl_loss: 5.7396\n", - "Epoch 43/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.5943 - vae_r_loss: 36.8753 - vae_kl_loss: 5.7190 - val_loss: 44.2513 - val_vae_r_loss: 38.7346 - val_vae_kl_loss: 5.5166\n", - "Epoch 44/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.5383 - vae_r_loss: 36.8210 - vae_kl_loss: 5.7174 - val_loss: 43.9450 - val_vae_r_loss: 38.3041 - val_vae_kl_loss: 5.6410\n", - "Epoch 45/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.4976 - vae_r_loss: 36.7647 - vae_kl_loss: 5.7328 - val_loss: 43.8147 - val_vae_r_loss: 38.0132 - val_vae_kl_loss: 5.8015\n", - "Epoch 46/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.4661 - vae_r_loss: 36.7304 - vae_kl_loss: 5.7358 - val_loss: 43.7803 - val_vae_r_loss: 37.9472 - val_vae_kl_loss: 5.8331\n", - "Epoch 47/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.4550 - vae_r_loss: 36.7013 - vae_kl_loss: 5.7537 - val_loss: 43.7559 - val_vae_r_loss: 37.9233 - val_vae_kl_loss: 5.8325\n", - "Epoch 48/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.4446 - vae_r_loss: 36.6954 - vae_kl_loss: 5.7491 - val_loss: 43.8857 - val_vae_r_loss: 38.3286 - val_vae_kl_loss: 5.5571\n", - "Epoch 49/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 42.3392 - vae_r_loss: 36.5929 - vae_kl_loss: 5.7463 - val_loss: 43.7458 - val_vae_r_loss: 38.0185 - val_vae_kl_loss: 5.7273\n", - "Epoch 50/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.3563 - vae_r_loss: 36.5882 - vae_kl_loss: 5.7680 - val_loss: 43.8635 - val_vae_r_loss: 38.3168 - val_vae_kl_loss: 5.5467\n", - "Epoch 51/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.2795 - vae_r_loss: 36.5151 - vae_kl_loss: 5.7644 - val_loss: 43.8254 - val_vae_r_loss: 38.0452 - val_vae_kl_loss: 5.7802\n", - "Epoch 52/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 42.2664 - vae_r_loss: 36.5060 - vae_kl_loss: 5.7604 - val_loss: 43.6070 - val_vae_r_loss: 37.8889 - val_vae_kl_loss: 5.7181\n", - "Epoch 53/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.2173 - vae_r_loss: 36.4402 - vae_kl_loss: 5.7771 - val_loss: 43.8760 - val_vae_r_loss: 38.1647 - val_vae_kl_loss: 5.7113\n", - "Epoch 54/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.2542 - vae_r_loss: 36.4783 - vae_kl_loss: 5.7759 - val_loss: 43.7798 - val_vae_r_loss: 38.0381 - val_vae_kl_loss: 5.7416\n", - "Epoch 55/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.1756 - vae_r_loss: 36.3872 - vae_kl_loss: 5.7884 - val_loss: 43.6665 - val_vae_r_loss: 37.7873 - val_vae_kl_loss: 5.8791\n", - "Epoch 56/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.1478 - vae_r_loss: 36.3798 - vae_kl_loss: 5.7681 - val_loss: 43.8873 - val_vae_r_loss: 38.0000 - val_vae_kl_loss: 5.8872\n", - "Epoch 57/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.1221 - vae_r_loss: 36.3316 - vae_kl_loss: 5.7905 - val_loss: 43.7110 - val_vae_r_loss: 37.9034 - val_vae_kl_loss: 5.8076\n", - "Epoch 58/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.1140 - vae_r_loss: 36.3114 - vae_kl_loss: 5.8026 - val_loss: 43.7163 - val_vae_r_loss: 37.9340 - val_vae_kl_loss: 5.7824\n", - "Epoch 59/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.0872 - vae_r_loss: 36.2736 - vae_kl_loss: 5.8136 - val_loss: 43.6869 - val_vae_r_loss: 37.8728 - val_vae_kl_loss: 5.8141\n", - "Epoch 60/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.0810 - vae_r_loss: 36.2625 - vae_kl_loss: 5.8184 - val_loss: 43.7259 - val_vae_r_loss: 37.9156 - val_vae_kl_loss: 5.8103\n", - "Epoch 61/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.0468 - vae_r_loss: 36.2302 - vae_kl_loss: 5.8166 - val_loss: 43.7498 - val_vae_r_loss: 37.8267 - val_vae_kl_loss: 5.9231\n", - "Epoch 62/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 42.0145 - vae_r_loss: 36.1916 - vae_kl_loss: 5.8229 - val_loss: 43.7140 - val_vae_r_loss: 37.8304 - val_vae_kl_loss: 5.8835\n", - "Epoch 63/100\n", - "60000/60000 [==============================] - 4s 67us/sample - loss: 42.0032 - vae_r_loss: 36.1780 - vae_kl_loss: 5.8252 - val_loss: 43.7475 - val_vae_r_loss: 37.8840 - val_vae_kl_loss: 5.8635\n", - "Epoch 64/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.9338 - vae_r_loss: 36.1049 - vae_kl_loss: 5.8289 - val_loss: 43.6136 - val_vae_r_loss: 37.8724 - val_vae_kl_loss: 5.7413\n", - "Epoch 65/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.9362 - vae_r_loss: 36.1025 - vae_kl_loss: 5.8337 - val_loss: 43.6487 - val_vae_r_loss: 37.8507 - val_vae_kl_loss: 5.7980\n", - "Epoch 66/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 41.8900 - vae_r_loss: 36.0639 - vae_kl_loss: 5.8261 - val_loss: 43.5734 - val_vae_r_loss: 37.7662 - val_vae_kl_loss: 5.8072\n", - "Epoch 67/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.8897 - vae_r_loss: 36.0485 - vae_kl_loss: 5.8413 - val_loss: 43.5914 - val_vae_r_loss: 37.8426 - val_vae_kl_loss: 5.7488\n", - "Epoch 68/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.8992 - vae_r_loss: 36.0566 - vae_kl_loss: 5.8426 - val_loss: 43.5969 - val_vae_r_loss: 37.8075 - val_vae_kl_loss: 5.7893\n", - "Epoch 69/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.8573 - vae_r_loss: 36.0016 - vae_kl_loss: 5.8557 - val_loss: 43.8489 - val_vae_r_loss: 38.0409 - val_vae_kl_loss: 5.8079\n", - "Epoch 70/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.8076 - vae_r_loss: 35.9602 - vae_kl_loss: 5.8474 - val_loss: 43.6968 - val_vae_r_loss: 37.9238 - val_vae_kl_loss: 5.7730\n", - "Epoch 71/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.8028 - vae_r_loss: 35.9475 - vae_kl_loss: 5.8553 - val_loss: 43.7155 - val_vae_r_loss: 38.1099 - val_vae_kl_loss: 5.6056\n", - "Epoch 72/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.8149 - vae_r_loss: 35.9601 - vae_kl_loss: 5.8548 - val_loss: 43.7084 - val_vae_r_loss: 37.9777 - val_vae_kl_loss: 5.7306\n", - "Epoch 73/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.7663 - vae_r_loss: 35.8984 - vae_kl_loss: 5.8679 - val_loss: 43.7315 - val_vae_r_loss: 37.8491 - val_vae_kl_loss: 5.8824\n", - "Epoch 74/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.7511 - vae_r_loss: 35.8783 - vae_kl_loss: 5.8727 - val_loss: 43.6386 - val_vae_r_loss: 37.8350 - val_vae_kl_loss: 5.8036\n", - "Epoch 75/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.7247 - vae_r_loss: 35.8505 - vae_kl_loss: 5.8741 - val_loss: 43.5769 - val_vae_r_loss: 37.8107 - val_vae_kl_loss: 5.7661\n", - "Epoch 76/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.7198 - vae_r_loss: 35.8361 - vae_kl_loss: 5.8838 - val_loss: 43.5807 - val_vae_r_loss: 37.8855 - val_vae_kl_loss: 5.6952\n", - "Epoch 77/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.7191 - vae_r_loss: 35.8425 - vae_kl_loss: 5.8766 - val_loss: 43.6381 - val_vae_r_loss: 37.8796 - val_vae_kl_loss: 5.7585\n", - "Epoch 78/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.6607 - vae_r_loss: 35.7753 - vae_kl_loss: 5.8853 - val_loss: 43.5942 - val_vae_r_loss: 37.8272 - val_vae_kl_loss: 5.7670\n", - "Epoch 79/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.6496 - vae_r_loss: 35.7729 - vae_kl_loss: 5.8767 - val_loss: 43.5868 - val_vae_r_loss: 37.6704 - val_vae_kl_loss: 5.9164\n", - "Epoch 80/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.6863 - vae_r_loss: 35.7959 - vae_kl_loss: 5.8904 - val_loss: 43.6931 - val_vae_r_loss: 37.7754 - val_vae_kl_loss: 5.9177\n", - "Epoch 81/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.6309 - vae_r_loss: 35.7477 - vae_kl_loss: 5.8832 - val_loss: 43.7312 - val_vae_r_loss: 37.8486 - val_vae_kl_loss: 5.8826\n", - "Epoch 82/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 41.6640 - vae_r_loss: 35.7682 - vae_kl_loss: 5.8958 - val_loss: 43.4520 - val_vae_r_loss: 37.5032 - val_vae_kl_loss: 5.9488\n", - "Epoch 83/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.6302 - vae_r_loss: 35.7293 - vae_kl_loss: 5.9009 - val_loss: 43.7112 - val_vae_r_loss: 37.9028 - val_vae_kl_loss: 5.8084\n", - "Epoch 84/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.6229 - vae_r_loss: 35.7291 - vae_kl_loss: 5.8938 - val_loss: 43.6432 - val_vae_r_loss: 37.7486 - val_vae_kl_loss: 5.8945\n", - "Epoch 85/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.5947 - vae_r_loss: 35.6854 - vae_kl_loss: 5.9093 - val_loss: 43.6102 - val_vae_r_loss: 37.7369 - val_vae_kl_loss: 5.8733\n", - "Epoch 86/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 41.5378 - vae_r_loss: 35.6368 - vae_kl_loss: 5.9010 - val_loss: 43.4183 - val_vae_r_loss: 37.5776 - val_vae_kl_loss: 5.8407\n", - "Epoch 87/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.5435 - vae_r_loss: 35.6271 - vae_kl_loss: 5.9164 - val_loss: 43.7228 - val_vae_r_loss: 37.7464 - val_vae_kl_loss: 5.9764\n", - "Epoch 88/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.5234 - vae_r_loss: 35.6144 - vae_kl_loss: 5.9090 - val_loss: 43.7529 - val_vae_r_loss: 37.8977 - val_vae_kl_loss: 5.8552\n", - "Epoch 89/100\n", - "60000/60000 [==============================] - 4s 67us/sample - loss: 41.5304 - vae_r_loss: 35.6144 - vae_kl_loss: 5.9160 - val_loss: 43.7499 - val_vae_r_loss: 37.8566 - val_vae_kl_loss: 5.8934\n", - "Epoch 90/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.5063 - vae_r_loss: 35.5879 - vae_kl_loss: 5.9184 - val_loss: 43.7301 - val_vae_r_loss: 37.9131 - val_vae_kl_loss: 5.8170\n", - "Epoch 91/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.4964 - vae_r_loss: 35.5761 - vae_kl_loss: 5.9203 - val_loss: 43.6984 - val_vae_r_loss: 37.8731 - val_vae_kl_loss: 5.8253\n", - "Epoch 92/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.4689 - vae_r_loss: 35.5399 - vae_kl_loss: 5.9290 - val_loss: 43.4703 - val_vae_r_loss: 37.5691 - val_vae_kl_loss: 5.9012\n", - "Epoch 93/100\n", - "60000/60000 [==============================] - 4s 65us/sample - loss: 41.4461 - vae_r_loss: 35.5280 - vae_kl_loss: 5.9180 - val_loss: 43.5956 - val_vae_r_loss: 37.5976 - val_vae_kl_loss: 5.9980\n", - "Epoch 94/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.4367 - vae_r_loss: 35.5115 - vae_kl_loss: 5.9253 - val_loss: 43.6109 - val_vae_r_loss: 37.5420 - val_vae_kl_loss: 6.0688\n", - "Epoch 95/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.4046 - vae_r_loss: 35.4755 - vae_kl_loss: 5.9291 - val_loss: 43.6073 - val_vae_r_loss: 37.7104 - val_vae_kl_loss: 5.8969\n", - "Epoch 96/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.4297 - vae_r_loss: 35.4970 - vae_kl_loss: 5.9327 - val_loss: 43.5483 - val_vae_r_loss: 37.6635 - val_vae_kl_loss: 5.8848\n", - "Epoch 97/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.3969 - vae_r_loss: 35.4541 - vae_kl_loss: 5.9428 - val_loss: 43.5062 - val_vae_r_loss: 37.6395 - val_vae_kl_loss: 5.8667\n", - "Epoch 98/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.3957 - vae_r_loss: 35.4513 - vae_kl_loss: 5.9444 - val_loss: 43.7233 - val_vae_r_loss: 37.9261 - val_vae_kl_loss: 5.7972\n", - "Epoch 99/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.3839 - vae_r_loss: 35.4444 - vae_kl_loss: 5.9395 - val_loss: 43.6083 - val_vae_r_loss: 37.6019 - val_vae_kl_loss: 6.0064\n", - "Epoch 100/100\n", - "60000/60000 [==============================] - 4s 64us/sample - loss: 41.3783 - vae_r_loss: 35.4441 - vae_kl_loss: 5.9342 - val_loss: 43.6412 - val_vae_r_loss: 37.8037 - val_vae_kl_loss: 5.8375\n", - "\n", - "Train duration : 391.89 sec. - 0:06:31\n" + "3000/6000 [==============>...............] - ETA: 2s - loss: 56.2138 - vae_r_loss: 52.9293 - vae_kl_loss: 3.2845" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-6-757a620922f3>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mepochs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0minitial_epoch\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mk_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mk_size\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m )\n", + "\u001b[0;32m~/dev/fidle/VAE/modules/vae.py\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(self, x_train, x_test, data_generator, batch_size, epochs, initial_epoch, k_size)\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[0minitial_epoch\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 224\u001b[0m \u001b[0mcallbacks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcallbacks_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 225\u001b[0;31m \u001b[0mvalidation_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mx_test\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mn_test\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx_test\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mn_test\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 226\u001b[0m )\n\u001b[1;32m 227\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~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)\u001b[0m\n\u001b[1;32m 726\u001b[0m \u001b[0mmax_queue_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmax_queue_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 727\u001b[0m \u001b[0mworkers\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mworkers\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 728\u001b[0;31m use_multiprocessing=use_multiprocessing)\n\u001b[0m\u001b[1;32m 729\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 730\u001b[0m def evaluate(self,\n", + "\u001b[0;32m~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, **kwargs)\u001b[0m\n\u001b[1;32m 672\u001b[0m \u001b[0mvalidation_steps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalidation_steps\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 673\u001b[0m \u001b[0mvalidation_freq\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalidation_freq\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 674\u001b[0;31m steps_name='steps_per_epoch')\n\u001b[0m\u001b[1;32m 675\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 676\u001b[0m def evaluate(self,\n", + "\u001b[0;32m~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py\u001b[0m in \u001b[0;36mmodel_iteration\u001b[0;34m(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, validation_freq, mode, validation_in_fit, prepared_feed_values_from_dataset, steps_name, **kwargs)\u001b[0m\n\u001b[1;32m 391\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 392\u001b[0m \u001b[0;31m# Get outputs.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 393\u001b[0;31m \u001b[0mbatch_outs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\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 394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_outs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\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 395\u001b[0m \u001b[0mbatch_outs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mbatch_outs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m 3738\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmath_ops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3739\u001b[0m \u001b[0mconverted_inputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3740\u001b[0;31m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_graph_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mconverted_inputs\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 3741\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3742\u001b[0m \u001b[0;31m# EagerTensor.numpy() will often make a copy to ensure memory safety.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1079\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mFor\u001b[0m \u001b[0minvalid\u001b[0m \u001b[0mpositional\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mkeyword\u001b[0m \u001b[0margument\u001b[0m \u001b[0mcombinations\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1080\u001b[0m \"\"\"\n\u001b[0;32m-> 1081\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\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 1082\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1083\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcancellation_manager\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\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~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, args, kwargs, cancellation_manager)\u001b[0m\n\u001b[1;32m 1119\u001b[0m raise TypeError(\"Keyword arguments {} unknown. Expected {}.\".format(\n\u001b[1;32m 1120\u001b[0m list(kwargs.keys()), list(self._arg_keywords)))\n\u001b[0;32m-> 1121\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_flat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcaptured_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcancellation_manager\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 1122\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1123\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_filtered_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\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~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m_call_flat\u001b[0;34m(self, args, captured_inputs, cancellation_manager)\u001b[0m\n\u001b[1;32m 1222\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mexecuting_eagerly\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1223\u001b[0m flat_outputs = forward_function.call(\n\u001b[0;32m-> 1224\u001b[0;31m ctx, args, cancellation_manager=cancellation_manager)\n\u001b[0m\u001b[1;32m 1225\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[1;32m 1226\u001b[0m \u001b[0mgradient_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_delayed_rewrite_functions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mregister\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~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, ctx, args, cancellation_manager)\u001b[0m\n\u001b[1;32m 509\u001b[0m \u001b[0minputs\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 510\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"executor_type\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexecutor_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"config_proto\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconfig\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 ctx=ctx)\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[1;32m 513\u001b[0m outputs = execute.execute_with_cancellation(\n", + "\u001b[0;32m~/anaconda3/envs/fidle/lib/python3.7/site-packages/tensorflow_core/python/eager/execute.py\u001b[0m in \u001b[0;36mquick_execute\u001b[0;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[1;32m 59\u001b[0m tensors = pywrap_tensorflow.TFE_Py_Execute(ctx._handle, device_name,\n\u001b[1;32m 60\u001b[0m \u001b[0mop_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m num_outputs)\n\u001b[0m\u001b[1;32m 62\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\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;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -486,6 +456,25 @@ " )" ] }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "End time is : Saturday 19 December 2020, 17:58:18\n", + "Duration is : 00:01:44 880ms\n", + "This notebook ends here\n" + ] + } + ], + "source": [ + "pwk.end()" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/VAE/modules/vae.py b/VAE/modules/vae.py index ee23d8bce52ce853ddff120a44838635e4a4be96..9c6c623ccb7b003c211d0060a3f1cf09cce16192 100644 --- a/VAE/modules/vae.py +++ b/VAE/modules/vae.py @@ -27,8 +27,8 @@ from tensorflow.keras.utils import plot_model from modules.callbacks import ImagesCallback from modules.data_generator import DataGenerator - import os, json, time, datetime +from IPython.display import display,Image,Markdown,HTML @@ -125,15 +125,15 @@ class VariationalAutoencoder(): # ==== Verbosity ============================================================== - print('Model initialized.') + self.subtitle('Model initialized.') print(f'Outputs will be in : {self.run_directory}') if verbose>0 : - print('\n','-'*10,'Encoder','-'*50,'\n') + self.subtitle('Encoder :') self.encoder.summary() - print('\n','-'*10,'Encoder','-'*50,'\n') + self.subtitle('Decoder :') self.decoder.summary() - self.plot_model() +# self.plot_model() @@ -270,14 +270,14 @@ class VariationalAutoencoder(): filename = self.run_directory+'/models/'+config with open(filename, 'w') as outfile: json.dump(data, outfile) - print(f'Config saved in : {filename}') + print(f'\nConfig saved in : {filename}') # ---- Save model if model!=None: filename = self.run_directory+'/models/'+model self.model.save(filename) - print(f'Model saved in : {filename}') + print(f'\nModel saved in : {filename}') @@ -302,6 +302,10 @@ class VariationalAutoencoder(): @classmethod def about(cls): - print('\nFIDLE 2020 - Variational AutoEncoder (VAE)') + cls.subtitle('FIDLE 2020 - Variational AutoEncoder (VAE)') print('TensorFlow version :',tf.__version__) - print('VAE version :', cls.version) \ No newline at end of file + print('VAE version :', cls.version) + + @classmethod + def subtitle(cls,text): + display(Markdown(f'<br>**{text}**')) diff --git a/fidle/log/finished.json b/fidle/log/finished.json index bae994cd95e0f58c588bc76d90103da5a059ac96..d96594d28574f558591156d9035a66915c0f67fa 100644 --- a/fidle/log/finished.json +++ b/fidle/log/finished.json @@ -76,5 +76,11 @@ "start": "Saturday 19 December 2020, 11:37:54", "end": "Saturday 19 December 2020, 11:37:57", "duration": "00:00:03 329ms" + }, + "VAE1": { + "path": "/home/pjluc/dev/fidle/VAE", + "start": "Saturday 19 December 2020, 17:56:34", + "end": "Saturday 19 December 2020, 17:58:18", + "duration": "00:01:44 880ms" } } \ No newline at end of file