Skip to content

Instantly share code, notes, and snippets.

@JudeWells
Last active March 13, 2020 21:10
Show Gist options
  • Select an option

  • Save JudeWells/7deae1bec3eb581b210829e906811bdc to your computer and use it in GitHub Desktop.

Select an option

Save JudeWells/7deae1bec3eb581b210829e906811bdc to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
" from ._conv import register_converters as _register_converters\n",
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import os\n",
"import keras\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Activation, Flatten, Input\n",
"from keras.layers import Conv2D, MaxPooling2D, UpSampling2D\n",
"import matplotlib.pyplot as plt\n",
"from keras import backend as K\n",
"import numpy as np\n",
"from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img\n",
"from PIL import Image, ImageChops\n",
"from sklearn.neighbors import KernelDensity\n",
"import random"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"% matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 6416 images belonging to 13 classes.\n",
"Found 2138 images belonging to 13 classes.\n",
"Found 468 images belonging to 3 classes.\n"
]
}
],
"source": [
"# Create generators for training, validation and testing\n",
"# Generate data from the images in a folder, allows use of datasets that do not fit in main memory all at once\n",
"# Image resizing is done by the generator so a folder with any sized-images can be used\n",
"# The named directory must contain one or more subfolders, path should look like apples_train/apple_class1/img1.jpg...\n",
"\n",
"batch_size = 85\n",
"train_datagen = ImageDataGenerator(rescale=1./255, data_format='channels_last')\n",
"train_generator = train_datagen.flow_from_directory(\n",
" 'apples_train/',\n",
" target_size=(96, 96),\n",
" batch_size=batch_size,\n",
" class_mode='input'\n",
" )\n",
"\n",
"test_datagen = ImageDataGenerator(rescale=1./255, data_format='channels_last')\n",
"validation_generator = test_datagen.flow_from_directory(\n",
" 'apples_test/',\n",
" target_size=(96, 96),\n",
" batch_size=batch_size,\n",
" class_mode='input'\n",
" )\n",
"\n",
"anomaly_generator = test_datagen.flow_from_directory(\n",
" 'eggplant/',\n",
" target_size=(96, 96),\n",
" batch_size=batch_size,\n",
" class_mode='input'\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"conv2d_1 (Conv2D) (None, 96, 96, 16) 448 \n",
"_________________________________________________________________\n",
"max_pooling2d_1 (MaxPooling2 (None, 24, 24, 16) 0 \n",
"_________________________________________________________________\n",
"conv2d_2 (Conv2D) (None, 24, 24, 8) 1160 \n",
"_________________________________________________________________\n",
"max_pooling2d_2 (MaxPooling2 (None, 6, 6, 8) 0 \n",
"_________________________________________________________________\n",
"conv2d_3 (Conv2D) (None, 6, 6, 3) 219 \n",
"_________________________________________________________________\n",
"max_pooling2d_3 (MaxPooling2 (None, 3, 3, 3) 0 \n",
"_________________________________________________________________\n",
"conv2d_4 (Conv2D) (None, 3, 3, 3) 84 \n",
"_________________________________________________________________\n",
"up_sampling2d_1 (UpSampling2 (None, 6, 6, 3) 0 \n",
"_________________________________________________________________\n",
"conv2d_5 (Conv2D) (None, 6, 6, 8) 224 \n",
"_________________________________________________________________\n",
"up_sampling2d_2 (UpSampling2 (None, 24, 24, 8) 0 \n",
"_________________________________________________________________\n",
"conv2d_6 (Conv2D) (None, 24, 24, 16) 1168 \n",
"_________________________________________________________________\n",
"up_sampling2d_3 (UpSampling2 (None, 96, 96, 16) 0 \n",
"_________________________________________________________________\n",
"conv2d_7 (Conv2D) (None, 96, 96, 3) 435 \n",
"=================================================================\n",
"Total params: 3,738\n",
"Trainable params: 3,738\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"# Define the convolutional autoencoder model \n",
"# input shape must be the same size as the images that will be fed into it by the generators\n",
"# The output layer must be the same dimensions as the original image\n",
"model = Sequential()\n",
"\n",
"model.add(Conv2D(16, (3, 3), padding='same',activation='relu', input_shape=(96, 96, 3)))\n",
"model.add(MaxPooling2D(pool_size=(4,4), padding='same')) # using pool_size (4,4) makes the layer 4x smaller in height and width\n",
"\n",
"model.add(Conv2D(8,(3, 3),activation='relu', padding='same'))\n",
"model.add(MaxPooling2D(pool_size=(4,4), padding='same'))\n",
"\n",
"model.add(Conv2D(3,(3, 3),activation='relu', padding='same'))\n",
"model.add(MaxPooling2D(pool_size=(2,2), padding='same'))\n",
"\n",
"#-------------------------\n",
"model.add(Conv2D(3,(3, 3),activation='relu', padding='same'))\n",
"model.add(UpSampling2D((2, 2)))\n",
"\n",
"model.add(Conv2D(8,(3, 3),activation='relu', padding='same'))\n",
"model.add(UpSampling2D((4, 4)))\n",
"\n",
"model.add(Conv2D(16,(3, 3),activation='relu', padding='same'))\n",
"model.add(UpSampling2D((4, 4)))\n",
"\n",
"model.add(Conv2D(3,(3, 3), activation='sigmoid', padding='same'))\n",
"#-------------------------\n",
"\n",
"model.summary()\n",
"\n",
"# Compile the model\n",
"model.compile(optimizer='adadelta', loss='mean_squared_error')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.1202 - val_loss: 0.1196\n",
"Epoch 2/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.1158 - val_loss: 0.1134\n",
"Epoch 3/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.1109 - val_loss: 0.1080\n",
"Epoch 4/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.1050 - val_loss: 0.1014\n",
"Epoch 5/600\n",
"11/11 [==============================] - 6213s 565s/step - loss: 0.0967 - val_loss: 0.0927\n",
"Epoch 6/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0908 - val_loss: 0.0853\n",
"Epoch 7/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0868 - val_loss: 0.0828\n",
"Epoch 8/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0830 - val_loss: 0.0813\n",
"Epoch 9/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0788 - val_loss: 0.0761\n",
"Epoch 10/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0736 - val_loss: 0.0824\n",
"Epoch 11/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0711 - val_loss: 0.0738\n",
"Epoch 12/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0694 - val_loss: 0.0775\n",
"Epoch 13/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0678 - val_loss: 0.0644\n",
"Epoch 14/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0647 - val_loss: 0.0589\n",
"Epoch 15/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0621 - val_loss: 0.0580\n",
"Epoch 16/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0581 - val_loss: 0.0568\n",
"Epoch 17/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0575 - val_loss: 0.0542\n",
"Epoch 18/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0530 - val_loss: 0.0518\n",
"Epoch 19/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0529 - val_loss: 0.0485\n",
"Epoch 20/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0520 - val_loss: 0.0522\n",
"Epoch 21/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0471 - val_loss: 0.0499\n",
"Epoch 22/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0510 - val_loss: 0.0456\n",
"Epoch 23/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0446 - val_loss: 0.0473\n",
"Epoch 24/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0473 - val_loss: 0.0419\n",
"Epoch 25/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0424 - val_loss: 0.0546\n",
"Epoch 26/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0454 - val_loss: 0.0410\n",
"Epoch 27/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0429 - val_loss: 0.0425\n",
"Epoch 28/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0424 - val_loss: 0.0410\n",
"Epoch 29/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0394 - val_loss: 0.0444\n",
"Epoch 30/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0411 - val_loss: 0.0408\n",
"Epoch 31/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0417 - val_loss: 0.0426\n",
"Epoch 32/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0398 - val_loss: 0.0396\n",
"Epoch 33/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0387 - val_loss: 0.0388\n",
"Epoch 34/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0395 - val_loss: 0.0381\n",
"Epoch 35/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0391 - val_loss: 0.0438\n",
"Epoch 36/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0383 - val_loss: 0.0388\n",
"Epoch 37/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0364 - val_loss: 0.0381\n",
"Epoch 38/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0381 - val_loss: 0.0385\n",
"Epoch 39/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0358 - val_loss: 0.0377\n",
"Epoch 40/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0373 - val_loss: 0.0382\n",
"Epoch 41/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0379 - val_loss: 0.0377\n",
"Epoch 42/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0362 - val_loss: 0.0389\n",
"Epoch 43/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0348 - val_loss: 0.0349\n",
"Epoch 44/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0345 - val_loss: 0.0366\n",
"Epoch 45/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0376 - val_loss: 0.0385\n",
"Epoch 46/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0359 - val_loss: 0.0360\n",
"Epoch 47/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0351 - val_loss: 0.0366\n",
"Epoch 48/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0341 - val_loss: 0.0355\n",
"Epoch 49/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0367 - val_loss: 0.0355\n",
"Epoch 50/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0337 - val_loss: 0.0352\n",
"Epoch 51/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0343 - val_loss: 0.0357\n",
"Epoch 52/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0345 - val_loss: 0.0342\n",
"Epoch 53/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0359 - val_loss: 0.0355\n",
"Epoch 54/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0328 - val_loss: 0.0344\n",
"Epoch 55/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0324 - val_loss: 0.0341\n",
"Epoch 56/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0329 - val_loss: 0.0356\n",
"Epoch 57/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0338 - val_loss: 0.0325\n",
"Epoch 58/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0328 - val_loss: 0.0354\n",
"Epoch 59/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0321 - val_loss: 0.0320\n",
"Epoch 60/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0321 - val_loss: 0.0351\n",
"Epoch 61/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0344 - val_loss: 0.0342\n",
"Epoch 62/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0325 - val_loss: 0.0318\n",
"Epoch 63/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0322 - val_loss: 0.0335\n",
"Epoch 64/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0320 - val_loss: 0.0318\n",
"Epoch 65/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0311 - val_loss: 0.0333\n",
"Epoch 66/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0329 - val_loss: 0.0360\n",
"Epoch 67/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0321 - val_loss: 0.0333\n",
"Epoch 68/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0331 - val_loss: 0.0328\n",
"Epoch 69/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0317 - val_loss: 0.0323\n",
"Epoch 70/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0327 - val_loss: 0.0333\n",
"Epoch 71/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0318 - val_loss: 0.0324\n",
"Epoch 72/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0304 - val_loss: 0.0313\n",
"Epoch 73/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0304 - val_loss: 0.0310\n",
"Epoch 74/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0319 - val_loss: 0.0340\n",
"Epoch 75/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0313 - val_loss: 0.0315\n",
"Epoch 76/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0301 - val_loss: 0.0307\n",
"Epoch 77/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0320 - val_loss: 0.0341\n",
"Epoch 78/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0313 - val_loss: 0.0313\n",
"Epoch 79/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0302 - val_loss: 0.0310\n",
"Epoch 80/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0292 - val_loss: 0.0298\n",
"Epoch 81/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0306 - val_loss: 0.0325\n",
"Epoch 82/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0295 - val_loss: 0.0317\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 83/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0298 - val_loss: 0.0306\n",
"Epoch 84/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0306 - val_loss: 0.0309\n",
"Epoch 85/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0305 - val_loss: 0.0309\n",
"Epoch 86/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0293 - val_loss: 0.0301\n",
"Epoch 87/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0291 - val_loss: 0.0328\n",
"Epoch 88/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0300 - val_loss: 0.0294\n",
"Epoch 89/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0286 - val_loss: 0.0313\n",
"Epoch 90/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0298 - val_loss: 0.0308\n",
"Epoch 91/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0298 - val_loss: 0.0314\n",
"Epoch 92/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0295 - val_loss: 0.0308\n",
"Epoch 93/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0291 - val_loss: 0.0309\n",
"Epoch 94/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0303 - val_loss: 0.0308\n",
"Epoch 95/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0300 - val_loss: 0.0287\n",
"Epoch 96/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0287 - val_loss: 0.0294\n",
"Epoch 97/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0281 - val_loss: 0.0298\n",
"Epoch 98/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0288 - val_loss: 0.0302\n",
"Epoch 99/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0292 - val_loss: 0.0318\n",
"Epoch 100/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0285 - val_loss: 0.0303\n",
"Epoch 101/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0290 - val_loss: 0.0289\n",
"Epoch 102/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0289 - val_loss: 0.0316\n",
"Epoch 103/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0284 - val_loss: 0.0284\n",
"Epoch 104/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0286 - val_loss: 0.0295\n",
"Epoch 105/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0293 - val_loss: 0.0313\n",
"Epoch 106/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0287 - val_loss: 0.0290\n",
"Epoch 107/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0288 - val_loss: 0.0287\n",
"Epoch 108/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0273 - val_loss: 0.0285\n",
"Epoch 109/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0281 - val_loss: 0.0286\n",
"Epoch 110/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0272 - val_loss: 0.0280\n",
"Epoch 111/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0274 - val_loss: 0.0285\n",
"Epoch 112/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0287 - val_loss: 0.0298\n",
"Epoch 113/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0286 - val_loss: 0.0297\n",
"Epoch 114/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0272 - val_loss: 0.0282\n",
"Epoch 115/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0267 - val_loss: 0.0291\n",
"Epoch 116/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0275 - val_loss: 0.0286\n",
"Epoch 117/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0285 - val_loss: 0.0285\n",
"Epoch 118/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0270 - val_loss: 0.0282\n",
"Epoch 119/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0273 - val_loss: 0.0286\n",
"Epoch 120/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0263 - val_loss: 0.0278\n",
"Epoch 121/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0287 - val_loss: 0.0276\n",
"Epoch 122/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0280 - val_loss: 0.0290\n",
"Epoch 123/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0270 - val_loss: 0.0277\n",
"Epoch 124/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0268 - val_loss: 0.0281\n",
"Epoch 125/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0281 - val_loss: 0.0282\n",
"Epoch 126/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0269 - val_loss: 0.0285\n",
"Epoch 127/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0275 - val_loss: 0.0288\n",
"Epoch 128/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0276 - val_loss: 0.0285\n",
"Epoch 129/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0265 - val_loss: 0.0273\n",
"Epoch 130/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0271 - val_loss: 0.0282\n",
"Epoch 131/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0261 - val_loss: 0.0272\n",
"Epoch 132/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0266 - val_loss: 0.0269\n",
"Epoch 133/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0258 - val_loss: 0.0270\n",
"Epoch 134/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0268 - val_loss: 0.0279\n",
"Epoch 135/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0281 - val_loss: 0.0283\n",
"Epoch 136/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0270 - val_loss: 0.0275\n",
"Epoch 137/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0269 - val_loss: 0.0283\n",
"Epoch 138/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0264 - val_loss: 0.0271\n",
"Epoch 139/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0258 - val_loss: 0.0271\n",
"Epoch 140/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0263 - val_loss: 0.0289\n",
"Epoch 141/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0275 - val_loss: 0.0279\n",
"Epoch 142/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0259 - val_loss: 0.0265\n",
"Epoch 143/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0262 - val_loss: 0.0281\n",
"Epoch 144/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0269 - val_loss: 0.0274\n",
"Epoch 145/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0271 - val_loss: 0.0279\n",
"Epoch 146/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0260 - val_loss: 0.0272\n",
"Epoch 147/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0260 - val_loss: 0.0275\n",
"Epoch 148/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0272 - val_loss: 0.0277\n",
"Epoch 149/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0258 - val_loss: 0.0267\n",
"Epoch 150/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0260 - val_loss: 0.0268\n",
"Epoch 151/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0259 - val_loss: 0.0266\n",
"Epoch 152/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0263 - val_loss: 0.0269\n",
"Epoch 153/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0266 - val_loss: 0.0282\n",
"Epoch 154/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0270 - val_loss: 0.0271\n",
"Epoch 155/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0264 - val_loss: 0.0265\n",
"Epoch 156/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0258 - val_loss: 0.0263\n",
"Epoch 157/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0261 - val_loss: 0.0281\n",
"Epoch 158/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0257 - val_loss: 0.0273\n",
"Epoch 159/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0264 - val_loss: 0.0273\n",
"Epoch 160/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0263 - val_loss: 0.0271\n",
"Epoch 161/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0263 - val_loss: 0.0267\n",
"Epoch 162/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0255 - val_loss: 0.0268\n",
"Epoch 163/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0258 - val_loss: 0.0264\n",
"Epoch 164/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0264 - val_loss: 0.0282\n",
"Epoch 165/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0262 - val_loss: 0.0258\n",
"Epoch 166/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0254 - val_loss: 0.0265\n",
"Epoch 167/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0259 - val_loss: 0.0256\n",
"Epoch 168/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0254 - val_loss: 0.0281\n",
"Epoch 169/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0267 - val_loss: 0.0275\n",
"Epoch 170/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0265 - val_loss: 0.0264\n",
"Epoch 171/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0250 - val_loss: 0.0253\n",
"Epoch 172/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0257 - val_loss: 0.0271\n",
"Epoch 173/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0252 - val_loss: 0.0260\n",
"Epoch 174/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0250 - val_loss: 0.0257\n",
"Epoch 175/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0258 - val_loss: 0.0261\n",
"Epoch 176/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0254 - val_loss: 0.0259\n",
"Epoch 177/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0253 - val_loss: 0.0249\n",
"Epoch 178/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0242 - val_loss: 0.0257\n",
"Epoch 179/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0252 - val_loss: 0.0269\n",
"Epoch 180/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0256 - val_loss: 0.0247\n",
"Epoch 181/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0259 - val_loss: 0.0278\n",
"Epoch 182/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0264 - val_loss: 0.0261\n",
"Epoch 183/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0246 - val_loss: 0.0263\n",
"Epoch 184/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0252 - val_loss: 0.0252\n",
"Epoch 185/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0250 - val_loss: 0.0262\n",
"Epoch 186/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0241 - val_loss: 0.0250\n",
"Epoch 187/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0250 - val_loss: 0.0262\n",
"Epoch 188/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0247 - val_loss: 0.0261\n",
"Epoch 189/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0258 - val_loss: 0.0254\n",
"Epoch 190/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0249 - val_loss: 0.0263\n",
"Epoch 191/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0248 - val_loss: 0.0247\n",
"Epoch 192/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0248 - val_loss: 0.0266\n",
"Epoch 193/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0245 - val_loss: 0.0246\n",
"Epoch 194/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0253 - val_loss: 0.0260\n",
"Epoch 195/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0249 - val_loss: 0.0275\n",
"Epoch 196/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0256 - val_loss: 0.0246\n",
"Epoch 197/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0243 - val_loss: 0.0261\n",
"Epoch 198/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0251 - val_loss: 0.0261\n",
"Epoch 199/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0245 - val_loss: 0.0251\n",
"Epoch 200/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0242 - val_loss: 0.0260\n",
"Epoch 201/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0258 - val_loss: 0.0258\n",
"Epoch 202/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0238 - val_loss: 0.0251\n",
"Epoch 203/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0245 - val_loss: 0.0247\n",
"Epoch 204/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0245 - val_loss: 0.0266\n",
"Epoch 205/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0248 - val_loss: 0.0260\n",
"Epoch 206/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0243 - val_loss: 0.0262\n",
"Epoch 207/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0247 - val_loss: 0.0239\n",
"Epoch 208/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0238 - val_loss: 0.0254\n",
"Epoch 209/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0234 - val_loss: 0.0253\n",
"Epoch 210/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0251 - val_loss: 0.0270\n",
"Epoch 211/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0253 - val_loss: 0.0242\n",
"Epoch 212/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0240 - val_loss: 0.0244\n",
"Epoch 213/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0236 - val_loss: 0.0257\n",
"Epoch 214/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0245 - val_loss: 0.0257\n",
"Epoch 215/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0245 - val_loss: 0.0247\n",
"Epoch 216/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0251 - val_loss: 0.0250\n",
"Epoch 217/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0236 - val_loss: 0.0246\n",
"Epoch 218/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0239 - val_loss: 0.0246\n",
"Epoch 219/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0239 - val_loss: 0.0245\n",
"Epoch 220/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0241 - val_loss: 0.0236\n",
"Epoch 221/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0239 - val_loss: 0.0246\n",
"Epoch 222/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0238 - val_loss: 0.0241\n",
"Epoch 223/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0247 - val_loss: 0.0265\n",
"Epoch 224/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0238 - val_loss: 0.0241\n",
"Epoch 225/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0238 - val_loss: 0.0252\n",
"Epoch 226/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0241 - val_loss: 0.0247\n",
"Epoch 227/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0238 - val_loss: 0.0248\n",
"Epoch 228/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0242 - val_loss: 0.0252\n",
"Epoch 229/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0243 - val_loss: 0.0248\n",
"Epoch 230/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0239 - val_loss: 0.0239\n",
"Epoch 231/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0237 - val_loss: 0.0243\n",
"Epoch 232/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0234 - val_loss: 0.0246\n",
"Epoch 233/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0243 - val_loss: 0.0250\n",
"Epoch 234/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0245 - val_loss: 0.0247\n",
"Epoch 235/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0227 - val_loss: 0.0238\n",
"Epoch 236/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0237 - val_loss: 0.0242\n",
"Epoch 237/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0239 - val_loss: 0.0250\n",
"Epoch 238/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0239 - val_loss: 0.0240\n",
"Epoch 239/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0247 - val_loss: 0.0252\n",
"Epoch 240/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0238 - val_loss: 0.0244\n",
"Epoch 241/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0240 - val_loss: 0.0246\n",
"Epoch 242/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0233 - val_loss: 0.0240\n",
"Epoch 243/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0239 - val_loss: 0.0248\n",
"Epoch 244/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0236 - val_loss: 0.0245\n",
"Epoch 245/600\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"11/11 [==============================] - 15s 1s/step - loss: 0.0245 - val_loss: 0.0245\n",
"Epoch 246/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0236 - val_loss: 0.0254\n",
"Epoch 247/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0241 - val_loss: 0.0234\n",
"Epoch 248/600\n",
"11/11 [==============================] - 14s 1s/step - loss: 0.0235 - val_loss: 0.0258\n",
"Epoch 249/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0235 - val_loss: 0.0246\n",
"Epoch 250/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0234 - val_loss: 0.0245\n",
"Epoch 251/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0234 - val_loss: 0.0268\n",
"Epoch 252/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0238 - val_loss: 0.0234\n",
"Epoch 253/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0240 - val_loss: 0.0247\n",
"Epoch 254/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0232 - val_loss: 0.0240\n",
"Epoch 255/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0236 - val_loss: 0.0252\n",
"Epoch 256/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0239 - val_loss: 0.0242\n",
"Epoch 257/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0240 - val_loss: 0.0251\n",
"Epoch 258/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0236 - val_loss: 0.0242\n",
"Epoch 259/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0226 - val_loss: 0.0233\n",
"Epoch 260/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0234 - val_loss: 0.0245\n",
"Epoch 261/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0239 - val_loss: 0.0247\n",
"Epoch 262/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0233 - val_loss: 0.0245\n",
"Epoch 263/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0233 - val_loss: 0.0231\n",
"Epoch 264/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0234 - val_loss: 0.0252\n",
"Epoch 265/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0233 - val_loss: 0.0236\n",
"Epoch 266/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0231 - val_loss: 0.0243\n",
"Epoch 267/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0224 - val_loss: 0.0230\n",
"Epoch 268/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0231 - val_loss: 0.0243\n",
"Epoch 269/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0241 - val_loss: 0.0255\n",
"Epoch 270/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0233 - val_loss: 0.0234\n",
"Epoch 271/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0243 - val_loss: 0.0246\n",
"Epoch 272/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0235 - val_loss: 0.0240\n",
"Epoch 273/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0220 - val_loss: 0.0233\n",
"Epoch 274/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0226 - val_loss: 0.0244\n",
"Epoch 275/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0237 - val_loss: 0.0241\n",
"Epoch 276/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0224 - val_loss: 0.0234\n",
"Epoch 277/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0230 - val_loss: 0.0233\n",
"Epoch 278/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0218 - val_loss: 0.0243\n",
"Epoch 279/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0240 - val_loss: 0.0235\n",
"Epoch 280/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0224 - val_loss: 0.0234\n",
"Epoch 281/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0218 - val_loss: 0.0228\n",
"Epoch 282/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0230 - val_loss: 0.0233\n",
"Epoch 283/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0229 - val_loss: 0.0236\n",
"Epoch 284/600\n",
"11/11 [==============================] - 36s 3s/step - loss: 0.0234 - val_loss: 0.0255\n",
"Epoch 285/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0237 - val_loss: 0.0239\n",
"Epoch 286/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0226 - val_loss: 0.0237\n",
"Epoch 287/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0229 - val_loss: 0.0246\n",
"Epoch 288/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0235 - val_loss: 0.0236\n",
"Epoch 289/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0238 - val_loss: 0.0254\n",
"Epoch 290/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0224 - val_loss: 0.0225\n",
"Epoch 291/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0220 - val_loss: 0.0245\n",
"Epoch 292/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0229 - val_loss: 0.0231\n",
"Epoch 293/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0237 - val_loss: 0.0228\n",
"Epoch 294/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0222 - val_loss: 0.0227\n",
"Epoch 295/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0221 - val_loss: 0.0238\n",
"Epoch 296/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0224 - val_loss: 0.0230\n",
"Epoch 297/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0225 - val_loss: 0.0240\n",
"Epoch 298/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0227 - val_loss: 0.0258\n",
"Epoch 299/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0228 - val_loss: 0.0224\n",
"Epoch 300/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0233 - val_loss: 0.0242\n",
"Epoch 301/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0227 - val_loss: 0.0225\n",
"Epoch 302/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0226 - val_loss: 0.0223\n",
"Epoch 303/600\n",
"11/11 [==============================] - 18s 2s/step - loss: 0.0231 - val_loss: 0.0232\n",
"Epoch 304/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0217 - val_loss: 0.0226\n",
"Epoch 305/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0221 - val_loss: 0.0224\n",
"Epoch 306/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0231 - val_loss: 0.0226\n",
"Epoch 307/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0227 - val_loss: 0.0235\n",
"Epoch 308/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0227 - val_loss: 0.0234\n",
"Epoch 309/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0223 - val_loss: 0.0234\n",
"Epoch 310/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0228 - val_loss: 0.0242\n",
"Epoch 311/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0226 - val_loss: 0.0221\n",
"Epoch 312/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0221 - val_loss: 0.0223\n",
"Epoch 313/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0220 - val_loss: 0.0237\n",
"Epoch 314/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0228 - val_loss: 0.0246\n",
"Epoch 315/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0229 - val_loss: 0.0235\n",
"Epoch 316/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0215 - val_loss: 0.0223\n",
"Epoch 317/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0223 - val_loss: 0.0251\n",
"Epoch 318/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0227 - val_loss: 0.0230\n",
"Epoch 319/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0229 - val_loss: 0.0244\n",
"Epoch 320/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0227 - val_loss: 0.0244\n",
"Epoch 321/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0224 - val_loss: 0.0223\n",
"Epoch 322/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0221 - val_loss: 0.0230\n",
"Epoch 323/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0226 - val_loss: 0.0236\n",
"Epoch 324/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0234 - val_loss: 0.0235\n",
"Epoch 325/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0225 - val_loss: 0.0233\n",
"Epoch 326/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0215 - val_loss: 0.0218\n",
"Epoch 327/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0228 - val_loss: 0.0238\n",
"Epoch 328/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0224 - val_loss: 0.0231\n",
"Epoch 329/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0219 - val_loss: 0.0228\n",
"Epoch 330/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0222 - val_loss: 0.0228\n",
"Epoch 331/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0221 - val_loss: 0.0239\n",
"Epoch 332/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0223 - val_loss: 0.0223\n",
"Epoch 333/600\n",
"11/11 [==============================] - 17s 2s/step - loss: 0.0225 - val_loss: 0.0249\n",
"Epoch 334/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0232 - val_loss: 0.0219\n",
"Epoch 335/600\n",
"11/11 [==============================] - 38s 3s/step - loss: 0.0218 - val_loss: 0.0229\n",
"Epoch 336/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0219 - val_loss: 0.0228\n",
"Epoch 337/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0222 - val_loss: 0.0220\n",
"Epoch 338/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0229 - val_loss: 0.0228\n",
"Epoch 339/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0219 - val_loss: 0.0228\n",
"Epoch 340/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0219 - val_loss: 0.0234\n",
"Epoch 341/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0226 - val_loss: 0.0224\n",
"Epoch 342/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0229 - val_loss: 0.0249\n",
"Epoch 343/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0219 - val_loss: 0.0216\n",
"Epoch 344/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0213 - val_loss: 0.0223\n",
"Epoch 345/600\n",
"11/11 [==============================] - 15s 1s/step - loss: 0.0216 - val_loss: 0.0214\n",
"Epoch 346/600\n",
"11/11 [==============================] - 16s 1s/step - loss: 0.0213 - val_loss: 0.0227\n",
"Epoch 347/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0221 - val_loss: 0.0251\n",
"Epoch 348/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0225 - val_loss: 0.0223\n",
"Epoch 349/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0221 - val_loss: 0.0226\n",
"Epoch 350/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0213 - val_loss: 0.0229\n",
"Epoch 351/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0232 - val_loss: 0.0244\n",
"Epoch 352/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0215 - val_loss: 0.0213\n",
"Epoch 353/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0208 - val_loss: 0.0226\n",
"Epoch 354/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0218 - val_loss: 0.0218\n",
"Epoch 355/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0211 - val_loss: 0.0222\n",
"Epoch 356/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0222 - val_loss: 0.0232\n",
"Epoch 357/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0215 - val_loss: 0.0223\n",
"Epoch 358/600\n",
"11/11 [==============================] - 30s 3s/step - loss: 0.0215 - val_loss: 0.0227\n",
"Epoch 359/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0233 - val_loss: 0.0231\n",
"Epoch 360/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0213 - val_loss: 0.0213\n",
"Epoch 361/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0215 - val_loss: 0.0223\n",
"Epoch 362/600\n",
"11/11 [==============================] - 32s 3s/step - loss: 0.0214 - val_loss: 0.0232\n",
"Epoch 363/600\n",
"11/11 [==============================] - 50s 5s/step - loss: 0.0222 - val_loss: 0.0229\n",
"Epoch 364/600\n",
"11/11 [==============================] - 48s 4s/step - loss: 0.0213 - val_loss: 0.0214\n",
"Epoch 365/600\n",
"11/11 [==============================] - 51s 5s/step - loss: 0.0226 - val_loss: 0.0240\n",
"Epoch 366/600\n",
"11/11 [==============================] - 36s 3s/step - loss: 0.0232 - val_loss: 0.0225\n",
"Epoch 367/600\n",
"11/11 [==============================] - 43s 4s/step - loss: 0.0219 - val_loss: 0.0224\n",
"Epoch 368/600\n",
"11/11 [==============================] - 38s 3s/step - loss: 0.0215 - val_loss: 0.0229\n",
"Epoch 369/600\n",
"11/11 [==============================] - 37s 3s/step - loss: 0.0219 - val_loss: 0.0236\n",
"Epoch 370/600\n",
"11/11 [==============================] - 31s 3s/step - loss: 0.0225 - val_loss: 0.0219\n",
"Epoch 371/600\n",
"11/11 [==============================] - 31s 3s/step - loss: 0.0214 - val_loss: 0.0221\n",
"Epoch 372/600\n",
"11/11 [==============================] - 33s 3s/step - loss: 0.0220 - val_loss: 0.0218\n",
"Epoch 373/600\n",
"11/11 [==============================] - 35s 3s/step - loss: 0.0215 - val_loss: 0.0227\n",
"Epoch 374/600\n",
"11/11 [==============================] - 50s 5s/step - loss: 0.0225 - val_loss: 0.0221\n",
"Epoch 375/600\n",
"11/11 [==============================] - 31s 3s/step - loss: 0.0217 - val_loss: 0.0234\n",
"Epoch 376/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0210 - val_loss: 0.0213\n",
"Epoch 377/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0208 - val_loss: 0.0224\n",
"Epoch 378/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0230 - val_loss: 0.0229\n",
"Epoch 379/600\n",
"11/11 [==============================] - 35s 3s/step - loss: 0.0224 - val_loss: 0.0220\n",
"Epoch 380/600\n",
"11/11 [==============================] - 32s 3s/step - loss: 0.0221 - val_loss: 0.0238\n",
"Epoch 381/600\n",
"11/11 [==============================] - 30s 3s/step - loss: 0.0226 - val_loss: 0.0218\n",
"Epoch 382/600\n",
"11/11 [==============================] - 30s 3s/step - loss: 0.0218 - val_loss: 0.0216\n",
"Epoch 383/600\n",
"11/11 [==============================] - 32s 3s/step - loss: 0.0208 - val_loss: 0.0228\n",
"Epoch 384/600\n",
"11/11 [==============================] - 36s 3s/step - loss: 0.0209 - val_loss: 0.0213\n",
"Epoch 385/600\n",
"11/11 [==============================] - 34s 3s/step - loss: 0.0213 - val_loss: 0.0233\n",
"Epoch 386/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0228 - val_loss: 0.0230\n",
"Epoch 387/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0224 - val_loss: 0.0230\n",
"Epoch 388/600\n",
"11/11 [==============================] - 37s 3s/step - loss: 0.0220 - val_loss: 0.0215\n",
"Epoch 389/600\n",
"11/11 [==============================] - 39s 4s/step - loss: 0.0207 - val_loss: 0.0215\n",
"Epoch 390/600\n",
"11/11 [==============================] - 31s 3s/step - loss: 0.0207 - val_loss: 0.0218\n",
"Epoch 391/600\n",
"11/11 [==============================] - 35s 3s/step - loss: 0.0208 - val_loss: 0.0216\n",
"Epoch 392/600\n",
"11/11 [==============================] - 32s 3s/step - loss: 0.0211 - val_loss: 0.0223\n",
"Epoch 393/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0231 - val_loss: 0.0238\n",
"Epoch 394/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0219 - val_loss: 0.0217\n",
"Epoch 395/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0211 - val_loss: 0.0235\n",
"Epoch 396/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0217 - val_loss: 0.0217\n",
"Epoch 397/600\n",
"11/11 [==============================] - 35s 3s/step - loss: 0.0209 - val_loss: 0.0216\n",
"Epoch 398/600\n",
"11/11 [==============================] - 30s 3s/step - loss: 0.0214 - val_loss: 0.0227\n",
"Epoch 399/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0214 - val_loss: 0.0219\n",
"Epoch 400/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0205 - val_loss: 0.0217\n",
"Epoch 401/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0216 - val_loss: 0.0224\n",
"Epoch 402/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0216 - val_loss: 0.0218\n",
"Epoch 403/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0211 - val_loss: 0.0227\n",
"Epoch 404/600\n",
"11/11 [==============================] - 33s 3s/step - loss: 0.0212 - val_loss: 0.0216\n",
"Epoch 405/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0210 - val_loss: 0.0223\n",
"Epoch 406/600\n",
"11/11 [==============================] - 30s 3s/step - loss: 0.0211 - val_loss: 0.0230\n",
"Epoch 407/600\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"11/11 [==============================] - 27s 2s/step - loss: 0.0218 - val_loss: 0.0211\n",
"Epoch 408/600\n",
"11/11 [==============================] - 31s 3s/step - loss: 0.0214 - val_loss: 0.0224\n",
"Epoch 409/600\n",
"11/11 [==============================] - 30s 3s/step - loss: 0.0209 - val_loss: 0.0218\n",
"Epoch 410/600\n",
"11/11 [==============================] - 34s 3s/step - loss: 0.0226 - val_loss: 0.0226\n",
"Epoch 411/600\n",
"11/11 [==============================] - 34s 3s/step - loss: 0.0217 - val_loss: 0.0222\n",
"Epoch 412/600\n",
"11/11 [==============================] - 35s 3s/step - loss: 0.0217 - val_loss: 0.0226\n",
"Epoch 413/600\n",
"11/11 [==============================] - 32s 3s/step - loss: 0.0211 - val_loss: 0.0215\n",
"Epoch 414/600\n",
"11/11 [==============================] - 35s 3s/step - loss: 0.0212 - val_loss: 0.0209\n",
"Epoch 415/600\n",
"11/11 [==============================] - 37s 3s/step - loss: 0.0205 - val_loss: 0.0243\n",
"Epoch 416/600\n",
"11/11 [==============================] - 33s 3s/step - loss: 0.0222 - val_loss: 0.0226\n",
"Epoch 417/600\n",
"11/11 [==============================] - 32s 3s/step - loss: 0.0223 - val_loss: 0.0224\n",
"Epoch 418/600\n",
"11/11 [==============================] - 27s 2s/step - loss: 0.0214 - val_loss: 0.0214\n",
"Epoch 419/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0207 - val_loss: 0.0220\n",
"Epoch 420/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0214 - val_loss: 0.0215\n",
"Epoch 421/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0223 - val_loss: 0.0223\n",
"Epoch 422/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0206 - val_loss: 0.0206\n",
"Epoch 423/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0202 - val_loss: 0.0206\n",
"Epoch 424/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0202 - val_loss: 0.0226\n",
"Epoch 425/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0209 - val_loss: 0.0221\n",
"Epoch 426/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0212 - val_loss: 0.0222\n",
"Epoch 427/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0213 - val_loss: 0.0226\n",
"Epoch 428/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0215 - val_loss: 0.0216\n",
"Epoch 429/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0214 - val_loss: 0.0234\n",
"Epoch 430/600\n",
"11/11 [==============================] - 33s 3s/step - loss: 0.0218 - val_loss: 0.0208\n",
"Epoch 431/600\n",
"11/11 [==============================] - 38s 3s/step - loss: 0.0201 - val_loss: 0.0208\n",
"Epoch 432/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0203 - val_loss: 0.0206\n",
"Epoch 433/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0211 - val_loss: 0.0221\n",
"Epoch 434/600\n",
"11/11 [==============================] - 28s 3s/step - loss: 0.0217 - val_loss: 0.0220\n",
"Epoch 435/600\n",
"11/11 [==============================] - 30s 3s/step - loss: 0.0214 - val_loss: 0.0218\n",
"Epoch 436/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0213 - val_loss: 0.0226\n",
"Epoch 437/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0216 - val_loss: 0.0212\n",
"Epoch 438/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0212 - val_loss: 0.0233\n",
"Epoch 439/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0218 - val_loss: 0.0222\n",
"Epoch 440/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0203 - val_loss: 0.0210\n",
"Epoch 441/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0211 - val_loss: 0.0211\n",
"Epoch 442/600\n",
"11/11 [==============================] - 31s 3s/step - loss: 0.0203 - val_loss: 0.0211\n",
"Epoch 443/600\n",
"11/11 [==============================] - 29s 3s/step - loss: 0.0208 - val_loss: 0.0223\n",
"Epoch 444/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0215 - val_loss: 0.0219\n",
"Epoch 445/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0203 - val_loss: 0.0220\n",
"Epoch 446/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0218 - val_loss: 0.0225\n",
"Epoch 447/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0217 - val_loss: 0.0223\n",
"Epoch 448/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0203 - val_loss: 0.0204\n",
"Epoch 449/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0201 - val_loss: 0.0211\n",
"Epoch 450/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0206 - val_loss: 0.0205\n",
"Epoch 451/600\n",
"11/11 [==============================] - 19s 2s/step - loss: 0.0201 - val_loss: 0.0205\n",
"Epoch 452/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0211 - val_loss: 0.0214\n",
"Epoch 453/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0204 - val_loss: 0.0207\n",
"Epoch 454/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0206 - val_loss: 0.0221\n",
"Epoch 455/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0209 - val_loss: 0.0216\n",
"Epoch 456/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0210 - val_loss: 0.0210\n",
"Epoch 457/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0203 - val_loss: 0.0217\n",
"Epoch 458/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0207 - val_loss: 0.0211\n",
"Epoch 459/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0205 - val_loss: 0.0211\n",
"Epoch 460/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0206 - val_loss: 0.0217\n",
"Epoch 461/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0206 - val_loss: 0.0209\n",
"Epoch 462/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0206 - val_loss: 0.0207\n",
"Epoch 463/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0202 - val_loss: 0.0214\n",
"Epoch 464/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0209 - val_loss: 0.0213\n",
"Epoch 465/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0212 - val_loss: 0.0220\n",
"Epoch 466/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0207 - val_loss: 0.0214\n",
"Epoch 467/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0201 - val_loss: 0.0207\n",
"Epoch 468/600\n",
"11/11 [==============================] - 21s 2s/step - loss: 0.0206 - val_loss: 0.0211\n",
"Epoch 469/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0217 - val_loss: 0.0206\n",
"Epoch 470/600\n",
"11/11 [==============================] - 23s 2s/step - loss: 0.0202 - val_loss: 0.0214\n",
"Epoch 471/600\n",
"11/11 [==============================] - 24s 2s/step - loss: 0.0210 - val_loss: 0.0215\n",
"Epoch 472/600\n",
"11/11 [==============================] - 25s 2s/step - loss: 0.0200 - val_loss: 0.0212\n",
"Epoch 473/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0200 - val_loss: 0.0205\n",
"Epoch 474/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0201 - val_loss: 0.0225\n",
"Epoch 475/600\n",
"11/11 [==============================] - 20s 2s/step - loss: 0.0217 - val_loss: 0.0220\n",
"Epoch 476/600\n",
"11/11 [==============================] - 26s 2s/step - loss: 0.0202 - val_loss: 0.0209\n",
"Epoch 477/600\n",
"11/11 [==============================] - 32s 3s/step - loss: 0.0199 - val_loss: 0.0209\n",
"Epoch 478/600\n",
"11/11 [==============================] - 22s 2s/step - loss: 0.0206 - val_loss: 0.0209\n",
"Epoch 00478: early stopping\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x1a20fa94e0>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Training the model\n",
"es = keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=30) # Early stopping (stops training when validation doesn't improve for {patience} epochs)\n",
"model_filepath = 'models/model1.keras'\n",
"save_best = keras.callbacks.ModelCheckpoint(model_filepath, monitor='val_loss', save_best_only=True, mode='min') # Saves the best version of the model to disk (as measured on the validation data set)\n",
"model.fit_generator(\n",
" train_generator,\n",
" steps_per_epoch=1000 // batch_size,\n",
" epochs=600,\n",
" validation_data=validation_generator,\n",
" validation_steps=1000 // batch_size,\n",
" shuffle = True,\n",
" callbacks=[es, save_best])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Training continues after improvement stops for the number of epochs equivalent to the 'patience' hyper-parameter\n",
"# To get back the model that performed best on the validation set we load the checkpointed model from disk:\n",
"model = keras.models.load_model(model_filepath)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a4d3064e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Test the model by viewing a sample of original and reconstructed images\n",
"data_list = []\n",
"batch_index = 0\n",
"while batch_index <= train_generator.batch_index:\n",
" data = train_generator.next()\n",
" data_list.append(data[0])\n",
" batch_index = batch_index + 1\n",
"\n",
"predicted = model.predict(data_list[0])\n",
"no_of_samples = 4\n",
"_, axs = plt.subplots(no_of_samples, 2, figsize=(5, 8))\n",
"axs = axs.flatten()\n",
"imgs = []\n",
"for i in range(no_of_samples):\n",
" imgs.append(data_list[i][i])\n",
" imgs.append(predicted[i])\n",
"for img, ax in zip(imgs, axs):\n",
" ax.imshow(img)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error on validation set:0.02017475672020909, error on anomaly set:0.07263157970439164\n"
]
}
],
"source": [
"# We want the difference the difference in error between the validation (normal) images and anomalous images to be as high as possible\n",
"print(f\"Error on validation set:{model.evaluate_generator(validation_generator)}, error on anomaly set:{model.evaluate_generator(anomaly_generator)}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Extracting the encoded image"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"conv2d_11 (Conv2D) (None, 96, 96, 16) 448 \n",
"_________________________________________________________________\n",
"max_pooling2d_7 (MaxPooling2 (None, 24, 24, 16) 0 \n",
"_________________________________________________________________\n",
"conv2d_12 (Conv2D) (None, 24, 24, 8) 1160 \n",
"_________________________________________________________________\n",
"max_pooling2d_8 (MaxPooling2 (None, 6, 6, 8) 0 \n",
"_________________________________________________________________\n",
"conv2d_13 (Conv2D) (None, 6, 6, 3) 219 \n",
"_________________________________________________________________\n",
"max_pooling2d_9 (MaxPooling2 (None, 3, 3, 3) 0 \n",
"=================================================================\n",
"Total params: 1,827\n",
"Trainable params: 1,827\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"# We build a replica of the first half of the auto-encoder (the encoder only)\n",
"# This network takes a an image which is 96x96x3 and compresses it down to a 3x3x3 tensor\n",
"encoder_replica = Sequential()\n",
"encoder_replica.add(Conv2D(16, (3, 3), padding='same',activation='relu', input_shape=(96, 96, 3), weights=model.layers[0].get_weights()) )\n",
"encoder_replica.add(MaxPooling2D(pool_size=(4,4), padding='same'))\n",
"encoder_replica.add(Conv2D(8,(3, 3),activation='relu', padding='same', weights=model.layers[2].get_weights()))\n",
"encoder_replica.add(MaxPooling2D(pool_size=(4,4), padding='same'))\n",
"encoder_replica.add(Conv2D(3,(3, 3),activation='relu', padding='same', weights=model.layers[4].get_weights()))\n",
"encoder_replica.add(MaxPooling2D(pool_size=(2,2), padding='same'))\n",
"encoder_replica.summary()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Creating encoded (compressed versions of the training, validation and anomalous images) and getting their density\n",
"# The SKLearn kernel density function only works with 1D arrays so we need to flatten the tensors created by the encoder\n",
"encoded_images = encoder_replica.predict_generator(train_generator)\n",
"encoded_images_flat = [np.reshape(img, (27)) for img in encoded_images]\n",
"\n",
"validation_encoded = encoder_replica.predict_generator(validation_generator)\n",
"val_enc_flat = [np.reshape(img, (27)) for img in validation_encoded]\n",
"\n",
"anom_encoded = encoder_replica.predict_generator(anomaly_generator)\n",
"anom_enc_flat = [np.reshape(img, (27)) for img in anom_encoded]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n8eyzzzJy5EieffbZZn9kxMI3KtOI22zRqVnbXVP1XfOImJqZ1WtyvCNgkiSp2SxdupQRI0ZQU1ND\nZnL11Ve36ed1rS9+IpIkqdl07dqVqVOntnQ3Wj1vwpckSSqZAUySJKlkBjBJkqSSGcAkSZJK5k34\nkiQ1t0nfat72Drigwd3Dhw/nggsuqF2GB2DcuHE888wzXHnllas9rnPnzixdupT58+dzzjnncMcd\nd9Tb9ne/+12qq1f/dIVx48YxZswYNttsMwAOO+wwbrnlFrp27drYO2vQpZdeyne+8x3mzp1Ljx49\nVuhzWebOncvhhx/OE0880aztOgImSVIbd/zxx3PrrbeuUHbrrbdy/PHHr9HxPXv2rDd8ralx48bx\n1ltv1W7fc889TQ5fy2299dbrvHh2ZvL+++83Sz+amwFMkqQ27phjjuHXv/4177zzDlAZtZk/fz7D\nhg2rfS5XVVUVAwYM4K677lrl+Llz59K/f38A3n77bUaNGsXAgQM57rjjePvtt2vrnXnmmVRXV9Ov\nXz8uueQSAK644grmz5/PAQccwAEHHABAnz59+Nvf/gbA97//ffr370///v0ZN25c7fl22203Tj/9\ndPr168fIkSNXOE9dp556KrfddhuvvfbaKvt+8qMfrLbts846i6qqKl566SU6d+7M+eefz5577smB\nBx7Io48+yvDhw9lhhx24++67a4/bd999axcq/8tf/rL2F2ItGMAkSWrjunXrxtChQ/nd734HVEa/\njjvuOCKCTp06ceeddzJt2jQmTZrEeeed1+Bi11dddRWbbbYZM2fO5KKLLlrhmV7f/OY3mTJlCjNn\nzuRPf/oTM2fO5JxzzqFnz55MmjSJSZMmrdDW1KlTueGGG3jkkUeYPHkyP/3pT5k+fTpQWRj87LPP\n5sknn6Rr16784he/qLc/nTt35tRTT+UHP/jBCuUzpk/j1vE319v2008/zUknncT06dPZfvvtefPN\nNxk+fDhTp06lS5cuXHzxxUycOJE777yzdgmkHj16MHHiRKZNm8Ztt93GOeecs5ZXYe0YwCRJ2gDU\nnYasO/2YmVx44YUMHDiQAw88kJdffpmFCxeutp0HHniAz3zmMwAMHDiQgQMH1u67/fbbqaqqYvDg\nwTz55JONLrT90EMPcdRRR7H55pvTuXNnjj76aB588EEA+vbty6BBgwDYc889mTt37mrbOeecc7jx\nxht54403assenfwXDj38k/W2vf3227P33nvX1t1000055JBDABgwYAD7778/HTp0YMCAAbXnfffd\ndzn99NMZMGAAxx577BotIt4U3oQvSdIG4FOf+hTnnnsu06ZN4+2336aqqgqA8ePHs2jRIqZOnUqH\nDh3o06cPy5Yta7CtiFil7Pnnn+e73/0ujz32GFtttRUnn3xyo+00NNLWsWPH2tft27df7RQkVJ6u\n/+///u8rfKGgobY333zzFbY7dOhQ+57atWtXe+527dpRU1MDwOWXX84222zDjBkzeP/99+nUaf2u\nMekImCRJG4DOnTszfPhwTj311BVuvl+yZAk9evSgQ4cOTJo0iRdeeKHBdvbbbz/Gjx8PwBNPPMHM\nmTMBeOONN9h8883ZcsstWbhwIb/97W9rj+nSpQv/+Mc/6m3rV7/6FW+99RZvvvkmd955J/vuu+86\nvb9zzz2Xq6++ujYw7f0vw/jdb/63WdqGyue07bbb0q5dO26++Wbee++9dW5rTTgCJklSc2vksRHr\ny/HHH8/RRx+9wjciTzjhBI444giqq6sZNGgQu+66a4NtnHnmmZxyyikMHDiQQYMGMXToUAD22GMP\nBg8eTL9+/dhhhx34+Mc/XnvMmDFjOPTQQ9l2221XuA+sqqqKk08+ubaNz372swwePLjB6cbV2Xrr\nrTnqqKO4/PLLARg4aDDH/ftnmqVtgLPOOotPf/rT/PznP+eAAw5YZRStuUVDQ3gtrbq6OqdMmdLS\n3ZAkqUGzZ89mt912a+lubFQWvlGZ/txmi/U7Vbg69V3ziJiamat/YFodTkFKkiSVzAAmSZJUMgOY\nJElSyQxgkiRJJTOASZIklcwAJkmSVDKfAyZJUjO78vErG6+0Fs4adNYa1bvzzjs5+uijmT17dqPP\n+1pfOnfuzNKlS5k/fz7nnHMOd9xxR4v0o7VzBEySpA3EhAkTGDZs2AoPYm0pPXv2NHw1wAAmSdIG\nYOnSpfz5z3/muuuuqw1g999/P8OHD+eYY45h11135YQTTqhdQ/Hee+9l8ODBDBgwgFNPPZV33nkH\ngD59+nDhhReyzz77UF1dzbRp0zj44IPZcccd+clPflJ7rhEjRlBVVcWAAQO46667VunP3Llz6d+/\nPwDvvfceX/3qVxkyZAgDBw7k6quvBmDBggXst99+DBo0iP79+9cupr0xMIBJkrQB+NWvfsUhhxzC\nzjvvzIc//GGmTZsGwPTp0xk3bhxPPfUUzz33HH/+859ZtmwZJ598MrfddhuzZs2ipqaGq666qrat\n7bbbjocffph9992Xk08+mTvuuIPJkyfzta99DYBOnTpx5513Mm3aNCZNmsR5553X4OLY1113HVtu\nuSWPPfYYjz32GD/96U95/vnnueWWWzj44IN5/PHHmTFjBoMGDVq/H1IrYgCTJGkDMGHCBEaNGgXA\nqFGjmDBhAgBDhw6ld+/etGvXjkGDBjF37lyefvpp+vbty8477wzA6NGjeeCBB2rb+uQnPwnAgAED\n2GuvvejSpQvdu3enU6dOvP7662QmF154IQMHDuTAAw/k5ZdfZuHChavt2x/+8AduuukmBg0axF57\n7cXixYt59tlnGTJkCDfccAOXXnops2bNokuXLuvr42l1vAlfkqQ2bvHixdx333088cQTRATvvfce\nEcFhhx1Gx44da+u1b9+empqaBkergNpj2rVrt8Lx7dq1o6amhvHjx7No0SKmTp1Khw4d6NOnD8uW\nLVtte5nJD3/4Qw4++OBV9j3wwAP85je/4cQTT+SrX/0qJ5100tq+/TbJETBJktq4O+64g5NOOokX\nXniBuXPn8tJLL9G3b18eeuiheuvvuuuuzJ07lzlz5gBw8803s//++6/x+ZYsWUKPHj3o0KEDkyZN\n4oUXXmiw/sEHH8xVV13Fu+++C8AzzzzDm2++yQsvvECPHj04/fTTOe2002qnTTcGjoBJktTM1vSx\nEc1lwoQJjB07doWyT3/601x11VXsuOOOq9Tv1KkTN9xwA8ceeyw1NTUMGTKEM844Y43Pd8IJJ3DE\nEUdQXV3NoEGDGn3kxWc/+1nmzp1LVVUVmUn37t351a9+xf33389ll11Ghw4d6Ny5MzfddNMa96Gt\ni8aGIVtSdXV1TpkypaW7IUlSg2bPns1uu+3W0t3YqCx8ozLluc0WnVrk/PVd84iYmpnVa3K8U5CS\nJEklazSARcT1EfFqRDxRp+yyiPhrRMyMiDsjomudfRdExJyIeDoiDq5TfkhRNicixq58HkmSpI3F\nmoyA/Qw4ZKWyiUD/zBwIPANcABARuwOjgH7FMVdGRPuIaA/8GDgU2B04vqgrSdIGoTXf0qPm1RzX\nutEAlpkPAK+tVPaHzKwpNicDvYvXRwK3ZuY7mfk8MAcYWvzMycznMvOfwK1FXUmS2rxOnTqxePFi\n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\nroIWgdcAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a5287f550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Kernel Density Estimation of the encoded vectors\n",
"kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(encoded_images_flat)\n",
"training_density_scores = kde.score_samples(encoded_images_flat) \n",
"validation_density_scores = kde.score_samples(val_enc_flat)\n",
"anomaly_density_scores = kde.score_samples(anom_enc_flat)\n",
"\n",
"# Plotting the density distributions of the training (normal), validation (normal) and anomalous images\n",
"# Ideally we want to see high separation between the normal and anomalous classes\n",
"plt.figure(figsize = (10,7))\n",
"plt.title('Distribution of Density Scores')\n",
"plt.hist(training_density_scores, 12, alpha=0.5, label='Training Normal')\n",
"plt.hist(validation_density_scores, 12, alpha=0.5, label='Validation Normal')\n",
"plt.hist(anomaly_density_scores, 12, alpha=0.5, label='Anomalies')\n",
"plt.legend(loc='upper right')\n",
"plt.xlabel('Density Score')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Create a function for classifying images in bulk (for testing purposes)\n",
"def get_mse(original, reconstruction):\n",
" # Returns the mean square error for each image in the array\n",
" return np.mean((original - reconstruction)**2, axis=(1,2,3)) \n",
"\n",
"def evaluate_model(test_file):\n",
" density_threshold = 0 # This threshold was chosen based on looking at the distribution of the density scores of the normal class (validation set)\n",
" reconstruction_error_threshold = 0.04 # This threshold was chosen based on looking at the distribution of reconstruction errors of the normal class\n",
" batch_size = 0\n",
" for (dirpath, dirnames, filenames) in os.walk(test_file):\n",
" batch_size += len([file for file in filenames if file.endswith(\".jpg\")]) # Batchsize now is total images in folder\n",
" \n",
" test_img_generator = test_datagen.flow_from_directory(\n",
" test_file,\n",
" target_size=(96, 96),\n",
" batch_size=batch_size,\n",
" class_mode='input'\n",
" )\n",
" \n",
" images = test_img_generator.next()[0]\n",
" reconstructions = model.predict(images)\n",
" MSEs = get_mse(images, reconstructions)\n",
" reconstruction_anomalies = MSEs > reconstruction_error_threshold\n",
" print(f'Reconstruction anomalies = {sum(reconstruction_anomalies)}')\n",
" \n",
" encoded_images = encoder_replica.predict_generator(test_img_generator)\n",
" encoded_images_flat = np.array([np.reshape(img, (27)) for img in encoded_images])\n",
" density_scores = kde.score_samples(encoded_images_flat)\n",
" density_anomalies = density_scores < density_threshold\n",
" \n",
" combined_anomalies = np.maximum(reconstruction_anomalies, density_anomalies)\n",
" print(f'Combined anomalies = {sum(combined_anomalies)}')\n",
" overall_detection_rate = sum(combined_anomalies) / len(combined_anomalies)\n",
" print(f'Overall detection rate = {overall_detection_rate}')\n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 2138 images belonging to 13 classes.\n",
"Reconstruction anomalies = 61\n",
"Combined anomalies = 264\n",
"Overall detection rate = 0.1234798877455566\n"
]
}
],
"source": [
"# Check what proportion of apple images (a set which was unseen in training) get classified as anomalous\n",
"evaluate_model('apples_test')"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 468 images belonging to 3 classes.\n",
"Reconstruction anomalies = 327\n",
"Combined anomalies = 453\n",
"Overall detection rate = 0.967948717948718\n"
]
}
],
"source": [
"# Check what proportion of aubergines/eggplants get classed as anomalous\n",
"evaluate_model('eggplant')"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 451 images belonging to 3 classes.\n",
"Reconstruction anomalies = 41\n",
"Combined anomalies = 429\n",
"Overall detection rate = 0.9512195121951219\n"
]
}
],
"source": [
"# Check what proportion of onions get classed as anomalous\n",
"evaluate_model('onions')"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 592 images belonging to 3 classes.\n",
"Reconstruction anomalies = 296\n",
"Combined anomalies = 583\n",
"Overall detection rate = 0.9847972972972973\n"
]
}
],
"source": [
"# Check what proportion of peppers get classed as anomalous\n",
"evaluate_model('peppers')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# This function can be used for ingference when the system is deployed it checks one image at a time\n",
"def check_anomaly(img_path):\n",
" density_threshold = 0 \n",
" reconstruction_error_threshold = 0.04 \n",
" img = Image.open(img_path)\n",
" img = np.array(img.resize((96,96), Image.ANTIALIAS))\n",
" img = img / 255\n",
" encoded_img = encoder_replica.predict([[img]]) # Create a compressed version of the image using the encoder\n",
" encoded_img = [np.reshape(img, (27)) for img in encoded_img] # Flatten the compressed image\n",
" density = kde.score_samples(encoded_img)[0] # get a density score for the new image\n",
"# print(f'density: {density}')\n",
" reconstruction = model.predict([[img]])\n",
" reconstruction_error = model.evaluate([reconstruction],[[img]], batch_size = 1)\n",
"# print(f'reconstruction_error: {reconstruction_error}')\n",
" if density < density_threshold or reconstruction_error > reconstruction_error_threshold:\n",
" return True\n",
" else:\n",
" return False"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment