From b6930aed4f496ae6f2438de67c3a87a99fe85dd1 Mon Sep 17 00:00:00 2001 From: Pascal Date: Mon, 26 Feb 2024 18:31:24 +0100 Subject: [PATCH] updated sols --- notebooks/05_cnn_edge_lover.ipynb | 2 +- notebooks/05_cnn_edge_lover_sol.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/05_cnn_edge_lover.ipynb b/notebooks/05_cnn_edge_lover.ipynb index d8fdc1f..f7f76c9 100644 --- a/notebooks/05_cnn_edge_lover.ipynb +++ b/notebooks/05_cnn_edge_lover.ipynb @@ -1 +1 @@ -{"cells":[{"cell_type":"markdown","metadata":{"id":"4K8Ug6ICkRtQ"},"source":["# A simple CNN for the edge lover task\n","\n","In this notebook you train a very simple CNN with only 1 kernel to distinguish between images containing vertical and images containing horizontal stripes. To check what pattern is recognized by the learned kernel you will visualize the weights of the kernel as an image. You will see that the CNN learns a useful kernel (either a vertical or horiziontal bar). You can experiment with the code to check the influence of the kernel size, the activation function and the pooling method on the result. \n","\n","\n","**Dataset:** You work with an artficially generated dataset of greyscale images (50x50 pixel) with 10 vertical or horizontal bars. We want to classify them into whether an art lover, who only loves vertical strips, will like the image (y = 0) or not like the image (y = 1). \n","\n","The idea of the notebook is that you try to understand the provided code by running it, checking the output and playing with it by slightly changing the code and rerunning it. \n","\n","**Content:**\n","* definig and generating the dataset X_train and X_val\n","* visualize samples of the generated images\n","* use keras to train a CNN with only one kernel (5x5 pixel)\n","* visualize the weights of the learned kernel and interpret if it is useful\n","* repeat the last two steps to check if the learned kernel is always the same\n","\n"]},{"cell_type":"markdown","metadata":{"id":"eiB8bJNYn8oP"},"source":["### Imports\n","\n","In the next cell, we load all the required libraries."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"2PDLAWRQ7iUB"},"outputs":[],"source":["# load required libraries:\n","import numpy as np\n","import matplotlib.pyplot as plt\n","%matplotlib inline\n","plt.style.use('default')\n","\n","import tensorflow.keras\n","from tensorflow.keras.models import Sequential\n","from tensorflow.keras.layers import Dense, Convolution2D, MaxPooling2D, Flatten , Activation\n","from tensorflow.keras.utils import to_categorical"]},{"cell_type":"markdown","metadata":{"id":"Oq0FNqcBpj23"},"source":["### Defining functions to generate images\n","\n","Here we define the function to genere images with vertical and horizontal bars, the arguments of the functions are the size of the image and the number of bars you want to have. The bars are at random positions in the image with a random length. The image is black and white, meaning we have only two values for the pixels, 0 for black and 255 for white."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"nqVBlR8yAO9c"},"outputs":[],"source":["#define function to generate image with shape (size, size, 1) with stripes\n","def generate_image_with_bars(size, bar_nr, vertical = True):\n"," img = np.zeros((size,size,1), dtype=\"uint8\")\n"," for i in range(0,bar_nr):\n"," x,y = np.random.randint(0,size,2)\n"," l = int(np.random.randint(y,size,1)[0])\n"," if (vertical):\n"," img[y:l,x,0]=255\n"," else:\n"," img[x,y:l,0]=255\n"," return img"]},{"cell_type":"markdown","metadata":{"id":"bUmdGzQLdqzB"},"source":["Let's have a look at the generated images. We choose a size of 50x50 pixels and set the number of bars in the image to 10."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"EccLz0FlXGuU"},"outputs":[],"source":["# have a look on two generated images\n","plt.figure(figsize=(8,8))\n","plt.subplot(1,2,1)\n","img=generate_image_with_bars(50,10, vertical=True)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.subplot(1,2,2)\n","img=generate_image_with_bars(50,10, vertical=False)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"Y8gSwmyaevTk"},"source":["### Make a train and validation dataset of images with vertical and horizontal images\n","Now, let's make a train dataset *X_train* with 1000 images (500 images with vertical and 500 images with horizontal bars). We normalize the images values to be between 0 and 1 by dividing all values with 255. We create a secont dataste *X_val* with exactly the same properties to validate the training of the CNN."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"63omuptEILKu"},"outputs":[],"source":["pixel=50 # define height and width of images\n","num_images_train = 1000 #Number of training examples (divisible by 2)\n","num_images_val = 1000 #Number of training examples (divisible by 2)\n","\n","# generate training data with vertical edges\n","X_train =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_train[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_train[i]=generate_image_with_bars(pixel,10, vertical=False)\n","\n","# generate validation data with vertical edges\n","X_val =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_val[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_val[i]=generate_image_with_bars(pixel,10, vertical=False)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"oBQjP6pZxMfa"},"outputs":[],"source":["# normalize the data to be between 0 and 1\n","X_train=X_train/255\n","X_val=X_val/255\n","\n","print(X_train.shape)\n","print(X_val.shape)"]},{"cell_type":"markdown","metadata":{"id":"ajNnUoYyi7IQ"},"source":["Here we make the labels for the art lover, 0 means he likes the image (vertical bars) and 1 means that he doesn't like it (horizontal stripes). We one hot encode the labels because we want to use two outputs in our network."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"41-L5hM8S_ZP"},"outputs":[],"source":["# create class labels\n","y = np.array([[0],[1]])\n","Y_train = np.repeat(y, num_images_train //2)\n","Y_val = np.repeat(y, num_images_train //2)\n","\n","# one-hot-encoding\n","Y_train = to_categorical(Y_train,2)\n","Y_val = to_categorical(Y_val,2)"]},{"cell_type":"markdown","metadata":{"id":"uZpr0h-VvatF"},"source":["## Defining the CNN\n","\n","Here we define the CNN:\n","\n","- we use only one kernel with a size of 5x5 pixels \n","- then we apply a linar activation function \n","- the maxpooling layer takes the maximum of the whole activation map to predict the probability (output layer with softmax) if the art lover will like the image\n","\n","As loss we use the categorical_crossentropy and we train the model with a batchsize of 64 images per update.\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"1Dfg1h2rUifd"},"outputs":[],"source":["model = Sequential()\n","\n","model.add(Convolution2D(1,(5,5),padding='same',input_shape=(pixel,pixel,1)))\n","model.add(Activation('linear'))\n","\n","# take the max over all values in the activation map\n","model.add(MaxPooling2D(pool_size=(pixel,pixel)))\n","model.add(Flatten())\n","model.add(Dense(2))\n","model.add(Activation('softmax'))\n","\n","# compile model and initialize weights\n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"r6eqV0TRU0_n"},"outputs":[],"source":["# let's summarize the CNN architectures along with the number of model weights\n","model.summary()\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Sc-BYd8kVCx0","scrolled":false},"outputs":[],"source":["# train the model\n","history=model.fit(X_train, Y_train,\n"," validation_data=(X_val,Y_val),\n"," batch_size=64,\n"," epochs=150,\n"," verbose=1)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fK_AAAoiQtlc"},"outputs":[],"source":["# plot the development of the accuracy and loss during training\n","plt.figure(figsize=(12,4))\n","plt.subplot(1,2,(1))\n","plt.plot(history.history['accuracy'],linestyle='-.')\n","plt.plot(history.history['val_accuracy'])\n","plt.title('model accuracy')\n","plt.ylabel('accuracy')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='lower right')\n","plt.subplot(1,2,(2))\n","plt.plot(history.history['loss'],linestyle='-.')\n","plt.plot(history.history['val_loss'])\n","plt.title('model loss')\n","plt.ylabel('loss')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='upper right');"]},{"cell_type":"markdown","metadata":{"id":"uOwR3Esbw8eN"},"source":["### Visualize the learned kernel and experiment with the code\n","\n","You see that the CNN performs very good at this task (100% accuracy). We can check which pattern is recognized by the **learned kernel** and see if you think that this is helpful to distinguish between images with horizontal and vertical edges.\n","\n","Below you can see the original image, the image after the convolution operation with the learned kernel and the maximum value from the maxpooling operation. Note that the maxpooling has the same size as the convolved image so there is just one value as output.\n","\n","The probability (or more exactly likelihood) assigned by the model for each sample to belong to class \"horizontal\" or \"vertical\" is displayed P(y=\"horizontal\"|x),P(y=\"vertical\"|x) . The -log(P(y=\"horizontal\"|x)) or -log(P(y=\"vertical\"|x)) (the NLL : NegativeLogLikelihoods) which are used in the loss function \n","are displayed aswell. \n","\n","\n","\n","Move the sliders to inspect different pictures from the validation set and their predictions\n","\n","\n","#### Extra\n","\n","try to lower (or increase) the training epochs and see how the -log(P(y|x)) change."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"pl1yuAddVRnE"},"outputs":[],"source":["## Do not worry about this cell, just move the sliders.\n","import scipy.signal\n","from skimage.measure import block_reduce # For max pooling\n","import ipywidgets as widgets\n","\n","# Kernel from model\n","plt.figure(figsize=(10, 3))\n","plt.subplot(1, 2, 1)\n","plt.imshow(np.random.rand(25).reshape(5, 5),\"gray\") ,plt.title('Randomly initalized weights')\n","plt.subplot(1, 2, 2)\n","conv_filter=np.squeeze(model.get_weights()[0], axis=2)\n","plt.imshow(conv_filter[:,:,0],\"gray\"),plt.title('Learned Kernel (weights) , by model'),plt.show();\n","print(\"\\n---------Move the sliders to inspect different vertical and horizontal images from the valset and their predictions:------------------\\n\")\n","\n","def scale_convolution_map(conv_map, min_val=-3, max_val=3):\n"," clipped_conv_map = np.clip(conv_map, min_val, max_val)\n"," scaled_conv_map = (clipped_conv_map - min_val) / (max_val - min_val)\n"," return scaled_conv_map\n","\n","def plot_conv(img):\n"," convolved_image = scipy.signal.convolve2d(img.squeeze(), conv_filter.squeeze(), mode='same')\n"," scaled_conv_image = scale_convolution_map(convolved_image + model.get_weights()[1])\n"," max_pooled_image = block_reduce(convolved_image + model.get_weights()[1], block_size=(50, 50), func=np.max)\n"," scaled_max_pooled_image = scale_convolution_map(max_pooled_image)\n"," \n"," plt.figure(figsize=(20, 4)) # Adjust the figure size as needed\n"," plt.subplot(1, 6, 1)\n"," plt.imshow(img, \"gray\", vmin=0, vmax=1),plt.title('Original Image')\n"," plt.subplot(1, 6, 2)\n"," plt.imshow(scaled_conv_image, \"gray\", vmin=0, vmax=1),plt.title('Convolved Image')\n"," plt.subplot(1, 6, 3),plt.imshow(scaled_max_pooled_image, \"gray\", vmin=0, vmax=1)\n"," plt.title(f'Max Pooled = {max_pooled_image[0][0]:.2f}'),plt.xticks([]), plt.yticks([])\n"," plt.subplot(1, 6, 4),plt.axis('off')\n"," pred = model.predict(img.reshape(1, 50, 50, 1), verbose=0)\n"," text_info = f'''\n"," P(y=vertical|x): {pred[0][0]:.4f}\n"," P(y=horizontal|x): {pred[0][1]:.4f}\n"," \n"," \n"," -log(P(y=vertical|x)): {-np.log(pred[0][0]):.4f}\n"," -log(P(y=horizontal|x)): {-np.log(pred[0][1]):.4f}\n"," '''\n"," plt.text(0, 0.5, text_info, ha='left', va='center')\n"," plt.subplot(1, 6, 5)\n"," x_values = np.linspace(0.001, 1.1, 500)\n"," plt.plot(x_values, -np.log(x_values), label='-log(P(y|x))')\n"," plt.ylim(-0.5, 6),plt.xlim(-0.1, 1.1),plt.xlabel('P(y|x)')\n"," plt.plot(pred[0][0], -np.log(pred[0][0]), 'bo', label='-log(P(y=vertical|x))')\n"," plt.plot(pred[0][1], -np.log(pred[0][1]), 'ro', label='-log(P(y=horizontal|x))')\n"," plt.legend(),plt.grid(True), plt.tight_layout(),plt.show();\n","\n","def inspect_preds(horizontal,vertical):\n"," plot_conv(X_val[horizontal,:,:,0])\n"," plot_conv(X_val[vertical,:,:,0])\n","\n","horizontal_slider = widgets.IntSlider(min=0, max=num_images_val//2-1, step=1, value=0, description='vertical ')\n","vertical_slider = widgets.IntSlider(min=num_images_val//2, max=num_images_val-1, step=1, value=0, description='horizontal')\n","widgets.interact(inspect_preds, horizontal=horizontal_slider, vertical=vertical_slider);"]},{"cell_type":"markdown","metadata":{"id":"U4gnnlAPp_Q2"},"source":["### Repeat the training and experiment with the kernelsize and activation function.\n","\n","**Exercise**:\n","- Repeat the compiling and training, beginning from the cell:\n","\n","```\n","model = Sequential()\n"," \n"," ...\n"," \n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n","```\n","\n","for several times and check if the CNN always learns the same kernel. \n","\n","- You can experiment with the code and check what happens if you use another kernel size, activation function (relu instead of linear ) or pooling method AveragePooling instead of MaxPooling. Try to make a prediction on the performance before doing the experiment.\n","\n","\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fRlCUwpVoy69"},"outputs":[],"source":[]}],"metadata":{"accelerator":"GPU","colab":{"provenance":[]},"kernelspec":{"display_name":"Python 3 (ipykernel)","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.7.11"}},"nbformat":4,"nbformat_minor":0} +{"cells":[{"cell_type":"markdown","metadata":{"id":"4K8Ug6ICkRtQ"},"source":["# A simple CNN for the edge lover task\n","\n","In this notebook you train a very simple CNN with only 1 kernel to distinguish between images containing vertical and images containing horizontal stripes. To check what pattern is recognized by the learned kernel you will visualize the weights of the kernel as an image. You will see that the CNN learns a useful kernel (either a vertical or horiziontal bar). You can experiment with the code to check the influence of the kernel size, the activation function and the pooling method on the result. \n","\n","\n","**Dataset:** You work with an artficially generated dataset of greyscale images (50x50 pixel) with 10 vertical or horizontal bars. We want to classify them into whether an art lover, who only loves vertical strips, will like the image (y = 0) or not like the image (y = 1). \n","\n","The idea of the notebook is that you try to understand the provided code by running it, checking the output and playing with it by slightly changing the code and rerunning it. \n","\n","**Content:**\n","* definig and generating the dataset X_train and X_val\n","* visualize samples of the generated images\n","* use keras to train a CNN with only one kernel (5x5 pixel)\n","* visualize the weights of the learned kernel and interpret if it is useful\n","* repeat the last two steps to check if the learned kernel is always the same\n","\n"]},{"cell_type":"markdown","metadata":{"id":"eiB8bJNYn8oP"},"source":["### Imports\n","\n","In the next cell, we load all the required libraries."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"2PDLAWRQ7iUB"},"outputs":[],"source":["# load required libraries:\n","import numpy as np\n","import matplotlib.pyplot as plt\n","%matplotlib inline\n","plt.style.use('default')\n","\n","import tensorflow.keras\n","from tensorflow.keras.models import Sequential\n","from tensorflow.keras.layers import Dense, Convolution2D, MaxPooling2D, Flatten , Activation\n","from tensorflow.keras.utils import to_categorical"]},{"cell_type":"markdown","metadata":{"id":"Oq0FNqcBpj23"},"source":["### Defining functions to generate images\n","\n","Here we define the function to genere images with vertical and horizontal bars, the arguments of the functions are the size of the image and the number of bars you want to have. The bars are at random positions in the image with a random length. The image is black and white, meaning we have only two values for the pixels, 0 for black and 255 for white."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"nqVBlR8yAO9c"},"outputs":[],"source":["#define function to generate image with shape (size, size, 1) with stripes\n","def generate_image_with_bars(size, bar_nr, vertical = True):\n"," img = np.zeros((size,size,1), dtype=\"uint8\")\n"," for i in range(0,bar_nr):\n"," x,y = np.random.randint(0,size,2)\n"," l = int(np.random.randint(y,size,1)[0])\n"," if (vertical):\n"," img[y:l,x,0]=255\n"," else:\n"," img[x,y:l,0]=255\n"," return img"]},{"cell_type":"markdown","metadata":{"id":"bUmdGzQLdqzB"},"source":["Let's have a look at the generated images. We choose a size of 50x50 pixels and set the number of bars in the image to 10."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"EccLz0FlXGuU"},"outputs":[],"source":["# have a look on two generated images\n","plt.figure(figsize=(8,8))\n","plt.subplot(1,2,1)\n","img=generate_image_with_bars(50,10, vertical=True)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.subplot(1,2,2)\n","img=generate_image_with_bars(50,10, vertical=False)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"Y8gSwmyaevTk"},"source":["### Make a train and validation dataset of images with vertical and horizontal images\n","Now, let's make a train dataset *X_train* with 1000 images (500 images with vertical and 500 images with horizontal bars). We normalize the images values to be between 0 and 1 by dividing all values with 255. We create a secont dataste *X_val* with exactly the same properties to validate the training of the CNN."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"63omuptEILKu"},"outputs":[],"source":["pixel=50 # define height and width of images\n","num_images_train = 1000 #Number of training examples (divisible by 2)\n","num_images_val = 1000 #Number of training examples (divisible by 2)\n","\n","# generate training data with vertical edges\n","X_train =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_train[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_train[i]=generate_image_with_bars(pixel,10, vertical=False)\n","\n","# generate validation data with vertical edges\n","X_val =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_val[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_val[i]=generate_image_with_bars(pixel,10, vertical=False)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"oBQjP6pZxMfa"},"outputs":[],"source":["# normalize the data to be between 0 and 1\n","X_train=X_train/255\n","X_val=X_val/255\n","\n","print(X_train.shape)\n","print(X_val.shape)"]},{"cell_type":"markdown","metadata":{"id":"ajNnUoYyi7IQ"},"source":["Here we make the labels for the art lover, 0 means he likes the image (vertical bars) and 1 means that he doesn't like it (horizontal stripes). We one hot encode the labels because we want to use two outputs in our network."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"41-L5hM8S_ZP"},"outputs":[],"source":["# create class labels\n","y = np.array([[0],[1]])\n","Y_train = np.repeat(y, num_images_train //2)\n","Y_val = np.repeat(y, num_images_train //2)\n","\n","# one-hot-encoding\n","Y_train = to_categorical(Y_train,2)\n","Y_val = to_categorical(Y_val,2)"]},{"cell_type":"markdown","metadata":{"id":"uZpr0h-VvatF"},"source":["## Defining the CNN\n","\n","Here we define the CNN:\n","\n","- we use only one kernel with a size of 5x5 pixels \n","- then we apply a linar activation function \n","- the maxpooling layer takes the maximum of the whole activation map to predict the probability (output layer with softmax) if the art lover will like the image\n","\n","As loss we use the categorical_crossentropy and we train the model with a batchsize of 64 images per update.\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"1Dfg1h2rUifd"},"outputs":[],"source":["model = Sequential()\n","\n","model.add(Convolution2D(1,(5,5),padding='same',input_shape=(pixel,pixel,1)))\n","model.add(Activation('linear'))\n","\n","# take the max over all values in the activation map\n","model.add(MaxPooling2D(pool_size=(pixel,pixel)))\n","model.add(Flatten())\n","model.add(Dense(2))\n","model.add(Activation('softmax'))\n","\n","# compile model and initialize weights\n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"r6eqV0TRU0_n"},"outputs":[],"source":["# let's summarize the CNN architectures along with the number of model weights\n","model.summary()\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Sc-BYd8kVCx0","scrolled":false},"outputs":[],"source":["# train the model\n","history=model.fit(X_train, Y_train,\n"," validation_data=(X_val,Y_val),\n"," batch_size=64,\n"," epochs=150,\n"," verbose=1)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fK_AAAoiQtlc"},"outputs":[],"source":["# plot the development of the accuracy and loss during training\n","plt.figure(figsize=(12,4))\n","plt.subplot(1,2,(1))\n","plt.plot(history.history['accuracy'],linestyle='-.')\n","plt.plot(history.history['val_accuracy'])\n","plt.title('model accuracy')\n","plt.ylabel('accuracy')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='lower right')\n","plt.subplot(1,2,(2))\n","plt.plot(history.history['loss'],linestyle='-.')\n","plt.plot(history.history['val_loss'])\n","plt.title('model loss')\n","plt.ylabel('loss')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='upper right');"]},{"cell_type":"markdown","metadata":{"id":"uOwR3Esbw8eN"},"source":["### Visualize the learned kernel and experiment with the code\n","\n","You see that the CNN performs very good at this task (100% accuracy). We can check which pattern is recognized by the **learned kernel** and see if you think that this is helpful to distinguish between images with horizontal and vertical edges.\n","\n","Below you can see the original image, the image after the convolution operation with the learned kernel and the maximum value from the maxpooling operation. Note that the maxpooling has the same size as the convolved image so there is just one value as output.\n","\n","\n","Move the sliders to inspect different pictures from the validation set and their predictions\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"pl1yuAddVRnE"},"outputs":[],"source":["## Do not worry about this cell, just move the sliders.\n","import scipy.signal\n","from skimage.measure import block_reduce # For max pooling\n","import ipywidgets as widgets\n","\n","plt.figure(figsize=(10, 3))\n","plt.subplot(1, 2, 1)\n","plt.imshow(np.random.rand(25).reshape(5, 5),\"gray\") ,plt.title('Randomly initalized weights')\n","plt.subplot(1, 2, 2)\n","conv_filter=np.squeeze(model.get_weights()[0], axis=2)\n","plt.imshow(conv_filter[:,:,0],\"gray\"),plt.title('Learned Kernel (weights) , by model'),plt.show();\n","print(\"\\n---------Move the sliders to inspect different vertical and horizontal images from the valset and their predictions:------------------\\n\")\n","\n","def scale_convolution_map(conv_map, min_val=-3, max_val=3):\n"," clipped_conv_map = np.clip(conv_map, min_val, max_val)\n"," scaled_conv_map = (clipped_conv_map - min_val) / (max_val - min_val)\n"," return scaled_conv_map\n","\n","def plot_conv(img,category):\n"," convolved_image = scipy.signal.convolve2d(img.squeeze(), conv_filter.squeeze(), mode='same')\n"," scaled_conv_image = scale_convolution_map(convolved_image + model.get_weights()[1])\n"," max_pooled_image = block_reduce(convolved_image + model.get_weights()[1], block_size=(50, 50), func=np.max)\n"," scaled_max_pooled_image = scale_convolution_map(max_pooled_image)\n"," \n"," plt.figure(figsize=(20, 4))\n"," plt.subplot(1, 6, 1)\n"," plt.imshow(img, \"gray\", vmin=0, vmax=1),plt.title('Original Image')\n"," plt.subplot(1, 6, 2)\n"," plt.imshow(scaled_conv_image, \"gray\", vmin=0, vmax=1),plt.title('Convolved Image')\n"," plt.subplot(1, 6, 3),plt.imshow(scaled_max_pooled_image, \"gray\", vmin=0, vmax=1)\n"," plt.title(f'Max Pooled = {max_pooled_image[0][0]:.2f}'),plt.xticks([]), plt.yticks([])\n"," plt.subplot(1, 6, 4),plt.axis('off')\n"," pred = model.predict(img.reshape(1, 50, 50, 1), verbose=0)\n"," if category==\"vertical\":\n"," text_info = f'''\n"," P(y=vertical|x): {pred[0][0]:.4f}\n"," P(y=horizontal|x): {pred[0][1]:.4f}\n"," \n"," \n"," loss component: {-np.log(pred[0][0]):.4f}\n"," '''\n"," else:\n"," text_info = f'''\n"," P(y=vertical|x): {pred[0][0]:.4f}\n"," P(y=horizontal|x): {pred[0][1]:.4f}\n"," \n"," \n"," loss component: {-np.log(pred[0][1]):.4f}\n"," '''\n"," \n"," plt.text(0, 0.5, text_info, ha='left', va='center')\n"," plt.subplot(1, 6, 5)\n"," x_values = np.linspace(0.001, 1.1, 500)\n"," plt.plot(x_values, -np.log(x_values), label='-log(P(y|x))')\n"," plt.ylim(-0.5, 6),plt.xlim(-0.1, 1.1),plt.xlabel('P(y|x)')\n"," if category==\"vertical\":\n"," plt.plot(pred[0][0], -np.log(pred[0][0]), 'bo', label='loss component')\n"," else:\n"," plt.plot(pred[0][1], -np.log(pred[0][1]), 'ro', label='loss component')\n"," \n"," plt.legend(),plt.grid(True), plt.tight_layout(),plt.show()\n","\n","def inspect_preds(idx,category='vertical'):\n"," plot_conv(X_val[idx,:,:,0],category)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["horizontal_slider = widgets.IntSlider(min=0, max=num_images_val//2-1, step=1, value=0, description='vertical')\n","widgets.interact(inspect_preds, idx=horizontal_slider,category=widgets.fixed('vertical'));"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["vertical_slider = widgets.IntSlider(min=num_images_val//2, max=num_images_val-1, step=1, value=0, description='horizontal')\n","widgets.interact(inspect_preds, idx=vertical_slider,category=widgets.fixed('horizontal'));"]},{"cell_type":"markdown","metadata":{},"source":["## Excercise 1 \n","\n","Given the probabilities, please calculate the loss component for one example of the validation set. "]},{"cell_type":"markdown","metadata":{"id":"U4gnnlAPp_Q2"},"source":["## Excercise 2 \n","\n","\n","- Repeat the compiling and training, beginning from the cell:\n","\n","```\n","model = Sequential()\n"," \n"," ...\n"," \n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n","```\n","\n","for several times and check if the CNN always learns the same kernel. \n","\n","## Additional Excercise\n","\n","- You can experiment with the code and check what happens if you use another kernel size, activation function (relu instead of linear ) or pooling method AveragePooling instead of MaxPooling. Try to make a prediction on the performance before doing the experiment.\n","\n","\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fRlCUwpVoy69"},"outputs":[],"source":[]}],"metadata":{"accelerator":"GPU","colab":{"provenance":[]},"kernelspec":{"display_name":"Python 3 (ipykernel)","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.9.18"}},"nbformat":4,"nbformat_minor":0} diff --git a/notebooks/05_cnn_edge_lover_sol.ipynb b/notebooks/05_cnn_edge_lover_sol.ipynb index f5f96ab..63562d0 100644 --- a/notebooks/05_cnn_edge_lover_sol.ipynb +++ b/notebooks/05_cnn_edge_lover_sol.ipynb @@ -1 +1 @@ -{"cells":[{"cell_type":"markdown","metadata":{"id":"4K8Ug6ICkRtQ"},"source":["# A simple CNN for the edge lover task\n","\n","In this notebook you train a very simple CNN with only 1 kernel to distinguish between images containing vertical and images containing horizontal stripes. To check what pattern is recognized by the learned kernel you will visualize the weights of the kernel as an image. You will see that the CNN learns a useful kernel (either a vertical or horiziontal bar). You can experiment with the code to check the influence of the kernel size, the activation function and the pooling method on the result. \n","\n","\n","**Dataset:** You work with an artficially generatet dataset of greyscale images (50x50 pixel) with 10 vertical or horizontal bars. We want to classify them into whether an art lover, who only loves vertical strips, will like the image (y = 0) or not like the image (y = 1). \n","\n","The idea of the notebook is that you try to understand the provided code by running it, checking the output and playing with it by slightly changing the code and rerunning it. \n","\n","**Content:**\n","* definig and generating the dataset X_train and X_val\n","* visualize samples of the generated images\n","* use keras to train a CNN with only one kernel (5x5 pixel)\n","* visualize the weights of the learned kernel and interpret if it is useful\n","* repeat the last two steps to check if the learned kernel is always the same\n","\n"]},{"cell_type":"markdown","metadata":{"id":"eiB8bJNYn8oP"},"source":["### Imports\n","\n","In the next cell, we load all the required libraries."]},{"cell_type":"code","execution_count":1,"metadata":{"executionInfo":{"elapsed":262,"status":"ok","timestamp":1708798970232,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"2PDLAWRQ7iUB"},"outputs":[{"name":"stderr","output_type":"stream","text":["2024-02-26 17:49:56.216084: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n","2024-02-26 17:49:56.236153: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n","2024-02-26 17:49:56.236169: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n","2024-02-26 17:49:56.236805: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n","2024-02-26 17:49:56.240452: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n","To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n","2024-02-26 17:49:56.612512: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n"]}],"source":["# load required libraries:\n","import numpy as np\n","import matplotlib.pyplot as plt\n","%matplotlib inline\n","plt.style.use('default')\n","\n","import tensorflow.keras\n","from tensorflow.keras.models import Sequential\n","from tensorflow.keras.layers import Dense, Convolution2D, MaxPooling2D, Flatten , Activation\n","from tensorflow.keras.utils import to_categorical"]},{"cell_type":"markdown","metadata":{"id":"Oq0FNqcBpj23"},"source":["### Defining functions to generate images\n","\n","Here we define the function to genere images with vertical and horizontal bars, the arguments of the functions are the size of the image and the number of bars you want to have. The bars are at random positions in the image with a random length. The image is black and white, meaning we have only two values for the pixels, 0 for black and 255 for white."]},{"cell_type":"code","execution_count":2,"metadata":{"executionInfo":{"elapsed":2,"status":"ok","timestamp":1708798970491,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"nqVBlR8yAO9c"},"outputs":[],"source":["#define function to generate image with shape (size, size, 1) with stripes\n","def generate_image_with_bars(size, bar_nr, vertical = True):\n"," img = np.zeros((size,size,1), dtype=\"uint8\")\n"," for i in range(0,bar_nr):\n"," x,y = np.random.randint(0,size,2)\n"," l = int(np.random.randint(y,size,1)[0])\n"," if (vertical):\n"," img[y:l,x,0]=255\n"," else:\n"," img[x,y:l,0]=255\n"," return img"]},{"cell_type":"markdown","metadata":{"id":"bUmdGzQLdqzB"},"source":["Let's have a look at the generated images. We choose a size of 50x50 pixels and set the number of bars in the image to 10."]},{"cell_type":"code","execution_count":3,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":345},"executionInfo":{"elapsed":301,"status":"ok","timestamp":1708798970791,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"EccLz0FlXGuU","outputId":"5cccc101-ab1f-4c8f-8125-1225918ed827"},"outputs":[{"data":{"image/png":"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NO1j07VaKBRmvO+J9ic/z8nsU814qcfvQblcjvb29tP+c0+HE81SgFqZyRz12egAAGRT9dXoADM13dnKBnsxBYDMnNkEACAbYRMAgGyETQAAshE2AQDIRtgEACCbproa3f0YAWB2qsWdLOSI+nBmEwCAbIRNAACyETYBAMhG2AQAIBthEwCAbJrqanQAYHZyJXnzcmYTAIBshE0AALIRNgEAyEbYBAAgGxcIAaeVN/kDzC7ObAIAkI2wCQBANsImAADZCJsAAGQjbAIAkI2wCQBANsImAADZCJsAAGQjbAIAkI2wCQBANsImAADZ+Gz0BpJSmna7z5IGAJqVM5sAAGQjbAIAkI2wCQBANsImAADZCJsAAGQjbAIAkI2wCQBANsImAADZCJsAAGQjbAIAkI2PqwSABnW8jzFuZD5imW9yZhMAgGyETQAAshE2AQDI5pTC5tatW6NQKMSmTZsq2w4fPhy9vb2xZMmSmD9/fmzYsCFGRkZOtU+AlmSOAq3upMPmnj174plnnolVq1ZN2X7PPffEyy+/HNu3b4/+/v44cOBA3HTTTafcKECrMUeBWSGdhPHx8XThhRemnTt3pquuuirdfffdKaWURkdH07x589L27dsr++7bty9FRBoYGJjRscvlcoqIU67jqcWxc1Uz9mx9qpmrXC7PaC7lkHOOplS7WaqUUieqmczRkzqz2dvbG9dee2309PRM2T44OBhHjx6dsn3lypXR1dUVAwMDJ/OjAFqSOQrMFlXfZ3Pbtm3x7rvvxp49e7712PDwcLS1tcXChQunbO/o6Ijh4eFpjzcxMRETExOVr8fGxqptCaCp1HqORpilQOOq6szm0NBQ3H333fHb3/42zjzzzJo00NfXF6VSqVLLly+vyXEBGlGOORphlgINrJr3GO3YsSNFRDrjjDMqFRGpUCikM844I/3pT39KEZH++c9/Tvm+rq6u9PDDD097zMOHD6dyuVypoaGhmryH4Hhqcexc1Yw9W59q5qrHezZzzNGU8s1SpZQ6Uc1kjlb1Mvq6devigw8+mLLtlltuiZUrV8YvfvGLWL58ecybNy927doVGzZsiIiI/fv3x2effRbd3d3THrNYLEaxWKymDYCmlWOORpilQOOqKmwuWLAgLrnkkinbzjnnnFiyZEll+6233hqbN2+OxYsXR3t7e9x1113R3d0dV1xx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b8oa9+/fH5999lnTrHE6k5OTMTEx0RLrW7duXXzwwQexd+/eSl166aXx4x//uPLfzb7G2cYcNUebgTnaXGs8afW+Qul4tm3blorFYvrNb36TPv744/Tzn/88LVy4MA0PD9e7taqNj4+n9957L7333nspItLDDz+c3nvvvfT3v/89pZTS1q1b08KFC9NLL72U3n///XT99denFStWpC+//LLOnc/M7bffnkqlUnrzzTfT559/Xql///vflX1uu+221NXVlV5//fX0zjvvpO7u7tTd3V3Hrqtz7733pv7+/vTpp5+m999/P917772pUCikP/7xjyml5l/fdL5+FWVKrbnGVmeOmqONxBxtzTXORMOGzZRSevzxx1NXV1dqa2tLa9euTW+//Xa9Wzopb7zxRoqIb9XGjRtTSl/dtuO+++5LHR0dqVgspnXr1qX9+/fXt+kqTLe2iEjPPfdcZZ8vv/wy3XHHHWnRokXp7LPPTjfeeGP6/PPP69d0lX7605+m7373u6mtrS195zvfSevWrasMyJSaf33T+eaQbMU1zgbmaHMwR5t/fdMxR79SSCml03ceFQCA2aQh37MJAEBrEDYBAMhG2AQAIBthEwCAbIRNAACyETYBAMhG2AQAIBthEwCAbIRNAACyETYBAMhG2AQAIBthEwCAbP4P8YUB5U8gr6gAAAAASUVORK5CYII=","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# have a look on two generated images\n","plt.figure(figsize=(8,8))\n","plt.subplot(1,2,1)\n","img=generate_image_with_bars(50,10, vertical=True)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.subplot(1,2,2)\n","img=generate_image_with_bars(50,10, vertical=False)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"Y8gSwmyaevTk"},"source":["### Make a train and validation dataset of images with vertical and horizontal images\n","Now, let's make a train dataset *X_train* with 1000 images (500 images with vertical and 500 images with horizontal bars). We normalize the images values to be between 0 and 1 by dividing all values with 255. We create a secont dataste *X_val* with exactly the same properties to validate the training of the CNN."]},{"cell_type":"code","execution_count":4,"metadata":{"executionInfo":{"elapsed":573,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"63omuptEILKu"},"outputs":[],"source":["pixel=50 # define height and width of images\n","num_images_train = 1000 #Number of training examples (divisible by 2)\n","num_images_val = 1000 #Number of training examples (divisible by 2)\n","\n","# generate training data with vertical edges\n","X_train =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_train[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_train[i]=generate_image_with_bars(pixel,10, vertical=False)\n","\n","# generate validation data with vertical edges\n","X_val =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_val[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_val[i]=generate_image_with_bars(pixel,10, vertical=False)"]},{"cell_type":"code","execution_count":5,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":16,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"kvAEj2e4xIoK","outputId":"864bd112-e430-4e1c-e6a2-2bfd4ce58ee5"},"outputs":[{"name":"stdout","output_type":"stream","text":["(1000, 50, 50, 1)\n","(1000, 50, 50, 1)\n"]}],"source":["# normalize the data to be between 0 and 1\n","X_train=X_train/255\n","X_val=X_val/255\n","\n","print(X_train.shape)\n","print(X_val.shape)"]},{"cell_type":"markdown","metadata":{"id":"ajNnUoYyi7IQ"},"source":["Here we make the labels for the art lover, 0 means he likes the image (vertical bars) and 1 means that he doesn't like it (horizontal stripes). We one hot encode the labels because we want to use two outputs in our network."]},{"cell_type":"code","execution_count":6,"metadata":{"executionInfo":{"elapsed":15,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"41-L5hM8S_ZP"},"outputs":[],"source":["# create class labels\n","y = np.array([[0],[1]])\n","Y_train = np.repeat(y, num_images_train //2)\n","Y_val = np.repeat(y, num_images_train //2)\n","\n","# one-hot-encoding\n","Y_train = to_categorical(Y_train,2)\n","Y_val = to_categorical(Y_val,2)"]},{"cell_type":"markdown","metadata":{"id":"uZpr0h-VvatF"},"source":["## Defining the CNN\n","\n","Here we define the CNN:\n","\n","- we use only one kernel with a size of 5x5 pixels \n","- then we apply a linar activation function \n","- the maxpooling layer takes the maximum of the whole activation map to predict the probability (output layer with softmax) if the art lover will like the image\n","\n","As loss we use the categorical_crossentropy and we train the model with a batchsize of 64 images per update.\n"]},{"cell_type":"code","execution_count":7,"metadata":{"executionInfo":{"elapsed":14,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"1Dfg1h2rUifd"},"outputs":[{"name":"stderr","output_type":"stream","text":["2024-02-26 17:49:57.848931: I external/local_xla/xla/stream_executor/cuda/cuda_executor.cc:901] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n","2024-02-26 17:49:57.871843: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2256] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.\n","Skipping registering GPU devices...\n"]}],"source":["model = Sequential()\n","\n","model.add(Convolution2D(1,(5,5),padding='same',input_shape=(pixel,pixel,1)))\n","model.add(Activation('linear'))\n","\n","# take the max over all values in the activation map\n","model.add(MaxPooling2D(pool_size=(pixel,pixel)))\n","model.add(Flatten())\n","model.add(Dense(2))\n","model.add(Activation('softmax'))\n","\n","# compile model and initialize weights\n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n"]},{"cell_type":"code","execution_count":8,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":15,"status":"ok","timestamp":1708798971362,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"r6eqV0TRU0_n","outputId":"2c6833cb-ca10-422c-bbda-56102a866011"},"outputs":[{"name":"stdout","output_type":"stream","text":["Model: \"sequential\"\n","_________________________________________________________________\n"," Layer (type) Output Shape Param # \n","=================================================================\n"," conv2d (Conv2D) (None, 50, 50, 1) 26 \n"," \n"," activation (Activation) (None, 50, 50, 1) 0 \n"," \n"," max_pooling2d (MaxPooling2 (None, 1, 1, 1) 0 \n"," D) \n"," \n"," flatten (Flatten) (None, 1) 0 \n"," \n"," dense (Dense) (None, 2) 4 \n"," \n"," activation_1 (Activation) (None, 2) 0 \n"," \n","=================================================================\n","Total params: 30 (120.00 Byte)\n","Trainable params: 30 (120.00 Byte)\n","Non-trainable params: 0 (0.00 Byte)\n","_________________________________________________________________\n"]}],"source":["# let's summarize the CNN architectures along with the number of model weights\n","model.summary()\n"]},{"cell_type":"code","execution_count":9,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":38560,"status":"ok","timestamp":1708799009916,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"Sc-BYd8kVCx0","outputId":"73316fb0-5762-4fae-a012-4bfc64797edc","scrolled":false},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/150\n"]},{"name":"stdout","output_type":"stream","text":["16/16 [==============================] - 0s 7ms/step - loss: 0.6750 - accuracy: 0.5000 - val_loss: 0.6533 - val_accuracy: 0.5000\n","Epoch 2/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6355 - accuracy: 0.5000 - val_loss: 0.6204 - val_accuracy: 0.5000\n","Epoch 3/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6066 - accuracy: 0.5000 - val_loss: 0.5957 - val_accuracy: 0.5000\n","Epoch 4/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.5836 - accuracy: 0.5000 - val_loss: 0.5740 - val_accuracy: 0.5000\n","Epoch 5/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5625 - accuracy: 0.5000 - val_loss: 0.5532 - val_accuracy: 0.5000\n","Epoch 6/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5426 - accuracy: 0.5260 - val_loss: 0.5337 - val_accuracy: 0.5400\n","Epoch 7/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5237 - accuracy: 0.5540 - val_loss: 0.5150 - val_accuracy: 0.5870\n","Epoch 8/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5056 - accuracy: 0.5860 - val_loss: 0.4966 - val_accuracy: 0.5960\n","Epoch 9/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4862 - accuracy: 0.6120 - val_loss: 0.4759 - val_accuracy: 0.6330\n","Epoch 10/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4660 - accuracy: 0.7650 - val_loss: 0.4557 - val_accuracy: 0.8990\n","Epoch 11/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4465 - accuracy: 0.9330 - val_loss: 0.4365 - val_accuracy: 0.9220\n","Epoch 12/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4280 - accuracy: 0.9560 - val_loss: 0.4175 - val_accuracy: 0.9700\n","Epoch 13/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4099 - accuracy: 0.9680 - val_loss: 0.3994 - val_accuracy: 0.9820\n","Epoch 14/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3925 - accuracy: 0.9760 - val_loss: 0.3820 - val_accuracy: 0.9870\n","Epoch 15/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3756 - accuracy: 0.9780 - val_loss: 0.3654 - val_accuracy: 0.9870\n","Epoch 16/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.3594 - accuracy: 0.9790 - val_loss: 0.3494 - val_accuracy: 0.9910\n","Epoch 17/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3440 - accuracy: 0.9930 - val_loss: 0.3340 - val_accuracy: 0.9930\n","Epoch 18/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3289 - accuracy: 0.9940 - val_loss: 0.3194 - val_accuracy: 0.9930\n","Epoch 19/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3144 - accuracy: 0.9960 - val_loss: 0.3052 - val_accuracy: 0.9930\n","Epoch 20/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3006 - accuracy: 0.9960 - val_loss: 0.2914 - val_accuracy: 0.9950\n","Epoch 21/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2873 - accuracy: 0.9960 - val_loss: 0.2783 - val_accuracy: 0.9960\n","Epoch 22/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2743 - accuracy: 0.9960 - val_loss: 0.2656 - val_accuracy: 0.9970\n","Epoch 23/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2615 - accuracy: 0.9960 - val_loss: 0.2526 - val_accuracy: 0.9970\n","Epoch 24/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2485 - accuracy: 0.9960 - val_loss: 0.2402 - val_accuracy: 0.9970\n","Epoch 25/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2363 - accuracy: 0.9960 - val_loss: 0.2284 - val_accuracy: 0.9970\n","Epoch 26/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2247 - accuracy: 0.9960 - val_loss: 0.2171 - val_accuracy: 0.9970\n","Epoch 27/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2137 - accuracy: 0.9980 - val_loss: 0.2065 - val_accuracy: 0.9970\n","Epoch 28/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2034 - accuracy: 0.9990 - val_loss: 0.1966 - val_accuracy: 0.9970\n","Epoch 29/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1936 - accuracy: 0.9990 - val_loss: 0.1872 - val_accuracy: 0.9970\n","Epoch 30/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1844 - accuracy: 0.9990 - val_loss: 0.1784 - val_accuracy: 1.0000\n","Epoch 31/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.1757 - accuracy: 1.0000 - val_loss: 0.1700 - val_accuracy: 1.0000\n","Epoch 32/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1675 - accuracy: 1.0000 - val_loss: 0.1621 - val_accuracy: 1.0000\n","Epoch 33/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1597 - accuracy: 1.0000 - val_loss: 0.1543 - val_accuracy: 1.0000\n","Epoch 34/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.1519 - accuracy: 1.0000 - val_loss: 0.1468 - val_accuracy: 1.0000\n","Epoch 35/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1446 - accuracy: 1.0000 - val_loss: 0.1399 - val_accuracy: 1.0000\n","Epoch 36/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1379 - accuracy: 1.0000 - val_loss: 0.1334 - val_accuracy: 1.0000\n","Epoch 37/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1316 - accuracy: 1.0000 - val_loss: 0.1273 - val_accuracy: 1.0000\n","Epoch 38/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1256 - accuracy: 1.0000 - val_loss: 0.1215 - val_accuracy: 1.0000\n","Epoch 39/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1200 - accuracy: 1.0000 - val_loss: 0.1161 - val_accuracy: 1.0000\n","Epoch 40/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1146 - accuracy: 1.0000 - val_loss: 0.1110 - val_accuracy: 1.0000\n","Epoch 41/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1096 - accuracy: 1.0000 - val_loss: 0.1062 - val_accuracy: 1.0000\n","Epoch 42/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1050 - accuracy: 1.0000 - val_loss: 0.1017 - val_accuracy: 1.0000\n","Epoch 43/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1005 - accuracy: 1.0000 - val_loss: 0.0974 - val_accuracy: 1.0000\n","Epoch 44/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0963 - accuracy: 1.0000 - val_loss: 0.0934 - val_accuracy: 1.0000\n","Epoch 45/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0923 - accuracy: 1.0000 - val_loss: 0.0895 - val_accuracy: 1.0000\n","Epoch 46/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0886 - accuracy: 1.0000 - val_loss: 0.0859 - val_accuracy: 1.0000\n","Epoch 47/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0850 - accuracy: 1.0000 - val_loss: 0.0825 - val_accuracy: 1.0000\n","Epoch 48/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0816 - accuracy: 1.0000 - val_loss: 0.0793 - val_accuracy: 1.0000\n","Epoch 49/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0784 - accuracy: 1.0000 - val_loss: 0.0762 - val_accuracy: 1.0000\n","Epoch 50/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0754 - accuracy: 1.0000 - val_loss: 0.0733 - val_accuracy: 1.0000\n","Epoch 51/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0725 - accuracy: 1.0000 - val_loss: 0.0706 - val_accuracy: 1.0000\n","Epoch 52/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0698 - accuracy: 1.0000 - val_loss: 0.0679 - val_accuracy: 1.0000\n","Epoch 53/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0672 - accuracy: 1.0000 - val_loss: 0.0654 - val_accuracy: 1.0000\n","Epoch 54/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0647 - accuracy: 1.0000 - val_loss: 0.0631 - val_accuracy: 1.0000\n","Epoch 55/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0624 - accuracy: 1.0000 - val_loss: 0.0608 - val_accuracy: 1.0000\n","Epoch 56/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0601 - accuracy: 1.0000 - val_loss: 0.0587 - val_accuracy: 1.0000\n","Epoch 57/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0580 - accuracy: 1.0000 - val_loss: 0.0566 - val_accuracy: 1.0000\n","Epoch 58/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0560 - accuracy: 1.0000 - val_loss: 0.0547 - val_accuracy: 1.0000\n","Epoch 59/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0540 - accuracy: 1.0000 - val_loss: 0.0528 - val_accuracy: 1.0000\n","Epoch 60/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0522 - accuracy: 1.0000 - val_loss: 0.0510 - val_accuracy: 1.0000\n","Epoch 61/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0505 - accuracy: 1.0000 - val_loss: 0.0493 - val_accuracy: 1.0000\n","Epoch 62/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0488 - accuracy: 1.0000 - val_loss: 0.0477 - val_accuracy: 1.0000\n","Epoch 63/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0472 - accuracy: 1.0000 - val_loss: 0.0462 - val_accuracy: 1.0000\n","Epoch 64/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0457 - accuracy: 1.0000 - val_loss: 0.0447 - val_accuracy: 1.0000\n","Epoch 65/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0442 - accuracy: 1.0000 - val_loss: 0.0433 - val_accuracy: 1.0000\n","Epoch 66/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0428 - accuracy: 1.0000 - val_loss: 0.0420 - val_accuracy: 1.0000\n","Epoch 67/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0415 - accuracy: 1.0000 - val_loss: 0.0407 - val_accuracy: 1.0000\n","Epoch 68/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0402 - accuracy: 1.0000 - val_loss: 0.0394 - val_accuracy: 1.0000\n","Epoch 69/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0389 - accuracy: 1.0000 - val_loss: 0.0382 - val_accuracy: 1.0000\n","Epoch 70/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0378 - accuracy: 1.0000 - val_loss: 0.0371 - val_accuracy: 1.0000\n","Epoch 71/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0366 - accuracy: 1.0000 - val_loss: 0.0360 - val_accuracy: 1.0000\n","Epoch 72/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0355 - accuracy: 1.0000 - val_loss: 0.0350 - val_accuracy: 1.0000\n","Epoch 73/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0345 - accuracy: 1.0000 - val_loss: 0.0340 - val_accuracy: 1.0000\n","Epoch 74/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0335 - accuracy: 1.0000 - val_loss: 0.0330 - val_accuracy: 1.0000\n","Epoch 75/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0325 - accuracy: 1.0000 - val_loss: 0.0321 - val_accuracy: 1.0000\n","Epoch 76/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0316 - accuracy: 1.0000 - val_loss: 0.0312 - val_accuracy: 1.0000\n","Epoch 77/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0307 - accuracy: 1.0000 - val_loss: 0.0303 - val_accuracy: 1.0000\n","Epoch 78/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0299 - accuracy: 1.0000 - val_loss: 0.0295 - val_accuracy: 1.0000\n","Epoch 79/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0291 - accuracy: 1.0000 - val_loss: 0.0287 - val_accuracy: 1.0000\n","Epoch 80/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0283 - accuracy: 1.0000 - val_loss: 0.0279 - val_accuracy: 1.0000\n","Epoch 81/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0275 - accuracy: 1.0000 - val_loss: 0.0272 - val_accuracy: 1.0000\n","Epoch 82/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0268 - accuracy: 1.0000 - val_loss: 0.0265 - val_accuracy: 1.0000\n","Epoch 83/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0261 - accuracy: 1.0000 - val_loss: 0.0258 - val_accuracy: 1.0000\n","Epoch 84/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0254 - accuracy: 1.0000 - val_loss: 0.0251 - val_accuracy: 1.0000\n","Epoch 85/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0247 - accuracy: 1.0000 - val_loss: 0.0245 - val_accuracy: 1.0000\n","Epoch 86/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0241 - accuracy: 1.0000 - val_loss: 0.0239 - val_accuracy: 1.0000\n","Epoch 87/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0235 - accuracy: 1.0000 - val_loss: 0.0233 - val_accuracy: 1.0000\n","Epoch 88/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0229 - accuracy: 1.0000 - val_loss: 0.0227 - val_accuracy: 1.0000\n","Epoch 89/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0223 - accuracy: 1.0000 - val_loss: 0.0221 - val_accuracy: 1.0000\n","Epoch 90/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0217 - accuracy: 1.0000 - val_loss: 0.0216 - val_accuracy: 1.0000\n","Epoch 91/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0212 - accuracy: 1.0000 - val_loss: 0.0211 - val_accuracy: 1.0000\n","Epoch 92/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0207 - accuracy: 1.0000 - val_loss: 0.0206 - val_accuracy: 1.0000\n","Epoch 93/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0202 - accuracy: 1.0000 - val_loss: 0.0201 - val_accuracy: 1.0000\n","Epoch 94/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0197 - accuracy: 1.0000 - val_loss: 0.0196 - val_accuracy: 1.0000\n","Epoch 95/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0192 - accuracy: 1.0000 - val_loss: 0.0192 - val_accuracy: 1.0000\n","Epoch 96/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.0188 - accuracy: 1.0000 - val_loss: 0.0187 - val_accuracy: 1.0000\n","Epoch 97/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0183 - accuracy: 1.0000 - val_loss: 0.0183 - val_accuracy: 1.0000\n","Epoch 98/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0179 - accuracy: 1.0000 - val_loss: 0.0179 - val_accuracy: 1.0000\n","Epoch 99/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0175 - accuracy: 1.0000 - val_loss: 0.0175 - val_accuracy: 1.0000\n","Epoch 100/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0171 - accuracy: 1.0000 - val_loss: 0.0171 - val_accuracy: 1.0000\n","Epoch 101/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0167 - accuracy: 1.0000 - val_loss: 0.0167 - val_accuracy: 1.0000\n","Epoch 102/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0163 - accuracy: 1.0000 - val_loss: 0.0164 - val_accuracy: 1.0000\n","Epoch 103/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0160 - accuracy: 1.0000 - val_loss: 0.0160 - val_accuracy: 1.0000\n","Epoch 104/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0156 - accuracy: 1.0000 - val_loss: 0.0156 - val_accuracy: 1.0000\n","Epoch 105/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0153 - accuracy: 1.0000 - val_loss: 0.0153 - val_accuracy: 1.0000\n","Epoch 106/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0150 - accuracy: 1.0000 - val_loss: 0.0150 - val_accuracy: 1.0000\n","Epoch 107/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0146 - accuracy: 1.0000 - val_loss: 0.0147 - val_accuracy: 1.0000\n","Epoch 108/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0143 - accuracy: 1.0000 - val_loss: 0.0144 - val_accuracy: 1.0000\n","Epoch 109/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.0140 - accuracy: 1.0000 - val_loss: 0.0141 - val_accuracy: 1.0000\n","Epoch 110/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0137 - accuracy: 1.0000 - val_loss: 0.0138 - val_accuracy: 1.0000\n","Epoch 111/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0134 - accuracy: 1.0000 - val_loss: 0.0135 - val_accuracy: 1.0000\n","Epoch 112/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0132 - accuracy: 1.0000 - val_loss: 0.0132 - val_accuracy: 1.0000\n","Epoch 113/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0129 - accuracy: 1.0000 - val_loss: 0.0130 - val_accuracy: 1.0000\n","Epoch 114/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0126 - accuracy: 1.0000 - val_loss: 0.0127 - val_accuracy: 1.0000\n","Epoch 115/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0124 - accuracy: 1.0000 - val_loss: 0.0124 - val_accuracy: 1.0000\n","Epoch 116/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0121 - accuracy: 1.0000 - val_loss: 0.0122 - val_accuracy: 1.0000\n","Epoch 117/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0119 - accuracy: 1.0000 - val_loss: 0.0120 - val_accuracy: 1.0000\n","Epoch 118/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0116 - accuracy: 1.0000 - val_loss: 0.0117 - val_accuracy: 1.0000\n","Epoch 119/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0114 - accuracy: 1.0000 - val_loss: 0.0115 - val_accuracy: 1.0000\n","Epoch 120/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0112 - accuracy: 1.0000 - val_loss: 0.0113 - val_accuracy: 1.0000\n","Epoch 121/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0110 - accuracy: 1.0000 - val_loss: 0.0111 - val_accuracy: 1.0000\n","Epoch 122/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0108 - accuracy: 1.0000 - val_loss: 0.0109 - val_accuracy: 1.0000\n","Epoch 123/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0105 - accuracy: 1.0000 - val_loss: 0.0107 - val_accuracy: 1.0000\n","Epoch 124/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0103 - accuracy: 1.0000 - val_loss: 0.0105 - val_accuracy: 1.0000\n","Epoch 125/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0101 - accuracy: 1.0000 - val_loss: 0.0103 - val_accuracy: 1.0000\n","Epoch 126/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0100 - accuracy: 1.0000 - val_loss: 0.0101 - val_accuracy: 1.0000\n","Epoch 127/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0098 - accuracy: 1.0000 - val_loss: 0.0099 - val_accuracy: 1.0000\n","Epoch 128/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0096 - accuracy: 1.0000 - val_loss: 0.0097 - val_accuracy: 1.0000\n","Epoch 129/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0094 - accuracy: 1.0000 - val_loss: 0.0096 - val_accuracy: 1.0000\n","Epoch 130/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0092 - accuracy: 1.0000 - val_loss: 0.0094 - val_accuracy: 1.0000\n","Epoch 131/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0091 - accuracy: 1.0000 - val_loss: 0.0092 - val_accuracy: 1.0000\n","Epoch 132/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0089 - accuracy: 1.0000 - val_loss: 0.0091 - val_accuracy: 1.0000\n","Epoch 133/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0088 - accuracy: 1.0000 - val_loss: 0.0089 - val_accuracy: 1.0000\n","Epoch 134/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0086 - accuracy: 1.0000 - val_loss: 0.0088 - val_accuracy: 1.0000\n","Epoch 135/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0084 - accuracy: 1.0000 - val_loss: 0.0086 - val_accuracy: 1.0000\n","Epoch 136/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0083 - accuracy: 1.0000 - val_loss: 0.0085 - val_accuracy: 1.0000\n","Epoch 137/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0082 - accuracy: 1.0000 - val_loss: 0.0083 - val_accuracy: 1.0000\n","Epoch 138/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0080 - accuracy: 1.0000 - val_loss: 0.0082 - val_accuracy: 1.0000\n","Epoch 139/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0079 - accuracy: 1.0000 - val_loss: 0.0080 - val_accuracy: 1.0000\n","Epoch 140/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0077 - accuracy: 1.0000 - val_loss: 0.0079 - val_accuracy: 1.0000\n","Epoch 141/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0076 - accuracy: 1.0000 - val_loss: 0.0078 - val_accuracy: 1.0000\n","Epoch 142/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0075 - accuracy: 1.0000 - val_loss: 0.0077 - val_accuracy: 1.0000\n","Epoch 143/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0074 - accuracy: 1.0000 - val_loss: 0.0075 - val_accuracy: 1.0000\n","Epoch 144/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0072 - accuracy: 1.0000 - val_loss: 0.0074 - val_accuracy: 1.0000\n","Epoch 145/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0071 - accuracy: 1.0000 - val_loss: 0.0073 - val_accuracy: 1.0000\n","Epoch 146/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0070 - accuracy: 1.0000 - val_loss: 0.0072 - val_accuracy: 1.0000\n","Epoch 147/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0069 - accuracy: 1.0000 - val_loss: 0.0071 - val_accuracy: 1.0000\n","Epoch 148/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0068 - accuracy: 1.0000 - val_loss: 0.0070 - val_accuracy: 1.0000\n","Epoch 149/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0067 - accuracy: 1.0000 - val_loss: 0.0068 - val_accuracy: 1.0000\n","Epoch 150/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0066 - accuracy: 1.0000 - val_loss: 0.0067 - val_accuracy: 1.0000\n"]}],"source":["# train the model\n","history=model.fit(X_train, Y_train,\n"," validation_data=(X_val,Y_val),\n"," batch_size=64,\n"," epochs=150,\n"," verbose=1)"]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":428},"executionInfo":{"elapsed":468,"status":"ok","timestamp":1708799010370,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"fK_AAAoiQtlc","outputId":"3d6398a5-ac98-4759-cbaa-d7243e095e1b"},"outputs":[{"data":{"text/plain":[""]},"execution_count":10,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA+kAAAGJCAYAAAD2VnIMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACLJklEQVR4nOzdd3wUdf7H8dfuZnfTSCMhoQQCobfQEbAbjIdiQw9sFE88ERTNeaecCoo/iQU5PERRD+yenIpYQBRRVJCiIEoNgnRISID0vju/PxJWIwmQEDKb5P18POZhdnZm9j27kclnv2UshmEYiIiIiIiIiIjprGYHEBEREREREZFSKtJFREREREREvISKdBEREREREREvoSJdRERERERExEuoSBcRERERERHxEirSRURERERERLyEinQRERERERERL6EiXURERERERMRLqEgXERERERER8RIq0kXqsN27d2OxWHj11VervO/y5cuxWCwsX768xnOJiIiI96qNvx9effVVLBYLu3fvrlZGkYZMRbqIiIiIiIiIl1CRLiIiIiIiIuIlVKSLSL2Sm5trdgQRERERkWpTkS5yBh555BEsFgvbt2/n5ptvJjg4mIiICB5++GEMw2Dfvn1cddVVBAUFERUVxTPPPHPCMQ4fPsxf/vIXIiMj8fX1JS4ujtdee+2E7TIyMhg9ejTBwcGEhIQwatQoMjIyKsy1bds2rrvuOsLCwvD19aVPnz589NFH1TrHPXv2cOedd9KhQwf8/Pxo3Lgx119/fYVjzDIyMrj33nuJiYnB6XTSokULRo4cSXp6umebgoICHnnkEdq3b4+vry9Nmzbl2muvZefOnUDlY90qGj83evRoAgMD2blzJ0OGDKFRo0bcdNNNAHz77bdcf/31tGzZEqfTSXR0NPfeey/5+fkVvl9//vOfiYiIwM/Pjw4dOvDggw8C8NVXX2GxWPjggw9O2O/tt9/GYrGwatWqqr6tIiLSgDWEvx8q8/zzz9OlSxecTifNmjVj/PjxJ+T55ZdfGDZsGFFRUfj6+tKiRQtGjBhBZmamZ5ulS5dy7rnnEhISQmBgIB06dOCf//xnjWYVMYuP2QFE6oPhw4fTqVMnnnjiCRYtWsT//d//ERYWxosvvsjFF1/Mk08+yVtvvcV9991H3759Of/88wHIz8/nwgsvZMeOHUyYMIHWrVvz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NGnChRdeyIsvvsihQ4dOeL20tLQqZ7TZbCd8ez9r1qwTWraHDRvGTz/9VOGtyo7vP2zYMNLT0ytsgT6+TatWrbDZbHzzzTflnn/++eerlPn3xzz+87PPPltuu4iICM4//3zmzZvH3r17K8xzXHh4OH/605948803eeutt7jssstO6I4oIiJSG+rC3w9/FB8fj8Ph4N///ne5a+zcuXPJzMzk8ssvByArK4uSkpJy+3br1g2r1UphYSFQOob+j3r06AHg2UakLlNLuoiJbr/9dl588UVGjx7NunXriImJ4b333mPlypXMnDmTRo0aATB06FAGDRrEAw88wO7du+ncuTMLFiwoNz7ruNmzZ3PuuefSrVs3xo4dS5s2bUhNTWXVqlXs37+fn376qUoZr7jiCt544w2Cg4Pp3Lkzq1at4osvvqBx48bltvv73//Oe++9x/XXX8+tt95K7969OXr0KB999BFz5swhLi6OkSNH8vrrr5OYmMjatWs577zzyM3N5YsvvuDOO+/kqquuIjg4mOuvv55Zs2ZhsViIjY3lk08+qdJYuI4dOxIbG8t9993HgQMHCAoK4v333y83nu+4f//735x77rn06tWL22+/ndatW7N7924WLVrEhg0bym07cuRIrrvuOgAee+yxKr2PIiIiNaUu/P3wRxEREUyaNIlHH32Uyy67jCuvvJLk5GSef/55+vbt65mI9csvv2TChAlcf/31tG/fnpKSEt544w1sNhvDhg0DYOrUqXzzzTdcfvnltGrVisOHD/P888/TokULzj333DPKKeIVzJhSXqS+OH4LlT/eAmTUqFFGQEDACdtfcMEFRpcuXcqtS01NNcaMGWOEh4cbDofD6NatW7lbohx35MgR45ZbbjGCgoKM4OBg45ZbbvHcpuSP2+/cudMYOXKkERUVZdjtdqN58+bGFVdcYbz33nuebU73FirHjh3z5AsMDDQSEhKMbdu2Ga1atSp3O5jjGSdMmGA0b97ccDgcRosWLYxRo0YZ6enpnm3y8vKMBx980GjdurVht9uNqKgo47rrrjN27tzp2SYtLc0YNmyY4e/vb4SGhhp//etfjU2bNlV4C7aK3mfDMIwtW7YY8fHxRmBgoBEeHm6MHTvW+Omnnyp8vzZt2mRcc801RkhIiOHr62t06NDBePjhh084ZmFhoREaGmoEBwcb+fn5J33fREREKtMQ/n744y3YjnvuueeMjh07Gna73YiMjDTGjRtnHDt2zPP8r7/+atx6661GbGys4evra4SFhRkXXXSR8cUXX3i2WbZsmXHVVVcZzZo1MxwOh9GsWTPjhhtuMLZv337STCJ1hcUwzuIsFCIi9UhJSQnNmjVj6NChzJ071+w4IiIiIlIPaUy6iMhpWrhwIWlpaeUmoxMRERERqUlqSRcROYU1a9bw888/89hjjxEeHs769evNjiQiIiIi9ZRa0kVETuGFF15g3LhxNGnShNdff93sOCIiIiJSj6klXURERERERMRLqCVdRERERERExEuoSBcRERERERHxEj5mB6htbrebgwcP0qhRIywWi9lxREREMAyD7OxsmjVrhtVaP78/nz17Nk8//TQpKSnExcUxa9Ys+vXrV+G2F154IV9//fUJ64cMGcKiRYtO6/V0vRcREW9SlWt9gyvSDx48SHR0tNkxRERETrBv3z5atGhhdowaN3/+fBITE5kzZw79+/dn5syZJCQkkJycTJMmTU7YfsGCBRQVFXkeHzlyhLi4OK6//vrTfk1d70VExBudzrW+wU0cl5mZSUhICPv27SMoKMjsOCIiImRlZREdHU1GRgbBwcFmx6lx/fv3p2/fvjz33HNAaSt3dHQ0d911Fw888MAp9585cyaTJ0/m0KFDBAQEnNZr6novIiLepCrX+gbXkn68y1tQUJAu2iIi4lXqY7fsoqIi1q1bx6RJkzzrrFYr8fHxrFq16rSOMXfuXEaMGHHSAr2wsJDCwkLP4+zsbEDXexER8S6nc62vnwPfRERExCukp6fjcrmIjIwstz4yMpKUlJRT7r927Vo2bdrEbbfddtLtkpKSCA4O9izq6i4iInWVinQRERHxWnPnzqVbt26VTjJ33KRJk8jMzPQs+/btq6WEIiIiNavBdXcXERGR2hMeHo7NZiM1NbXc+tTUVKKiok66b25uLu+88w5Tp0495es4nU6cTucZZRUREfEGKtJFRETkrHE4HPTu3Ztly5Zx9dVXA6UTxy1btowJEyacdN93332XwsJCbr755lpIKiLSsBmGQUlJCS6Xy+wodZbdbsdms53xcVSki4iIyFmVmJjIqFGj6NOnD/369WPmzJnk5uYyZswYAEaOHEnz5s1JSkoqt9/cuXO5+uqrady4sRmxRUQajKKiIg4d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rrqKW2+9lZ07d3LVVVcRGRlJYGAgffv25YsvvjjpMf/Y3X3t2rX07NkTX19f+vTpw48//lilt7K61N29DnFnpWIDinzDuaijbrsmIiJSq2LOhW+eYoB1C9mFxfyankvbJoFmpxIRqVnFeTCtmTmv/c+D4Ag4rU2vv/567rrrLr766isuueQSAI4ePcqSJUtYvHgxOTk5DBkyhMcffxyn08nrr7/O0KFDSU5OpmXLlqc8fk5ODldccQWDBw/mzTffZNeuXUycOPGMTu90qSW9rijMwVaSC0CLlq2x2/TRiYiI1KoWfcFqp6nlKC0th9mwL8PsRCIiDVZoaCh/+tOfePvttz3r3nvvPcLDw7nooouIi4vjr3/9K127dqVdu3Y89thjxMbG8tFHH53W8d9++23cbjdz586lS5cuXHHFFfz9738/W6dTjlrS64qymd3dPv6MuzTO5DAiIiINkMMfWvSBvas4x7qFn/b147reGn4mIvWM3b+0Rdus166Cm266ibFjx/L888/jdDp56623GDFiBFarlZycHB555BEWLVrEoUOHKCkpIT8/n717957Wsbdu3Ur37t3x9f1tHrABAwZUKV91qTm2rigr0q1BUXRtHmxyGBERkaqZPXs2MTEx+Pr60r9/f9auXXvS7TMyMhg/fjxNmzbF6XTSvn17Fi9eXEtpTyLmXAD6W7eqJV1E6ieLpbTLuRlLFW8vPXToUAzDYNGiRezbt49vv/2Wm266CYD77ruPDz74gGnTpvHtt9+yYcMGunXrRlFR0dl412qUivS6oqxIJzDK3BwiIiJVNH/+fBITE5kyZQrr168nLi6OhIQEDh8+XOH2RUVFDB48mN27d/Pee++RnJzMyy+/TPPmXnDr0bIi/RzrVrYeyiSnsMTkQCIiDZevry/XXnstb731Fv/973/p0KEDvXr1AmDlypWMHj2aa665hm7duhEVFcXu3btP+9idOnXi559/pqCgwLNu9erVNX0KFVKRXkccOrAbgP0ljcwNIiIiUkUzZsxg7NixjBkzhs6dOzNnzhz8/f2ZN29ehdvPmzePo0ePsnDhQgYNGkRMTAwXXHABcXFeMNyrRT+w2mluOUJTI5U1vx4xO5GISIN20003sWjRIubNm+dpRQdo164dCxYsYMOGDfz000/ceOONJ8wEfzI33ngjFouFsWPHsmXLFhYv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be69914+/vhj3n33Xb7++msOHjzItddea2Lq0/P999/z4osv0r1793Lr68r5HDt2jEGDBmG32/n000/ZsmULzzzzDKGhoZ5tnnrqKf79738zZ84c1qxZQ0BAAAkJCRQUFJiYvGJPPvkkL7zwAs899xxbt27lySef5KmnnmLWrFmebbz5fHJzc4mLi2P27NkVPn862W+66SY2b97M0qVL+eSTT/jmm2+4/fbba+sUPE52Lnl5eaxfv56HH36Y9evXs2DBApKTk7nyyivLbect5wKn/myO++CDD1i9ejXNmjU74TlvOh/xXnX1Wg/193pf16/1UL+u97rWe9f1pD5d7xv8td6QaunXr58xfvx4z2OXy2U0a9bMSEpKMjFV1R0+fNgAjK+//towDMPIyMgw7Ha78e6773q22bp1qwEYq1atMivmKWVnZxvt2rUzli5dalxwwQXGxIkTDcOoW+dz//33G+eee26lz7vdbiMqKsp4+umnPesyMjL+v737j4m6/uMA/jw47oARXogeiB7QKPnhj5GXhrS1Jq6a6+cWSUS3aGuVTiW7dDG3VjNqjX5QS6tVzmVSs1wpaw35tSBEPEElCagYVPNiGT9sohCf1/eP5ic/Sgr6lft8Pvd8bLcdn8+b8/Xc4J57c3cfxW63y86dO6dixElZsWKFFBYWao7df//9kp+fLyLGygNAdu/erX49kdmPHTsmAKS5uVld8/XXX4vFYpHffvttymY/3/lZxnPgwAEBID09PSKi3ywi/53n119/lYSEBGlra5PExER5/fXX1XN6zkP6YpauFzFH35uh60XM1ffsev32iZn6Phi7nq+kX4aRkRH4fD7k5OSox0JCQpCTk4PGxsYATjZ5g4ODAICYmBgAgM/nw+joqCZbamoqXC6XrrOtWrUKK1as0MwNGCvPV199BbfbjQceeAAzZ85EZmYm3n//ffV8d3c3/H6/Jsu0adOwZMkS3WUBgKVLl6KqqgqdnZ0AgMOHD6O+vh533nknAOPlOddEZm9sbITD4YDb7VbX5OTkICQkBE1NTVM+82QMDg7CYrHA4XAAMF4WRVFQUFAAr9eLjIyMC84bLQ8Fhpm6HjBH35uh6wFz9T273th9YuS+N3vXWwM9gBH98ccfGBsbg9Pp1Bx3Op344YcfAjTV5CmKgnXr1iE7Oxvz5s0DAPj9fthsNvWX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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# plot the development of the accuracy and loss during training\n","plt.figure(figsize=(12,4))\n","plt.subplot(1,2,(1))\n","plt.plot(history.history['accuracy'],linestyle='-.')\n","plt.plot(history.history['val_accuracy'])\n","plt.title('model accuracy')\n","plt.ylabel('accuracy')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='lower right')\n","plt.subplot(1,2,(2))\n","plt.plot(history.history['loss'],linestyle='-.')\n","plt.plot(history.history['val_loss'])\n","plt.title('model loss')\n","plt.ylabel('loss')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='upper right')"]},{"cell_type":"markdown","metadata":{"id":"uOwR3Esbw8eN"},"source":["### Visualize the learned kernel and experiment with the code\n","\n","You see that the CNN performs very good at this task (100% accuracy). We can check which pattern is recognized by the **learned kernel** and see if you think that this is helpful to distinguish between images with horizontal and vertical edges.\n","\n","Below you can see the original image, the image after the convolution operation with the learned kernel and the maximum value from the maxpooling operation. Note that the maxpooling has the same size as the convolved image so there is just one value as output.\n","\n","The probability (or more exactly likelihood) assigned by the model for each sample to belong to class \"horizontal\" or \"vertical\" is displayed P(y=\"horizontal\"|x),P(y=\"vertical\"|x) . The -log(P(y=\"horizontal\"|x)) or -log(P(y=\"vertical\"|x)) (the NLL : NegativeLogLikelihoods) which are used in the loss function \n","are displayed aswell. \n","\n","\n","\n","Move the sliders to inspect different pictures from the validation set and their predictions\n","\n","\n","#### Extra\n","\n","try to lower (or increase) the training epochs and see how the -log(P(y|x)) change."]},{"cell_type":"code","execution_count":15,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":935,"referenced_widgets":["2b9eb29c4c4d4b44b1e5592233ae4dab","11b66fd5176b475ba5c69140eae37d62","ed53a993099641bb86c8d7a10fc17bdb","e905c391b1d644bc9f0b59976800f391","3ee2908fbdce4081a6bb10c970fa187d","9b72172c1a1c46439102f6059066a39f","613f8f4d5b0e4816aa55033960822230","5f1c8af64c254ffdb40ba8499cac6ca8","1140e90db2fc4b9c91cbbe362767d65d","f7e38cbf0fa84263916f1c8dbcf4c53c"]},"executionInfo":{"elapsed":1357,"status":"ok","timestamp":1708799011724,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"pl1yuAddVRnE","outputId":"6eb7bfed-14c1-4975-d9e9-385c6412784a"},"outputs":[{"data":{"image/png":"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Q4cOlc1m0+TJk3Xbbbfp119/dRwl/eyzz9SnTx9FRUUpKSlJJ06ccASNCxlj1LNnT61fv1733nuvmjdvrlWrVumRRx7RoUOH9K9//ctp+k2bNmn58uVKTEyUJCUlJemWW27Ro48+qtdff13Dhg3TqVOnNHnyZA0ePFjr1q0rcDnYbDYNGDBAkydP1smTJ1WjRg3H3z766COlpaVpwIABHi3jESNGqHr16ho/frwOHDigKVOmaPjw4VqwYEGB01955ZV66qmn9OSTT+r+++93vAFq06aNpPM7n9OnT+vBBx9UzZo1tWXLFk2dOlW//fab2++u33///Xxj//znP5WSkuL4At/u3bvVtm1bXXrppXr88ccVGBioDz74QL169dLixYvVu3dvSefD4/XXX6+srCzHdG+88YYqV65cbB3t2rWTzWbTxo0b1axZM0nnX9sKFSroiy++cEx37Ngx/fTTT05fBHn22Wf1xBNP6M4779R9992nY8eOaerUqerQoYO+/fZbVatWrcB55uTkqEePHtqyZYsefPBBRUZGatmyZYqPjy9w+uzsbHXt2lWtW7fWiy++qDVr1uill15So0aN9OCDDyo0NFTTp0/Xgw8+qN69ezsaU+7/p0+fPtq9e7dGjBihBg0aKCUlRatXr9Z///tfn32pFyjK0aNHdd111zkOZISGhmrFihW69957lZaWptGjR0tyv2fMmjVLZ8+e1f333y+73e60v73zzjvVsGFDJSUlaceOHXrrrbdUu3ZtPf/8845pXN3m3377bQ0dOlRt2rTR6NGj9euvv6pnz56qUaOGwsPDXV4OixcvVv/+/dWhQwd99NFH+fZp7uyDTpw4oW7duqlfv34aMGCA6tSp4/ibK73U1f2xq7766itJ58P0hdq3b69///vfjvsnT57U7t27VaFCBW3atMlpPx0aGqorr7xSkuvrTEE++eQT9e3bV02bNlVSUpJOnTqle++9V5deemmB0xe3vIYOHarDhw9r9erV+Xrd6tWrddddd6lz586OdevHH3/Ul19+qVGjRjlNGxMTo6VLlxa/MN30+eefa8GCBRo5cqTsdrtef/113XTTTdqyZYuio6MVFxen8PBwzZ07N9/rOnfuXDVq1EixsbHFzmfEiBGqW7euJk6cqM2bN+uNN95QtWrV9NVXXykiIkLPPfecPv30U73wwguKjo7WwIEDJbmXx+677z7NmTNHd999t9q0aaN169ape/fu+WopyfrhElPKZs2aZSSZNWvWmGPHjpnk5GSzaNEiExoaaux2u0lOTnZMm5WVZTIzM50ef+rUKVOnTh0zePBgx9j+/fuNJFOzZk1z8uRJx/iyZcuMJPPRRx85xpo3b24uueQS88cffzjGPvvsMyPJ1K9f3zG2dOlSI8k888wzTvO//fbbjc1mM/v27XOMSTJ2u93s37/fMTZz5kwjydStW9ekpaU5xseNG2ckOU0bHx/vNO+9e/caSWb69OlO8+7Zs6dp0KCBycnJybtYndSvX9/Ex8c77ucu8y5dujg9dsyYMcbPz89pWXTs2NF07NjRcX/r1q1Gkpk1a1a++Zw+fTrfWFJSkrHZbObgwYOOsfHjx5u8q1reGvOaPHmykWTee+89x1jnzp1N06ZNzdmzZx1jOTk5pk2bNqZJkyaOsdGjRxtJ5ptvvnGMpaSkmJCQkHzLviBXXXWVufPOOx33r732WnPHHXcYSebHH380xhjz4YcfGknmu+++M8YYc+DAAePn52eeffZZp+fatWuXqVixotN43td78eLFRpKZMmWKYyw7O9t06tQp37KPj483ksxTTz3lNJ9rrrnGxMTEOO4fO3bMSDLjx493mu7UqVNGknnhhReKXAZAacndP23durXQae69915zySWXmOPHjzuN9+vXz4SEhDj2Re72jODgYJOSkuI0fe7+6sLpjTGmd+/epmbNmo77rm7z586dM7Vr1zbNmzd3qu2NN94wkpz2t4WpX7++qVevnqlYsaKJi4szGRkZ+aZxZx/UsWNHI8nMmDHDaVp3eqmr++P169cbSWb9+vVF/h//+c9/GkkmPT3daXzhwoVGktmzZ48xxpjly5cbu91uevbsafr27euYrlmzZqZ3796O+66uM7n/5wv3s02bNjVhYWFOtWzYsCFfTnBneSUmJubrg8YYM2rUKBMcHGyysrKKXD7GGPPcc88ZSebo0aPFTusqSUaS2bZtm2Ps4MGDJiAgwGl5jhs3ztjtdqe8kJKSYipWrJivz+SVu4137drVKYPExsYam81mHnjgAcdYVlaWCQsLc9ouXM1jO3fuNJLMsGHDnKa7++678/XDkqwfrvDZaSFdunRRaGiowsPDdfvttyswMFDLly93OoLs5+fnOP83JydHJ0+eVFZWllq0aKEdO3bke86+ffs6HfnOPdL666+/SpJ+//137dy5U/Hx8QoJCXFMd8MNNygqKsrpuT799FP5+flp5MiRTuMPPfSQjDFasWKF03jnzp2djvq1bt1a0vmjhBd++SB3PLemglx++eVq3bq15s6d6xg7efKkVqxYof79++e7rJ2r7r//fqfHtm/fXtnZ2Tp48KBHz3fhUZOMjAwdP35cbdq0kTFG3377rUfPKZ3/CGrcuHEaMWKE7rnnHknn///r1q3TnXfeqfT0dB0/flzHjx/XiRMn1LVrV/3888+Oq818+umnuu6669SqVSvHc4aGhqp///4uzb99+/aOj2zT09P13Xff6f7771etWrUc45s2bVK1atUUHR0tSfrwww+Vk5OjO++801Hb8ePHVbduXTVp0iTfx9IXWrlypSpVqqQhQ4Y4xipUqOD4FKQgDzzwQL6ai1qnclWuXFn+/v7asGGDTp06Vez0gK8ZY7R48WL16NFDxhin7atr165KTU119AN3e0afPn0cp1DlVdA2duLECaWlpUlyfZvftm2bUlJS9MADDzh9nyUhIcGpDxUn9/8SFhZW4Kdw7u6D7Ha7Bg0aVOC8iuul7uyPXXXixAlVrFgx36VGc+ede5rCpk2b1LJlS91www2O/fEff/yhH374wTGtO+tMXocPH9auXbs0cOBAp1o6duyopk2berS8ilKtWjVlZGRo9erVxU6bO4/jx48XO607YmNjFRMT47gfERGhW2+9VatWrXKcbjhw4EBlZmZq0aJFjukWLFigrKwslz9Nv/fee50ySOvWrWWM0b333usY8/PzU4sWLZyWnat57NNPP5WkfNPlPQpdkvXDVT4L19OmTdPq1au1aNEi3XzzzTp+/HiBX/J699131axZMwUEBKhmzZoKDQ3VJ598otTU1HzTRkREON3PXRFzQ0RuiGzSpEm+x15xxRVO9w8ePKh69erl+1Zu7kdOeQNp3nnn7jTzfuSXO15csBk4cKC+/PJLx3wWLlyov/76yxE2PVHc8nHXf//7XyUkJKhGjRqOc387duwoSQW+Pq747bff1LdvX7Vt21Yvv/yyY3zfvn0yxuiJJ55QaGio0238+PGSpJSUFEnnXxtXXuPCtG/fXr///rv27dunr776SjabTbGxsU6he9OmTWrbtq3jiic///yzjDFq0qRJvvp+/PFHR20FOXjwoC655BJVqVLFabxx48YFTh8QEJAvEFSvXt2l19Fut+v555/XihUrVKdOHXXo0EGTJ0/WkSNHin0s4AvHjh3TH3/8oTfeeCPftpUbDi/cvtzpGQ0bNix0vsXtL13d5gvrO5UqVdJll13m8nLo3LmzHnzwQc2ZM6fAj6zd3QddeumlhX55vbj/uzv745KqU6eOmjRp4rTvbd++vTp06KDDhw/r119/1ZdffqmcnBxHqHV3nblQ7utV0P63sH1ySXrrsGHDdPnll6tbt24KCwvT4MGDtXLlygKnNf93frGnB9gKU1C/vPzyy3X69GnH97IiIyPVsmVLp4N+c+fO1XXXXVfocsnLnZx04bJzNY8dPHhQFSpUUKNGjZymy9v7S7J+uMpn51y3atVKLVq0kCT16tVL7dq109133629e/c63i3OmTNHCQkJ6tWrlx555BHVrl1bfn5+SkpKcvriY67Cvu2bu0J6U2Hz9rSmfv36acyYMZo7d67+8Y9/aM6cOWrRooXLAdHKWgqSnZ2tG264QSdPntRjjz2myMhIBQYG6tChQ0pISPDoUnPnzp3T7bffLrvdrg8++EAVK/7/6pn7fA8//LC6du1a4ONd3cCL065dO0nnj5T8+uuvuvbaax1fjHr11Vf1559/6ttvv9Wzzz7rVJ/NZtOKFSsKXM5W/vBLSb/VPnr0aPXo0UNLly7VqlWr9MQTTygpKUnr1q3TNddcY1GVgDVyt/0BAwYU+j2E3PNu3e0ZRX0Po7j9ZWlu87lee+01nTp1Sq+++qqqV6/udFk3d+sp6f9dsnZ/XLNmTWVlZSk9PT1fiGrXrp3Wrl2rM2fOaPv27XryyScVHR2tatWqadOmTfrxxx9VtWpVx/7LnXXGCiXprbVr19bOnTu1atUqrVixQitWrNCsWbM0cOBAvfvuu07T5gbOWrVqlbxoDwwcOFCjRo3Sb7/9pszMTG3evFmvvfaay493Jyd5M7eVxvpRJr7QmLvzu/766/Xaa6/p8ccflyQtWrRIl112mT788EOnd2q574zdVb9+fUnn3+HntXfv3nzTrlmzJt+G/tNPPzk9l7fUqFFD3bt319y5c9W/f399+eWXmjJlilfnWZDC3iHv2rVL//nPf/Tuu+86vnQgyaWPtgozcuRI7dy5Uxs3bnT6co0kxxGeSpUq5fs2eV7169d36TUuTEREhCIiIrRp0yb9+uuvjqMhHTp00NixY7Vw4UJlZ2erQ4cOjsc0atRIxhg1bNhQl19+uUvzubDe9evX6/Tp005Hr/ft2+fW81youCMbjRo10kMPPaSHHnpIP//8s5o3b66XXnpJc+bM8XiegDfkfus/Ozu72G3f6p5RFFe3+Qv7TqdOnRzjf/31l/bv36+rr77a5XlWqFBB7733nlJTUzVx4kTVqFHD8RF4SfZB7nJnf+yqyMhISeevGpI32LRv316zZs3S/PnzlZ2drTZt2qhChQpq166dI1y3adPGEdLcWWfyyn29Ctr/emuf7O/vrx49eqhHjx7KycnRsGHDNHPmTD3xxBNOb1L279+vWrVqFXoqk6cK6pf/+c9/VKVKFad59evXT2PHjtW///1vx7XB814xyxtczWP169dXTk6OfvnlF6cDkXl7f0nWD1eVmUvxxcXFqVWrVpoyZYrjl6ZyN5QL38F88803RV7ypSiXXHKJmjdvrnfffdfpI8LVq1drz549TtPefPPNys7Ozveu7F//+pdsNpu6devmUQ3uuOeee7Rnzx498sgj8vPzU79+/bw+z7wCAwMlnT+n7UIFvTbGmHyXD3LVrFmzNHPmTE2bNs3pXOlctWvXVlxcnGbOnKnff/89398vvKTgzTffrM2bN2vLli1Of7/w46zitG/fXuvWrdOWLVsc4bp58+YKCgrSpEmTVLlyZadz1G677Tb5+flp4sSJ+d5xG2N04sSJQufVtWtX/fXXX3rzzTcdYzk5OY5LN3kiN6Tnfd1Onz6d75fcGjVqpKCgIGVmZno8P8Bb/Pz81KdPHy1evFg//PBDvr9fuO1b3TOK4uo236JFC4WGhmrGjBlO19GePXt2vu3TFZUqVdKiRYvUtm1bjR492nH1iZLsg9zlzv7YVblXmyjolzpz98HPP/+8mjVr5jidoH379lq7dq22bdvmmEZyb53Jq169eoqOjtZ7772nP//80zH++eefOy6v64nCemne16VChQqONxd598nbt2936aoc7vr666+dzjFOTk7WsmXLdOONNzodVa5Vq5a6deumOXPmaO7cubrppptK5Si6q3ks999XX33Vabq8ByZLsn64qkwcuc71yCOP6I477tDs2bP1wAMP6JZbbtGHH36o3r17q3v37tq/f79mzJihqKgop5XeHUlJ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","text/plain":["
"]},"metadata":{},"output_type":"display_data"},{"name":"stdout","output_type":"stream","text":["\n","---------Move the sliders to inspect different vertical and horizontal images from the valset and their predictions:------------------\n","\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"8b96fbd083174a4d9409966e01ba3464","version_major":2,"version_minor":0},"text/plain":["interactive(children=(IntSlider(value=0, description='vertical', max=499), Output()), _dom_classes=('widget-in…"]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"4873318f43d842669aaabe09130755cb","version_major":2,"version_minor":0},"text/plain":["interactive(children=(IntSlider(value=500, description='horizontal', max=999, min=500), Output()), _dom_classe…"]},"metadata":{},"output_type":"display_data"}],"source":["## Do not worry about this cell, just move the sliders.\n","import scipy.signal\n","from skimage.measure import block_reduce # For max pooling\n","import ipywidgets as widgets\n","\n","\n","# Kernel from model\n","plt.figure(figsize=(10, 3))\n","plt.subplot(1, 2, 1)\n","plt.imshow(np.random.rand(25).reshape(5, 5),\"gray\") ,plt.title('Randomly initalized weights')\n","plt.subplot(1, 2, 2)\n","conv_filter=np.squeeze(model.get_weights()[0], axis=2)\n","plt.imshow(conv_filter[:,:,0],\"gray\"),plt.title('Learned Kernel (weights) , by model'),plt.show();\n","print(\"\\n---------Move the sliders to inspect different vertical and horizontal images from the valset and their predictions:------------------\\n\")\n","\n","def scale_convolution_map(conv_map, min_val=-3, max_val=3):\n"," clipped_conv_map = np.clip(conv_map, min_val, max_val)\n"," scaled_conv_map = (clipped_conv_map - min_val) / (max_val - min_val)\n"," return scaled_conv_map\n","\n","def plot_conv(img,category):\n"," convolved_image = scipy.signal.convolve2d(img.squeeze(), conv_filter.squeeze(), mode='same')\n"," scaled_conv_image = scale_convolution_map(convolved_image + model.get_weights()[1])\n"," max_pooled_image = block_reduce(convolved_image + model.get_weights()[1], block_size=(50, 50), func=np.max)\n"," scaled_max_pooled_image = scale_convolution_map(max_pooled_image)\n"," \n"," plt.figure(figsize=(20, 4)) # Adjust the figure size as needed\n"," plt.subplot(1, 6, 1)\n"," plt.imshow(img, \"gray\", vmin=0, vmax=1),plt.title('Original Image')\n"," plt.subplot(1, 6, 2)\n"," plt.imshow(scaled_conv_image, \"gray\", vmin=0, vmax=1),plt.title('Convolved Image')\n"," plt.subplot(1, 6, 3),plt.imshow(scaled_max_pooled_image, \"gray\", vmin=0, vmax=1)\n"," plt.title(f'Max Pooled = {max_pooled_image[0][0]:.2f}'),plt.xticks([]), plt.yticks([])\n"," plt.subplot(1, 6, 4),plt.axis('off')\n"," pred = model.predict(img.reshape(1, 50, 50, 1), verbose=0)\n"," if category==\"vertical\":\n"," text_info = f'''\n"," P(y=vertical|x): {pred[0][0]:.4f}\n"," P(y=horizontal|x): {pred[0][1]:.4f}\n"," \n"," \n"," loss component: {-np.log(pred[0][0]):.4f}\n"," '''\n"," else:\n"," text_info = f'''\n"," P(y=vertical|x): {pred[0][0]:.4f}\n"," P(y=horizontal|x): {pred[0][1]:.4f}\n"," \n"," \n"," loss component: {-np.log(pred[0][1]):.4f}\n"," '''\n"," \n"," plt.text(0, 0.5, text_info, ha='left', va='center')\n"," plt.subplot(1, 6, 5)\n"," x_values = np.linspace(0.001, 1.1, 500)\n"," plt.plot(x_values, -np.log(x_values), label='-log(P(y|x))')\n"," plt.ylim(-0.5, 6),plt.xlim(-0.1, 1.1),plt.xlabel('P(y|x)')\n"," if category==\"vertical\":\n"," plt.plot(pred[0][0], -np.log(pred[0][0]), 'bo', label='loss component')\n"," else:\n"," plt.plot(pred[0][1], -np.log(pred[0][1]), 'ro', label='loss component')\n"," \n"," plt.legend(),plt.grid(True), plt.tight_layout(),plt.show()\n","\n","def inspect_preds(idx,category='vertical'):\n"," plot_conv(X_val[idx,:,:,0],category)\n","\n","horizontal_slider = widgets.IntSlider(min=0, max=num_images_val//2-1, step=1, value=0, description='vertical')\n","widgets.interact(inspect_preds, idx=horizontal_slider,category=widgets.fixed('vertical'));\n","\n","vertical_slider = widgets.IntSlider(min=num_images_val//2, max=num_images_val-1, step=1, value=0, description='horizontal')\n","widgets.interact(inspect_preds, idx=vertical_slider,category=widgets.fixed('horizontal'));"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{"id":"U4gnnlAPp_Q2"},"source":["### Repeat the training and experiment with the kernelsize and activation function.\n","\n","**Exercise**:\n","- Repeat the compiling and training, beginning from the cell:\n","\n","```\n","model = Sequential()\n"," \n"," ...\n"," \n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n","```\n","\n","for several times and check if the CNN always learns the same kernel. \n","\n","- You can experiment with the code and check what happens if you use another kernel size, activation function (relu instead of linear ) or pooling method AveragePooling instead of MaxPooling. Try to make a prediction on the performance before doing the experiment.\n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"qjHAJkDVP8fN"},"source":["## Answer:\n","\n","- No it does not, sometimes it learns the horizontal patterns, and sometimes the vertical pattern.\n","\n","-"]},{"cell_type":"code","execution_count":12,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"elapsed":38402,"status":"ok","timestamp":1708799050120,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"8YwThvI9QzzM","outputId":"18e6fbe4-7bc3-4589-d54a-9dc3157a9b2d"},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/40\n"]},{"name":"stdout","output_type":"stream","text":["16/16 [==============================] - 0s 6ms/step - loss: 0.9348 - accuracy: 0.5000 - val_loss: 0.8893 - val_accuracy: 0.5000\n","Epoch 2/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.8557 - accuracy: 0.5000 - val_loss: 0.8150 - val_accuracy: 0.5000\n","Epoch 3/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.7889 - accuracy: 0.5000 - val_loss: 0.7530 - val_accuracy: 0.5000\n","Epoch 4/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.7327 - accuracy: 0.5000 - val_loss: 0.7017 - val_accuracy: 0.5000\n","Epoch 5/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6855 - accuracy: 0.5000 - val_loss: 0.6591 - val_accuracy: 0.5000\n","Epoch 6/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6475 - accuracy: 0.5000 - val_loss: 0.6237 - val_accuracy: 0.5000\n","Epoch 7/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6160 - accuracy: 0.5000 - val_loss: 0.5956 - val_accuracy: 0.5000\n","Epoch 8/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5916 - accuracy: 0.5000 - val_loss: 0.5754 - val_accuracy: 0.5000\n","Epoch 9/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5746 - accuracy: 0.5000 - val_loss: 0.5605 - val_accuracy: 0.5000\n","Epoch 10/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5601 - accuracy: 0.5000 - val_loss: 0.5460 - val_accuracy: 0.7220\n","Epoch 11/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5458 - accuracy: 0.7170 - val_loss: 0.5319 - val_accuracy: 0.7460\n","Epoch 12/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5318 - accuracy: 0.7430 - val_loss: 0.5182 - val_accuracy: 0.7690\n","Epoch 13/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5181 - accuracy: 0.7640 - val_loss: 0.5045 - val_accuracy: 0.7890\n","Epoch 14/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5045 - accuracy: 0.7860 - val_loss: 0.4912 - val_accuracy: 0.8060\n","Epoch 15/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4910 - accuracy: 0.8000 - val_loss: 0.4776 - val_accuracy: 0.8280\n","Epoch 16/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4770 - accuracy: 0.8240 - val_loss: 0.4634 - val_accuracy: 0.8470\n","Epoch 17/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4628 - accuracy: 0.8630 - val_loss: 0.4495 - val_accuracy: 0.9120\n","Epoch 18/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4495 - accuracy: 0.9430 - val_loss: 0.4367 - val_accuracy: 0.9530\n","Epoch 19/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4370 - accuracy: 0.9490 - val_loss: 0.4239 - val_accuracy: 0.9530\n","Epoch 20/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4246 - accuracy: 0.9490 - val_loss: 0.4115 - val_accuracy: 0.9540\n","Epoch 21/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4126 - accuracy: 0.9670 - val_loss: 0.3993 - val_accuracy: 0.9800\n","Epoch 22/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4007 - accuracy: 0.9680 - val_loss: 0.3873 - val_accuracy: 0.9800\n","Epoch 23/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3892 - accuracy: 0.9690 - val_loss: 0.3758 - val_accuracy: 0.9800\n","Epoch 24/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3781 - accuracy: 0.9700 - val_loss: 0.3647 - val_accuracy: 0.9800\n","Epoch 25/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3672 - accuracy: 0.9700 - val_loss: 0.3537 - val_accuracy: 0.9800\n","Epoch 26/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3565 - accuracy: 0.9700 - val_loss: 0.3428 - val_accuracy: 0.9800\n","Epoch 27/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3457 - accuracy: 0.9710 - val_loss: 0.3320 - val_accuracy: 0.9810\n","Epoch 28/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3353 - accuracy: 0.9920 - val_loss: 0.3219 - val_accuracy: 0.9980\n","Epoch 29/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3258 - accuracy: 0.9970 - val_loss: 0.3126 - val_accuracy: 0.9980\n","Epoch 30/40\n","16/16 [==============================] - 0s 3ms/step - loss: 0.3167 - accuracy: 0.9970 - val_loss: 0.3035 - val_accuracy: 0.9980\n","Epoch 31/40\n","16/16 [==============================] - 0s 3ms/step - loss: 0.3078 - accuracy: 0.9970 - val_loss: 0.2948 - val_accuracy: 0.9990\n","Epoch 32/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2992 - accuracy: 0.9970 - val_loss: 0.2863 - val_accuracy: 0.9990\n","Epoch 33/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2910 - accuracy: 0.9970 - val_loss: 0.2783 - val_accuracy: 0.9990\n","Epoch 34/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2831 - accuracy: 0.9970 - val_loss: 0.2706 - val_accuracy: 0.9990\n","Epoch 35/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2755 - accuracy: 0.9970 - val_loss: 0.2632 - val_accuracy: 0.9990\n","Epoch 36/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2683 - accuracy: 0.9970 - val_loss: 0.2561 - val_accuracy: 0.9990\n","Epoch 37/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2612 - accuracy: 0.9970 - val_loss: 0.2492 - val_accuracy: 0.9990\n","Epoch 38/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2544 - accuracy: 0.9970 - val_loss: 0.2427 - val_accuracy: 0.9990\n","Epoch 39/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2479 - accuracy: 0.9970 - val_loss: 0.2363 - val_accuracy: 0.9990\n","Epoch 40/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2416 - accuracy: 0.9970 - val_loss: 0.2303 - val_accuracy: 0.9990\n"]},{"data":{"text/plain":[""]},"execution_count":12,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA+kAAAGJCAYAAAD2VnIMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACqiUlEQVR4nOzdd3xTZfvH8U+SbkpbSksLpWzZe8oegkUUAREZIkPBnwiI9HGAIigOXCAqKA4QVFSUJQqyQWXL3nuPFspoaUtXkt8fgWClLW1pm7R8369XXj05uc/JdfI8cnLlvu/rNlitVisiIiIiIiIi4nBGRwcgIiIiIiIiIjZK0kVERERERESchJJ0ERERERERESehJF1ERERERETESShJFxEREREREXESStJFREREREREnISSdBEREREREREnoSRdRERERERExEkoSRcRERERERFxEkrSRfKx48ePYzAYmD59epaPXb16NQaDgdWrV+d4XCIiIuK88uL7w/Tp0zEYDBw/fjxbMYrczZSki4iIiIiIiDgJJekiIiIiIiIiTkJJuogUKHFxcY4OQUREREQk25Ski9yB119/HYPBwMGDB+nduze+vr4EBgby2muvYbVaOXXqFJ06dcLHx4fg4GDGjx9/yznOnz/PU089RVBQEB4eHtSqVYsZM2bc0u7KlSv069cPX19f/Pz86Nu3L1euXEkzrv379/Poo4/i7++Ph4cH9evXZ8GCBdm6xhMnTvDss89SqVIlPD09KVq0KN26dUtzjtmVK1cYPnw4ZcqUwd3dnZIlS9KnTx+ioqLsbRISEnj99depWLEiHh4eFC9enEceeYQjR44A6c91S2v+XL9+/fD29ubIkSN06NCBwoUL8/jjjwPw999/061bN0qVKoW7uzuhoaEMHz6ca9eupfl5PfbYYwQGBuLp6UmlSpV49dVXAVi1ahUGg4F58+bdctwPP/yAwWBg/fr1Wf1YRUTkLnY3fH9Iz2effUa1atVwd3enRIkSDB48+JZ4Dh06RNeuXQkODsbDw4OSJUvSo0cPoqOj7W2WLVtGs2bN8PPzw9vbm0qVKvHKK6/kaKwijuLi6ABECoLu3btTpUoV3n33XRYuXMhbb72Fv78/X3zxBW3atOG9995j5syZvPDCCzRo0IAWLVoAcO3aNVq1asXhw4cZMmQIZcuW5ZdffqFfv35cuXKFYcOGAWC1WunUqRNr1qzhmWeeoUqVKsybN4++ffveEsuePXto2rQpISEhjBgxgkKFCvHzzz/TuXNn5syZQ5cuXbJ0bf/88w/r1q2jR48elCxZkuPHj/P555/TqlUr9u7di5eXFwCxsbE0b96cffv28eSTT1K3bl2ioqJYsGABp0+fJiAgALPZzEMPPcSKFSvo0aMHw4YN4+rVqyxbtozdu3dTvnz5LH/2KSkphIWF0axZMz788EN7PL/88gvx8fEMGjSIokWLsmnTJj799FNOnz7NL7/8Yj9+586dNG/eHFdXV55++mnKlCnDkSNH+O2333j77bdp1aoVoaGhzJw585bPbubMmZQvX57GjRtnOW4REZGC/P0hLa+//jpvvPEGbdu2ZdCgQRw4cIDPP/+cf/75h7Vr1+Lq6kpSUhJhYWEkJiYydOhQgoODOXPmDL///jtXrlzB19eXPXv28NBDD1GzZk3Gjh2Lu7s7hw8fZu3atXcco4hTsIpIto0ZM8YKWJ9++mn7vpSUFGvJkiWtBoPB+u6779r3X7582erp6Wnt27evfd/EiROtgPX777+370tKSrI2btzY6u3tbY2JibFarVbr/PnzrYD1/fffT/U+zZs3twLWb775xr7/vvvus9aoUcOakJBg32exWKxNmjSx3nPPPfZ9q1atsgLWVatWZXiN8fHxt+xbv369FbB+++239n2jR4+2Ata5c+fe0t5isVitVqt12rRpVsA6YcKEdNukF9exY8duuda+fftaAeuIESMyFfe4ceOsBoPBeuLECfu+Fi1aWAsXLpxq37/jsVqt1pEjR1rd3d2tV65cse87f/681cXFxTpmzJhb3kdERCQjd8P3h2+++cYKWI8dO2a1Wm33TTc3N+v9999vNZvN9naTJk2yAtZp06ZZrVarddu2bVbA+ssvv6R77o8++sgKWC9cuJBhDCL5lYa7i+SAAQMG2LdNJhP169fHarXy1FNP2ff7+flRqVIljh49at+3aNEigoOD6dmzp32fq6srzz33HLGxsfz555/2di4uLgwaNCjV+wwdOjRVHJcuXWLlypU89thjXL16laioKKKiorh48SJhYWEcOnSIM2fOZOnaPD097dvJyclcvHiRChUq4Ofnx9atW+2vzZkzh1q1aqX5S7vBYLC3CQgIuCXuf7fJjn9/LmnFHRcXR1RU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3fD94b9LsN0wadIka+XKla2urq7WoKAg66BBg6yXL1+2v3706FHrk08+aS1fvrzVw8PD6u/vb23durV1+fLl9jYrVqywdurUyVqiRAmrm5ubtUSJEtaePXtaDx48mGFMIvmFwWrNxSoUIiIFSEpKCiVKlKBjx45MnTrV0eGIiIiISAGkOekiIpk0f/58Lly4kKoYnYiIiIhITlJPuojIbWzcuJGdO3fy5ptvEhAQwNatWx0dkoiIiIgUUOpJFxG5jc8//5xBgwZRrFgxvv32W0eHIyIiIiIFmHrSRURERERERJyEetJFREREREREnISSdBEREREREREn4eLoAPKaxWLh7NmzFC5cGIPB4OhwREREsFqtXL16lRIlSmA06vfznKD7vYiIOJOs3OvvuiT97NmzhIaGOjoMERGRW5w6dYqSJUs6OowCQfd7ERFxRpm51991SXrhwoUB24fj4+Pj4GhEREQgJiaG0NBQ+z1K7pzu9yIi4kyycq+/65L0G0PefHx8dNMWERGnomHZOUf3exERcUaZuddr4puIiIiIiIiIk1CSLiIiIiIiIuIklKSLiIiIiIiIOIm7bk66iIiIiIiIpGa1WklJScFsNjs6lHzL1dUVk8l0x+dRki4iIiIiInIXS0pK4ty5c8THxzs6lHzNYDBQsmRJvL297+g8StJFRERERETuUhaLhWPHjmEymShRogRubm5abSQbrFYrFy5c4PTp09xzzz131KPu0CT9r7/+4oMPPmDLli2cO3eOefPm0blz5wyPWb16NeHh4ezZs4fQ0FBGjRpFv3798iReERERERGRgiQpKQmLxUJoaCheXl6ODidfCwwM5Pjx4yQnJ99Rku7QwnFxcXHUqlWLyZMnZ6r9sWPHePDBB2ndujXbt2/n+eefZ8CAASxZsiSXIxURERERESm4jEbVFL9TOTUCwaE96Q888AAPPPBApttPmTKFsmXLMn78eACqVKnCmjVr+OijjwgLC8utMEVERERERETyRL6ak75+/Xratm2bal9YWBjPP/98usckJiaSmJhofx4TE5Nb4YmIOIbFDIlXITHG9jfh+t+UBEdHVvC5e0P5No6OQkRERAqQfJWkR0REEBQUlGpfUFAQMTExXLt2DU9Pz1uOGTduHG+88UZehSgiktqZrfDne7bEOZPMVisJyWYMBgNerjfnM11LNmOx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UlNTmTt3LsnJycyaNYuhQ4eSlZVFSEjIOfWDgoJ46qmn6Nq1K56ennz55ZeMHTuWkJAQhg4d6oQeiIhcJK2CIfk/zXJoJ2xaAD8thOL98ON8swREQcIo6HkntO0MmJfDn97O7X8qT7FkWwGLNhzgu12H2XygiNLKU4y/uqP9bcoqT+HjqVSvqdJMujiXPUkPqrPaUc2ki7iUsspTjS6nfvUN/6nqGsoqT1FeVd2g8zbG/fffT2ZmJq+99hoWiwWLxcK8efOwWCz861//IjExEZvNxooVK9izZw8jRowgNDQUX19f+vbty9KlSx3Od/bl7haLhb/+9a/ceuut+Pj4EBcXx+eff974D7EFmTlzJuPHj2fs2LHEx8czd+5cfHx8ePfdd2utP3DgQG699Va6detGp06deOSRR0hISGDFihWXueUiIpdQ284waCpM2gxjvoQ+94GnHxzPhW+nw5y+8PY1sOoNKD5of5mPpzsjekcwb2w/1v55EP8zsgcTBsba71Evr6rmyhfT+Y93vufYL39DS9Oir1fEucp+WTiuvpl0+z3ptkvdIhFpgPip3zT6NXPuuYKbE8IA+GZrARM++JHkmCAW/meKvc5VLy+3fyn3azkv3dzg93nttdfYuXMnPXr0YNq0aQBs3boVgCeffJIZM2bQsWNHAgMD2bdvHzfddBMvvPACNpuN+fPnM3z4cLKysoiKijrvezz33HO88sorTJ8+nddff517772XvXv3EhRU9xeOLVFlZSXr169nypQp9mNWq5XBgwezevXqel9vGAbLli0jKyuLl19++bz1KioqqKiosD8uLi6+sIaLiFwuVivEXG2WG6dD1lfmYnN7lkHeT2b5939D9FWQcCd0+3/gHQBAG18b913ZweF063KOUlx+ip8PlRLg42E//mPuMWJDfPH38kBcm5J0ca6yX+5Jr2OPdPjVTLqP/qciInVr3bo1np6e+Pj40K5dOwB27NgBwLRp0xgyZIi9blBQEL169bI/fv7551m0aBGff/45EydOPO973H///dx9990AvPjii8yePZu1a9cybNiwS9GlJu3w4cNUV1cTGhrqcDw0NNQ+LrUpKioiIiKCiooK3NzcePPNNx3G7mxpaWk899xzF63dIiJO4ekDPe8wS+lh2PYpbPoI9q2BnO/MsvgxiLsBev4OOg8DDy+HU1wd15bM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D7Yfs1qtDB48mNWrVzfoHGVlZVRVVREUFHTeOhUVFRQXFzsUERGRpkhJuoiIiFwyhw8fprq62r616mmhoaHk5+c36ByTJ08mPDzcIdE/W1paGq1bt7aXyMjIC2q3iIiIs7S4e9JPX92vb9hFRMRVnI5JLewOtAZ56aWXWLBgARkZGXWuizBlyhRSU1Ptj4uKioiKilK8FxERl9CYWN/ikvQTJ04A6Bt2ERFxOSdOnKB169bObsZFFRwcjJubGwUFBQ7HCwoK6t2SbsaMGbz00kssXbqUhISEOuvabDZsNpv98ek/hhTvRUTElTQk1re4JD08PJx9+/bh5+eHxWK5oHMVFxcTGRnJvn37mvSiNM2hH+qD62gO/VAfXENz6AM0rB+GYXDixAnCw8Mvc+suPU9PTxITE0lPT2fkyJGAuXBceno6EydOPO/rXnnlFV544QW++eYbkpKSGv2+iveO1AfX0Rz6oT64hubQB2ge/bjYsb7FJelWq5X27dtf1HP6+/s32f+gfq059EN9cB3NoR/qg2toDn2A+vvR3GbQfy01NZUxY8aQlJREv379mDVrFqWlpYwdOxaA0aNHExERQVpaGgAvv/wyU6dO5YMPPiA6Otp+77qvry++vr4Nek/F+9qpD66jOfRDfXANzaEP0Dz6cbFifYtL0kVEROTyGjVqFIcOHWLq1Knk5+fTu3dvvv76a/ticrm5uVitZ9ayfeutt6isrOSOO+5wOM8zzzzDs88+ezmbLiIictkpSRcREZFLbuLEiee9vD0jI8PhcU5OzqVvkIiIiIvSFmwXwGaz8cwzzzgsVNMUNYd+qA+uozn0Q31wDc2hD9B8+tGSNYcxVB9cR3Poh/rgGppDH6B59ONi98FiaL8XEREREREREZegmXQRERERERERF6EkXURERERERMRFKEkXERERERERcRFK0kVERERERERchJL0CzBnzhyio6Px8vIiOTmZtWvXOrtJDfbss89isVgcSteuXZ3drHp9++23DB8+nPDwcCwWC59++qnD84ZhMHXqVMLCwvD29mbw4MHs2rXLOY09j/r6cP/9958zNsOGDXNOY88jLS2Nvn374ufnR0hICCNHjiQrK8uhTnl5ORMmTKBNmzb4+vpy++23U1BQ4KQWn6shfRg4cOA5Y/Hggw86qcXneuutt0hISMDf3x9/f39SUlL417/+ZX/e1cfgtPr64erjUJuXXnoJi8XCpEmT7MeayniIo6Yc66FpxnvFetegWO86mkO8V6xvHCXpv9HChQtJTU3lmWee4ccff6RXr14MHTqUwsJCZzetwbp3705eXp69rFixwtlNqldpaSm9evVizpw5tT7/yiuvMHv2bObOncv3339Pq1atGDp0KOXl5Ze5pedXXx8Ahg0b5jA2H3744WVsYf0yMzOZMGECa9asYcmSJVRVVXHDDTdQWlpqr/Poo4/yxRdf8NFHH5GZmcnBgwe57bbbnNhqRw3pA8D48eMdxuKVV15xUovP1b59e1566SXWr1/PDz/8wPXXX8+IESPYunUr4PpjcFp9/QDXHoezrVu3jrfffpuEhASH401lPOSM5hDroenFe8V616BY7zqaQ7xXrG8kQ36Tfv36GRMmTLA/rq6uNsLDw420tDQntqrhnnnmGaNXr17ObsYFAYxFixbZH9fU1Bjt2rUzpk+fbj92/Phxw2azGR9++KETWli/s/tgGIYxZswYY8SIEU5pz29VWFhoAEZmZqZhGObn7uHhYXz00Uf2Otu3bzcAY/Xq1c5qZp3O7oNhGMa1115rPPLII85r1G8QGBho/PWvf22SY/Brp/thGE1rHE6cOGHExcUZS5YscWh3Ux+Plqqpx3rDaPrxXrHedSjWu5bmEO8V689PM+m/QWVlJevXr2fw4MH2Y1arlcGDB7N69Wontqxxdu3aRXh4OB07duTee+8lNzfX2U26INnZ2eTn5zuMS+vWrUlOTm5S4wKQkZFBSEgIXbp04aGHHuLIkSPOblKdioqKAAgKCgJg/fr1VFVVOYxF165diYqKctmxOLsPp73//vsEBwfTo0cPpkyZQllZmTOaV6/q6moWLFhAaWkpKSkpTXIM4Nx+nNZUxmHChAncfPPNDp87NM1/Ey1dc4n10LzivWK98yjWu4bmEO8V6+vnflFa2sIcPnyY6upqQkNDHY6HhoayY8cOJ7WqcZKTk5k3bx5dunQhLy+P5557jquvvpotW7bg5+fn7Ob9Jvn5+QC1jsvp55qCYcOGcdtttxETE8OePXv485//zI033sjq1atxc3NzdvPOUVNTw6RJkxgwYAA9evQAzLHw9PQkICDAoa6rjkVtfQC455576NChA+Hh4WzatInJkyeTlZXFJ5984sTWOtq8eTMpKSmUl5fj6+vLokWLiI+PZ+PGjU1qDM7XD2ga4wCwYMECfvzxR9atW3fOc03t34Q0j1gPzS/eK9Y7h2K98zWHeK9Y33BK0luoG2+80f57QkICycnJdOjQgX/84x/8/ve/d2LL5K677rL/3rNnTxISEujUqRMZGRkMGjTIiS2r3YQJE9iyZYvL3+NYl/P14YEHHrD/3rNnT8LCwhg0aBB79uyhU6dOl7uZterSpQsbN26kqKiIjz/+mDFjxpCZmensZjXa+foRHx/fJMZh3759PPLIIyxZsgQvLy9nN0fETvHeNSnWX35NOdZD84j3ivUNp8vdf4Pg4GDc3NzOWamvoKCAdu3aOalVFyYgIIDOnTuze/duZzflNzv92TencQHo2LEjwcHBLjk2EydO5Msvv2T58uW0b9/efrxdu3ZUVlZy/Phxh/quOBbn60NtkpOTAVxqLDw9PYmNjSUxMZG0tDR69erFa6+91qTGAM7fj9q44jisX7+ewsJCrrjiCtzd3XF3dyczM5PZs2fj7u5OaGhokxoPaZ6xHpp+vFesv/wU611Dc4j3ivUNpyT9N/D09CQxMZH09HT7sZqaGtLT0x3uq2hKSkpK2LNnD2FhYc5uym8WExNDu3btHMaluLiY77//vsmOC8D+/fs5cuSIS42NYRhMnDiRRYsWsWzZMmJiYhyeT0xMxMPDw2EssrKyyM3NdZmxqK8Ptdm4cSOAS43F2WpqaqioqGgSY1CX0/2ojSuOw6BBg9i8eTMbN260l6SkJO6991777015PFqi5hjroenHe8X6y0ex3nXGojbNId4r1tfhYq1y19IsWLDAsNlsxrx584xt27YZDzzwgBEQEGDk5+c7u2kN8thjjxkZGRlGdna2sXLlSmPw4MFGcHCwUVhY6Oym1enEiRPGhg0bjA0bNhiAMXPmTGPDhg3G3r17DcMwjJdeeskICAgwPvvsM2PTpk3GiBEjjJiYGOPkyZNObvkZdfXhxIkTxuOPP26sXr3ayM7ONpYuXWpcccUVRlxcnFFeXu7spts99NBDRuvWrY2MjAwjLy/PXsrKyux1HnzwQSMqKspYtmyZ8cMPPxgpKSlGSkqKE1vtqL4+7N6925g2bZrxww8/GNnZ2cZnn31mdOzY0bjmmmuc3PIznnzySSMzM9PIzs42Nm3aZDz55JOGxWIx/v3vfxuG4fpjcFpd/WgK43A+Z69U21TGQ85o6rHeMJpmvFesdw2K9a6jOcR7xfrGUZJ+AV5//XUjKirK8PT0NPr162esWbPG2U1qsFGjRhlhYWGGp6enERERYYwaNcrYvXu3s5tVr+XLlxvAOWXMmDGGYZhbszz99NNGaGioYbPZjEGDBhlZWVnObfRZ6upDWVmZccMNNxht27Y1PDw8jA4dOhjjx493uT8Ia2s/YPztb3+z1zl58qTxxz/+0QgMDDR8fHyMW2+91cjLy3Neo89SXx9yc3ONa665xggKCjJsNpsRGxtrPPHEE0ZRUZFzG/4r48aNMzp06GB4enoabdu2NQYNGmQP2Ibh+mNwWl39aArjcD5nB+6mMh7iqCnHesNomvFesd41KNa7juYQ7xXrG8diGIbRuLl3EREREREREbkUdE+6iIiIiIiIiItQki4iIiIiIiLiIpSki4iIiIiIiLgIJekiIiIiIiIiLkJJuoiIiIiIiIiLUJIuIiIiIiIi4iKUpIuIiIiIiIi4CCXpIiIiIiIiIi5CSbqIXFYZGRlYLBaOHz/u7KaIiIjIJaJ4L/LbKUkXERERERERcRFK0kVERERERERchJJ0kRampqaGtLQ0YmJi8Pb2plevXnz88cfAmUvTFi9eTEJCAl5eXlx55ZVs2bLF4Rz//Oc/6d69OzabjejoaF599VWH5ysqKpg8eTKRkZHYbDZiY2N55513HOqsX7+epKQkfHx86N+/P1lZWZe24yIiIi2I4r1I06UkXaSFSUtLY/78+cydO5etW7fy6KOPct9995GZmWmv88QTT/Dqq6+ybt062rZty/Dhw6mqqgLMYHvnnXdy1113sXnzZp599lmefvpp5s2bZ3/96NGj+fDDD5k9ezbbt2/n7bffxtfX16EdTz31FK+++io//PAD7u7ujBs37rL0X0REpCVQvBdpwgwRaTHKy8sNHx8fY9WqVQ7Hf//73xt33323sXz5cgMwFixYYH/uyJEjhre3t7Fw4ULDMAzjnnvuMYYMGeLw+ieeeMKIj483DMMwsrKyDMBYsmRJrW04/R5Lly61H1u8eLEBGCdPnrwo/RQREWnJFO9FmjbNpIu0ILt376asrIwhQ4bg6+trL/Pnz2fPnj32eikpKfbfg4KC6NKlC9u3bwdg+/btDBgwwOG8AwYMYNeuXVRXV7Nx40bc3Ny49tpr62xLQkKC/fewsDAACgsLL7iPIiIiLZ3ivUjT5u7sBojI5VNSUgLA4sWLiYiIcHjOZrM5BO7fytvbu0H1PDw87L9bLBbAvH9ORERELozivUjTppl0kRYkPj4em81Gbm4usbGxDiUyMtJeb82aNfbfjx07xs6dO+nWrRsA3bp1Y+XKlQ7nXblyJZ07d8bNzY2ePXtSU1PjcM+biIiIXD6K9yJNm2bSRVoQPz8/Hn/8cR599FFqamq46qqrKCoqYuXKlfj7+9OhQwcApk2bRps2bQgNDeWpp54iODiYkSNHAvDYY4/Rt29fnn/+eUaNGsXq1at54403ePPNNwGIjo5mzJgxjBs3jtmzZ9OrVy/27t1LYWEhd955p7O6LiIi0mIo3os0cc6+KV5ELq+amhpj1qxZRpcuXQwPDw+jbdu2xtChQ43MzEz7Ii9ffPGF0b17d8PT09Po16+f8dNPPzmc4+OPPzbi4+MNDw8PIyoqypg+fbrD8ydPnjQeffRRIywszPD09DRiY2ONd9991zCMMwvJHDt2zF5/w4YNBmBkZ2df6u6LiIi0CIr3Ik2XxTAMw5lfEoiI68jIyOC6667j2LFjBAQEOLs5IiIicgko3ou4Nt2TLiIiIiIiIuIilKSLiIiIiIiIuAhd7i4iIiIiIiLiIjSTLiIiIiIiIuIilKSLiIiIiIiIuAgl6SIiIiIiIiIuQkm6iIiIiIiIiItQki4iIiIiIiLiIpSki4iIiIiIiLgIJekiIiIiIiIiLkJJuoiIiIiIiIiL+P+LnsKSTrtTbgAAAABJRU5ErkJggg==","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["model = Sequential()\n","\n","model.add(Convolution2D(1,(5,5),padding='same',input_shape=(pixel,pixel,1)))\n","model.add(Activation('relu'))\n","\n","# take the max over all values in the activation map\n","model.add(MaxPooling2D(pool_size=(pixel,pixel)))\n","model.add(Flatten())\n","model.add(Dense(2))\n","model.add(Activation('softmax'))\n","\n","# compile model and initialize weights\n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n","# train the model\n","history=model.fit(X_train, Y_train,\n"," validation_data=(X_val,Y_val),\n"," batch_size=64,\n"," epochs=40,\n"," verbose=1)\n","\n","# plot the development of the accuracy and loss during training\n","plt.figure(figsize=(12,4))\n","plt.subplot(1,2,(1))\n","plt.plot(history.history['accuracy'],linestyle='-.')\n","plt.plot(history.history['val_accuracy'])\n","plt.title('model accuracy')\n","plt.ylabel('accuracy')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='lower right')\n","plt.subplot(1,2,(2))\n","plt.plot(history.history['loss'],linestyle='-.')\n","plt.plot(history.history['val_loss'])\n","plt.title('model loss')\n","plt.ylabel('loss')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='upper right')"]}],"metadata":{"accelerator":"GPU","colab":{"provenance":[]},"kernelspec":{"display_name":"Python 3 (ipykernel)","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.9.18"},"widgets":{"application/vnd.jupyter.widget-state+json":{"1140e90db2fc4b9c91cbbe362767d65d":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"SliderStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"SliderStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":"","handle_color":null}},"11b66fd5176b475ba5c69140eae37d62":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"IntSliderModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"IntSliderModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"IntSliderView","continuous_update":true,"description":"vertical ","description_tooltip":null,"disabled":false,"layout":"IPY_MODEL_9b72172c1a1c46439102f6059066a39f","max":499,"min":0,"orientation":"horizontal","readout":true,"readout_format":"d","step":1,"style":"IPY_MODEL_613f8f4d5b0e4816aa55033960822230","value":0}},"2b9eb29c4c4d4b44b1e5592233ae4dab":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"VBoxModel","state":{"_dom_classes":["widget-interact"],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"VBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"VBoxView","box_style":"","children":["IPY_MODEL_11b66fd5176b475ba5c69140eae37d62","IPY_MODEL_ed53a993099641bb86c8d7a10fc17bdb","IPY_MODEL_e905c391b1d644bc9f0b59976800f391"],"layout":"IPY_MODEL_3ee2908fbdce4081a6bb10c970fa187d"}},"3ee2908fbdce4081a6bb10c970fa187d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5f1c8af64c254ffdb40ba8499cac6ca8":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"613f8f4d5b0e4816aa55033960822230":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"SliderStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"SliderStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":"","handle_color":null}},"9b72172c1a1c46439102f6059066a39f":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e905c391b1d644bc9f0b59976800f391":{"model_module":"@jupyter-widgets/output","model_module_version":"1.0.0","model_name":"OutputModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/output","_model_module_version":"1.0.0","_model_name":"OutputModel","_view_count":null,"_view_module":"@jupyter-widgets/output","_view_module_version":"1.0.0","_view_name":"OutputView","layout":"IPY_MODEL_f7e38cbf0fa84263916f1c8dbcf4c53c","msg_id":"","outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA5QAAAD7CAYAAAAVfNtaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTiElEQVR4nO3dd1gU1/s28HtpC9IUUBBFEDEiShEromJBsYstRA0CtkTR2DX+jDVR1CT2mkQRv2o01tijYkk0mBgUu0SNxgIoiIAUAdl5/+BlssMCwgouyP25rr2u2TNnZ54d9ug+e8rIBEEQQERERERERFRCWpoOgIiIiIiIiComJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlKVk7ty5kMlkar128+bNkMlkePDgQekGpeTBgweQyWTYvHlzmZ2D6F07c+YMZDIZzpw5887PHRgYCDs7u3d+XiIiIqLypNInlDdu3MDHH3+MWrVqQS6Xw9raGkOGDMGNGzc0HZpG5H1B3717t6ZDoTJ07949fPLJJ7C3t4e+vj5MTEzg6emJFStWICMjQ9PhvVfat2+Pxo0bazoMIiIiojJRqRPKvXv3wt3dHeHh4QgKCsLatWsxfPhwnD59Gu7u7ti3b1+xj/XFF1+o/UXc398fGRkZsLW1Vev1RCVx+PBhODs746effkKvXr2watUqhISEoE6dOpg6dSrGjx+v6RCJiIiIqILQ0XQAmnLv3j34+/vD3t4ev/76K6pXry7uGz9+PNq2bQt/f39cvXoV9vb2hR4nLS0NhoaG0NHRgY6OepdTW1sb2traar2WqCTu37+Pjz76CLa2tjh16hRq1qwp7gsODsbdu3dx+PBhDUZIRERERBVJpe2h/Prrr5Geno7vvvtOkkwCgIWFBTZs2IC0tDQsWbJELM+bJ3nz5k0MHjwY1apVQ5s2bST7lGVkZOCzzz6DhYUFjI2N0bt3bzx58gQymQxz584V6xU0h9LOzg49e/bEuXPn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k8lw//59cbXWNzl69CgmT56Mq1evQkfnrQd5vldKdDU2btxY5H59fX2sWbNG0jVMVNmwnRAREVFxGBgYYMuWLZIervj4eOzYsQNxcXEqN6AnzUlLS0NoaCiTyQLwihARERERaUj79u0lz2vUqAELCwt89913JRoOSmVLeaVdkmJCSURERERUTpRgNhq9hTlz5qjcF5zUw4SSiIgKpDwEK/8KhJcvXxa388/9atCgQYnvb0ZERPQu5V9ch9RX/LWAiYiIiIiIiJQwoSQiIiIiIiK1cMgrkZKKfFsWotL2/Plzcdvc3Fyy7++//xa3XV1dJfv09PQ45JWIiKiSYA8lERERERERqYUJJREREREREamFQ16JiilvOGxKSgpMTU01HA1R2UtKShK383/mX758WWA9gENeiYiIKhP2UBIREREREZFamFASERERERGRWphQEhERERERkVo4h5KIiAqUlZUlbsvl8kLrZWRkSJ6bmZmplBEREdH7iT2UREREREREpBYmlERERERERKQWDnklIqK3kn84bEJCAl69eqWhaIiIiOhdYg8lERERERERqYUJJREREREREamFQ16JiDREV1dX3M7Ozha3LSwsJPUePXokbsfExJR9YERERETFxB5KIiIiIiIiUgsTSiIiIiIiIlILE0oiIiIiIiJSy1sllIsWLYJMJsOECRPEslevXiE4OBjm5uYwMjJC//798fTp07eNk6jCYjuhwpibm4uP58+fiw/l8rzPSN4jLi5OfJQ1XV1d8ZGdnS15KKtSpYrkERsb+07iIyIiIs1TO6G8ePEiNmzYABcXF0n5xIkTcfDgQezatQtnz55FTEwM+vXr99aBElVEbCdERERE9D5TK6FMTU3FkCFD8P3336NatWpieXJyMjZu3IilS5eiY8eOaNq0KUJDQ/H777/jwoULpRY0UUXAdkJERERE7zu1bhsSHByMHj16wNvbG1999ZVYHhkZiezsbHh7e4tljo6OqFOnDiIiItCqVau3j5gqLJlMpukQ3im2E3oTc3Nzcfv58+cFlgO5P07keZe3DSksvvxq1qwpeR4TE6MyLJaIiIjeTyVOKHfs2IFLly7h4sWLKvvi4uKgp6eHqlWrSsotLS0LnU+TmZmJzMxM8XlKSkpJQyIqd0q7nQBsK0RERERU/pRoyOujR48wfvx4bNu2Dfr6+qUS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\n","text/plain":"
"},"metadata":{},"output_type":"display_data"},{"data":{"image/png":"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KLD3BZ8brJxYTwpX3PN/ilNPVIRnBgHpc5LKz0a+fPlSXFacQqM0z00XNbVGSkqK5L25uflrP1PelH+XZWdni8s1a9aUrLO2tpaMSExERETvL46aQERERERERGphQklERERERERqKdNpQ4iIiqM89YQixW6eit0pNdXFE4Bk6gvlOKpWrVrocmno6emJy6ampuKyYhdX5feavB4lFRcXJ/kZEhER0fuLLZRERERERESkFiaUREREREREpBZ2eSWit0axi6cyxW6dyl0+K7u4uDhNh0BERERUKLZQEhERERERkVqYUBIREREREZFamFASERERERGRWphQEhERERFpSEBAAObNm6fpMMqMTCbD7t27y2x/9vb2WLx4sfg+NDQUQUFBJf58QkICatSogYcPH5ZZTCTFhJKIiIiIqIwFBQVBJpNBJpNBT08PDg4OmDNnDl69eiVuc/HiRRw4cACff/65BiNVT2hoKJo0aaJSHhcXh65du779gIpgbm6OgQMHYtasWWWyv0uXLqFt27bQ19dHrVq1sGDBgmK3v3jxIvr27YtatWrBwMAADRo0wJIlSyTbxMXFoV+/fvjggw+gpaWFsWPHquzn6tWr8PPzg729PWQymSTJLhAaGirecwUvJyenNzndEmFCSURERERUDrp06YK4uDjcvHkTEyZMQGhoKL799ltx/dKlS9G7d28YGRlpMMrSEQRBkhQrs7Kyglwuf4sRvV5wcDA2btyIFy9evNF+kpOT0blzZ9jZ2SE6OhrffvstQkND8dNPPxX5mejoaNSoUQMbNmzA1atXMW3aNEydOhXLli0Tt8nKyoKFhQWmT58OV1fXQveTnp6OunXrYv78+bCysiryeI0aNUJcXJz4OnnypPonXEJMKImIiIiIyoFcLoeVlRXs7OwwcuRIeHt7Y8+ePQCA3NxcbN++HT179hS3nzNnDho3bqyynyZNmmDGjBmlPn6/fv3g7+8vKcvJyYG5uTnWr18PAMjLy0NYWBjq1KkDAwMDuLq6Yvv27eL2x48fh0wmw8GDB9G0aVPI5XJs2LABs2fPxsWLF8WWsLVr1wJQ7fL68OFD9O3bF2ZmZjA0NESzZs1w9uxZAMDt27fx8ccfw9LSEkZGRmjevDl+//33Up3joEGD4OLigqysLABAdnY23NzcMHDgQHGbRo0awcbGBrt27SrVvpVt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KJuIiSo41hMiIiIiqixK1UIZEhKCTZs24bfffoOxsbH4vJepqSkMDAxgamqKwYMHY/z48TAzM4OJiQnGjBkDDw8PjlxJlQbrCRERERFVFqVKKFeuXAkgf/4XReHh4QgKCgIALFq0CFpaWvDz80NWVhZ8fHywYsWKMgmW6F3AekJERERElUWpEkpBEF67jb6+PpYvX47ly5erHRTRu4z1hIiIiIgqizeah5KIiIiIiIgqLyaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERBoSEBCAefPmldv+ZTIZdu/e/c7tuyytXbsWVatWlZTJZDLcu3evxPuYMmUKxowZU7aBvSeYUBIRERERlbGgoCDIZDLIZDLo6enBwcEBc+bMwatXr8RtLl68iAMHDuDzzz/XYKTqi4uLQ9euXd/a8UJDQ9GkSZO3djxFEydOxLp163Dnzp1Sf/b+/fvo3r07qlSpgho1amDSpEmS+0DZ8ePHxXtH+XXu3Dlxu8OHD6NVq1YwNjaGhYUF/Pz8VJLkjRs3wtXVFVWqVIG1tTUGDRqE58+fi+vXrl2rcgx9ff1SnV+pEsqVK1fCxcUFJiYmMDExgYeHBw4ePCiuz8zMREhICKpXrw4jIyP4+fnhyZMnpQqI6F3HekJEREQA0KVLF8TFxeHmzZuYMGECQkND8e2334rrly5dit69e8PIyEiDUZZednY2AMDKygpyuVzD0bwd5ubm8PHxwcqVK0v1udzcXHTv3h3Z2dk4ffo01q1bh7Vr12LmzJlFfqZ169aIi4uTvIYMGYI6deqgWbNmAIC7d+/i448/RseOHRETE4PDhw8jISEBn376qbifU6dOYeDAgRg8eDCuXr2Kbdu24a+//sLQoUMlxzMxMZEc699//y3VOZYqoaxZsybmz5+P6Oho/P333+jYsSM+/vhjXL16FQAwbtw47N27F9u2bcOJEyfw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YkVZH4boncZ6QkRERETvgzdOKI8fPy55r6+vj+XLl2P58uVvumt6R1XEaUY03R24MtcTxa6hit0pFbuCAkB6erq4bGNj88bHVTzWixcvJOsU79GMjIxCl1/n+fPn4rJil9oGDRpItlM8dk5OjmSdYpdXxetU2BQjZam4YxW1Tnk7xeurvM7c3FwyIjERERG9v9Sah5KIiIiIiIiICSURERERERGppcyfoaSK4W12O1XuTqrp7qVUsSiOIqo4uqjyfZKcnCwul/Uop8ojmZqbm4vLdnZ24nJ8fLxkO8UuqcVR3E75WLdu3RKX69WrJ1lnZmYmLqempha6XB4Uu6sqH0ux+2qVKlXEZeXzet1Iscoj6xIREdH7iS2UREREREREpBYmlERERERERKQWJpRERERERESkFj5DWcYq4pQZ5a2ynDOfDVVPUdetuOtZ1tda8ZlBZcbGxuKy8lQmxX2uKMqxm5qaisvKzxUqPr/4NqcNSUlJKfJYBgYG4rLiubzNnxcRERG9O9hCSURERERERGphQklERERERERqYZfXMsauX0RS2trahZYrTw2iuF1Rn1GXYrdWQNqV9eXLl+JyXl6eZDt1unMrT8OheCzlc7ayshKX3dzcSn2s8vb06VNxubififK6zMxM5OTklFtcREREVHGwhZKIiIiIiIjUwoSSiIiIiIiI1MIur0RUrhRHDVWkONIoIB0Btay7S2ppSb87U9x/1apVC10uK1WqVCn0uABw//79Mj/e25KcnCwuK5+XqampyjUnIiKi9xP/4hMREREREZFamFASERERERGRWphQEhERERERkVr4DCURlSs9Pb1Cy83NzYt9T0REREQVH1soiYiIiIiISC1MKImIiIiIiEgtTCiJiIiIiIhILUwoiYiIiIiISC1MKImIiIiIiEgtTCiJiIiIiIhILUwoiYiIiIiISC1MKImIiIiIiEgtOpoOQJkgCJoOgahENH2vFhw/JydHo3EQFabgvqwo9SQrK0ujcRAVpuC+1HQ9ISJ6ExUuoUxJSdF0CEQlkpKSAlNTU40eHwC2b9+usRiIXqei1JMVK1ZoLAai19F0PSEiehMyoYJ9LZaXl4fHjx9DEATUrl0bDx48gImJiabD0qjk5GTUqlWL1+L/0/T1EAQBKSkpsLGxgZaW5nqN5+XlITY2Fg0bNuS98f9p+t6oSDR9LSpSPXn8+DGMjY0hk8k0FgdRYSpKPSEiehMVroVSS0sLNWvWRHJyMgDAxMSk0v9jWIDXQkqT16MifJOspaUFW1tbALw3lPF6/If1JP9vClFFVRHqCRHRm+DXYURERERERKQWJpRERERERESklgqbUMrlcsyaNQtyuVzToWgcr4UUr8d/eC2keD3+w2tBREREb0OFG5SHiIiIiIiI3g0VtoWSiIiIiIiIKjYmlERERERERKQWJpRERERERESklgqbUC5fvhz29vbQ19dHy5Yt8ddff2k6pHIXFhaG5s2bw9jYGDVq1ICvry9iY2Ml22RmZiIkJATVq1eHkZER/Pz88OTJEw1F/PbMnz8fMpkMY8eOFcsq67VQxHrCeqKI9YSIiIjetgqZUG7duhXjx4/HrFmzcP78ebi6usLHxwdPnz7VdGjl6sSJEwgJCcGZM2cQERGBnJwcdO7cGWlpaeI248aNw969e7Ft2zacOHECjx8/xqeffqrBqMvfuXPnsGrVKri4uEjKK+O1UMR6wnqiiPWEiIiINEKogFq0aCGEhISI73NzcwUbGxshLCxMg1G9fU+fPhUACCdOnBAEQRASExMFXV1dYdu2beI2169fFwAIUVFRmgqzXKWkpAiOjo5CRESE4OXlJXzxxReCIFTOa6GM9SQf6wnrCREREWlOhWuhzM7ORnR0NLy9vcUyLS0teHt7IyoqSoORvX1JSUkAADMzMwBAdHQ0cnJyJNfGyckJtWvXfm+vTUhICLp37y45Z6ByXgtFrCf/YT1hPSEiIiLN0dF0AMoSEhKQm5sLS0tLSbmlpSVu3Lihoajevry8PIwdOxaenp5o3LgxACA+Ph56enqoWrWqZFtLS0vEx8drIMrytWXLFpw/fx7nzp1TWVfZroUy1pN8rCesJ0RERKRZFS6hpHwhISG4cuUKTp48qelQNOLBgwf44osvEBERAX19fU2HQxUU6wnrCREREWlWhevyam5uDm1tbZVRCJ88eQIrKysNRfV2jR49Gvv27cOxY8dQs2ZNsdzKygrZ2dlITEyUbP8+Xpvo6Gg8ffoU7u7u0NHRgY6ODk6cOIEffvgBOjo6sLS0rDTXojCsJ6wnAOsJERERaV6FSyj19PTQtGlTREZGimV5eXmIjIyEh4eHBiMrf4IgYPTo0di1axeOHj2KOnXqSNY3bdoUurq6kmsTGxuL+/fvv3fX5sMPP8Tly5cRExMjvpo1a4b+/fuLy5XlWhSG9YT1BGA9ISIiIs2rkF1ex48fj8DAQDRr1gwtWrTA4sWLkZaWhuDgYE2HVq5CQkKwadMm/PbbbzA2NhafcTI1NYWBgQFMTU0xePBgjB8/HmZmZjAxMcGYMWPg4eGBVq1aaTj6smVsbCw+E1fA0NAQ1atXF8sry7UoCusJ6wnrCREREWlahUwo/f398ezZM8ycORPx8fFo0qQJDh06pDIAyftm5cqVAID27dtLysPDwxEUFAQAWLRoEbS0tODn54esrCz4+PhgxYoVbznSiqGyXwvWk/aSctaTwvFaEBERUXmSCYIgaDoIIiIiIiIievdUuGcoiYiIiIiI6N3AhJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjU8v8A8zGO6WUQgBYAAAAASUVORK5CYII=\n","text/plain":"
"},"metadata":{},"output_type":"display_data"}]}},"ed53a993099641bb86c8d7a10fc17bdb":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"IntSliderModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"IntSliderModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"IntSliderView","continuous_update":true,"description":"horizontal","description_tooltip":null,"disabled":false,"layout":"IPY_MODEL_5f1c8af64c254ffdb40ba8499cac6ca8","max":999,"min":500,"orientation":"horizontal","readout":true,"readout_format":"d","step":1,"style":"IPY_MODEL_1140e90db2fc4b9c91cbbe362767d65d","value":500}},"f7e38cbf0fa84263916f1c8dbcf4c53c":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}}}}},"nbformat":4,"nbformat_minor":0} +{"cells":[{"cell_type":"markdown","metadata":{"id":"4K8Ug6ICkRtQ"},"source":["# A simple CNN for the edge lover task\n","\n","In this notebook you train a very simple CNN with only 1 kernel to distinguish between images containing vertical and images containing horizontal stripes. To check what pattern is recognized by the learned kernel you will visualize the weights of the kernel as an image. You will see that the CNN learns a useful kernel (either a vertical or horiziontal bar). You can experiment with the code to check the influence of the kernel size, the activation function and the pooling method on the result. \n","\n","\n","**Dataset:** You work with an artficially generatet dataset of greyscale images (50x50 pixel) with 10 vertical or horizontal bars. We want to classify them into whether an art lover, who only loves vertical strips, will like the image (y = 0) or not like the image (y = 1). \n","\n","The idea of the notebook is that you try to understand the provided code by running it, checking the output and playing with it by slightly changing the code and rerunning it. \n","\n","**Content:**\n","* definig and generating the dataset X_train and X_val\n","* visualize samples of the generated images\n","* use keras to train a CNN with only one kernel (5x5 pixel)\n","* visualize the weights of the learned kernel and interpret if it is useful\n","* repeat the last two steps to check if the learned kernel is always the same\n","\n"]},{"cell_type":"markdown","metadata":{"id":"eiB8bJNYn8oP"},"source":["### Imports\n","\n","In the next cell, we load all the required libraries."]},{"cell_type":"code","execution_count":1,"metadata":{"executionInfo":{"elapsed":262,"status":"ok","timestamp":1708798970232,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"2PDLAWRQ7iUB"},"outputs":[{"name":"stderr","output_type":"stream","text":["2024-02-26 18:27:40.302962: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n","2024-02-26 18:27:40.322852: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n","2024-02-26 18:27:40.322866: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n","2024-02-26 18:27:40.323485: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n","2024-02-26 18:27:40.326863: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n","To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n","2024-02-26 18:27:40.691720: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n"]}],"source":["# load required libraries:\n","import numpy as np\n","import matplotlib.pyplot as plt\n","%matplotlib inline\n","plt.style.use('default')\n","\n","import tensorflow.keras\n","from tensorflow.keras.models import Sequential\n","from tensorflow.keras.layers import Dense, Convolution2D, MaxPooling2D, Flatten , Activation\n","from tensorflow.keras.utils import to_categorical"]},{"cell_type":"markdown","metadata":{"id":"Oq0FNqcBpj23"},"source":["### Defining functions to generate images\n","\n","Here we define the function to genere images with vertical and horizontal bars, the arguments of the functions are the size of the image and the number of bars you want to have. The bars are at random positions in the image with a random length. The image is black and white, meaning we have only two values for the pixels, 0 for black and 255 for white."]},{"cell_type":"code","execution_count":2,"metadata":{"executionInfo":{"elapsed":2,"status":"ok","timestamp":1708798970491,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"nqVBlR8yAO9c"},"outputs":[],"source":["#define function to generate image with shape (size, size, 1) with stripes\n","def generate_image_with_bars(size, bar_nr, vertical = True):\n"," img = np.zeros((size,size,1), dtype=\"uint8\")\n"," for i in range(0,bar_nr):\n"," x,y = np.random.randint(0,size,2)\n"," l = int(np.random.randint(y,size,1)[0])\n"," if (vertical):\n"," img[y:l,x,0]=255\n"," else:\n"," img[x,y:l,0]=255\n"," return img"]},{"cell_type":"markdown","metadata":{"id":"bUmdGzQLdqzB"},"source":["Let's have a look at the generated images. We choose a size of 50x50 pixels and set the number of bars in the image to 10."]},{"cell_type":"code","execution_count":3,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":345},"executionInfo":{"elapsed":301,"status":"ok","timestamp":1708798970791,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"EccLz0FlXGuU","outputId":"5cccc101-ab1f-4c8f-8125-1225918ed827"},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAApsAAAFICAYAAAAf0DV4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAaK0lEQVR4nO3dbWid9f0/8M+pbY43bU5vnImlzW8FxSLSjlWrwQeCzSxDRG0f+GCw4mRDjdKbJ7MP1CeDFAWdincgc0+mHR1UUXBbVzUyiF2NFuvNigOZgZp0wnKSdTYtzff/YH/PFk23JD3fnJu8XvABc50rVz5fr/bTd65zrnMKKaUUAACQwbxaNwAAQPMSNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyGZ+rgM/+eST8fDDD8fg4GCsXbs2nnjiiVi/fv3//L7x8fE4evRoLFq0KAqFQq72gDkspRSjo6OxfPnymDevfn/nnukcjTBLgbymNUdTBrt3704tLS3pF7/4Rfrwww/Tj3/847R48eI0NDT0P793YGAgRYRSSmWvgYGBHCOwKs5mjqZkliqlZqemMkezhM3169en7u7uytenT59Oy5cvTz09Pf/ze4eHh2v+P04pNTdqeHg4xwisirOZoymZpUqp2ampzNGqP3908uTJ6O/vj66ursq2efPmRVdXV/T19X1j/7GxsRgZGanU6OhotVsCmFS9Pr083TkaYZYCtTGVOVr1sPnFF1/E6dOno62tbcL2tra2GBwc/Mb+PT09USqVKrVy5cpqtwTQUKY7RyPMUqB+1fyV8Tt37oxyuVypgYGBWrcE0HDMUqBeVf1u9AsvvDDOOeecGBoamrB9aGgo2tvbv7F/sViMYrFY7TYAGtZ052iEWQrUr6pf2WxpaYl169bF/v37K9vGx8dj//790dnZWe0fB9B0zFGgmWR5n80dO3bEli1b4sorr4z169fHz3/+8zh+/HjcfvvtOX4cQNMxR4FmkSVs3nbbbfG3v/0tHnjggRgcHIzvfOc78dvf/vYbL3YHYHLmKNAsCimlVOsm/tPIyEiUSqVatwHMAeVyOVpbW2vdRhZmKTAbpjJHa343OgAAzUvYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyGZ+rRtgdqSUvrGtUCjUoJM8JltfRHOtEQAakSubAABkI2wCAJCNsAkAQDbCJgAA2QibAABk4250AIAmcaZ3Z5nMbL1jiyubAABkI2wCAJCNsAkAQDbCJgAA2QibAABk4250AIAmMVt3mE+HK5sAAGQjbAIAkI2wCQBANtMOm2+99VbcdNNNsXz58igUCvHSSy9NeDylFA888EBcfPHFcd5550VXV1d88skn1eoXoOGZo8BcMu2wefz48Vi7dm08+eSTkz7+0EMPxeOPPx7PPPNMHDhwIC644ILYuHFjnDhx4qybBWgG5igwp6SzEBFp7969la/Hx8dTe3t7evjhhyvbhoeHU7FYTC+++OKUjlkul1NEqCrXmc5fs9R/+zOq1JmqXC5PbdhlFFH9OZqSWaqUmp2ayhyt6ms2P/300xgcHIyurq7KtlKpFFdffXX09fVV80cBNCVzFGg2VX2fzcHBwYiIaGtrm7C9ra2t8tjXjY2NxdjYWOXrkZGRarYE0FBmMkcjzFKgftX8bvSenp4olUqVWrlyZa1bAmg4ZilQr6oaNtvb2yMiYmhoaML2oaGhymNft3PnziiXy5UaGBioZksADWUmczTCLAXqV1XD5qpVq6K9vT32799f2TYyMhIHDhyIzs7OSb+nWCxGa2vrhAKYq2YyRyPMUqB+Tfs1m//4xz/iL3/5S+XrTz/9NA4dOhRLly6Njo6O2LZtW/zsZz+LSy+9NFatWhX3339/LF++PG655ZZq9g3QsMxRYE6Z1nt0pJTeeOONSW9937JlS+VtO+6///7U1taWisVi2rBhQzpy5Ii366hxTabWPeVeX7OtUVW/avXWR7nnaEpmqVJqdmoqc7SQUkpRR0ZGRqJUKtW6jaYz2WkuFAo16CSPM/0xbqY1Un3lcrlpn242S4HZMJU5WvO70QEAaF7CJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2cyvdQMA8JWUUq1bgLpTKBRq3cJZcWUTAIBshE0AALIRNgEAyEbYBAAgG2ETAIBs3I3eZNzJCTSyRr/rFvgmVzYBAMhG2AQAIBthEwCAbIRNAACycYMQ0HDOdCOcm0sA6o8rmwAAZCNsAgCQjbAJAEA2wiYAANlMK2z29PTEVVddFYsWLYqLLroobrnlljhy5MiEfU6cOBHd3d2xbNmyWLhwYWzevDmGhoaq2jRAozJHgblmWmGzt7c3uru74+233459+/bFqVOn4oYbbojjx49X9tm+fXu88sorsWfPnujt7Y2jR4/Gpk2bqt44QCOa7TlaLpcjpaSU+i9FZuksHDt2LEVE6u3tTSmlNDw8nBYsWJD27NlT2efjjz9OEZH6+vqmdMxyuZwiQs2wpqPWvc7Gumvdl6rv810ul6f1dyaHHHM0pX/P0npYI9S7Ws+0Rq6pzJizes1muVyOiIilS5dGRER/f3+cOnUqurq6KvusXr06Ojo6oq+vb9JjjI2NxcjIyIQCmCuqMUcjzFKgfs04bI6Pj8e2bdvi2muvjSuuuCIiIgYHB6OlpSUWL148Yd+2trYYHByc9Dg9PT1RKpUqtXLlypm2BNBQqjVHI8xSoH7NOGx2d3fHBx98ELt37z6rBnbu3BnlcrlSAwMDZ3U8gEZRrTkaYZYC9WtGH1d5zz33xKuvvhpvvfVWrFixorK9vb09Tp48GcPDwxN+Kx8aGor29vZJj1UsFqNYLM6kDYCGVc05GnHmWVoqlaraN8B0TevKZkop7rnnnti7d2+8/vrrsWrVqgmPr1u3LhYsWBD79++vbDty5Eh89tln0dnZWZ2OARqYOQrMNdO6stnd3R0vvPBCvPzyy7Fo0aLK64dKpVKcd955USqV4o477ogdO3bE0qVLo7W1Ne69997o7OyMa665JssCABqJOQrMOdV4a4Dnn3++ss+XX36Z7r777rRkyZJ0/vnnp1tvvTV9/vnnU/4Z3vro7Koa57MRay6sUVX/fNfibYHO1Es152hKZqlSanZqKnO08P+HX90YGRnxGqOzMJ3TWSgUMnYyu8607mZaI/9WrfNdLpejtbW1Gi3VHbMUmA1TmaM+Gx0AgGxmdDc6AACNoRpPYp/NM4WubAIAkI2wCQBANsImAADZCJsAAGQjbAIAkI270QEAmlit33PalU0AALIRNgEAyEbYBAAgG2ETAIBs3CAEQFVU4yPxoJ7U+saaZuHKJgAA2QibAABkI2wCAJCNsAkAQDbCJgAA2bgbHYCqcOcuMBlXNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgGx9XCQA0rJRSrVuICB/X+t+4sgkAQDbCJgAA2QibAABkI2wCAJCNsAkAQDbuRq8jZ7qjzh1uADA5/0bWP1c2AQDIRtgEACAbYRMAgGyETQAAshE2AQDIxt3oNAV3IwJAfXJlEwCAbIRNAACyETYBAMhmWmHz6aefjjVr1kRra2u0trZGZ2dnvPbaa5XHT5w4Ed3d3bFs2bJYuHBhbN68OYaGhqreNECjMkeBuWZaYXPFihWxa9eu6O/vj3feeSeuv/76uPnmm+PDDz+MiIjt27fHK6+8Env27Ine3t44evRobNq0KUvjTK5QKExaQH0wR4E5J52lJUuWpOeeey4NDw+nBQsWpD179lQe+/jjj1NEpL6+vikfr1wup4iYk3UmuY5d6/UqNdOq1t+Vcrk85dmUU7XnaEpze5YqpWavpjJHZ/yazdOnT8fu3bvj+PHj0dnZGf39/XHq1Kno6uqq7LN69ero6OiIvr6+Mx5nbGwsRkZGJhTAXFCtORphlgL1a9ph8/Dhw7Fw4cIoFotx5513xt69e+Pyyy+PwcHBaGlpicWLF0/Yv62tLQYHB894vJ6eniiVSpVauXLltBcB0EiqPUcjzFKgfk07bF522WVx6NChOHDgQNx1112xZcuW+Oijj2bcwM6dO6NcLldqYGBgxscCaATVnqMRZilQv6b9CUItLS1xySWXRETEunXr4uDBg/HYY4/FbbfdFidPnozh4eEJv5UPDQ1Fe3v7GY9XLBajWCxOv3OABlXtORphlgL166zfZ3N8fDzGxsZi3bp1sWDBgti/f3/lsSNHjsRnn30WnZ2dZ/tjoK6klCYtZkezveuCOQo0s2ld2dy5c2d8//vfj46OjhgdHY0XXngh3nzzzfjd734XpVIp7rjjjtixY0csXbo0Wltb4957743Ozs645pprcvUP0FDMUWCumVbYPHbsWPzwhz+Mzz//PEqlUqxZsyZ+97vfxfe+972IiHj00Udj3rx5sXnz5hgbG4uNGzfGU089laVxgEZkjgJzTSHV2XN/IyMjUSqVat1GTZzpVFTj6cHJjt3ITzvWWs5zxewpl8vR2tpa6zaymMuzFJg9U5mjPhsdAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgm/m1bgAAYC5JKdW6hWkrFAoz/l5XNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyMbd6AAAs+hs7uxuRK5sAgCQjbAJAEA2wiYAANkImwAAZCNsAgCQjbAJAEA2wiYAANkImwAAZCNsAgCQjbAJAEA2wiYAANkImwAAZCNsAgCQjbAJAEA2ZxU2d+3aFYVCIbZt21bZduLEieju7o5ly5bFwoULY/PmzTE0NHS2fQI0JXMUaHYzDpsHDx6MZ599NtasWTNh+/bt2+OVV16JPXv2RG9vbxw9ejQ2bdp01o0CNBtzFJgT0gyMjo6mSy+9NO3bty9dd911aevWrSmllIaHh9OCBQvSnj17Kvt+/PHHKSJSX1/flI5dLpdTRKRyufyNxyKiqetMch271utt5Mp5rtTs1WRzZrbknKMp/XuWKqVUzprKHJ3Rlc3u7u648cYbo6ura8L2/v7+OHXq1ITtq1evjo6Ojujr65vJjwJoSuYoMFfMn+437N69O9599904ePDgNx4bHByMlpaWWLx48YTtbW1tMTg4OOnxxsbGYmxsrPL1yMjIdFsCaCjVnqMRZilQv6Z1ZXNgYCC2bt0av/rVr+Lcc8+tSgM9PT1RKpUqtXLlyqocF6Ae5ZijEWYpUMem8xqjvXv3pohI55xzTqUiIhUKhXTOOeekP/zhDyki0t///vcJ39fR0ZEeeeSRSY954sSJVC6XKzUwMHDG1wBEHbw2IWedSa5j13q9jVw5z5WavarFazZzzNGUzjxLlVIqZ01ljk7rafQNGzbE4cOHJ2y7/fbbY/Xq1fHTn/40Vq5cGQsWLIj9+/fH5s2bIyLiyJEj8dlnn0VnZ+ekxywWi1EsFqfTBkDDyjFHI8xSaGYppSnvWygUMnYyM9MKm4sWLYorrrhiwrYLLrggli1bVtl+xx13xI4dO2Lp0qXR2toa9957b3R2dsY111xTva4BGpQ5Csw1075B6H959NFHY968ebF58+YYGxuLjRs3xlNPPVXtHwPQtMxRoJkU0nSuzc6CkZGRKJVKUS6Xo7W1dcJj9XhpuJrOdCqqse7Jjt3s/z9zynmumD2TzZlm8dUsBRpfPT+NPpU56rPRAQDIRtgEACCbqr9mEwBoLnX2irsJ5sLLlxp9ja5sAgCQjbAJAEA2wiYAANkImwAAZCNsAgCQjbvR60ij320GQHPy7xNnw5VNAACyETYBAMhG2AQAIBthEwCAbOr2BqFSqVTrFqpiso/48kLrxuccAsDUuLIJAEA2wiYAANkImwAAZCNsAgCQjbAJAEA2dXs3erOol7uW66UPAGBucWUTAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALIRNgEAyEbYBAAgG2ETAIBshE0AALKpu7CZUqp1C8Ac0czzppnXBtSPqcyaugubo6OjtW4BmCOaed4089qA+jGVWVNIdfbr7/j4eBw9ejQWLVoUo6OjsXLlyhgYGIjW1tZat5bFyMhIU6/R+hpfM64xpRSjo6OxfPnymDev7n7nroqvZmlKKTo6Oprq/H1dM/4Z/U/W1/iacY3TmaPzZ6mnKZs3b16sWLEiIiIKhUJERLS2tjbNyTmTZl+j9TW+ZltjqVSqdQtZfTVLR0ZGIqL5zt9kmn2N1tf4mm2NU52jzfkrPQAAdUHYBAAgm7oOm8ViMR588MEoFou1biWbZl+j9TW+ubDGZjYXzl+zr9H6Gt9cWON/U3c3CAEA0Dzq+somAACNTdgEACAbYRMAgGyETQAAsqnrsPnkk0/Gt7/97Tj33HPj6quvjj/96U+1bmlG3nrrrbjpppti+fLlUSgU4qWXXprweEopHnjggbj44ovjvPPOi66urvjkk09q0+wM9PT0xFVXXRWLFi2Kiy66KG655ZY4cuTIhH1OnDgR3d3dsWzZsli4cGFs3rw5hoaGatTx9D399NOxZs2ayhvydnZ2xmuvvVZ5vNHX93W7du2KQqEQ27Ztq2xrtjXOFeZoYzBHG399X2eO/lvdhs1f//rXsWPHjnjwwQfj3XffjbVr18bGjRvj2LFjtW5t2o4fPx5r166NJ598ctLHH3rooXj88cfjmWeeiQMHDsQFF1wQGzdujBMnTsxypzPT29sb3d3d8fbbb8e+ffvi1KlTccMNN8Tx48cr+2zfvj1eeeWV2LNnT/T29sbRo0dj06ZNNex6elasWBG7du2K/v7+eOedd+L666+Pm2++OT788MOIaPz1/aeDBw/Gs88+G2vWrJmwvZnWOFeYo+ZoPTFHm2uN05Lq1Pr161N3d3fl69OnT6fly5ennp6eGnZ19iIi7d27t/L1+Ph4am9vTw8//HBl2/DwcCoWi+nFF1+sQYdn79ixYykiUm9vb0rpX+tZsGBB2rNnT2Wfjz/+OEVE6uvrq1WbZ23JkiXpueeea6r1jY6OpksvvTTt27cvXXfddWnr1q0ppeY9h83OHDVH65052phrnK66vLJ58uTJ6O/vj66ursq2efPmRVdXV/T19dWws+r79NNPY3BwcMJaS6VSXH311Q271nK5HBERS5cujYiI/v7+OHXq1IQ1rl69Ojo6OhpyjadPn47du3fH8ePHo7Ozs6nW193dHTfeeOOEtUQ03zmcC8xRc7SemaP/0qhrnK75tW5gMl988UWcPn062traJmxva2uLP//5zzXqKo/BwcGIiEnX+tVjjWR8fDy2bdsW1157bVxxxRUR8a81trS0xOLFiyfs22hrPHz4cHR2dsaJEydi4cKFsXfv3rj88svj0KFDTbG+3bt3x7vvvhsHDx78xmPNcg7nEnO0cf98mqP/1mjrM0cnV5dhk8bV3d0dH3zwQfzxj3+sdStVd9lll8WhQ4eiXC7Hb37zm9iyZUv09vbWuq2qGBgYiK1bt8a+ffvi3HPPrXU7MKeZo43JHD2zunwa/cILL4xzzjnnG3doDQ0NRXt7e426yuOr9TTDWu+555549dVX44033ogVK1ZUtre3t8fJkydjeHh4wv6NtsaWlpa45JJLYt26ddHT0xNr166Nxx57rCnW19/fH8eOHYvvfve7MX/+/Jg/f3709vbG448/HvPnz4+2traGX+NcY4425lrN0eEJ+zfS+szRM6vLsNnS0hLr1q2L/fv3V7aNj4/H/v37o7Ozs4adVd+qVauivb19wlpHRkbiwIEDDbPWlFLcc889sXfv3nj99ddj1apVEx5ft25dLFiwYMIajxw5Ep999lnDrHEy4+PjMTY21hTr27BhQxw+fDgOHTpUqSuvvDJ+8IMfVP670dc415ij5mgjMEcba40zVus7lM5k9+7dqVgspl/+8pfpo48+Sj/5yU/S4sWL0+DgYK1bm7bR0dH03nvvpffeey9FRHrkkUfSe++9l/7617+mlFLatWtXWrx4cXr55ZfT+++/n26++ea0atWq9OWXX9a486m56667UqlUSm+++Wb6/PPPK/XPf/6zss+dd96ZOjo60uuvv57eeeed1NnZmTo7O2vY9fTcd999qbe3N3366afp/fffT/fdd18qFArp97//fUqp8dc3mf+8izKl5lxjszNHzdF6Yo425xqnom7DZkopPfHEE6mjoyO1tLSk9evXp7fffrvWLc3IG2+8kSLiG7Vly5aU0r/etuP+++9PbW1tqVgspg0bNqQjR47UtulpmGxtEZGef/75yj5ffvlluvvuu9OSJUvS+eefn2699db0+eef167pafrRj36U/u///i+1tLSkb33rW2nDhg2VAZlS469vMl8fks24xrnAHG0M5mjjr28y5ui/FFJKafauowIAMJfU5Ws2AQBoDsImAADZCJsAAGQjbAIAkI2wCQBANsImAADZCJsAAGQjbAIAkI2wCQBANsImAADZCJsAAGQjbAIAkM3/A5BsxQRMB548AAAAAElFTkSuQmCC","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# have a look on two generated images\n","plt.figure(figsize=(8,8))\n","plt.subplot(1,2,1)\n","img=generate_image_with_bars(50,10, vertical=True)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.subplot(1,2,2)\n","img=generate_image_with_bars(50,10, vertical=False)\n","plt.imshow(img[:,:,0],cmap='gray')\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"Y8gSwmyaevTk"},"source":["### Make a train and validation dataset of images with vertical and horizontal images\n","Now, let's make a train dataset *X_train* with 1000 images (500 images with vertical and 500 images with horizontal bars). We normalize the images values to be between 0 and 1 by dividing all values with 255. We create a secont dataste *X_val* with exactly the same properties to validate the training of the CNN."]},{"cell_type":"code","execution_count":4,"metadata":{"executionInfo":{"elapsed":573,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"63omuptEILKu"},"outputs":[],"source":["pixel=50 # define height and width of images\n","num_images_train = 1000 #Number of training examples (divisible by 2)\n","num_images_val = 1000 #Number of training examples (divisible by 2)\n","\n","# generate training data with vertical edges\n","X_train =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_train[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_train[i]=generate_image_with_bars(pixel,10, vertical=False)\n","\n","# generate validation data with vertical edges\n","X_val =np.zeros((num_images_train,pixel,pixel,1))\n","for i in range(0, num_images_train//2):\n"," X_val[i]=generate_image_with_bars(pixel,10)\n","# ... with horizontal\n","for i in range(num_images_train//2, num_images_train):\n"," X_val[i]=generate_image_with_bars(pixel,10, vertical=False)"]},{"cell_type":"code","execution_count":5,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":16,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"kvAEj2e4xIoK","outputId":"864bd112-e430-4e1c-e6a2-2bfd4ce58ee5"},"outputs":[{"name":"stdout","output_type":"stream","text":["(1000, 50, 50, 1)\n","(1000, 50, 50, 1)\n"]}],"source":["# normalize the data to be between 0 and 1\n","X_train=X_train/255\n","X_val=X_val/255\n","\n","print(X_train.shape)\n","print(X_val.shape)"]},{"cell_type":"markdown","metadata":{"id":"ajNnUoYyi7IQ"},"source":["Here we make the labels for the art lover, 0 means he likes the image (vertical bars) and 1 means that he doesn't like it (horizontal stripes). We one hot encode the labels because we want to use two outputs in our network."]},{"cell_type":"code","execution_count":6,"metadata":{"executionInfo":{"elapsed":15,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"41-L5hM8S_ZP"},"outputs":[],"source":["# create class labels\n","y = np.array([[0],[1]])\n","Y_train = np.repeat(y, num_images_train //2)\n","Y_val = np.repeat(y, num_images_train //2)\n","\n","# one-hot-encoding\n","Y_train = to_categorical(Y_train,2)\n","Y_val = to_categorical(Y_val,2)"]},{"cell_type":"markdown","metadata":{"id":"uZpr0h-VvatF"},"source":["## Defining the CNN\n","\n","Here we define the CNN:\n","\n","- we use only one kernel with a size of 5x5 pixels \n","- then we apply a linar activation function \n","- the maxpooling layer takes the maximum of the whole activation map to predict the probability (output layer with softmax) if the art lover will like the image\n","\n","As loss we use the categorical_crossentropy and we train the model with a batchsize of 64 images per update.\n"]},{"cell_type":"code","execution_count":7,"metadata":{"executionInfo":{"elapsed":14,"status":"ok","timestamp":1708798971361,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"1Dfg1h2rUifd"},"outputs":[{"name":"stderr","output_type":"stream","text":["2024-02-26 18:27:41.869216: I external/local_xla/xla/stream_executor/cuda/cuda_executor.cc:901] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355\n","2024-02-26 18:27:41.893729: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2256] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.\n","Skipping registering GPU devices...\n"]}],"source":["model = Sequential()\n","\n","model.add(Convolution2D(1,(5,5),padding='same',input_shape=(pixel,pixel,1)))\n","model.add(Activation('linear'))\n","\n","# take the max over all values in the activation map\n","model.add(MaxPooling2D(pool_size=(pixel,pixel)))\n","model.add(Flatten())\n","model.add(Dense(2))\n","model.add(Activation('softmax'))\n","\n","# compile model and initialize weights\n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n"]},{"cell_type":"code","execution_count":8,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":15,"status":"ok","timestamp":1708798971362,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"r6eqV0TRU0_n","outputId":"2c6833cb-ca10-422c-bbda-56102a866011"},"outputs":[{"name":"stdout","output_type":"stream","text":["Model: \"sequential\"\n","_________________________________________________________________\n"," Layer (type) Output Shape Param # \n","=================================================================\n"," conv2d (Conv2D) (None, 50, 50, 1) 26 \n"," \n"," activation (Activation) (None, 50, 50, 1) 0 \n"," \n"," max_pooling2d (MaxPooling2 (None, 1, 1, 1) 0 \n"," D) \n"," \n"," flatten (Flatten) (None, 1) 0 \n"," \n"," dense (Dense) (None, 2) 4 \n"," \n"," activation_1 (Activation) (None, 2) 0 \n"," \n","=================================================================\n","Total params: 30 (120.00 Byte)\n","Trainable params: 30 (120.00 Byte)\n","Non-trainable params: 0 (0.00 Byte)\n","_________________________________________________________________\n"]}],"source":["# let's summarize the CNN architectures along with the number of model weights\n","model.summary()\n"]},{"cell_type":"code","execution_count":9,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":38560,"status":"ok","timestamp":1708799009916,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"Sc-BYd8kVCx0","outputId":"73316fb0-5762-4fae-a012-4bfc64797edc","scrolled":false},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/150\n"]},{"name":"stdout","output_type":"stream","text":["16/16 [==============================] - 0s 7ms/step - loss: 0.9130 - accuracy: 0.5000 - val_loss: 0.8694 - val_accuracy: 0.5000\n","Epoch 2/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.8381 - accuracy: 0.5000 - val_loss: 0.8016 - val_accuracy: 0.5000\n","Epoch 3/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.7743 - accuracy: 0.5000 - val_loss: 0.7448 - val_accuracy: 0.5000\n","Epoch 4/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.7219 - accuracy: 0.5000 - val_loss: 0.6982 - val_accuracy: 0.5000\n","Epoch 5/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6784 - accuracy: 0.5000 - val_loss: 0.6601 - val_accuracy: 0.5000\n","Epoch 6/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6429 - accuracy: 0.5000 - val_loss: 0.6302 - val_accuracy: 0.5000\n","Epoch 7/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6144 - accuracy: 0.5000 - val_loss: 0.6072 - val_accuracy: 0.5000\n","Epoch 8/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5928 - accuracy: 0.5000 - val_loss: 0.5883 - val_accuracy: 0.5000\n","Epoch 9/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.5753 - accuracy: 0.5000 - val_loss: 0.5727 - val_accuracy: 0.5000\n","Epoch 10/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5605 - accuracy: 0.5080 - val_loss: 0.5583 - val_accuracy: 0.5250\n","Epoch 11/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5470 - accuracy: 0.5340 - val_loss: 0.5448 - val_accuracy: 0.5280\n","Epoch 12/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5341 - accuracy: 0.5570 - val_loss: 0.5325 - val_accuracy: 0.5530\n","Epoch 13/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5223 - accuracy: 0.6040 - val_loss: 0.5208 - val_accuracy: 0.6200\n","Epoch 14/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5110 - accuracy: 0.6860 - val_loss: 0.5096 - val_accuracy: 0.7410\n","Epoch 15/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5001 - accuracy: 0.7920 - val_loss: 0.4983 - val_accuracy: 0.8290\n","Epoch 16/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4887 - accuracy: 0.8600 - val_loss: 0.4865 - val_accuracy: 0.8820\n","Epoch 17/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4770 - accuracy: 0.8880 - val_loss: 0.4748 - val_accuracy: 0.8940\n","Epoch 18/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4653 - accuracy: 0.9100 - val_loss: 0.4631 - val_accuracy: 0.9260\n","Epoch 19/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4537 - accuracy: 0.9360 - val_loss: 0.4513 - val_accuracy: 0.9480\n","Epoch 20/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4420 - accuracy: 0.9460 - val_loss: 0.4395 - val_accuracy: 0.9500\n","Epoch 21/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4303 - accuracy: 0.9480 - val_loss: 0.4277 - val_accuracy: 0.9510\n","Epoch 22/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4188 - accuracy: 0.9570 - val_loss: 0.4162 - val_accuracy: 0.9580\n","Epoch 23/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.4073 - accuracy: 0.9640 - val_loss: 0.4048 - val_accuracy: 0.9600\n","Epoch 24/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3960 - accuracy: 0.9670 - val_loss: 0.3935 - val_accuracy: 0.9860\n","Epoch 25/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3848 - accuracy: 0.9820 - val_loss: 0.3824 - val_accuracy: 0.9870\n","Epoch 26/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3738 - accuracy: 0.9980 - val_loss: 0.3714 - val_accuracy: 0.9960\n","Epoch 27/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3632 - accuracy: 0.9980 - val_loss: 0.3610 - val_accuracy: 0.9970\n","Epoch 28/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3530 - accuracy: 0.9980 - val_loss: 0.3508 - val_accuracy: 0.9980\n","Epoch 29/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3429 - accuracy: 0.9980 - val_loss: 0.3407 - val_accuracy: 0.9980\n","Epoch 30/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3331 - accuracy: 0.9980 - val_loss: 0.3308 - val_accuracy: 0.9990\n","Epoch 31/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3235 - accuracy: 0.9980 - val_loss: 0.3211 - val_accuracy: 0.9990\n","Epoch 32/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3139 - accuracy: 0.9980 - val_loss: 0.3116 - val_accuracy: 0.9990\n","Epoch 33/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3046 - accuracy: 0.9980 - val_loss: 0.3023 - val_accuracy: 0.9990\n","Epoch 34/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2956 - accuracy: 0.9980 - val_loss: 0.2933 - val_accuracy: 0.9990\n","Epoch 35/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2868 - accuracy: 0.9980 - val_loss: 0.2846 - val_accuracy: 0.9990\n","Epoch 36/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2782 - accuracy: 0.9980 - val_loss: 0.2760 - val_accuracy: 0.9990\n","Epoch 37/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2698 - accuracy: 0.9980 - val_loss: 0.2676 - val_accuracy: 0.9990\n","Epoch 38/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2615 - accuracy: 0.9980 - val_loss: 0.2593 - val_accuracy: 0.9990\n","Epoch 39/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2534 - accuracy: 0.9980 - val_loss: 0.2512 - val_accuracy: 0.9990\n","Epoch 40/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2455 - accuracy: 0.9990 - val_loss: 0.2433 - val_accuracy: 0.9990\n","Epoch 41/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2378 - accuracy: 1.0000 - val_loss: 0.2357 - val_accuracy: 0.9990\n","Epoch 42/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2302 - accuracy: 1.0000 - val_loss: 0.2283 - val_accuracy: 0.9990\n","Epoch 43/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2230 - accuracy: 1.0000 - val_loss: 0.2210 - val_accuracy: 0.9990\n","Epoch 44/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2159 - accuracy: 1.0000 - val_loss: 0.2140 - val_accuracy: 0.9990\n","Epoch 45/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2090 - accuracy: 1.0000 - val_loss: 0.2071 - val_accuracy: 0.9990\n","Epoch 46/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2023 - accuracy: 1.0000 - val_loss: 0.2005 - val_accuracy: 0.9990\n","Epoch 47/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1957 - accuracy: 1.0000 - val_loss: 0.1941 - val_accuracy: 0.9990\n","Epoch 48/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1894 - accuracy: 1.0000 - val_loss: 0.1878 - val_accuracy: 0.9990\n","Epoch 49/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1832 - accuracy: 1.0000 - val_loss: 0.1818 - val_accuracy: 0.9990\n","Epoch 50/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1774 - accuracy: 1.0000 - val_loss: 0.1759 - val_accuracy: 0.9990\n","Epoch 51/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1715 - accuracy: 1.0000 - val_loss: 0.1703 - val_accuracy: 0.9990\n","Epoch 52/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1660 - accuracy: 1.0000 - val_loss: 0.1648 - val_accuracy: 0.9990\n","Epoch 53/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1606 - accuracy: 1.0000 - val_loss: 0.1595 - val_accuracy: 0.9990\n","Epoch 54/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1554 - accuracy: 1.0000 - val_loss: 0.1544 - val_accuracy: 0.9990\n","Epoch 55/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1503 - accuracy: 1.0000 - val_loss: 0.1494 - val_accuracy: 0.9990\n","Epoch 56/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1455 - accuracy: 1.0000 - val_loss: 0.1446 - val_accuracy: 0.9990\n","Epoch 57/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1408 - accuracy: 1.0000 - val_loss: 0.1400 - val_accuracy: 0.9990\n","Epoch 58/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1362 - accuracy: 1.0000 - val_loss: 0.1356 - val_accuracy: 0.9990\n","Epoch 59/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1318 - accuracy: 1.0000 - val_loss: 0.1313 - val_accuracy: 0.9990\n","Epoch 60/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1276 - accuracy: 1.0000 - val_loss: 0.1271 - val_accuracy: 0.9990\n","Epoch 61/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1235 - accuracy: 1.0000 - val_loss: 0.1231 - val_accuracy: 0.9990\n","Epoch 62/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1196 - accuracy: 1.0000 - val_loss: 0.1192 - val_accuracy: 0.9990\n","Epoch 63/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1158 - accuracy: 1.0000 - val_loss: 0.1156 - val_accuracy: 0.9990\n","Epoch 64/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1122 - accuracy: 1.0000 - val_loss: 0.1121 - val_accuracy: 0.9990\n","Epoch 65/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1088 - accuracy: 1.0000 - val_loss: 0.1087 - val_accuracy: 0.9990\n","Epoch 66/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1054 - accuracy: 1.0000 - val_loss: 0.1054 - val_accuracy: 0.9990\n","Epoch 67/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.1022 - accuracy: 1.0000 - val_loss: 0.1023 - val_accuracy: 0.9990\n","Epoch 68/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0992 - accuracy: 1.0000 - val_loss: 0.0992 - val_accuracy: 0.9990\n","Epoch 69/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.0962 - accuracy: 1.0000 - val_loss: 0.0963 - val_accuracy: 0.9990\n","Epoch 70/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0933 - accuracy: 1.0000 - val_loss: 0.0935 - val_accuracy: 0.9990\n","Epoch 71/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0906 - accuracy: 1.0000 - val_loss: 0.0908 - val_accuracy: 0.9990\n","Epoch 72/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0879 - accuracy: 1.0000 - val_loss: 0.0882 - val_accuracy: 0.9990\n","Epoch 73/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0853 - accuracy: 1.0000 - val_loss: 0.0857 - val_accuracy: 0.9990\n","Epoch 74/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0829 - accuracy: 1.0000 - val_loss: 0.0833 - val_accuracy: 0.9990\n","Epoch 75/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0805 - accuracy: 1.0000 - val_loss: 0.0809 - val_accuracy: 0.9990\n","Epoch 76/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0782 - accuracy: 1.0000 - val_loss: 0.0787 - val_accuracy: 0.9990\n","Epoch 77/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0760 - accuracy: 1.0000 - val_loss: 0.0765 - val_accuracy: 0.9990\n","Epoch 78/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0738 - accuracy: 1.0000 - val_loss: 0.0744 - val_accuracy: 0.9990\n","Epoch 79/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0718 - accuracy: 1.0000 - val_loss: 0.0724 - val_accuracy: 0.9990\n","Epoch 80/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0698 - accuracy: 1.0000 - val_loss: 0.0704 - val_accuracy: 0.9990\n","Epoch 81/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0679 - accuracy: 1.0000 - val_loss: 0.0686 - val_accuracy: 0.9990\n","Epoch 82/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0660 - accuracy: 1.0000 - val_loss: 0.0667 - val_accuracy: 0.9990\n","Epoch 83/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0642 - accuracy: 1.0000 - val_loss: 0.0650 - val_accuracy: 0.9990\n","Epoch 84/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0625 - accuracy: 1.0000 - val_loss: 0.0633 - val_accuracy: 0.9990\n","Epoch 85/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0608 - accuracy: 1.0000 - val_loss: 0.0616 - val_accuracy: 0.9990\n","Epoch 86/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0592 - accuracy: 1.0000 - val_loss: 0.0601 - val_accuracy: 0.9990\n","Epoch 87/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0577 - accuracy: 1.0000 - val_loss: 0.0585 - val_accuracy: 0.9990\n","Epoch 88/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0562 - accuracy: 1.0000 - val_loss: 0.0570 - val_accuracy: 0.9990\n","Epoch 89/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0547 - accuracy: 1.0000 - val_loss: 0.0556 - val_accuracy: 0.9990\n","Epoch 90/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0533 - accuracy: 1.0000 - val_loss: 0.0542 - val_accuracy: 0.9990\n","Epoch 91/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0520 - accuracy: 1.0000 - val_loss: 0.0529 - val_accuracy: 0.9990\n","Epoch 92/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0507 - accuracy: 1.0000 - val_loss: 0.0516 - val_accuracy: 0.9990\n","Epoch 93/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0494 - accuracy: 1.0000 - val_loss: 0.0503 - val_accuracy: 0.9990\n","Epoch 94/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0482 - accuracy: 1.0000 - val_loss: 0.0491 - val_accuracy: 0.9990\n","Epoch 95/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0470 - accuracy: 1.0000 - val_loss: 0.0479 - val_accuracy: 0.9990\n","Epoch 96/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0458 - accuracy: 1.0000 - val_loss: 0.0468 - val_accuracy: 0.9990\n","Epoch 97/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0447 - accuracy: 1.0000 - val_loss: 0.0457 - val_accuracy: 0.9990\n","Epoch 98/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.0436 - accuracy: 1.0000 - val_loss: 0.0446 - val_accuracy: 0.9990\n","Epoch 99/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0426 - accuracy: 1.0000 - val_loss: 0.0436 - val_accuracy: 0.9990\n","Epoch 100/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0416 - accuracy: 1.0000 - val_loss: 0.0426 - val_accuracy: 0.9990\n","Epoch 101/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0406 - accuracy: 1.0000 - val_loss: 0.0416 - val_accuracy: 0.9990\n","Epoch 102/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0397 - accuracy: 1.0000 - val_loss: 0.0407 - val_accuracy: 0.9990\n","Epoch 103/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0387 - accuracy: 1.0000 - val_loss: 0.0398 - val_accuracy: 0.9990\n","Epoch 104/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0379 - accuracy: 1.0000 - val_loss: 0.0389 - val_accuracy: 0.9990\n","Epoch 105/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0370 - accuracy: 1.0000 - val_loss: 0.0380 - val_accuracy: 0.9990\n","Epoch 106/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0362 - accuracy: 1.0000 - val_loss: 0.0372 - val_accuracy: 0.9990\n","Epoch 107/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0354 - accuracy: 1.0000 - val_loss: 0.0364 - val_accuracy: 0.9990\n","Epoch 108/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0346 - accuracy: 1.0000 - val_loss: 0.0356 - val_accuracy: 0.9990\n","Epoch 109/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0338 - accuracy: 1.0000 - val_loss: 0.0349 - val_accuracy: 0.9990\n","Epoch 110/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0331 - accuracy: 1.0000 - val_loss: 0.0341 - val_accuracy: 0.9990\n","Epoch 111/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0323 - accuracy: 1.0000 - val_loss: 0.0334 - val_accuracy: 0.9990\n","Epoch 112/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0316 - accuracy: 1.0000 - val_loss: 0.0327 - val_accuracy: 0.9990\n","Epoch 113/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0310 - accuracy: 1.0000 - val_loss: 0.0320 - val_accuracy: 0.9990\n","Epoch 114/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0303 - accuracy: 1.0000 - val_loss: 0.0314 - val_accuracy: 1.0000\n","Epoch 115/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0297 - accuracy: 1.0000 - val_loss: 0.0307 - val_accuracy: 1.0000\n","Epoch 116/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0290 - accuracy: 1.0000 - val_loss: 0.0301 - val_accuracy: 1.0000\n","Epoch 117/150\n","16/16 [==============================] - 0s 3ms/step - loss: 0.0284 - accuracy: 1.0000 - val_loss: 0.0295 - val_accuracy: 1.0000\n","Epoch 118/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0278 - accuracy: 1.0000 - val_loss: 0.0289 - val_accuracy: 1.0000\n","Epoch 119/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0273 - accuracy: 1.0000 - val_loss: 0.0283 - val_accuracy: 1.0000\n","Epoch 120/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0267 - accuracy: 1.0000 - val_loss: 0.0278 - val_accuracy: 1.0000\n","Epoch 121/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0262 - accuracy: 1.0000 - val_loss: 0.0272 - val_accuracy: 1.0000\n","Epoch 122/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0256 - accuracy: 1.0000 - val_loss: 0.0267 - val_accuracy: 1.0000\n","Epoch 123/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0251 - accuracy: 1.0000 - val_loss: 0.0262 - val_accuracy: 1.0000\n","Epoch 124/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0246 - accuracy: 1.0000 - val_loss: 0.0257 - val_accuracy: 1.0000\n","Epoch 125/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0241 - accuracy: 1.0000 - val_loss: 0.0252 - val_accuracy: 1.0000\n","Epoch 126/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0237 - accuracy: 1.0000 - val_loss: 0.0247 - val_accuracy: 1.0000\n","Epoch 127/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0232 - accuracy: 1.0000 - val_loss: 0.0243 - val_accuracy: 1.0000\n","Epoch 128/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0228 - accuracy: 1.0000 - val_loss: 0.0238 - val_accuracy: 1.0000\n","Epoch 129/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0223 - accuracy: 1.0000 - val_loss: 0.0234 - val_accuracy: 1.0000\n","Epoch 130/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0219 - accuracy: 1.0000 - val_loss: 0.0230 - val_accuracy: 1.0000\n","Epoch 131/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0215 - accuracy: 1.0000 - val_loss: 0.0225 - val_accuracy: 1.0000\n","Epoch 132/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0211 - accuracy: 1.0000 - val_loss: 0.0221 - val_accuracy: 1.0000\n","Epoch 133/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0207 - accuracy: 1.0000 - val_loss: 0.0217 - val_accuracy: 1.0000\n","Epoch 134/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0203 - accuracy: 1.0000 - val_loss: 0.0214 - val_accuracy: 1.0000\n","Epoch 135/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0199 - accuracy: 1.0000 - val_loss: 0.0210 - val_accuracy: 1.0000\n","Epoch 136/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0195 - accuracy: 1.0000 - val_loss: 0.0206 - val_accuracy: 1.0000\n","Epoch 137/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0192 - accuracy: 1.0000 - val_loss: 0.0202 - val_accuracy: 1.0000\n","Epoch 138/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0188 - accuracy: 1.0000 - val_loss: 0.0199 - val_accuracy: 1.0000\n","Epoch 139/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0185 - accuracy: 1.0000 - val_loss: 0.0195 - val_accuracy: 1.0000\n","Epoch 140/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0182 - accuracy: 1.0000 - val_loss: 0.0192 - val_accuracy: 1.0000\n","Epoch 141/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0178 - accuracy: 1.0000 - val_loss: 0.0189 - val_accuracy: 1.0000\n","Epoch 142/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0175 - accuracy: 1.0000 - val_loss: 0.0186 - val_accuracy: 1.0000\n","Epoch 143/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0172 - accuracy: 1.0000 - val_loss: 0.0183 - val_accuracy: 1.0000\n","Epoch 144/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0169 - accuracy: 1.0000 - val_loss: 0.0180 - val_accuracy: 1.0000\n","Epoch 145/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0166 - accuracy: 1.0000 - val_loss: 0.0177 - val_accuracy: 1.0000\n","Epoch 146/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0163 - accuracy: 1.0000 - val_loss: 0.0174 - val_accuracy: 1.0000\n","Epoch 147/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0160 - accuracy: 1.0000 - val_loss: 0.0171 - val_accuracy: 1.0000\n","Epoch 148/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0158 - accuracy: 1.0000 - val_loss: 0.0168 - val_accuracy: 1.0000\n","Epoch 149/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0155 - accuracy: 1.0000 - val_loss: 0.0165 - val_accuracy: 1.0000\n","Epoch 150/150\n","16/16 [==============================] - 0s 2ms/step - loss: 0.0152 - accuracy: 1.0000 - val_loss: 0.0163 - val_accuracy: 1.0000\n"]}],"source":["# train the model\n","history=model.fit(X_train, Y_train,\n"," validation_data=(X_val,Y_val),\n"," batch_size=64,\n"," epochs=150,\n"," verbose=1)"]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":428},"executionInfo":{"elapsed":468,"status":"ok","timestamp":1708799010370,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"fK_AAAoiQtlc","outputId":"3d6398a5-ac98-4759-cbaa-d7243e095e1b"},"outputs":[{"data":{"text/plain":[""]},"execution_count":10,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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FRXFBRdcwKuvvsr+/fuPeb3U1NQqZ7TZbMd8e//iiy8e07N93XXXsXbt2govVXbk+ddddx1paWkV9kAf2adx48bYbDa+//77co+//PLLVcp89DGP/Pz888+X2y8yMpLzzjuP2bNnk5SUVGGeIyIiIrjsssv4z3/+w3vvvcell156zHBEERGRM8ETPj/8XZ8+fbDb7bzwwgvlzrFvvPEGmZmZXH755QBkZWVRXFxc7rnt27fHarVSUFAAlMyh/7uOHTsClO0j4snUky5iottuu41XX32V4cOHs2rVKpo0acLcuXP56aefmD59OkFBQQD079+f3r178+CDD7Jz507atm3LvHnzys3POmLGjBmcc845tG/fnpEjR9KsWTNSUlJYtmwZe/bsYe3atVXKeMUVV/Duu+8SEhJC27ZtWbZsGV9//TX16tUrt9/999/P3LlzGTBgADfffDNdunQhPT2d+fPnM3PmTOLj4xk6dCjvvPMOiYmJrFy5knPPPZecnBy+/vpr7rzzTq666ipCQkIYMGAAL774IhaLhebNm/P5559XaS5c69atad68Offddx979+4lODiYTz75pNx8viNeeOEFzjnnHDp37sxtt91G06ZN2blzJwsWLGDNmjXl9h06dCjXX389AI8//niV3kcREZGa4gmfH/4uMjKScePG8dhjj3HppZdy5ZVXsnnzZl5++WW6detWthDrN998w5gxYxgwYABnnXUWxcXFvPvuu9hsNq677joAJk2axPfff8/ll19O48aNOXDgAC+//DINGzbknHPOOaWcIrWCGUvKi3iLI5dQ+fslQIYNG2YEBAQcs//5559vnH322eW2paSkGCNGjDAiIiIMu91utG/fvtwlUY44ePCgcdNNNxnBwcFGSEiIcdNNN5VdpuTv+2/bts0YOnSoERMTY/j6+hoNGjQwrrjiCmPu3Lll+1T2EiqHDh0qyxcYGGgkJCQYmzZtMho3blzucjBHMo4ZM8Zo0KCBYbfbjYYNGxrDhg0z0tLSyvbJzc01Hn74YaNp06aGr6+vERMTY1x//fXGtm3byvZJTU01rrvuOsPf398ICwszbr/9dmPdunUVXoKtovfZMAxjw4YNRp8+fYzAwEAjIiLCGDlypLF27doK369169YZ11xzjREaGmo4nU6jVatWxvjx4485ZkFBgREWFmaEhIQYeXl5J3zfREREjqcufH74+yXYjnjppZeM1q1bG76+vkZ0dLQxatQo49ChQ2WPb9++3bj55puN5s2bG06n0wgPDzcuvPBC4+uvvy7bZ8mSJcZVV11l1K9f37Db7Ub9+vWNQYMGGVu2bDlhJhFPYTGM07gKhYiIFykuLqZ+/fr079+fN954w+w4IiIiIuKFNCddRKSSPvvsM1JTU8stRiciIiIiUpPUky4ichIrVqzg999/5/HHHyciIoLVq1ebHUlEREREvJR60kVETuKVV15h1KhRREVF8c4775gdR0RERES8mHrSRURERERERGoJ9aSLiIiIiIiI1BIq0kVERERERERqCR+zA5xpbrebffv2ERQUhMViMTuOiIgIhmFw+PBh6tevj9Wq789rgs73IiJSm1TlXF/nivR9+/YRFxdndgwREZFj7N69m4YNG5odwyvofC8iIrVRZc71da5IDwoKAkrenODgYJPTiIiIQFZWFnFxcWXnKDl1Ot+LiEhtUpVzfZ0r0o8MeQsODtZJW0REahUNy645Ot+LiEhtVJlzvSa+iYiIiIiIiNQSKtJFREREREREagkV6SIiIiIiIiK1RJ2bky4iIiIiIiLlGYZBcXExLpfL7Cgey9fXF5vNdsrHUZEuIiIiIiJShxUWFrJ//35yc3PNjuLRLBYLDRs2JDAw8JSOoyJdRERERESkjnK73ezYsQObzUb9+vWx2+262kg1GIZBamoqe/bsoWXLlqfUo64iXUREREREpI4qLCzE7XYTFxeHv7+/2XE8WmRkJDt37qSoqOiUinRTF477/vvv6d+/P/Xr18disfDZZ5+d9DnffvstnTt3xuFw0KJFC956663TnlNERERERMSbWa1aU/xU1dQIBFN/Ezk5OcTHxzNjxoxK7b9jxw4uv/xyLrzwQtasWcM999zDrbfeypdffnmak4qIiIiIiIicfqYOd7/sssu47LLLKr3/zJkzadq0Kc8++ywAbdq04ccff+S5554jISHhdMUUD7d8+0EycgvpGBdGTIgTgH0Zefy+J6PKx7q0XWzZz6uTDnEgK5+z64cQF14yNCgtu4Bfd6ZX+bgXtY7G7lPyndm6vZnsOZRLi6hAWkQFAZCVX8TPW9OqfNxzWkYS6Cj5z/zPlMNsS82mUXgAbesHA5Bf5OLbzQeqfNzuTesRHmAHYGdaDpuSs4gJ8aNjXChQMifny/XJVT5uRb+j8AAH3ZuGl+3z9YYUit3uKh23ot9RoMOXc1pGlO3z/ZZUcguLq3Tcin5HDh8bF7aOKtvnyN9fVRzvd1TR3x+ArTiH4EPrsRdmnPC4of52mtYLAMDAYM3ukv3bNQjF11ryzW9Sei4HcwqqlDfQ4UvLqL8WSFm7JwO3YdA6Nhg/n5KhXvsy80gpzVtZTh8f2sQGld1fvz+LwmIXLaKCCCr9uz5wuIC9GVVb5MbHaqV9g5Cy+5tTDpNbWEyTeoGE+fsCkJ5byK6DOSc8jp/dh9aNYqH5RVV6fREREZET8ag56cuWLaNPnz7ltiUkJHDPPfcc9zkFBQUUFPz1gTMrK+t0xavTDmYXsC+j5AO4T24qPrn7AbC4i3Gmb8T/wBrsWTuxYJR7XoD9rz/BvCIXbsPA7mPFt3S4TbHbTUHxyQsyl9sgp7CYnAIXLrdBq+i/PtgH78/CUlCMPSoQ/EsKS3tOAWGpJ/4A/ncWgJV/FYtBBw5TlFuEo54/BJUUlr75RYQlH67ScQGsjUKhtM0BB3MIO1yAX6gfhPoB4FNYTNi+qv/t2hqEgG9JkeSXkUtYRj4BwQ4ILynUrC43YaWFWlX4xASBs6SYcWblE5aeS2CAHSKPFGoGYTsPVfm4Ff2Ogpw+EBNctk9Y0iGK3cbxDlGhin5H/r42OKpQC92TgaMSf2tHq+h35GuzQFxY2T5H/v6qoqLf0fH+/kLIoaVlDzZL1d4TC9Cpgu2NSm+nIr6CbfVLb6fi7Aq2RZXeTkWrCraFl95OKrI1jF5xigmkNssuKOaPPZnkF7nKfQEnIiLepUmTJtxzzz0nrC3PFI8q0pOTk4mOji63LTo6mqysLPLy8vDz8zvmOVOmTOGxxx47UxHrnuJC2L+WXT9/xd5139PRso04a2q1DnXsb6/kD7Syf6TBR99J+uvHtlAyseOojugIIKI6kz2OOm7LI8c9VHoDQoAe1Tnunr9+bAo0tQJZpTfAv7rH3f/Xjw2BhlYgu/QG2Kt73KM632OAGCuQR9n7Y6nucSv6HRVS7n3vAlWfqFPR78hV/rgdqnPcin5HBhX//VXF8X5HFf39lUq1RnLQFsmJSvVgpy8NSr9UMIBNySXhW0YH4VM6h2p/Vn6Ve/4D7D40Cv9roZktBw7jchs0iwzEYSsJmZpdQFp21XroHT42mkUElN3flpZNYbGbxuEB+NtLvnxKzy2scg+9j9Varud/V3oOuYUuGoT6EVz65VNmfhH7MvJOeBw/XxtNYtpU6bXF8+xIzWHQrOVEBTlY+XCfkz9BRETOmAsuuICOHTsyffr0Uz7WL7/8QkBAwMl3PAM8qkivjnHjxpGYmFh2Pysri7i4OBMTeZGCw/DGJXBgA52BzqULGLqxkEYY7tIKYrelPhusLdlmaUwxf61y6PC1MbF/27L7s3/cwdYD2QzoGkenRqEAbNiXxX+W7zppFKvVQv1QP5pGBNA0IoDmkYElPZoi3s7HCTEdiAyOJbIKT7MAFZWXsaW3U3FWBdsiS2+nonkF2yrd430CjSvYFlJ6EzkyBSc1u4AilxtfmxZWEhHxFIZh4HK58PE5edkbGXmqn1RqjkcV6TExMaSkpJTblpKSQnBwcIW96AAOhwOHw3Em4tU5yz+cwj8ObMDtG4i16bnQsCs07Ia1fieinH/1a8cA3SpxvJvbHrutbVuYrI4LERExSb0AO3ablUKXmwOHC8pGo4iIeLuqrtUDYLdZ8Sn9MrPY5abQ5cZqseD0/auj7njH9bdXrTQdPnw43333Hd999x3PP/88AG+++SYjRoxg4cKFPPLII/zxxx989dVXxMXFkZiYyPLly8nJyaFNmzZMmTKl3FTqvw93t1gszJo1iwULFvDll1/SoEEDnn32Wa688soq5awOjyrSe/bsycKFC8ttW7x4MT179jQpUd1l5GXQdsfbAGzq8ihtLx1pciIREZGaZ7VaiA5xsDs9j+TMPBXpIlJntJ1Q9StozRjcmcs7lIzJ+3J9CqPfX02PpuHMuf2veu2cp5eSnnPs1LqdT11epdd6/vnn2bJlC+3atWPSpEkArF+/HoAHH3yQqVOn0qxZM8LCwti9ezf9+vXjySefxOFw8M4779C/f382b95Mo0bHX43nscce45lnnuHf//43L774IkOGDGHXrl2Eh5/qOL4TM3XMVnZ2NmvWrGHNmjVAySXW1qxZQ1JSycTLcePGMXTo0LL977jjDrZv386//vUvNm3axMsvv8xHH33Evffea0b8Os1Y9jLBZJNsb0LTC4aZHUdEROS0iQ0uKcyPLJAqIiLmCwkJwW634+/vT0xMDDExMdhsJT32kyZNom/fvjRv3pzw8HDi4+O5/fbbadeuHS1btuTxxx+nefPmzJ8//4SvMXz4cAYNGkSLFi2YPHky2dnZrFy58rS3zdSe9F9//ZULL7yw7P6RuePDhg3jrbfeYv/+/WUFO0DTpk1ZsGAB9957L88//zwNGzbk9ddf1+XXzrTcdKwrXgEg5qpHwWk3N4+IiMhpdGReenKminQRqTs2TKp6jWU/at2OhLOj2TApAaul/DpRPz5w4d+fVuO6du1a7n52djaPPvooCxYsYP/+/RQXF5OXl1eu1qxIhw4dyn4OCAggODiYAweqfvniqjK1SL/gggswjOOvRfzWW29V+JzffvvtNKaSChkGrHkftn4Nu1dAQRZEt4M2V5mdTERE5LSKLS3S96tIF5E6pKpzxP/O56j56TV53Mr4+yrt9913H4sXL2bq1Km0aNECPz8/rr/+egoLT3xFG19f33L3LRYLbnfVLtlbHR41J11MtHc1/PfOsruFNn/2d59AI4sFraEuIiLe7EiRnpx14svyiYjImWW323G5XCfd76effmL48OFcc801QEnP+s6dO09zuurTdUSkcvatLvk3pgMrz32LzjkvMGKpA4tFJbqIiHi3mBDNSRcRqY2aNGnCihUr2LlzJ2lpacft5W7ZsiXz5s1jzZo1rF27lsGDB5+RHvHqUpEulXNgQ8m/LS7mk0PNycaf81vVnmsJioiInC6xmpMuIlIr3XfffdhsNtq2bUtkZORx55hPmzaNsLAwevXqRf/+/UlISKBz585nOG3labi7VE5KSZHujmzLkuUliyVc1DrKzEQiIiJnxJEi/cDhfIpd7grnWIqIyJl31llnsWzZsnLbhg8ffsx+TZo04Ztvvim3bfTo0eXu/334e0Vrp2VkZFQrZ1XpLCMnZxhlPekb3XGkZRcQ5PChR9N6JgcTERE5/SICHfhYLbgNSM0uMDuOiIh4ORXpcnKZu0tWc7f6snB/IAAXtI7C7qM/HxER8XJJK7C+P4B/+71FkMOH9JwTrwQsIiJyqjTcXU4uZX3JvxFn8eWmdAD6to02MZCIiMgZUpQLWxdzVb2zuOauql8zWEREpKrUFSonV1qkZ4eexdYD2fhYLZx/lhaNExGROiC0EQDWrD0l079EREROMxXpcnKl89E3uOIA+EezeoT4+ZqZSERE5MwIaVjyb1Eu5Kabm0VEROoEFelycqU96UvSIwDo00aruouISB3h44DAGAAm/ecLpnyx0eRAIiLi7TQnXU6suADS/gTg8+QwAPpoPrqIiNQloXGQncy+XX9ywNXU7DQiIuLlVKTLiaVuBsNFpuHPXiOc7k3CaRjmb3YqERGRMyckDvb8wu0dfCjo3trsNCIi4uVUpMuJlc5H32I04sr4Bjx65dkmBxIRETnDSheP6xSSDc3qmRxGRES8neaky4mVzkdvHd+DFwZ1IjzAbnIgERGRMyy0ZOFUMpLMzSEiIjWqSZMmTJ8+vey+xWLhs88+O+7+O3fuxGKxsGbNmtOaSz3pUqHdB3Nwb/+WxpsWABDUuKO5gURERMwSUtKTnpu6g0Wr99CzeT1iQ/xMDiUiIjVt//79hIWFmR1DPelyLCN9B+5XetN4wWBI3wZWX2jUy+xYIiIi5ijtSXcf2k3iR2v5LSnD3DwiInJaxMTE4HA4zI6hIl3+xu3G/ekoGhfvIMdwkNV+ONy5HKK0UI6IiNRRISVFeqCRTRC57MvIMzmQiMhpZBhQmGPOzTAqHfO1116jfv36uN3uctuvuuoqbr75ZrZt28ZVV11FdHQ0gYGBdOvWja+//vqEx/z7cPeVK1fSqVMnnE4nXbt25bfffqvSW1ldGu4u5f3yOrbdyzB8Azg0aAkNm7UxO5GIiIi5HIHgFw556TSwpJGUnmt2IhGR06coFybXN+e1H9oH9oBK7TpgwADuuusuli5dysUXXwxAeno6ixYtYuHChWRnZ9OvXz+efPJJHA4H77zzDv3792fz5s00atTopMfPzs7miiuuoG/fvvznP/9hx44djB079pSaV1kq0uUvh3bC148CYOn7mAp0ERGRI0LjSov0VHarSBcRMV1YWBiXXXYZ77//flmRPnfuXCIiIrjwwguxWq3Ex8eX7f/444/z6aefMn/+fMaMGXPS47///vu43W7eeOMNnE4nZ599Nnv27GHUqFGnrU1HqEiv6wqyYcsi2PMLxpYvsRTlUNiwF/aut5idTEREpPYIiYP9a2lgSePnQxruLiJezNe/pEfbrNeugiFDhjBy5EhefvllHA4H7733HgMHDsRqtZKdnc2jjz7KggUL2L9/P8XFxeTl5ZGUVLkrdWzcuJEOHTrgdDrLtvXs2bNK+apLRXpdlZEEK16F1e9CQSYAFiDT8OeOtJt4D4sWLBARETmi9FrpDSxp7DmUi2EYWCwWk0OJiJwGFkulh5ybrX///hiGwYIFC+jWrRs//PADzz33HAD33XcfixcvZurUqbRo0QI/Pz+uv/56CgsLTU59cirS66K8Q/ByLyg8DEBhcBNW+nRhXmos3xWdzd0JvbBa9cFDRESkTOnicXGWVPKL3KRmFxAV5DzJk0RE5HRyOp1ce+21vPfee2zdupVWrVrRuXNnAH766SeGDx/ONddcA5TMMd+5c2elj92mTRveffdd8vPzy3rTly9fXuNtqIg6S+uiPb+WFOgBUfzU4xVaHXiCG/ddx7yiXrRp0ZyB3ePMTigiIlK7lPakN/FJB2B3uoa8i4jUBkOGDGHBggXMnj2bIUOGlG1v2bIl8+bNY82aNaxdu5bBgwcfsxL8iQwePBiLxcLIkSPZsGEDCxcuZOrUqaejCcdQkV4X7V0FgLvZhdy/JhoDKxe3juKTUT1595buOHxsJgcUERGpZUqvlV7fkgbAnkNaPE5EpDa46KKLCA8PZ/PmzQwePLhs+7Rp0wgLC6NXr17079+fhISEsl72yggMDOR///sff/zxB506deLhhx/m6aefPh1NOIaGu9dFpUX6HzRnX2Y+EYEOZgzpjNNXxbmIiJweM2bM4N///jfJycnEx8fz4osv0r179+PuP336dF555RWSkpKIiIjg+uuvZ8qUKeUW8DmjSoe7h7ozcFBI0kEV6SIitYHVamXfvmMXumvSpAnffPNNuW2jR48ud//vw9+Nv12n/R//+Adr1qw54T6ng3rS6xrDgL2rAZi9IxyAEb2bqEAXEZHTZs6cOSQmJjJx4kRWr15NfHw8CQkJHDhwoML933//fR588EEmTpzIxo0beeONN5gzZw4PPfTQGU5+FL8wsAcC0NCSym71pIuIyGmiIr2uyUiC3DTcVl8WpUUQYLdxY4/GZqcSEREvNm3aNEaOHMmIESNo27YtM2fOxN/fn9mzZ1e4/88//0zv3r0ZPHgwTZo04ZJLLmHQoEGsXLnyDCc/isVS1pvewJKmOekiInLaqEiva/aV9KLvtDWhADsDuzcixN/X5FAiIuKtCgsLWbVqFX369CnbZrVa6dOnD8uWLavwOb169WLVqlVlRfn27dtZuHAh/fr1O+7rFBQUkJWVVe5W40oXj2vhexCnrz5CiYjI6aE56XVN6Xz0n/IaY7NauPmcpiYHEhERb5aWlobL5SI6Orrc9ujoaDZt2lThcwYPHkxaWhrnnHMOhmFQXFzMHXfcccLh7lOmTOGxxx6r0ezHCG8GwPheTiwJx59PLyIicir0NXBdUzof/XejGa2ig2gQ6mdyIBERkfK+/fZbJk+ezMsvv8zq1auZN28eCxYs4PHHHz/uc8aNG0dmZmbZbffu3TUfrF5zACwHt9X8sUVETHYmFkTzdjX1HqonvS5xu2DfGgBad7mQVpENzM0jIiJeLyIiApvNRkpKSrntKSkpxMTEVPic8ePHc9NNN3HrrbcC0L59e3Jycrjtttt4+OGHsVqP7WNwOBw4HI6ab8DRSot00lWki4j38PUtmfqam5uLn5868E5FYWEhADbbqS3KrSK9LkndDEU5YA/klqsTwKoV3UVE5PSy2+106dKFJUuWcPXVVwPgdrtZsmQJY8aMqfA5ubm5xxTiRz7wmNrTE15SpBcf3EH/aUsZeUFLru3c0Lw8IiI1wGazERoaWnbFDX9/fywWi8mpPI/b7SY1NRV/f398fE6tzFaRXpeULhpHbEcV6CIicsYkJiYybNgwunbtSvfu3Zk+fTo5OTmMGDECgKFDh9KgQQOmTJkCQP/+/Zk2bRqdOnWiR48ebN26lfHjx9O/f/9T7p04JSENwWbHx1XI4dSdbD0Qa14WEZEadGRk0/EujSmVY7VaadSo0Sl/yaEivS4pXTRuT0AbnNkFRASe5mGBIiIiwA033EBqaioTJkwgOTmZjh07smjRorLF5JKSksr1nD/yyCNYLBYeeeQR9u7dS2RkJP379+fJJ580qwklrLaSxeNSN/FyQjBRnZqYm0dEpIZYLBZiY2OJioqiqKjI7Dgey263Vzglq6osRh1bISArK4uQkBAyMzMJDg42O86Z9UYC7F7OXYVj+MF5Pr+N76uhLCIitUCdPjedJqftPf1gMGxeAJf9G3rcVnPHFRERr1aV85J60uuS0oVu8oOb0rZesAp0ERGRqqpXchk2LR4nIiKni4r0uiI/C3JSAZh1zz9x2YNMDiQiIuKBShePS9m5nve+2szI85oR5PQ1OZSIiHgTXSe9rjjyjX9AJDiDsVnViy4iIlJl9VoAUJjyJy98s5U/D2SbHEhERLyNivS6In07AEZpD4CIiIhUQ+m10utzAB+K2aYiXUREapiK9LriYEmR/t/dTv45cxnFLrfJgURERDxQUCz4+mPDTZwllW2pOWYnEhERL6Miva4oHe6+pSiKlMP5+Nj0qxcREakyi6XkMmxAE0syW9WTLiIiNUyVWl1xsKRI32nE0Cpai8aJiIhUW+mQ92aW/WxPVZEuIiI1S0V6XZH+V5HeOkZFuoiISLWVru/SxJLMrvRcCos1hUxERGqOivS6IC8Dcg8CsMuIpk1ssLl5REREPFlpT3oLWwout8Gug5qXLiIiNUdFel1QurL7ASOUHPyIjws1N4+IiIgnK+1Jb25LBmCbhryLiEgNMr1InzFjBk2aNMHpdNKjRw9Wrlx53H2LioqYNGkSzZs3x+l0Eh8fz6JFi85gWg9VWqTvMGKICHQQG+I0OZCIiIgHi2gJQJQ7FX/ytXiciIjUKFOL9Dlz5pCYmMjEiRNZvXo18fHxJCQkcODAgQr3f+SRR3j11Vd58cUX2bBhA3fccQfXXHMNv/322xlO7mGOLBrnjqFjXAgWi8XkQCIiIh4sIAICogA4y7JHl2ETEZEaZWqRPm3aNEaOHMmIESNo27YtM2fOxN/fn9mzZ1e4/7vvvstDDz1Ev379aNasGaNGjaJfv348++yzZzi5hzlq0bj4hqHmZhEREfEG0WcD0Mq6Wz3pIiJSo0wr0gsLC1m1ahV9+vT5K4zVSp8+fVi2bFmFzykoKMDpLD9U28/Pjx9//PG4r1NQUEBWVla5W51T2pO+w4ihg+aji4iInLrSIr21JYltqdkYhmFyIBER8RamFelpaWm4XC6io6PLbY+OjiY5ObnC5yQkJDBt2jT+/PNP3G43ixcvZt68eezfv/+4rzNlyhRCQkLKbnFxcTXaDk/gLi3SdxnRxDcMMTmNiIiIFygt0js79nFuywhyC10mBxIREW9h+sJxVfH888/TsmVLWrdujd1uZ8yYMYwYMQKr9fjNGDduHJmZmWW33bt3n8HEtUBuOtb8QwAYYU0J9bebHEhERMQLRLUFIN6+h1dv7EKAw8fkQCIi4i1MK9IjIiKw2WykpKSU256SkkJMTEyFz4mMjOSzzz4jJyeHXbt2sWnTJgIDA2nWrNlxX8fhcBAcHFzuVqeUruyebITRqlHF76uIiIhUUWRrsFgh7xAcrngEoIiISHWYVqTb7Xa6dOnCkiVLyra53W6WLFlCz549T/hcp9NJgwYNKC4u5pNPPuGqq6463XE91+aFADjiOnHrOcf/MkNERESqwNcJ9VoA4E5eT0ZuocmBRETEW5g63D0xMZFZs2bx9ttvs3HjRkaNGkVOTg4jRowAYOjQoYwbN65s/xUrVjBv3jy2b9/ODz/8wKWXXorb7eZf//qXWU2o3dwuWPM+AGE9h9Fe89FFRERqTum89Ofe+5Rhb/5ichgREfEWpk6guuGGG0hNTWXChAkkJyfTsWNHFi1aVLaYXFJSUrn55vn5+TzyyCNs376dwMBA+vXrx7vvvktoaKhJLajltn0Dh/eDXzi0uszsNCIiIt4l6mxY/ylN3Dt5OzUbt9vAarWYnUpERDycxahj1wzJysoiJCSEzMxM75+fPucm2DifldH/JPP8J+jbNvrkzxERkTOuTp2bzpAz8p5uWggfDiK/Xltsd/6Er82j1uMVEZEzqCrnJZ1NvFVOGmz+AoCJSZ1Y8Ps+kwOJiIh4meiSFd6dGVvxRZdgExGRmqEi3Vv9/hG4i8gOb8c/ep3PRW3Uiy4iIlKjQhqBPRBchXBwm9lpRETES+iint7qj48ACOw5gondzjY5jIiIiBeyWkuul75nJf+Zv5CN9Yp48pr2ZqcSEREPp550b5W+o+Tfxr3NzSEiIuLNSoe8Z+38jQV/7KeOLfUjIiKngYp0b1RcCPkZAKw5ZCczr8jcPCIiIt6qficAOlq3kZFbxL7MfJMDiYiIp1OR7o1y0wAwLFaueXMDN7y6zORAIiIiXqpBVwDirdux4mbDviyTA4mIiKdTke6NclIByPMNw8BKy+ggkwOJiIh4qag24BtAAHm0sOxl/b5MsxOJiIiHU5HujUqL9AxLKAAtowJNDCMiIuLFrDZo0BmAjtatrFdPuoiInCIV6d4op2S4+wF3SQ/6WdEq0kVERE6bhiVD3jtZtmq4u4iInDIV6d6otCd9T2EAAC2iNNxdRETktGnYDYBO1q3szcgjI7fQ5EAiIuLJVKR7o+wDAKS4gvG1WWhcz9/kQCIiIl6sdPG4s6x7CCCP35IyzM0jIiIeTUW6Nyod7p5mhNA0IgBfm37NIiIip01QNIQ0wopBB+t2ftmZbnYiERHxYKrevFHpcPc0gmmpoe4iIiKnX8MuQMm89F93HjI5jIiIeDIV6d6otEg/aATTQiu7i4iInH5HzUtfuyeDgmKXyYFERMRTqUj3RkcV6S21sruIiMjpVzovvZNtGwXFLtbt1SrvIiJSPSrSvY1h/DXc3QihcXiAyYFERETqgNh4sPoSQQav9AujaYTOvyIiUj0q0r1NQRa4Si79cpBgQv19TQ4kIiJSB/g6Ia47AJf5bSQ8wG5yIBER8VQq0r1N6cru2YaTfBwE+6lIFxEROSOaX1Ty79ZvzM0hIiIeTUW6tykd6h4QHsvaiZcQ7PQxOZCIiEgd0eJiAFzbv+ON7zazNyPP5EAiIuKJVKR7m+wDAFgCIgnx88VisZgcSEREpI6IiQf/etiKsvly0f/48c9UsxOJiIgHUpHubUp70gmINDeHiIhIXWO1QrMLARgatY2oIKfJgURExBOpSPc2pXPSf9wPL3+71eQwIiIidUzpkPcrAjZyYesok8OIiIgnUpHubUp70len+7Js20GTw4iIiNQxRxaP27cGcnQeFhGRqlOR7m1ySuakdz+7FYO7NzI5jIiISB0TFANRZwMG6X98ybq9mWYnEhERD6Mi3duUDnf/R/tWXNY+1uQwIiIidVCLkt70pQveY+L89SaHERERT6Mi3dto4TgRERFznXUZAH2tq9iQlMKhnEKTA4mIiCdRke5tSov03zMcHMwuMDmMiIhIHdSoJ4TEEWzJ40LLar7XpdhERKQKVKR7E1cR5B0CYNic7SzZeMDkQCIiInWQ1QrtBwBwte0nlm7S+VhERCpPRbo3KZ2P7sJKBoEE+/maHEhERKSO6nADABdY17Bm83ZcbsPkQCIi4ilUpHuT0qHumZZgDKyEqEgXERExR1RrjJgO2C0uehf+yG9Jh8xOJCIiHkJFujcpLdLTjBAAQv1VpIuISO0wY8YMmjRpgtPppEePHqxcufKE+2dkZDB69GhiY2NxOBycddZZLFy48AylrRmW0t70q20/8snqPSanERERT6Ei3ZuUDndPdQcBqCddRERqhTlz5pCYmMjEiRNZvXo18fHxJCQkcOBAxXO1CwsL6du3Lzt37mTu3Lls3ryZWbNm0aBBgzOc/BS1uw7DYqWbdQu/rV1DbmGx2YlERMQDqEj3JrklRXqaEQyoSBcRkdph2rRpjBw5khEjRtC2bVtmzpyJv78/s2fPrnD/2bNnk56ezmeffUbv3r1p0qQJ559/PvHx8Wc4+SkKjoVmFwJwrWsRX/yRbHIgERHxBCrSvUnBYQAOG374WC34220mBxIRkbqusLCQVatW0adPn7JtVquVPn36sGzZsgqfM3/+fHr27Mno0aOJjo6mXbt2TJ48GZfLddzXKSgoICsrq9ytNrD0uAOAgbalzF+52eQ0IiLiCVSke5PSIj0bP0L9fbFYLCYHEhGRui4tLQ2Xy0V0dHS57dHR0SQnV9yzvH37dubOnYvL5WLhwoWMHz+eZ599lieeeOK4rzNlyhRCQkLKbnFxcTXajmpr0YfisBYEW3JpvOe/7EzLMTuRiIjUcirSvcmRIt3w0+XXRETEY7ndbqKionjttdfo0qULN9xwAw8//DAzZ8487nPGjRtHZmZm2W337t1nMPEJWK349BoFwAjbIub+mmRyIBERqe18zA4gNai0SM/BqfnoIiJSK0RERGCz2UhJSSm3PSUlhZiYmAqfExsbi6+vLzbbX9O22rRpQ3JyMoWFhdjt9mOe43A4cDgcNRu+psQPomjxJJoWpnBd0HqgjdmJRESkFlNPujcpzAZKh7urSBcRkVrAbrfTpUsXlixZUrbN7XazZMkSevbsWeFzevfuzdatW3G73WXbtmzZQmxsbIUFeq1nD8C32wgAmm6ZDYZhciAREanNVKR7k4LSIt3wU0+6iIjUGomJicyaNYu3336bjRs3MmrUKHJychgxoqRwHTp0KOPGjSvbf9SoUaSnpzN27Fi2bNnCggULmDx5MqNHjzarCaeu+21gs8Oun2D7UrPTiIhILabh7t7kqOHuUSrSRUSklrjhhhtITU1lwoQJJCcn07FjRxYtWlS2mFxSUhJW61/9BnFxcXz55Zfce++9dOjQgQYNGjB27FgeeOABs5pw6kIaQLdbYfnL7P74QX6/7DMuj69vdioREamFLIZRt8ZcZWVlERISQmZmJsHBwWbHqVnPx8OhnWTf+AWuBt3Umy4i4iG8+txkklr5nuakUTitPXZXLk/4P8jD9z+oK7GIiNQRVTkvabi7NyntSQ8MClWBLiIiUtsERODucScA9/l+jMV9/Ou+i4hI3aUi3ZuUzknHEWhuDhEREamQ87yx4BeOM3Mb/Pau2XFERKQWUpHuLYoLwVUAwGNf7WbrgcMmBxIREZFjOIPh/H+V/PzNE+QfPmRuHhERqXVUpHuL0suvAbyz+iCHcotMDCMiIiLH1e1W3OEtIDeNT6aPJbug2OxEIiJSi5hepM+YMYMmTZrgdDrp0aMHK1euPOH+06dPp1WrVvj5+REXF8e9995Lfn7+GUpbi5XORy+2Ohnbtw2Nw/1NDiQiIiIVsvniuuRJAAYUf86HX+iSbCIi8hdTi/Q5c+aQmJjIxIkTWb16NfHx8SQkJHDgwIEK93///fd58MEHmThxIhs3buSNN95gzpw5PPTQQ2c4eS1UWqT7+AVx98UtiQp2mhxIREREjse39aWkxpyH3eKi2eop7DqYY3YkERGpJUwt0qdNm8bIkSMZMWIEbdu2ZebMmfj7+zN79uwK9//555/p3bs3gwcPpkmTJlxyySUMGjTopL3vdcKR4e52LRonIiLiCSKum0oxNi6yrmLuB69Tx66KKyIix1GtIn3p0lMfllVYWMiqVavo06fPX2GsVvr06cOyZcsqfE6vXr1YtWpVWVG+fft2Fi5cSL9+/Y77OgUFBWRlZZW7eaXSnvQci78WjRMREfEAlshWZHe6DYB/HniRBau2mZxIRERqg2oV6ZdeeinNmzfniSeeYPfu3dV64bS0NFwuF9HR0eW2R0dHk5ycXOFzBg8ezKRJkzjnnHPw9fWlefPmXHDBBScc7j5lyhRCQkLKbnFxcdXKW+uVFunr0lwMeX2FyWFERESkMkIvfYTD9mjirKkkL5hMRm6h2ZFERMRk1SrS9+7dy5gxY5g7dy7NmjUjISGBjz76iMLC03ti+fbbb5k8eTIvv/wyq1evZt68eSxYsIDHH3/8uM8ZN24cmZmZZbfqfqlQ65UOdz9s+BHi52tyGBEREakURyDOK/8NwE3u/zLr069MDiQiImarVpEeERHBvffey5o1a1ixYgVnnXUWd955J/Xr1+fuu+9m7dq1lTqGzWYjJSWl3PaUlBRiYmIqfM748eO56aabuPXWW2nfvj3XXHMNkydPZsqUKbjd7gqf43A4CA4OLnfzSkeGu+NHqJ/d5DAiIiJSWb5nX0lGgwtwWIo5f/MkVmyteAFdERGpG0554bjOnTszbtw4xowZQ3Z2NrNnz6ZLly6ce+65rF+//rjPs9vtdOnShSVLlpRtc7vdLFmyhJ49e1b4nNzcXKzW8pFtNhuAFlspKOlJzzGcBKsnXURExHNYLIRe/wIFVj+6Wzez9qMnKCh2mZ1KRERMUu0ivaioiLlz59KvXz8aN27Ml19+yUsvvURKSgpbt26lcePGDBgw4ITHSExMZNasWbz99tts3LiRUaNGkZOTw4gRIwAYOnQo48aNK9u/f//+vPLKK3z44Yfs2LGDxYsXM378ePr3719WrNdZBSUL4h3Gj2Cnj8lhREREpErCGuO65CkAhhW8x9wFX5ocSEREzFKtau6uu+7igw8+wDAMbrrpJp555hnatWtX9nhAQABTp06lfv36JzzODTfcQGpqKhMmTCA5OZmOHTuyaNGissXkkpKSyvWcP/LII1gsFh555BH27t1LZGQk/fv358knn6xOM7xL4ZGedD/8HXX8CwsREREP5N9jGPvXfEZs8lK6rH6ALV27c1aDCLNjiYjIGWYxqjFO/OKLL+bWW2/l2muvxeFwVLhPcXExP/30E+eff/4ph6xJWVlZhISEkJmZ6V3z0+feAuvmMqnoJnx6j+ahfm3MTiQiIpXktecmE3nqe2ocTuHwc90JdmeQ2WUMIf3VESEi4g2qcl6q1nD3JUuWMGjQoOMW6AA+Pj61rkD3aqULx2XjxM9XPekiIiKeyBIUje2q5wEIWf0yJC03OZGIiJxp1SrSp0yZwuzZs4/ZPnv2bJ5++ulTDiXVcPRwd7uKdBEREU8VEH81xA8Gww2f3s7hrENmRxIRkTOoWkX6q6++SuvWrY/ZfvbZZzNz5sxTDiXVULpwXDYq0kVERDzeZU9hBDeEQztZ8tytpGUXmJ1IRETOkGoV6cnJycTGxh6zPTIykv37959yKKmG0kuwZRtO/O1a3V1ERMSjOUMo6j8DNxauNr5mw+K3zU4kIiJnSLWK9Li4OH766adjtv/0008nXdFdTpPS4e7qSRcREfEO9pYXkN55DADnbXoc0neYnEhERM6EanW5jhw5knvuuYeioiIuuugioGQxuX/961/83//9X40GlEoqXTguBz/8VKSLiIh4hYjLH4XUX2D3cpg7Am7+CnzsZscSEZHTqFpF+v3338/Bgwe58847KSwsBMDpdPLAAw8wbty4Gg0oleAqguJ8AD66qw9hEfVMDiQiIiI1wuYD170OM8+Bfb/xw8wxdLntZU1tExHxYtUa7m6xWHj66adJTU1l+fLlrF27lvT0dCZMmFDT+aQySnvRAepHRaknXURExJuExmFcNQOAc9Pm8MF/Xjc5kIiInE7VKtKPCAwMpFu3brRr1+6E10yX06x0Pjo2h4bAiYiIeCFLmyvY32oYANfsepyFP60yOZGIiJwu1R4r9euvv/LRRx+RlJRUNuT9iHnz5p1yMKmCIyu7W/yY/vkGxvZpSZDT1+RQIiIiUpNiB/ybA88tJypnMxFfjWFbi0U0jw4xO5aIiNSwavWkf/jhh/Tq1YuNGzfy6aefUlRUxPr16/nmm28ICdHJ4owrHe5+sNDO6z/uwO02OY+IiIjUPB8H9Ya/T77FSXfLBr59czz5RS6zU4mISA2rVpE+efJknnvuOf73v/9ht9t5/vnn2bRpE//85z9p1KhRTWeUkyksKdL9g0K4/bxm+Ds0J11ERMQb2SJbUNB3CgA35f2HNz7+1OREIiJS06pVpG/bto3LL78cALvdTk5ODhaLhXvvvZfXXnutRgNKJZT2pEfWi2Rcvzb42k5pqQEREREA3n77bRYsWFB2/1//+hehoaH06tWLXbt2mZisbgvpOYLUhpdgt7hI2DSeRb9tNzuSiIjUoGpVc2FhYRw+XFIYNmjQgHXr1gGQkZFBbm5uzaWTyimdk44j0NwcIiLiVSZPnoyfnx8Ay5YtY8aMGTzzzDNERERw7733mpyuDrNYiBw0k8O+EbSw7iPjvw+yLyPP7FQiIlJDqlWkn3feeSxevBiAAQMGMHbsWEaOHMmgQYO4+OKLazSgVELp6u5Zhh/7M3WSFhGRmrF7925atGgBwGeffcZ1113HbbfdxpQpU/jhhx9MTlfHBdTDef2rAAzkS9555zVcbsPkUCIiUhOqVaS/9NJLDBw4EICHH36YxMREUlJSuO6663jjjTdqNKBUQulw9883ZTFk1gqTw4iIiLcIDAzk4MGDAHz11Vf07dsXAKfTSV6evhQ2m2+rPmR2uAWAWw5O5d0lv5qcSEREakKVL8FWXFzM559/TkJCAgBWq5UHH3ywxoNJFZQW6Tn44WfXonEiIlIz+vbty6233kqnTp3YsmUL/fr1A2D9+vU0adLE3HACQEj/J8nc/h2R2Vtp+MMDrGszj3YNQ82OJSIip6DKPek+Pj7ccccd5Ofnn448Uh2lRXq24Ye/inQREakhM2bMoGfPnqSmpvLJJ59Qr149AFatWsWgQYNMTicA+PoRPORNivClj3UVzXbPNTuRiIicoir3pAN0796dNWvW0Lhx45rOI9VROic9Gyd+9mr9SkVERI4RGhrKSy+9dMz2xx57zIQ0cjyW2A5Y+oyHryfg/814aHkBRLQwO5aIiFRTteak33nnnSQmJvLSSy+xbNkyfv/993I3OcMKjhTp/vj7qiddRERqxqJFi/jxxx/L7s+YMYOOHTsyePBgDh06ZGIy+TufXndB0/OgKBdj3kj2pGWaHUlERKqpWkX6wIED2bFjB3fffTe9e/emY8eOdOrUqexfOcOOzEk3nBruLiIiNeb+++8nKysLgD/++IP/+7//o1+/fuzYsYPExEST00k5VitcPRPDGYpl32q+eOleUrI0NVFExBNVa2z0jh07ajqHnIrC0jnpOGmgIl1ERGrIjh07aNu2LQCffPIJV1xxBZMnT2b16tVli8hJLRLSgOJ+0/CddzM3G/P4ZdW1RF94hdmpRESkiqpVpGsuei1z1MJxAQ7NSRcRkZpht9vJzc0F4Ouvv2bo0KEAhIeHl/WwS+3i2+E6Dq9fSNDmufxj7TjoeR44g82OJSIiVVCtiu6dd9454eNHTuJyhpTOSc/BDz/NSRcRkRpyzjnnkJiYSO/evVm5ciVz5swBYMuWLTRs2NDkdHI8Qdc8BzNXQkYSfPEvuGam2ZFERKQKqlWkjx07ttz9oqIicnNzsdvt+Pv7q0g/00p70g+jS7CJiEjNeemll7jzzjuZO3cur7zyCg0aNADgiy++4NJLLzU5nRyXMxiunQVvXgZrP+C15BYMvfVenPoiX0TEI1SrSK9oRdc///yTUaNGcf/9959yKKkCtwuK8wAtHCciIjWrUaNGfP7558dsf+6550xII1XS6B+4eidi+3Eq/0yexkufdea+AReZnUpERCqhxiYwt2zZkqeeeoobb7yRTZs21dRh5WSKcst+zNV10kVEpIa5XC4+++wzNm7cCMDZZ5/NlVdeic2mL4VrO9uFD5K14StC03+n5++PsOTsT7i4bazZsURE5CSqdQm24/Hx8WHfvn01eUg5maK8sh8L8FVPuoiI1JitW7fSpk0bhg4dyrx585g3bx433ngjZ599Ntu2bTM7npyMzZfgwW9SaHXS27aetR9PIfVwgdmpRETkJKrV7Tp//vxy9w3DYP/+/bz00kv07t27RoJJJZX2pLt9/Phi7HnUD/UzOZCIiHiLu+++m+bNm7N8+XLCw8MBOHjwIDfeeCN33303CxYsMDmhnFRECywJk+GLREa73+OJ93sy6baBWCwWs5OJiMhxVKtIv/rqq8vdt1gsREZGctFFF/Hss8/WRC6prNKedKuvH21idYkVERGpOd999125Ah2gXr16PPXUU/pS3oP4dr+ZwxsXEbTzK27c+wT/+bEzN53byuxYIiJyHNUq0t1ud03nkOo6Mtzd19/cHCIi4nUcDgeHDx8+Znt2djZ2u92ERFItFgtBA14h7/nutCrcw7LFE9ly1izOig4yO5mIiFSgRuekiwlKi/T0IhsvLPmTzNwikwOJiIi3uOKKK7jttttYsWIFhmFgGAbLly/njjvu4MorrzQ7nlRFQATO618BYLj1C9565w3yi1wmhxIRkYpUq0i/7rrrePrpp4/Z/swzzzBgwIBTDiVVUFqk78+xMG3xFnKLik0OJCIi3uKFF16gefPm9OzZE6fTidPppFevXrRo0YLp06ebHU+qyHJWAnkdbwZgbPZzvPj5CpMTiYhIRapVpH///ff069fvmO2XXXYZ33///SmHkioovUZ6cFAQg7rHEez0NTmQiIh4i9DQUP773/+yZcsW5s6dy9y5c9myZQuffvopoaGhZseTavDr9yQ5wc2ItmTQbvUEvtt8wOxIIiLyN9Wak368uWi+vr5kZWWdciipgtKe9Ljoeky5toPJYURExNMlJiae8PGlS5eW/Txt2rTTHUdqmt2fgIFvUjzrYi6z/cKkj56jfeJjhAdojQERkdqiWkV6+/btmTNnDhMmTCi3/cMPP6Rt27Y1EkwqqfQSbFo4TkREasJvv/1Wqf10CS8PVr8jxgUPw9LHeNB4E0vOCAg4y+xUIiJSqlpF+vjx47n22mvZtm0bF110EQBLlizhgw8+4OOPP67RgHISpT3peYYvhXlFhPhpuLuIiFTf0T3l4r18zx2Le/s32Hf9APNugVu/Bh+H2bFERIRqzknv378/n332GVu3buXOO+/k//7v/9izZw9ff/31MddQl9OstEj/34YMLnnuO5PDiIiIVGzGjBk0adIEp9NJjx49WLlyZaWe9+GHH2KxWPT5oqZZbVivmwX+9SD5d4q/Gk9yZr7ZqUREhFO4BNvll1/OTz/9RE5ODmlpaXzzzTecf/75NZlNKuNITzp2/O3VGhghIiJyWs2ZM4fExEQmTpzI6tWriY+PJyEhgQMHTrxo2c6dO7nvvvs499xzz1DSOiY4Fq4uuSybz8pXeeW1l3RZNhGRWqBaRfovv/zCihXHXrZjxYoV/Prrr6ccSqqgdE56Hg787TaTw4iIiBxr2rRpjBw5khEjRtC2bVtmzpyJv78/s2fPPu5zXC4XQ4YM4bHHHqNZs2ZnMG0dc1YCuZ1vB+CenOkk7dhqciAREalWkT569Gh27959zPa9e/cyevToUw4lVVDak16AXUW6iIjUOoWFhaxatYo+ffqUbbNarfTp04dly5Yd93mTJk0iKiqKW265pVKvU1BQQFZWVrmbVI5/v8fJqdeOMA5z1k+J4FZvuoiImapVpG/YsIHOnTsfs71Tp05s2LDhlENJFRSXzB/LM+z4abi7iIjUMmlpabhcLqKjo8ttj46OJjk5ucLn/Pjjj7zxxhvMmjWr0q8zZcoUQkJCym5xcXGnlLtO8XEQMPgdsAfCrh/h+6kYhmF2KhGROqtaRbrD4SAlJeWY7fv378fHR4XiGXX0cHdf9aSLiIhnO3z4MDfddBOzZs0iIiKi0s8bN24cmZmZZbeKRvzJCdRrDpeXXPfe+PYpnnz5dQqL3SaHEhGpm6pVpF9yySVlJ8MjMjIyeOihh+jbt2+NhZNKKLdwnIp0ERGpXSIiIrDZbMd8uZ+SkkJMTMwx+2/bto2dO3fSv39/fHx88PHx4Z133mH+/Pn4+Piwbdu2Cl/H4XAQHBxc7iZVFH8Dhe0GYsHNzQcm8+Lnx64/JCIip1+1ivSpU6eye/duGjduzIUXXsiFF15I06ZNSU5O5tlnn63pjHIipT3p+YYdPxXpIiJSy9jtdrp06cKSJUvKtrndbpYsWULPnj2P2b9169b88ccfrFmzpux25ZVXcuGFF7JmzRoNYz/N7P2fJSeoKfUt6XRY9TBLNlQ8JUFERE6fahXpDRo04Pfff+eZZ56hbdu2dOnSheeff54//vijWifPqlw79YILLsBisRxzu/zyy6vTFM9XVDInPR87AQ5NNRARkdonMTGRWbNm8fbbb7Nx40ZGjRpFTk4OI0aMAGDo0KGMGzcOAKfTSbt27crdQkNDCQoKol27dtjtdjOb4v0cgQQMfptiiy99bav45eOn2Z+ZZ3YqEZE6pdpVXUBAAOeccw6NGjWisLAQgC+++AKAK6+8stLHOXLt1JkzZ9KjRw+mT59OQkICmzdvJioq6pj9582bV/Z6AAcPHiQ+Pp4BAwZUtymerWy4uwM/zUkXEZFa6IYbbiA1NZUJEyaQnJxMx44dWbRoUdlicklJSVit1eo3kNMhNh76ToKvxnGv+x0mvBPPk3cOxcem35GIyJlgMaqxfOf27du55ppr+OOPP7BYLBiGgcViKXvc5ar8pTt69OhBt27deOmll4CSIXBxcXHcddddPPjggyd9/vTp05kwYQL79+8nICDgpPtnZWUREhJCZmamd8xXe6EzpG/j+oIJ9L30am4/v7nZiUREpIq87txUC+g9PUWGQe67g/Df/gVJ7kjm/+NDxvTranYqERGPVZXzUrW+Eh07dixNmzblwIED+Pv7s27dOr777ju6du3Kt99+W+njVPfaqUd74403GDhw4HELdK+/bmppT3q+Fo4TERGRmmKx4D9gJjn+DWhkTaXFsgf5dtOxV/YREZGaV60ifdmyZUyaNImIiAisVis2m41zzjmHKVOmcPfdd1f6ONW5durRVq5cybp167j11luPu4/XXze1+Kjh7rpOuoiIiNQUv1AChrxLscWHS22/8NuHk0g6mGt2KhERr1etIt3lchEUFASUXFpl3759ADRu3JjNmzfXXLqTeOONN2jfvj3du3c/7j5ef93U0p70qYP+wXlnVf56siIiIiIn1aALxqVPATDWeI9XZ79KbmGxyaFERLxbtYr0du3asXbtWqBkTvkzzzzDTz/9xKRJk2jWrFmlj1PVa6ceLScnhw8//JBbbrnlhPt59XVT3W4oLlndvVPz+kQFOU0OJCIiIt7Gt/ut5LYbgtVi8ED2Mzz7wRdUY0kjERGppGoV6Y888ghutxuASZMmsWPHDs4991wWLlzICy+8UOnjVPXaqUf7+OOPKSgo4MYbb6xOE7xD8VGXRPFRgS4iIiKngcWC/9XPcTiyM8GWXAZue4CVG3eanUpExGtVaxJzQkJC2c8tWrRg06ZNpKenExYWVm6V98pITExk2LBhdO3ale7duzN9+vRjrp3aoEEDpkyZUu55b7zxBldffTX16tWrThO8Q+k10gHe+iWZqzo1IixA148VERGRGubjIGjoB+S+dC4tC/bC2oeg9XugS+eJiNS4GltpLDw8vFrPq861Uzdv3syPP/7IV199dcq5PVpRyeItBfjy6OebObdVjIp0EREROT2CYvC/6UN48zLYvBC+ewoufMjsVCIiXqdWLAc+ZswYxowZU+FjFV3SrVWrVpoLBWWLxrlsTi7vEEuon6/JgURERMSrNewC/afDZ6Pgu6d5d0cQ1w4ZRYCjVnykFBHxChqj5MlKe9L9/QOZ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ibhcLv744w9iY2t8KQERERGpAUcvEtu2bVtmzpyJv78/s2fPrnD/559/nksvvZT777+fNm3a8Pjjj9O5c2deeuml475GQUEBWVlZ5W4iIiKeyPQL0CUmJjJr1izefvttNm7cyKhRo8jJySlb7X3o0KHlFpabNGkSX331Fdu3b2f16tXceOON7Nq1i1tvvdWsJoiIeD0tinbq6up7eGSR2D59+pRtO9kiscuWLSu3P0BCQsIJF5WdMmUKISEhZbcam9omIiJyhpk+J/2GG24gNTWVCRMmkJycTMeOHVm0aFHZYnJJSUlYj7qY/aFDhxg5ciTJycmEhYXRpUsXfv75Z9q2rWiNdBERORU2W8m8rsLCQvz8auLKp3VXbm7JpWV8fStYLMeLVWeR2OTk5Ar3T05OPu7rnNY1aERERM4g04t0gDFjxjBmzJgKH/v222/L3X/uued47rnnzkAqERHx8fHB39+f1NRUfH19y31pKpVjGAa5ubkcOHCA0NDQsi8+pGY5HA4cDl26VEREPF+tKNJFRKR2slgsxMbGsmPHDnbt2mV2HI8WGhpa6UVRvUl1FomNiYk5pUVlRUREPJmKdBEROSG73U7Lli0pLCw0O4rH8vX1rbM96EcvEnv11VcDfy0Se7xRdD179mTJkiXcc889ZdsWL15c6UVlRUREPJmKdBEROSmr1YrT6TQ7hnioxMREhg0bRteuXenevTvTp08/ZpHYBg0aMGXKFADGjh3L+eefz7PPPsvll1/Ohx9+yK+//sprr71mZjNERETOCBXpIiIiclpVdZHYXr168f777/PII4/w0EMP0bJlSz777DPatWtnVhNERETOGItRx64Jk5WVRUhICJmZmQQHB5sdR0REROem00DvqYiI1CZVOS9pmV4RERERERGRWqLODXc/MnAgKyvL5CQiIiIljpyT6tjgttNK53sREalNqnKur3NF+uHDhwGIi4szOYmIiEh5hw8fJiQkxOwYXkHnexERqY0qc66vc3PS3W43+/btIygoCIvFckrHysrKIi4ujt27d3vFfDe1p/bypraAd7XHm9oCao9ZDMPg8OHD1K9fv9wCalJ9Ot9XzJvaAmpPbeZNbQHvao83tQU8pz1VOdfXuZ50q9VKw4YNa/SYwcHBtfoPoqrUntrLm9oC3tUeb2oLqD1mUA96zdL5/sS8qS2g9tRm3tQW8K72eFNbwDPaU9lzvb6uFxEREREREaklVKSLiIiIiIiI1BIq0k+Bw+Fg4sSJOBwOs6PUCLWn9vKmtoB3tceb2gJqj0hFvOnvyJvaAmpPbeZNbQHvao83tQW8rz1QBxeOExEREREREamt1JMuIiIiIiIiUkuoSBcRERERERGpJVSki4iIiIiIiNQSKtJFREREREREagkV6adgxowZNGnSBKfTSY8ePVi5cqXZkU5qypQpdOvWjaCgIKKiorj66qvZvHlzuX3y8/MZPXo09erVIzAwkOuuu46UlBSTElfNU089hcVi4Z577inb5knt2bt3LzfeeCP16tXDz8+P9u3b8+uvv5Y9bhgGEyZMIDY2Fj8/P/r06cOff/5pYuLjc7lcjB8/nqZNm+Ln50fz5s15/PHHOXqtytrcnu+//57+/ftTv359LBYLn332WbnHK5M9PT2dIUOGEBwcTGhoKLfccgvZ2dlnsBUlTtSWoqIiHnjgAdq3b09AQAD169dn6NCh7Nu3r9wxaktb4OS/m6PdcccdWCwWpk+fXm57bWqP1G6eeK4H7z7fe/q5HrznfK9zfe06n3jT+b6un+tVpFfTnDlzSExMZOLEiaxevZr4+HgSEhI4cOCA2dFO6LvvvmP06NEsX76cxYsXU1RUxCWXXEJOTk7ZPvfeey//+9//+Pjjj/nuu+/Yt28f1157rYmpK+eXX37h1VdfpUOHDuW2e0p7Dh06RO/evfH19eWLL75gw4YNPPvss4SFhZXt88wzz/DCCy8wc+ZMVqxYQUBAAAkJCeTn55uYvGJPP/00r7zyCi+99BIbN27k6aef5plnnuHFF18s26c2tycnJ4f4+HhmzJhR4eOVyT5kyBDWr1/P4sWL+fzzz/n++++57bbbzlQTypyoLbm5uaxevZrx48ezevVq5s2bx+bNm7nyyivL7Vdb2gIn/90c8emnn7J8+XLq169/zGO1qT1Se3nquR6893zv6ed68K7zvc71tet84k3n+zp/rjekWrp3726MHj267L7L5TLq169vTJkyxcRUVXfgwAEDML777jvDMAwjIyPD8PX1NT7++OOyfTZu3GgAxrJly8yKeVKHDx82WrZsaSxevNg4//zzjbFjxxqG4VnteeCBB4xzzjnnuI+73W4jJibG+Pe//122LSMjw3A4HMYHH3xwJiJWyeWXX27cfPPN5bZde+21xpAhQwzD8Kz2AMann35adr8y2Tds2GAAxi+//FK2zxdffGFYLBZj7969Zyz73/29LRVZuXKlARi7du0yDKP2tsUwjt+ePXv2GA0aNDDWrVtnNG7c2HjuuefKHqvN7ZHaxVvO9YbhHed7bzjXG4Z3ne91rq+95xNvOt/XxXO9etKrobCwkFWrVtGnT5+ybVarlT59+rBs2TITk1VdZmYmAOHh4QCsWrWKoqKicm1r3bo1jRo1qtVtGz16NJdffnm53OBZ7Zk/fz5du3ZlwIABREVF0alTJ2bNmlX2+I4dO0hOTi7XlpCQEHr06FHr2gLQq1cvlixZwpYtWwBYu3YtP/74I5dddhngee05WmWyL1u2jNDQULp27Vq2T58+fbBaraxYseKMZ66KzMxMLBYLoaGhgOe1xe12c9NNN3H//fdz9tlnH/O4p7VHzOFN53rwjvO9N5zrwbvO9zrXe/b5xJPP995+rvcxO4AnSktLw+VyER0dXW57dHQ0mzZtMilV1bndbu655x569+5Nu3btAEhOTsZut5f9x3pEdHQ0ycnJJqQ8uQ8//JDVq1fzyy+/HPOYJ7Vn+/btvPLKKyQmJvLQQw/xyy+/cPfdd2O32xk2bFhZ3or+7mpbWwAefPBBsrKyaN26NTabDZfLxZNPPsmQIUMAPK49R6tM9uTkZKKioso97uPjQ3h4eK1uX35+Pg888ACDBg0iODgY8Ly2PP300/j4+HD33XdX+LintUfM4S3nevCO8723nOvBu873Otd77vnE08/33n6uV5Feh40ePZp169bx448/mh2l2nbv3s3YsWNZvHgxTqfT7DinxO1207VrVyZPngxAp06dWLduHTNnzmTYsGEmp6u6jz76iPfee4/333+fs88+mzVr1nDPPfdQv359j2xPXVBUVMQ///lPDMPglVdeMTtOtaxatYrnn3+e1atXY7FYzI4jUit4+vnem8714F3ne53rPZOnn+/rwrlew92rISIiApvNdsyqoSkpKcTExJiUqmrGjBnD559/ztKlS2nYsGHZ9piYGAoLC8nIyCi3f21t26pVqzhw4ACdO3fGx8cHHx8fvvvuO1544QV8fHyIjo72mPbExsbStm3bctvatGlDUlISQFleT/m7u//++3nwwQcZOHAg7du356abbuLee+9lypQpgOe152iVyR4T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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# plot the development of the accuracy and loss during training\n","plt.figure(figsize=(12,4))\n","plt.subplot(1,2,(1))\n","plt.plot(history.history['accuracy'],linestyle='-.')\n","plt.plot(history.history['val_accuracy'])\n","plt.title('model accuracy')\n","plt.ylabel('accuracy')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='lower right')\n","plt.subplot(1,2,(2))\n","plt.plot(history.history['loss'],linestyle='-.')\n","plt.plot(history.history['val_loss'])\n","plt.title('model loss')\n","plt.ylabel('loss')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='upper right')"]},{"cell_type":"markdown","metadata":{"id":"uOwR3Esbw8eN"},"source":["### Visualize the learned kernel and experiment with the code\n","\n","You see that the CNN performs very good at this task (100% accuracy). We can check which pattern is recognized by the **learned kernel** and see if you think that this is helpful to distinguish between images with horizontal and vertical edges.\n","\n","Below you can see the original image, the image after the convolution operation with the learned kernel and the maximum value from the maxpooling operation. Note that the maxpooling has the same size as the convolved image so there is just one value as output.\n","\n","\n","Move the sliders to inspect different pictures from the validation set and their predictions\n"]},{"cell_type":"code","execution_count":11,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":935,"referenced_widgets":["2b9eb29c4c4d4b44b1e5592233ae4dab","11b66fd5176b475ba5c69140eae37d62","ed53a993099641bb86c8d7a10fc17bdb","e905c391b1d644bc9f0b59976800f391","3ee2908fbdce4081a6bb10c970fa187d","9b72172c1a1c46439102f6059066a39f","613f8f4d5b0e4816aa55033960822230","5f1c8af64c254ffdb40ba8499cac6ca8","1140e90db2fc4b9c91cbbe362767d65d","f7e38cbf0fa84263916f1c8dbcf4c53c"]},"executionInfo":{"elapsed":1357,"status":"ok","timestamp":1708799011724,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"pl1yuAddVRnE","outputId":"6eb7bfed-14c1-4975-d9e9-385c6412784a"},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAtcAAAEpCAYAAABY/g6pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0FklEQVR4nO3deVxU9f7H8fcAMigCbqAZuKSWEZqFS+6klplpmpWWJmqLFe5t1/u7ZrZhtlzLTG3TSr2amkuLmbmkWeaWZVreLDXMFLeAUFHg+/vD38zPYZ0ZzjBgr+fjMQ8f8+XMnI+Hc87nPWfOOdiMMUYAAAAASizA3wUAAAAAFwrCNQAAAGARwjUAAABgEcI1AAAAYBHCNQAAAGARwjUAAABgEcI1AAAAYBHCNQAAAGARwjUAAABgEcL1/xk0aJDq1at3Qcy7Xr16GjRokFevTUhIUEJCgmW1SNITTzwhm83mMlaSGr01a9Ys2Ww27du3r1Tnm1dJft+DBg1S5cqVrS0IgF/4Yn9b1qxdu1Y2m01r1651a/pJkyapcePGys3N9W1h/2ffvn2y2WyaNWuW16994YUXrC/sPJ9++qkqV66sI0eOWP7eNptNw4YNs/x9yxqbzaYnnnjC49d5u36Uerh2BBzHIygoSBdffLEGDRqk33//vbTLQTEOHjyoJ554Qtu3b/d3KfDAyZMn9cQTT7jd0AB/cfSELVu2+LuUMqtevXq66aab8o2/9957CgwM1A033KDTp0/7oTJrpaen67nnntNjjz2mgIAL69jfJ5984lW4k6QbbrhBDRs2VHJysrVFwWeC/DXjJ598UvXr19fp06e1ceNGzZo1S19++aV++OEHhYSE+KusC8Lu3bu93jF99tlnLs8PHjyoCRMmqF69emrWrJkF1Z1TkhrLuzfeeMPnR2VOnjypCRMmSNIFf2QM+DuaM2eOBg0apC5dumjJkiUXRN98++23lZ2drTvuuKPU5lm3bl2dOnVKFSpU8Ol8PvnkE02dOtXrgD106FA9/PDDmjBhgsLCwqwtDpbzW7rp1q2bBgwYoHvuuUdvvvmmHn74Yf3yyy9atmyZv0q6YNjtdq93FMHBwQoODra4ovxKUmN5V6FCBdntdn+XAeA82dnZOnPmjL/LcMu8efOUmJioTp06aenSpZYE65MnT1pQWcnMnDlTPXv2LNUPCjabTSEhIQoMDCy1eXqjT58+ysrK0oIFC/xdCtxQZg4dtm/fXpL0yy+/OMfOnDmjxx9/XPHx8YqIiFBoaKjat2+vNWvWuLz2/POeXn/9dTVo0EB2u10tWrTQ5s2b881ryZIliouLU0hIiOLi4rR48eICa8rMzNRDDz2kmJgY2e12XXbZZXrhhRdkjHGZznHO0oIFCxQbG6uKFSuqdevW2rFjhyRpxowZatiwoUJCQpSQkFDkOb/GGNWrV08333xzvp+dPn1aERERGjp0aKGvl/Kfz+z42nXDhg0aM2aMIiMjFRoaqt69e+c7h+v8cwDXrl2rFi1aSJIGDx7sPJXHce7R+vXrddttt6lOnTqy2+2KiYnR6NGjderUqSLrK6jG808Vyvs4f3n99NNPuvXWW1WtWjWFhISoefPmBX4g27lzpzp16qSKFSsqOjpaTz/9tFtHi5ctWyabzabvv//eObZo0SLZbDbdcsstLtNefvnl6tu3r8vY7NmzFR8fr4oVK6patWrq16+fUlJSXKYp6JzrY8eO6a677lJ4eLiqVKmixMREfffdd4We6/X777+rV69eqly5siIjI/Xwww8rJydH0rntITIyUpI0YcIE53J0HDE5dOiQBg8erOjoaNntdl100UW6+eab/X4uOlCU33//XUOGDFHNmjVlt9t1xRVX6O2333aZxpueMXnyZGfP2LVrl/MakT179mjQoEGqUqWKIiIiNHjw4AIDqDvbvCRnb6pYsaJatmyp9evXe7Uc3n//fQ0YMEAJCQlatmxZviDqTj0JCQmKi4vT1q1b1aFDB1WqVEn//Oc/Pe6l7u6P3bF37159//336tKli8v41VdfnW/f26RJk3z76fnz58tms+nHH390jrmzzhR2Tq2jn5+fE4q6Xqao5TVo0CBNnTpVkmuvc5g3b57i4+MVFham8PBwNWnSRC+//LLL+0dFRalp06ZaunRpIUuwZObMmaPLLrtMISEhio+P17p165w/W7NmjWw2W4FZae7cubLZbPr6668LfW9HBvnyyy81YsQIRUZGqkqVKho6dKjOnDmjP//8UwMHDlTVqlVVtWpVPfroo/lylrt5LCsrS6NHj1ZkZKTCwsLUs2dPHThwoMC63Fk/vOW300LycjT2qlWrOsfS09P15ptv6o477tC9996rjIwMvfXWW+ratas2bdqU7zSFuXPnKiMjQ0OHDpXNZtOkSZN0yy236Ndff3UeJf3ss8/Up08fxcbGKjk5WceOHXMGjfMZY9SzZ0+tWbNGd999t5o1a6YVK1bokUce0e+//65///vfLtOvX79ey5YtU1JSkiQpOTlZN910kx599FG99tprevDBB3XixAlNmjRJQ4YM0erVqwtcDjabTQMGDNCkSZN0/PhxVatWzfmzDz/8UOnp6RowYIBXy3j48OGqWrWqxo8fr3379mny5MkaNmyY5s+fX+D0l19+uZ588kk9/vjjuu+++5wfgNq0aSPp3M7n5MmTeuCBB1S9enVt2rRJU6ZM0YEDBzz+dP3ee+/lG/vXv/6l1NRU5wV8O3fuVNu2bXXxxRfrH//4h0JDQ/X++++rV69eWrRokXr37i3pXHi89tprlZ2d7Zzu9ddfV8WKFYuto127drLZbFq3bp2aNm0q6dzvNiAgQF9++aVzuiNHjuinn35yuRDkmWee0bhx43T77bfrnnvu0ZEjRzRlyhR16NBB3377rapUqVLgPHNzc9WjRw9t2rRJDzzwgBo3bqylS5cqMTGxwOlzcnLUtWtXtWrVSi+88II+//xzvfjii2rQoIEeeOABRUZGatq0aXrggQfUu3dvZ2Ny/H/69OmjnTt3avjw4apXr55SU1O1cuVK/fbbb367qBcoyuHDh3XNNdc4D2RERkZq+fLluvvuu5Wenq5Ro0ZJ8rxnzJw5U6dPn9Z9990nu93usr+9/fbbVb9+fSUnJ2vbtm168803FRUVpeeee845jbvb/FtvvaWhQ4eqTZs2GjVqlH799Vf17NlT1apVU0xMjNvLYdGiRerfv786dOigDz/8MN8+zZN90LFjx9StWzf169dPAwYMUM2aNZ0/c6eXurs/dtdXX30l6VyYPl/79u31n//8x/n8+PHj2rlzpwICArR+/XqX/XRkZKQuv/xySe6vMwX5+OOP1bdvXzVp0kTJyck6ceKE7r77bl188cUFTl/c8ho6dKgOHjyolStX5ut1K1eu1B133KHOnTs7160ff/xRGzZs0MiRI12mjY+P15IlS4pfmB764osvNH/+fI0YMUJ2u12vvfaabrjhBm3atElxcXFKSEhQTEyM5syZk+/3OmfOHDVo0ECtW7cudj7Dhw9XrVq1NGHCBG3cuFGvv/66qlSpoq+++kp16tTRs88+q08++UTPP/+84uLiNHDgQEme5bF77rlHs2fP1p133qk2bdpo9erV6t69e75aSrJ+uMWUspkzZxpJ5vPPPzdHjhwxKSkpZuHChSYyMtLY7XaTkpLinDY7O9tkZWW5vP7EiROmZs2aZsiQIc6xvXv3GkmmevXq5vjx487xpUuXGknmww8/dI41a9bMXHTRRebPP/90jn322WdGkqlbt65zbMmSJUaSefrpp13mf+uttxqbzWb27NnjHJNk7Ha72bt3r3NsxowZRpKpVauWSU9Pd46PHTvWSHKZNjEx0WXeu3fvNpLMtGnTXObds2dPU69ePZObm5t3sbqoW7euSUxMdD53LPMuXbq4vHb06NEmMDDQZVl07NjRdOzY0fl88+bNRpKZOXNmvvmcPHky31hycrKx2Wxm//79zrHx48ebvKta3hrzmjRpkpFk3n33XedY586dTZMmTczp06edY7m5uaZNmzamUaNGzrFRo0YZSeabb75xjqWmppqIiIh8y74gV1xxhbn99tudz6+++mpz2223GUnmxx9/NMYY88EHHxhJ5rvvvjPGGLNv3z4TGBhonnnmGZf32rFjhwkKCnIZz/v7XrRokZFkJk+e7BzLyckxnTp1yrfsExMTjSTz5JNPusznqquuMvHx8c7nR44cMZLM+PHjXaY7ceKEkWSef/75IpcBUFoc+6fNmzcXOs3dd99tLrroInP06FGX8X79+pmIiAjnvsjTnhEeHm5SU1Ndpnfsr86f3hhjevfubapXr+587u42f+bMGRMVFWWaNWvmUtvrr79uJLnsbwtTt25dU7t2bRMUFGQSEhJMZmZmvmk82Qd17NjRSDLTp093mdaTXuru/njNmjVGklmzZk2R/8d//etfRpLJyMhwGV+wYIGRZHbt2mWMMWbZsmXGbrebnj17mr59+zqna9q0qendu7fzubvrjOP/fP5+tkmTJiY6OtqllrVr1+bLCZ4sr6SkpHx90BhjRo4cacLDw012dnaRy8cYY5599lkjyRw+fLjYad0lyUgyW7ZscY7t37/fhISEuCzPsWPHGrvd7pIXUlNTTVBQUL4+k5djG+/atatLBmndurWx2Wzm/vvvd45lZ2eb6Ohol+3C3Ty2fft2I8k8+OCDLtPdeeed+fphSdYPd/jttJAuXbooMjJSMTExuvXWWxUaGqply5a5HEEODAx0nv+bm5ur48ePKzs7W82bN9e2bdvyvWffvn1djnw7jrT++uuvkqQ//vhD27dvV2JioiIiIpzTXXfddYqNjXV5r08++USBgYEaMWKEy/hDDz0kY4yWL1/uMt65c2eXo36tWrWSdO4o4fkXHzjGHTUV5NJLL1WrVq00Z84c59jx48e1fPly9e/fP99t7dx13333uby2ffv2ysnJ0f79+716v/OPmmRmZuro0aNq06aNjDH69ttvvXpP6dxXUGPHjtXw4cN11113STr3/1+9erVuv/12ZWRk6OjRozp69KiOHTumrl276ueff3bebeaTTz7RNddco5YtWzrfMzIyUv3793dr/u3bt3d+ZZuRkaHvvvtO9913n2rUqOEcX79+vapUqaK4uDhJ0gcffKDc3FzdfvvtztqOHj2qWrVqqVGjRvm+lj7fp59+qgoVKujee+91jgUEBDi/BSnI/fffn6/motYph4oVKyo4OFhr167ViRMnip0e8DdjjBYtWqQePXrIGOOyfXXt2lVpaWnOfuBpz+jTp4/zFKq8CtrGjh07pvT0dEnub/NbtmxRamqq7r//fpfrWQYNGuTSh4rj+L9ER0cX+C2cp/sgu92uwYMHFziv4nqpJ/tjdx07dkxBQUH5bjXqmLfjNIX169erRYsWuu6665z74z///FM//PCDc1pP1pm8Dh48qB07dmjgwIEutXTs2FFNmjTxankVpUqVKsrMzNTKlSuLndYxj6NHjxY7rSdat26t+Ph45/M6dero5ptv1ooVK5ynGw4cOFBZWVlauHChc7r58+crOzvb7W/T7777bpcM0qpVKxljdPfddzvHAgMD1bx5c5dl524e++STTyQp33R5j0KXZP1wl9/C9dSpU7Vy5UotXLhQN954o44ePVrgRV7vvPOOmjZtqpCQEFWvXl2RkZH6+OOPlZaWlm/aOnXquDx3rIiOEOEIkY0aNcr32ssuu8zl+f79+1W7du18V+U6vnLKG0jzztux08z7lZ9jvLhgM3DgQG3YsME5nwULFujs2bPOsOmN4paPp3777TcNGjRI1apVc57727FjR0kq8PfjjgMHDqhv375q27atXnrpJef4nj17ZIzRuHHjFBkZ6fIYP368JCk1NVXSud+NO7/jwrRv315//PGH9uzZo6+++ko2m02tW7d2Cd3r169X27ZtnXc8+fnnn2WMUaNGjfLV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3r272rVrpyFDhuj48eOaMmWKrrjiCpf37NGjh6699lr9z//8j/bt26crr7xSn332mZYuXapRo0blO6fHF7p3767q1atrwYIF6tatm6Kionw+z7waNGigKlWqaPr06QoLC1NoaKhatWqlxo0bq0GDBnr44Yf1+++/Kzw8XIsWLfLq/O2jR4/qwQcfVGxsrOx2e76jp71791ZoaKimTp2qdu3aqUmTJrr33nt1ySWX6PDhw/r666914MABfffdd5KkRx99VO+9955uuOEGjRw50nkrvrp167rcF7Uo7du315w5c2Sz2ZyniQQGBqpNmzZasWKFEhISXM5XbNCggZ5++mmNHTtW+/btU69evRQWFqa9e/dq8eLFuu+++/Twww8XOK9evXqpZcuWeuihh7Rnzx41btxYy5Yt0/HjxyV5d35dxYoVFRsbq/nz5+vSSy9VtWrVFBcXp+zsbHXu3Fm33367YmNjFRQUpMWLF+vw4cN++fAGOLz99tsFnms6cuRITZw4UWvWrFGrVq107733KjY2VsePH9e2bdv0+eefO7cVX/SMwri7zVeoUEFPP/20hg4dqk6dOqlv377au3evZs6c6dE51+erVKmSPv74Y3Xs2FFDhgxRRESEevbs6fU+yBvu7o/ddckllyguLk6ff/65hgwZ4vKzhg0bqlatWtq9e7eGDx/uHO/QoYMee+wxSXIJ15LcXmcK8uyzz+rmm29W27ZtNXjwYJ04cUKvvvqq4uLivF6PHAdjRowYoa5duzoPmN1zzz06fvy4OnXqpOjoaO3fv19TpkxRs2bNnOcUS+fOAf7++++LvNDdYd++fapfv74SExML/DsJecXFxalr164ut+KT5Pwrv+cbOHCgbr31VknSU0895c5/vcTczWPNmjXTHXfcoddee01paWlq06aNVq1aVeA3DiVZP9zi0b1FLFDUbZdycnJMgwYNTIMGDUx2drbJzc01zz77rKlbt66x2+3mqquuMh999FG+W5k5bpVS0O3FVMDtyBYtWmQuv/xyY7fbTWxsrPnggw/yvacxxmRkZJjRo0eb2rVrmwoVKphGjRqZ559/Pt+t8CSZpKQkl7HCanLclmjBggXOsYLm7fDggw8aSWbu3LkF/rwghd2KL+8yL+gWSXlvxWfMudsKxcbGmqCgIJdb0uzatct06dLFVK5c2dSoUcPce++9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","text/plain":["
"]},"metadata":{},"output_type":"display_data"},{"name":"stdout","output_type":"stream","text":["\n","---------Move the sliders to inspect different vertical and horizontal images from the valset and their predictions:------------------\n","\n"]}],"source":["## Do not worry about this cell, just move the sliders.\n","import scipy.signal\n","from skimage.measure import block_reduce # For max pooling\n","import ipywidgets as widgets\n","\n","plt.figure(figsize=(10, 3))\n","plt.subplot(1, 2, 1)\n","plt.imshow(np.random.rand(25).reshape(5, 5),\"gray\") ,plt.title('Randomly initalized weights')\n","plt.subplot(1, 2, 2)\n","conv_filter=np.squeeze(model.get_weights()[0], axis=2)\n","plt.imshow(conv_filter[:,:,0],\"gray\"),plt.title('Learned Kernel (weights) , by model'),plt.show();\n","print(\"\\n---------Move the sliders to inspect different vertical and horizontal images from the valset and their predictions:------------------\\n\")\n","\n","def scale_convolution_map(conv_map, min_val=-3, max_val=3):\n"," clipped_conv_map = np.clip(conv_map, min_val, max_val)\n"," scaled_conv_map = (clipped_conv_map - min_val) / (max_val - min_val)\n"," return scaled_conv_map\n","\n","def plot_conv(img,category):\n"," convolved_image = scipy.signal.convolve2d(img.squeeze(), conv_filter.squeeze(), mode='same')\n"," scaled_conv_image = scale_convolution_map(convolved_image + model.get_weights()[1])\n"," max_pooled_image = block_reduce(convolved_image + model.get_weights()[1], block_size=(50, 50), func=np.max)\n"," scaled_max_pooled_image = scale_convolution_map(max_pooled_image)\n"," \n"," plt.figure(figsize=(20, 4))\n"," plt.subplot(1, 6, 1)\n"," plt.imshow(img, \"gray\", vmin=0, vmax=1),plt.title('Original Image')\n"," plt.subplot(1, 6, 2)\n"," plt.imshow(scaled_conv_image, \"gray\", vmin=0, vmax=1),plt.title('Convolved Image')\n"," plt.subplot(1, 6, 3),plt.imshow(scaled_max_pooled_image, \"gray\", vmin=0, vmax=1)\n"," plt.title(f'Max Pooled = {max_pooled_image[0][0]:.2f}'),plt.xticks([]), plt.yticks([])\n"," plt.subplot(1, 6, 4),plt.axis('off')\n"," pred = model.predict(img.reshape(1, 50, 50, 1), verbose=0)\n"," if category==\"vertical\":\n"," text_info = f'''\n"," P(y=vertical|x): {pred[0][0]:.4f}\n"," P(y=horizontal|x): {pred[0][1]:.4f}\n"," \n"," \n"," loss component: {-np.log(pred[0][0]):.4f}\n"," '''\n"," else:\n"," text_info = f'''\n"," P(y=vertical|x): {pred[0][0]:.4f}\n"," P(y=horizontal|x): {pred[0][1]:.4f}\n"," \n"," \n"," loss component: {-np.log(pred[0][1]):.4f}\n"," '''\n"," \n"," plt.text(0, 0.5, text_info, ha='left', va='center')\n"," plt.subplot(1, 6, 5)\n"," x_values = np.linspace(0.001, 1.1, 500)\n"," plt.plot(x_values, -np.log(x_values), label='-log(P(y|x))')\n"," plt.ylim(-0.5, 6),plt.xlim(-0.1, 1.1),plt.xlabel('P(y|x)')\n"," if category==\"vertical\":\n"," plt.plot(pred[0][0], -np.log(pred[0][0]), 'bo', label='loss component')\n"," else:\n"," plt.plot(pred[0][1], -np.log(pred[0][1]), 'ro', label='loss component')\n"," \n"," plt.legend(),plt.grid(True), plt.tight_layout(),plt.show()\n","\n","def inspect_preds(idx,category='vertical'):\n"," plot_conv(X_val[idx,:,:,0],category)"]},{"cell_type":"code","execution_count":12,"metadata":{},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c329c0f01ae34d1aaf96ebc07046067f","version_major":2,"version_minor":0},"text/plain":["interactive(children=(IntSlider(value=0, description='vertical', max=499), Output()), _dom_classes=('widget-in…"]},"metadata":{},"output_type":"display_data"}],"source":["horizontal_slider = widgets.IntSlider(min=0, max=num_images_val//2-1, step=1, value=0, description='vertical')\n","widgets.interact(inspect_preds, idx=horizontal_slider,category=widgets.fixed('vertical'));"]},{"cell_type":"code","execution_count":13,"metadata":{},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"8e766207a5c345d28dfa408bbc2a87f0","version_major":2,"version_minor":0},"text/plain":["interactive(children=(IntSlider(value=500, description='horizontal', max=999, min=500), Output()), _dom_classe…"]},"metadata":{},"output_type":"display_data"}],"source":["vertical_slider = widgets.IntSlider(min=num_images_val//2, max=num_images_val-1, step=1, value=0, description='horizontal')\n","widgets.interact(inspect_preds, idx=vertical_slider,category=widgets.fixed('horizontal'));"]},{"cell_type":"markdown","metadata":{},"source":["## Excercise 1 \n","\n","Given the probabilities, please calculate the loss component for one example of the validation set. "]},{"cell_type":"markdown","metadata":{},"source":["assumed that we have a vertical image, label = vertical or translated to numbers label = 0\n","\n","assume that probabilites by the model for said example are:\n","\n"," $P(y=1|image) = 0.6$ \n"," \n"," and \n"," \n"," $P(y=0|image) = 0.4$\n","\n","The loss is given by (1/n is ommited since n=1):\n","\n","$NLL= -\\sum_{c=1}^{C} y_c \\log(p_c)$\n","\n","Therefore: \n","\n","$L(y, p) = - \\left[ y \\log(P(y=1|image)) + (1 - y) \\log(P(y=0|image)) \\right]$\n","\n","fill in the numbers:\n","\n","$L(y, p) = - \\left[ 0 * \\log(0.6) + (1 - 0) * \\log(0.4) \\right]$\n","\n","the first term is 0 so:\n","\n","$L(y, p) = - \\left[ \\log(0.4) \\right]$\n","\n","$L(y, p) = 0.916 $\n"]},{"cell_type":"markdown","metadata":{"id":"U4gnnlAPp_Q2"},"source":["## Excercise 2 \n","\n","\n","- Repeat the compiling and training, beginning from the cell:\n","\n","```\n","model = Sequential()\n"," \n"," ...\n"," \n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n","```\n","\n","for several times and check if the CNN always learns the same kernel. \n","\n","## Additional Excercise\n","\n","- You can experiment with the code and check what happens if you use another kernel size, activation function (relu instead of linear ) or pooling method AveragePooling instead of MaxPooling. Try to make a prediction on the performance before doing the experiment.\n","\n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"qjHAJkDVP8fN"},"source":["## Answer 2:\n","\n","- No it does not, sometimes it learns the horizontal patterns, and sometimes the vertical pattern.\n"]},{"cell_type":"code","execution_count":14,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"elapsed":38402,"status":"ok","timestamp":1708799050120,"user":{"displayName":"Pascal Bühler","userId":"01261418420162852179"},"user_tz":-60},"id":"8YwThvI9QzzM","outputId":"18e6fbe4-7bc3-4589-d54a-9dc3157a9b2d"},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/40\n"," 1/16 [>.............................] - ETA: 2s - loss: 0.6919 - accuracy: 0.5781"]},{"name":"stdout","output_type":"stream","text":["16/16 [==============================] - 0s 6ms/step - loss: 0.7079 - accuracy: 0.5000 - val_loss: 0.7014 - val_accuracy: 0.5000\n","Epoch 2/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6996 - accuracy: 0.5000 - val_loss: 0.6948 - val_accuracy: 0.5000\n","Epoch 3/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6938 - accuracy: 0.5000 - val_loss: 0.6906 - val_accuracy: 0.5000\n","Epoch 4/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6900 - accuracy: 0.5000 - val_loss: 0.6873 - val_accuracy: 0.5000\n","Epoch 5/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6865 - accuracy: 0.5000 - val_loss: 0.6836 - val_accuracy: 0.5000\n","Epoch 6/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6824 - accuracy: 0.5000 - val_loss: 0.6784 - val_accuracy: 0.5000\n","Epoch 7/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6763 - accuracy: 0.5000 - val_loss: 0.6713 - val_accuracy: 0.5000\n","Epoch 8/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6681 - accuracy: 0.5270 - val_loss: 0.6619 - val_accuracy: 0.5440\n","Epoch 9/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6573 - accuracy: 0.5490 - val_loss: 0.6495 - val_accuracy: 0.5440\n","Epoch 10/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6438 - accuracy: 0.5480 - val_loss: 0.6343 - val_accuracy: 0.5520\n","Epoch 11/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6276 - accuracy: 0.5630 - val_loss: 0.6171 - val_accuracy: 0.5890\n","Epoch 12/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.6099 - accuracy: 0.6110 - val_loss: 0.5987 - val_accuracy: 0.6520\n","Epoch 13/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5912 - accuracy: 0.6730 - val_loss: 0.5795 - val_accuracy: 0.7020\n","Epoch 14/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5720 - accuracy: 0.7250 - val_loss: 0.5599 - val_accuracy: 0.7540\n","Epoch 15/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5528 - accuracy: 0.7480 - val_loss: 0.5402 - val_accuracy: 0.7790\n","Epoch 16/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5333 - accuracy: 0.8260 - val_loss: 0.5205 - val_accuracy: 0.8820\n","Epoch 17/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.5138 - accuracy: 0.9110 - val_loss: 0.5006 - val_accuracy: 0.9350\n","Epoch 18/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4941 - accuracy: 0.9320 - val_loss: 0.4805 - val_accuracy: 0.9450\n","Epoch 19/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4745 - accuracy: 0.9650 - val_loss: 0.4610 - val_accuracy: 0.9860\n","Epoch 20/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4552 - accuracy: 0.9850 - val_loss: 0.4419 - val_accuracy: 0.9880\n","Epoch 21/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4364 - accuracy: 0.9880 - val_loss: 0.4233 - val_accuracy: 0.9930\n","Epoch 22/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4181 - accuracy: 0.9900 - val_loss: 0.4052 - val_accuracy: 0.9940\n","Epoch 23/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.4002 - accuracy: 0.9920 - val_loss: 0.3878 - val_accuracy: 0.9950\n","Epoch 24/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3832 - accuracy: 0.9950 - val_loss: 0.3709 - val_accuracy: 0.9970\n","Epoch 25/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3668 - accuracy: 0.9950 - val_loss: 0.3547 - val_accuracy: 0.9980\n","Epoch 26/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3511 - accuracy: 0.9950 - val_loss: 0.3391 - val_accuracy: 0.9980\n","Epoch 27/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3357 - accuracy: 0.9950 - val_loss: 0.3243 - val_accuracy: 0.9980\n","Epoch 28/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3216 - accuracy: 0.9960 - val_loss: 0.3110 - val_accuracy: 0.9980\n","Epoch 29/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.3086 - accuracy: 0.9960 - val_loss: 0.2986 - val_accuracy: 0.9980\n","Epoch 30/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2964 - accuracy: 0.9970 - val_loss: 0.2869 - val_accuracy: 0.9990\n","Epoch 31/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2851 - accuracy: 0.9990 - val_loss: 0.2761 - val_accuracy: 1.0000\n","Epoch 32/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2745 - accuracy: 0.9990 - val_loss: 0.2660 - val_accuracy: 1.0000\n","Epoch 33/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2646 - accuracy: 0.9990 - val_loss: 0.2564 - val_accuracy: 1.0000\n","Epoch 34/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2551 - accuracy: 0.9990 - val_loss: 0.2473 - val_accuracy: 1.0000\n","Epoch 35/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2461 - accuracy: 0.9990 - val_loss: 0.2387 - val_accuracy: 1.0000\n","Epoch 36/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2376 - accuracy: 0.9990 - val_loss: 0.2304 - val_accuracy: 1.0000\n","Epoch 37/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2295 - accuracy: 0.9990 - val_loss: 0.2227 - val_accuracy: 1.0000\n","Epoch 38/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2218 - accuracy: 0.9990 - val_loss: 0.2152 - val_accuracy: 1.0000\n","Epoch 39/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2145 - accuracy: 0.9990 - val_loss: 0.2082 - val_accuracy: 1.0000\n","Epoch 40/40\n","16/16 [==============================] - 0s 2ms/step - loss: 0.2076 - accuracy: 0.9990 - val_loss: 0.2015 - val_accuracy: 1.0000\n"]},{"data":{"text/plain":[""]},"execution_count":14,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA+kAAAGJCAYAAAD2VnIMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACh70lEQVR4nOzdd3gU5drH8e/upndCQkIJBELvHWkCCqIUARHpVVARFeXoUY7do/IeKyrYkA4KioAoCAKKAtKk994hJCEkISF95/1jYTESlISQSfl9rmuvnX3mmdl7V8nsPU+zGIZhICIiIiIiIiKms5odgIiIiIiIiIg4KEkXERERERERKSCUpIuIiIiIiIgUEErSRURERERERAoIJekiIiIiIiIiBYSSdBEREREREZECQkm6iIiIiIiISAGhJF1ERERERESkgFCSLiIiIiIiIlJAKEkXKcSOHTuGxWJh2rRpOT521apVWCwWVq1aledxiYiISMGVH78fpk2bhsVi4dixY7mKUaQ4U5IuIiIiIiIiUkAoSRcREREREREpIJSki0iRkpSUZHYIIiIiIiK5piRd5Ca88sorWCwWDhw4wIABA/D39yc4OJgXX3wRwzA4efIk3bp1w8/Pj9DQUN59991rzhEVFcWDDz5ISEgIHh4e1KtXj+nTp19TLy4ujiFDhuDv709AQACDBw8mLi4u27j27dvH/fffT2BgIB4eHjRu3JhFixbl6jMeP36cRx99lGrVquHp6UnJkiXp1atXtmPM4uLieOqppwgPD8fd3Z1y5coxaNAgYmJinHVSUlJ45ZVXqFq1Kh4eHpQuXZr77ruPw4cPA9cf65bd+LkhQ4bg4+PD4cOH6dSpE76+vvTv3x+A1atX06tXL8qXL4+7uzthYWE89dRTJCcnZ/t9PfDAAwQHB+Pp6Um1atV4/vnnAfjll1+wWCwsWLDgmuO+/PJLLBYL69aty+nXKiIixVhx+P1wPR9//DG1atXC3d2dMmXKMGrUqGviOXjwID179iQ0NBQPDw/KlStHnz59iI+Pd9ZZvnw5rVq1IiAgAB8fH6pVq8Z//vOfPI1VxCwuZgcgUhT07t2bGjVq8H//938sXryY119/ncDAQD777DPuuOMO/ve//zF79myefvppmjRpwu233w5AcnIybdu25dChQzz22GNUrFiRb775hiFDhhAXF8fo0aMBMAyDbt26sWbNGh555BFq1KjBggULGDx48DWx7N69m5YtW1K2bFmee+45vL29+frrr+nevTvffvstPXr0yNFn27RpE7///jt9+vShXLlyHDt2jE8++YS2bduyZ88evLy8AEhMTKR169bs3buXYcOG0bBhQ2JiYli0aBGnTp0iKCiIzMxMunTpwsqVK+nTpw+jR4/m4sWLLF++nF27dhEREZHj7z4jI4OOHTvSqlUr3nnnHWc833zzDZcuXWLkyJGULFmSjRs38tFHH3Hq1Cm++eYb5/E7duygdevWuLq68tBDDxEeHs7hw4f5/vvveeONN2jbti1hYWHMnj37mu9u9uzZRERE0Lx58xzHLSIiUpR/P2TnlVde4dVXX6V9+/aMHDmS/fv388knn7Bp0ybWrl2Lq6sraWlpdOzYkdTUVB5//HFCQ0M5ffo0P/zwA3Fxcfj7+7N79266dOlC3bp1ee2113B3d+fQoUOsXbv2pmMUKRAMEcm1l19+2QCMhx56yFmWkZFhlCtXzrBYLMb//d//OcsvXLhgeHp6GoMHD3aWjR8/3gCMWbNmOcvS0tKM5s2bGz4+PkZCQoJhGIaxcOFCAzDeeuutLO/TunVrAzCmTp3qLL/zzjuNOnXqGCkpKc4yu91utGjRwqhSpYqz7JdffjEA45dffvnbz3jp0qVrytatW2cAxowZM5xlL730kgEY8+fPv6a+3W43DMMwpkyZYgDGe++9d90614vr6NGj13zWwYMHG4Dx3HPP3VDc48aNMywWi3H8+HFn2e233274+vpmKftzPIZhGGPHjjXc3d2NuLg4Z1lUVJTh4uJivPzyy9e8j4iIyN8pDr8fpk6dagDG0aNHDcNwXDfd3NyMu+66y8jMzHTWmzBhggEYU6ZMMQzDMLZu3WoAxjfffHPdc7///vsGYERHR/9tDCKFlbq7i+SB4cOHO7dtNhuNGzfGMAwefPBBZ3lAQADVqlXjyJEjzrIlS5YQGhpK3759nWWurq488cQTJCYm8uuvvzrrubi4MHLkyCzv8/jjj2eJIzY2lp9//pkHHniAixcvEhMTQ0xMDOfPn6djx44cPHiQ06dP5+izeXp6OrfT09M5f/48lStXJiAggC1btjj3ffvtt9SrVy/bO+0Wi8VZJygo6Jq4/1wnN/78vWQXd1JSEjExMbRo0QLDMNi6dSsA0dHR/PbbbwwbNozy5ctfN55BgwaRmprKvHnznGVz584lIyODAQMG5DpuEREp3ory74e/WrFiBWlpaTz55JNYrVdTkBEjRuDn58fixYsB8Pf3B2DZsmVcunQp23MFBAQA8N1332G3228qLpGCSEm6SB74a4Ln7++Ph4cHQUFB15RfuHDB+fr48eNUqVIly8UKoEaNGs79V55Lly6Nj49PlnrVqlXL8vrQoUMYhsGLL75IcHBwlsfLL78MOMaw5URycjIvvfQSYWFhuLu7ExQURHBwMHFxcVnGhh0+fJjatWv/7bkOHz5MtWrVcHHJu5E2Li4ulCtX7pryEydOMGTIEAIDA/Hx8SE4OJg2bdoAOOO+8oPnn+KuXr06TZo0Yfbs2c6y2bNnc9ttt1G5cuW8+igiIlLMFOXfD391Jaa/vrebmxuVKlVy7q9YsSJjxozhiy++ICgoiI4dOzJx4sQsvzl69+5Ny5YtGT58OCEhIfTp04evv/5aCbsUGRqTLpIHbDbbDZWBY3zYrXLl4vT000/TsWPHbOvkNKl8/PHHmTp1Kk8++STNmzfH398fi8VCnz59bsnF8Hot6pmZmdmWu7u7X/MjJTMzkw4dOhAbG8uzzz5L9erV8fb25vTp0wwZMiRXcQ8aNIjRo0dz6tQpUlNTWb9+PRMmTMjxeURERK4oyr8fbsa7777LkCFD+O677/jpp5944oknGDduHOvXr6dcuXJ4enry22+/8csvv7B48WKWLl3K3LlzueOOO/jpp5+u+x2KFBZK0kVMVKFCBXbs2IHdbs+SaO7bt8+5/8rzypUrSUxMzHI3fP/+/VnOV6lSJcDR5a19+/Z5EuO8efMYPHhwlpllU1JSrpmJNSIigl27dv3tuSIiItiwYQPp6em4urpmW6dEiRIA15z/yh32G7Fz504OHDjA9OnTGTRokLN8+fLlWepd+b7+KW6APn36MGbMGL766iuSk5NxdXWld+/eNxyTiIhIXikMvx+yi/nKe195P4C0tDSOHj16zfvWqVOHOnXq8MILL/D777/TsmVLPv30U15//XUArFYrd955J3feeSfvvfceb775Js8//zy//PLLLfsMIvlF3d1FTNSpUyciIyOZO3eusywjI4OPPvoIHx8fZ/fsTp06kZGRwSeffOKsl5mZyUcffZTlfKVKlaJt27Z89tlnnD179pr3i46OznGMNpvtmrv3H3300TUt2z179mT79u3ZLlV25fiePXsSExOTbQv0lToVKlTAZrPx22+/Zdn/8ccf5yjmP5/zyvYHH3yQpV5wcDC33347U6ZM4cSJE9nGc0VQUBD33HMPs2bNYvbs2dx9993XdEcUERHJD4Xh98NftW/fHjc3Nz788MMs19jJkycTHx9P586dAUhISCAjIyPLsXXq1MFqtZKamgo4xtD/Vf369QGcdUQKM7Wki5jooYce4rPPPmPIkCFs3ryZ8PBw5s2bx9q1axk/fjy+vr4AdO3alZYtW/Lcc89x7Ngxatasyfz587OMz7pi4sSJtGrVijp16jBixAgqVarEuXPnWLduHadOnWL79u05irFLly7MnDkTf39/atasybp161ixYgUlS5bMUu+ZZ55h3rx59OrVi2HDhtGoUSNiY2NZtGgRn376KfXq1WPQoEHMmDGDMWPGsHHjRlq3bk1SUhIrVqzg0UcfpVu3bvj7+9OrVy8++ugjLBYLERER/PDDDzkaC1e9enUiIiJ4+umnOX36NH5+fnz77bdZxvNd8eGHH9KqVSsaNmzIQw89RMWKFTl27BiLFy9m27ZtWeoOGjSI+++/H4D//ve/OfoeRURE8kph+P3wV8HBwYwdO5ZXX32Vu+++m3vvvZf9+/fz8ccf06RJE+dErD///DOPPfYYvXr1omrVqmRkZDBz5kxsNhs9e/YE4LXXXuO3336jc+fOVKhQgaioKD7++GPKlStHq1atbipOkQLBjCnlRYqKK0uo/HUJkMGDBxve3t7X1G/Tpo1Rq1atLGXnzp0zhg4dagQFBRlubm5GnTp1siyJcsX58+eNgQMHGn5+foa/v78xcOBA5zIlf61/+PBhY9CgQUZoaKjh6upqlC1b1ujSpYsxb948Z50bXULlwoULzvh8fHyMjh07Gvv27TMqVKiQZTmYKzE+9thjRtmyZQ03NzejXLlyxuDBg42YmBhnnUuXLhnPP/+8UbFiRcPV1dUIDQ017r//fuPw4cPOOtHR0UbPnj0NLy8vo0SJEsbDDz9s7Nq1K9sl2LL7ng3DMPbs2WO0b9/e8PHxMYKCgowRI0YY27dvz/b72rVrl9GjRw8jICDA8PDwMKpVq2a8+OKL15wzNTXVKFGihOHv728kJyf/7fcmIiJyPcXh98Nfl2C7YsKECUb16tUNV1dXIyQkxBg5cqRx4cIF5/4jR44Yw4YNMyIiIgwPDw8jMDDQaNeunbFixQpnnZUrVxrdunUzypQpY7i5uRllypQx+vbtaxw4cOBvYxIpLCyGcQtnoRARKUIyMjIoU6YMXbt2ZfLkyWaHIyIiIiJFkMaki4jcoIULFxIdHZ1lMjoRERERkbyklnQRkX+wYcMGduzYwX//+1+CgoLYsmWL2SGJiIiISBGllnQRkX/wySefMHLkSEqVKsWMGTPMDkdEREREijC1pIuIiIiIiIgUEGpJFxERERERESkglKSLiIiIiIiIFBAuZgeQ3+x2O2fOnMHX1xeLxWJ2OCIiIhiGwcWLFylTpgxWq+6f5wVd70VEpCDJybW+2CXpZ86cISwszOwwRERErnHy5EnKlStndhhFgq73IiJSEN3Itb7YJem+vr6A48vx8/MzORoRERFISEggLCzMeY2Sm6frvYiIFCQ5udYXuyT9Spc3Pz8/XbRFRKRAUbfsvKPrvYiIFEQ3cq3XwDcRERERERGRAkJJuoiIiIiIiEgBoSRdREREREREpIAodmPSRUREREREJCvDMMjIyCAzM9PsUAotV1dXbDbbTZ9HSbqIiIiIiEgxlpaWxtmzZ7l06ZLZoRRqFouFcuXK4ePjc1PnUZIuIiIiIiJSTNntdo4ePYrNZqNMmTK4ublptZFcMAyD6OhoTp06RZUqVW6qRV1JuoiIiIiISDGVlpaG3W4nLCwMLy8vs8Mp1IKDgzl27Bjp6ek3laSbOnHcb7/9RteuXSlTpgwWi4WFCxf+4zGrVq2iYcOGuLu7U7lyZaZNm3bL4xQRERERESnKrFbNKX6z8qoHgqn/JZKSkqhXrx4TJ068ofpHjx6lc+fOtGvXjm3btvHkk08yfPhwli1bdosjFREREREREbn1TO3ufs8993DPPffccP1PP/2UihUr8u677wJQo0YN1qxZw/vvv0/Hjh1vVZgiIgWbPRNSL0JqguM55fJzRorZkRV97j4QcYfZUUg+iL+Ujr+Xq9lhiIhIMVCoxqSvW7eO9u3bZynr2LEjTz755HWPSU1NJTU11fk6ISHhVoUnIgXRXxPYzDSzI7q+6yXbqQmQEp/tPiM1AUtaotmRF1/B1WHUBrOjkFvsaEwSHcf/Rte6ZXikTSWqhPiaHZKIiOSx8PBwnnzyyb/NLfNLoUrSIyMjCQkJyVIWEhJCQkICycnJeHp6XnPMuHHjePXVV/MrRBG51TLTIeEMJJyG+NOQcMrxnBT9lwT28nYRT2D/PPLJbnXD6uEHHn7EZrhzJC6TAC83KgdfXQZk0/HYHL9HRJAPgd5uAMReSuNwdCK+7i5UD/Vz1tl2Mo50uz1H5y0f6EWIrwcAF1PS2XfuIh6uNuqU8XfW2XUmnuT0nK3XWsbfk7IBjutBcnomu87E42K10CCshLPOvnMXuZiSnqPzBvu4E17SG4AMu50D5xKpGVo7R+coziZOnMjbb79NZGQk9erV46OPPqJp06bZ1m3bti2//vrrNeWdOnVi8eLFtzrUayzfE0lahp1vt5zi2y2nuLN6KR5pG0GT8MB8j0VERK5q27Yt9evXZ/z48Td9rk2bNuHt7X3zQeWBQpWk58bYsWMZM2aM83VCQgJhYWEmRiQiThlpl5PphKyJtbMFOR4uXbiaiCechouRgJHzt7K4keriTabF7YaP8XZ3wXZ5ApDUjExSM+y42qx4ujpm67QbBhdTMrAbBoYBdi4/G396zua8Qd5uuLs4zpGUlkFccjqerjYCvT3A3Re7mw+rjqdyES8SDU8u4sVFw5OLeJJoeJKIoyzB8CIRT1JtPvj5B/J8t/q0qRoMQEpcMlEn47D4eUCFq8lpzM6zOf7uyoYFwOWkNy0+hZgTF8j0doNKJZ11zu89R1pGzpL04NJ+EOS4GKYlphJzNBZvdxe4/BkALhyMJjElI0fn9S/lA5dbOjNS0ok5GIOrzQo1r97kjT9yntiknPWq8Az0grKOGwiZGZnEHbsAlYNydI7iau7cuYwZM4ZPP/2UZs2aMX78eDp27Mj+/fspVarUNfXnz59PWtrV/z7nz5+nXr169OrVKz/DdnqoVThNwgP57NcjLNsTycp9UazcF0WjCiV4+PZKtK8RgtWq5YpERAoawzDIzMzExeWf097g4OB/rJNfLIZh5PzX7i1gsVhYsGAB3bt3v26d22+/nYYNG2a5UzJ16lSefPJJ4uPjb+h9EhIS8Pf3Jz4+Hj8/v38+QERu3PnDcPx3SI7N2lU79WL23bUzU//5nNlIx5VIAjltD+SMUZK7WzTCK7AsuPsxZ2cc3+29yN2NqjK4bR3w8OfIRQt3jF+f4/dZ/EQral1u1Z3w80He+ekAfZuGMe6+ugDEXUqj/mvLc3zeL0c0o0WEI7mbue4YL363m3tqh/LJgEbOOp0/XI27ixVfD1d8PFzw83DBx90FXw9X/D1dKe3vQZkAT0r7exDorfVMC7uifm1q1qwZTZo0YcKECQDOpX4ef/xxnnvuuX88fvz48bz00kucPXv2hls58uw7TYyGT1pAzXuhXj8Ou1XlizVH+XbzadIyHTemIoK9efj2CLo1KOO8ASciUlikpKRw9OhRKlasiIeHh7P8UlrObpIDuNmsuNgcc5NnZNpJy7RjtVjwcL36t/F65/Vyy1n78ZAhQ5g+fXqWsqlTpzJ06FCWLFnCCy+8wM6dO/npp58ICwtjzJgxrF+/nqSkJGrUqMG4ceOyDKX+a3d3i8XCpEmTWLx4McuWLaNs2bK8++673HvvvdeN6XrfJeTsulSoWtKbN2/OkiVLspQtX76c5s2bmxSRSDGXdgmOrYFDK+DQcog9krvzuPmAux+Zbj6cz/AgES/i7R6cz/DgbKo7h1P9OWuU5IxRkrNGSc7ji4EViwUqBHpRs0EjZ9frAJdIqgecJ6xKEJR0tJz6GakMbRme47BKers7t+uWC2Boy3Aalr/aKu3j7sJj7Srj4+GC7+Uk2u9yUu37p6Ta282G7TqtbANuq8CA2ypcU774idY5jlekIEpLS2Pz5s2MHTvWWWa1Wmnfvj3r1q27oXNMnjyZPn36/G2CfsvmoNmzEJKiYNMXsOkLIoKqMq5eX/71aHcm70xj1rrjHI5O4t/f7uDd5fvp2bAcd9cOpU5Zf908E5FCreZLOV9Ba2K/hnSuWxqAZbvPMerLLTSrGMjch6/ma63+90u2vdmO/V/nHL3XBx98wIEDB6hduzavvfYaALt37wbgueee45133qFSpUqUKFGCkydP0qlTJ9544w3c3d2ZMWMGXbt2Zf/+/ZQvX/667/Hqq6/y1ltv8fbbb/PRRx/Rv39/jh8/TmDgrR3uZGqSnpiYyKFDh5yvjx49yrZt2wgMDKR8+fKMHTuW06dPM2PGDAAeeeQRJkyYwL///W+GDRvGzz//zNdff23K+DSRYskw4PwhR1J+cDkcX5t1BnGrC4Q1A/8w8PADd19SbN7E2b04n+5GxXKl8fIpAR5+LNx7kS82xdC6VkWe7VQLgAuJqTR9fUW2b102wJOqIT60CPGlaogv1UJ9iQj2wdMta6vV3bVDubt2aJayIB93Xu5a66Y++u1Vg7m9atZuUC42K093rHZT59WPeCnqYmJiyMzMzHZOmX379v3j8Rs3bmTXrl1Mnjz5b+vdsjloGg+DwIqw7SvY9wPEHICVrxK08jWerdSWJ7r24suEeny2LpJzCal8vOowH686zC9Pt6ViUMEY2ygiUhT5+/vj5uaGl5cXoaGO335XriuvvfYaHTp0cNYNDAykXr16ztf//e9/WbBgAYsWLeKxxx677nsMGTKEvn37AvDmm2/y4YcfsnHjRu6+++5b8ZGcTE3S//jjD9q1a+d8fWXs+ODBg5k2bRpnz57lxIkTzv0VK1Zk8eLFPPXUU3zwwQeUK1eOL774QsuvieS1jDS4eMYxDjz+lGNM+IVjcORXiDueparhV46U8HYcDWjBH9a67I01OBOXzNn4ZM7GpXAx9WqXpm9H3kajCo47j/GHj7Hr/HnKnb+a5Jf0dqNTnVBK+XpQJsCD0v6elC3hSZVSPvh6aOkjkeJo8uTJ1KlT57qTzF1xy+agsdqgcnvHIyUe9nznSNhP/A5HfsHzyC886ObDkJr3st6vI1+eLcPp+PQsCfoLC3diGPBgq4pU+tNEjiIiBdme13KeY7ld7uoO0LFWCHte64j1Lw0Sa55t99fD8lzjxo2zvE5MTOSVV15h8eLFnD17loyMDJKTk7PkmtmpW7euc9vb2xs/Pz+ioqJuScx/ZmqS3rZtW/5uSPy0adOyPWbr1q23MCqRYmbnPDj1R9bJ2RKjuO7kbFZXMss356e0uvyUVodV50twYeOVRPx4todcGUOdkXn1nB1qhlAt1JcKJb2cZRaLhY/7N8ruFCJSSAUFBWGz2Th37lyW8nPnzjlbPq4nKSmJOXPmOLsx/h13d3fc3d3/sd5N8fCHhoMcj9ijsH0ObP8K4o5j2/4lLfmSlu5+GGFN4bffoXwLkkvVZ97mU6Sk2+nb9GqXyoPnLgIQEeyjSedEpEDK6Rjxv3L50/j0vDzvjfjr8Kinn36a5cuX884771C5cmU8PT25//77s0xSmh1X16yNRBaLBXsOV7PJjUI1Jl1E8tixNfDtg9nvs7mDf1nwK0ucawh7LvnSovVdUPF2LK7ejHl52eWlsTKwWiC8pDdVQnyoGuJLWAkvSl9uCS/t7+GYsfsvygR4Uibg2mUTRaRocXNzo1GjRqxcudI5OazdbmflypV/28UQ4JtvviE1NZUBAwbkQ6Q5FFgR2o2FNs/CyfWw7UtHK3tqApZDKxzDggAPmxsbQmqz27UWtRKtkHwbeJbgo58PsWj7GXzdXagb5k/9sADqh5WgflgAwb63+GaDiEgR4ebmRmbmPy/VunbtWoYMGUKPHj0AR8v6sWPHbnF0uackXaQ4W/+J4zm8NdS415mU418OvEqCxcKZuGR6fLwWf09XFldpjavNihX4993V8Pd0pWqIL5VL+WSZtVNE5M/GjBnD4MGDady4MU2bNmX8+PEkJSUxdOhQAAYNGkTZsmUZN25cluMmT55M9+7dKVmyZHanLRisVqjQwvHoMh7O7YIT6+HEOjixDkviOfxjttCCLfDVTMcxwTUYkFqeMm6l2JEexp5D5Vl76OpMv2UDPKlfPoAGYQHULutPzTJ++GnIj4jINcLDw9mwYQPHjh3Dx8fnuq3cVapUYf78+XTt2hWLxcKLL76YLy3iuaUkXaS4ijsB+y+vltDpHShVPdtq3u4uVAry4cKlNFLSMx3rTQNDW1bMr0hFpJDr3bs30dHRvPTSS0RGRlK/fn2WLl3qnEzuxIkTWK1Zu0Tu37+fNWvW8NNPP5kRcu7YXKBMfcfjtkcck21eOArH1zmTds4fgui9NGUvTa2Am+PQOJdg9lGBzSll2ZNQgT07K/DjjhDsOL6X8JJePHFnFe5rWA5wrP2riSdFpLh7+umnGTx4MDVr1iQ5OZmpU6dmW++9995j2LBhtGjRgqCgIJ599tm8WwXkFigw66Tnl6K+Fq3IDVv+Eqz9ACq1hUHf/W3VtAw7cclplPL1+Nt6IpI7ujblvQL7nSZGw6lNELkTzu10PF84lm3VFIsHe6nExvSKbLdH0L1LV+5q3gQsFn4/FMPT32znjhqleL17nfz9DCJSpPzd2t6SM8VynXQRySNpl2DzdMd2s0eu2W23G/x6IJp21UsB4OZiVYIuIpIXfIKheifH44qUBIja40jYrzyi9uCRkUID9tDAZY+j3k8fwtpSULYRrukVibjoR3L81bWHDcNg0JSNVA3xpUl4CRpVCNT4dhGRQkhJukhxtPNrSImDEuFQ5a5rdr/9034+WXWYh26vxH861cj38EREihUPPyh/m+NxRWaGY032M1vg9GbH49xuSIqCAz/SBJjpBhwFJlSFyu2JLNWaDQfTWH0whslrjgJQMcibRhVK0CS8BC0igggL9MouAhERKUCUpIsUN4YBGz5zbDd9yLEG8J/MXH+cT1YdBqBKKa3nKyJiCpsLhNR0PBpcnt0+PdnRyn4laT+9GWKPOJL5mAOU5mP2eHtywLsxy9PrMjeuOkdj4GhMEvM2nwKgbjl/utYtQ+e6pbXChohIAaUkXaS4Obba0a3S1Qvq98+ya/mec7z83S4AnmpflV6Nw8yIUEREsuPqCWFNHY8rLsU6/q4f/AkOLscl8Rw1E1ZTk9WMdodE/2rs9m7G4pTazDkbyo5T8ew4Fc8bS/bSuEIJutQtzYDbKmS7lrGIiJhDSbpIcXOlFb1eX/AMcBZvOxnH419twW5A78ZhPHFnZXPiExGRG+cVCDW7OR52u2MyussJO6c24RO/n2bx+2kGvBJQkr0hXfg8qTWLTnnxx/ELxCalMbhFuPN0KemZWlJTRMRkStJFipMLx68uu9b0IWfx8fNJPDhtEynpdtpUDeb1HrW1tI+ISGFjtULpeo7H7c84WtkP/+xM2q3J56l1bDofMJ23I1qwNqALMeXucv69T0nP5LZxK2kaHsib99UhyEeTzomImEFJukhxsukLMOxQqZ1zXfTYpDSGTN3E+aQ0apXxY2L/hs610EVEpBDzCoQ69zsemRmOZH3LdDj4E26nfqfdqd/h8NsQ1xcaDmZTfEniLqWz+0wC/p6uZkcvIlJsKUkXKS7Skhw/zsC57Fpahp3h0zdxNCaJsgGeTB3SBB93/VkQESlybC5Xl36LPwVbZ8GWGZBwGtZ/DOs/pnX55qzr1JujwR2cN2vTM+0Mm7aJznVK071BWXWFFxHJB/o1LlJc7PgaUuKhREXnsmtzNp1gy4k4/DxcmD6sCaX8tBa6iEiR518O2j7n6BJ/aCVsngYHlsKJdZQ+sY7SPiFw8RloOJglu6JZfTCG1QdjeHf5AYa0CGdAswr4e6mlXUTkVlGfVpHiIMuyayPAaiUpNYMPVx4E4Jm7q1O5lK+JAYqISL6z2qDqXdD3S3hqN9zxAviHQeI5WPI0TGxCx8xfebFTVUr7exB9MZW3l+2nxf+t5PUf9nAuIcXsTyAiclPCw8MZP36887XFYmHhwoXXrX/s2DEsFgvbtm27pXEpSRcpDo7+BtF7wdXbueza5DVHiUlMo0JJL/o00VJrIiLFml9pR8v641ug0zvgXQouHMPj+5E8uGswq7un8F6vulQL8SUpLZMv1hzljndWMem3I6Rn2s2OXkQkT5w9e5Z77rnH7DCUpIsUC1da0etfXXatSikfygd68a+7qmmiOBERcXBxc/S4Gr0N7nwJ3P0hajcuc/tx37YHWdrDyrShTWhQPoCktEzeWLKXzh+uZv2R82ZHLiJy00JDQ3F3N39lC/0yFynqLhzLdtm1e+qUZsWYNnSpU9qcuEREpOBy84bW/3Ik6y2fBBdPOLkBy7TOtN00km+7efNWz7oEertx4FwifT5fz5NzthJ1UV3gRQo9w3BMOGzGwzBuOMzPP/+cMmXKYLdn7c3TrVs3hg0bxuHDh+nWrRshISH4+PjQpEkTVqxY8bfn/Gt3940bN9KgQQM8PDxo3LgxW7duzdFXmVuaOE6kqNv0BWBAxB0QXC3LLjcX3acTEZG/4RUIHV51rAry21uOGeEPrcB6aAUPNBjAXY+9xturzvDlxhMs3HaGtYfPs/rf7TQLvEhhln4J3ixjznv/54zjJuEN6NWrF48//ji//PILd955JwCxsbEsXbqUJUuWkJiYSKdOnXjjjTdwd3dnxowZdO3alf3791O+fPl/PH9iYiJdunShQ4cOzJo1i6NHjzJ69Oib+ng3Sr/QRYqytCTHDypwLrv2fz/uY+b64xpDKCIiN86vNHR5H0ZthDq9HGVbZxEwrS1vNEhg4aMtqVvOn8HNKyhBF5F8UaJECe655x6+/PJLZ9m8efMICgqiXbt21KtXj4cffpjatWtTpUoV/vvf/xIREcGiRYtu6PxffvkldrudyZMnU6tWLbp06cIzzzxzqz5OFmpJFynKdsy9uuxa5Q4cirrI578dxm5A3bL+1AsLMDtCEREpTEpGQM8voPEwWPAwxJ2AaZ2p1+JxFjz0PHabm7PqpmOxzN10kv90qkGgt9vfnFREChRXL0eLtlnvnQP9+/dnxIgRfPzxx7i7uzN79mz69OmD1WolMTGRV155hcWLF3P27FkyMjJITk7mxIkTN3TuvXv3UrduXTw8ri5R3Lx58xzFl1tK0kWKqizLrj0EVivlA715uWst9kVeVIIuIiK5V6EFPLIWlo2FrbPg9w+xHf4Z232fQ0gtDMPgpe92s/dsAq42C+Puq2t2xCJyoyyWG+5ybrauXbtiGAaLFy+mSZMmrF69mvfffx+Ap59+muXLl/POO+9QuXJlPD09uf/++0lLSzM56n+mJF2kqDr6K0Tvcyy71sCx7Jqbi5XBLcLNjUtERIoGDz/oNhGq3gPfPwHndsHnbeGOF7E0H8Xr3Wvz4cqDPHd3DbMjFZEiysPDg/vuu4/Zs2dz6NAhqlWrRsOGDQFYu3YtQ4YMoUePHoBjjPmxY8du+Nw1atRg5syZpKSkOFvT169fn+efITsaky5SFNkz4fcJju36/TDc/cjQGHQREbkVanSBR9dD1bshMw2WvwjT76WR/0WmD2uKv5crAIZhMG3tUeKT000OWESKkv79+7N48WKmTJlC//79neVVqlRh/vz5bNu2je3bt9OvX79rZoL/O/369cNisTBixAj27NnDkiVLeOedd27FR7iGknSRoubIr/DZ7XBoueN104f49UA0Hd7/jaW7zpobm4iIFE0+paDvHOj6gaMH1/E18ElL2PaVc0mlrzae5JXv99Dlo9XsPBVvcsAiUlTccccdBAYGsn//fvr16+csf++99yhRogQtWrSga9eudOzY0dnKfiN8fHz4/vvv2blzJw0aNOD555/nf//73634CNewGEYOFqMrAhISEvD39yc+Ph4/Pz+zwxHJO+cPw08vwv7Fjtfu/tDxdez1B9LlozXsOZvAiNYVeb5zTXPjFJFr6NqU9/Sdmuj8YVjwCJza6Hhdrx90/YCdkck8+uVmTsYm42az8lLXmvRvVh6LxWJuvCLFXEpKCkePHqVixYpZJkmTnPu77zIn1yW1pIsUdslxsOx5mNjMkaBbbNBkBDyxFRoO4vsdZ9hzNgFfdxcebVvZ7GhFRKSoKxkBQ3+EO15wXJO2fwmz7qNOYCY/PNaaDjVDSMu088LCXYyes43E1AyzIxYRKVCUpIsUVpkZsHESfNgA1k0AezpUbg8jf4fO74B3SdIy7Lz70wEAHm5TiRJaAkdERPKDzQVufwb6fQ1uvnBsNUzugH/KST4f2IjnO9XAZrWwaPsZ7p2whv2RF82OWESkwFCSLlIYHVwBn7aEJU9DciwEVYP+82DAt1CqurPa3E0nOBF7iSAfd4a1qmhiwCIiUixVaQ8PLgO/cnD+EEy6E8vJDYy4vRJzH7qNUD8PjkQn0W3iGn7cqXlTRERASbpI4fPjszC7p2N5Nc9A6PQOjFwLVTpkqZaUmsEHKw8BMPrOyni5acVFERExQUgtGLESyjRw3Fie3hV2zqNxeCCLn2hF6ypBpKTbefTLLcxaf9zsaEVETKckXaQwSYyGjZ87tm97FJ7YAk1HgM31mqpT1x4lJjGVCiW96NO0fD4HKiIi8ie+oTBkMVTv4lim7dsH4de3KOntxrShTenbtDyGAS8s3MX4FQcoZvMaixQI+nd38/LqO1SSLlKY7F0Eht3RGnH3OPAskW21g+cu8smqwwCM6VAVV5v+qYuIiMncvOGBmdDiccfrX96AhSOx2dN5s0dtnrjDMbnp+BUHeXPJXhMDFSleXF0djT2XLl0yOZLCLy0tDQCbzXZT51H/V5HCZM9Cx3PN7tetEpuUxoPT/yApLZOmFQPpWrdMvoQmIiLyj6xWuOt1CKwEi5+G7V9B3EksvWcy5q5qBPm68/rivbSuEmx2pCLFhs1mIyAggKioKAC8vLy0NGIu2O12oqOj8fLywsXl5tJsJekihUViNBxb49iu1T3bKmkZdh6ZuZkTsZcIC/Tk0wGNsFr1R1ZERAqYxsMgoDx8PQSOr4HJHaD/PAY1r0iHmiGU9vc0O0KRYiU0NBTAmahL7litVsqXL3/TNzmUpIsUFvu+d3R1L10fSoRnW+Wl73ax8Vgsvu4uTBnchEAtuSYiIgVV5fbw4E/w5QOOmd+ndoJB31E6uKqzypHoRF5etJt3H6hHKV8PE4MVKdosFgulS5emVKlSpKenmx1OoeXm5obVevPDTJWkixQWuxc6nq/Tig7QvkYIi3ee5aO+DagS4psvYYmIiORaSE0YvgJmdIfovTDNkagTUgvDMHjq6+1sPxnHq4v2MLF/Q7OjFSnybDbbTY+nlpun2aRECoOkGDi22rH9N+PR29cMYc2zd9C2Wqn8iUtERORmXZn5PbQOJEXDtM5wegsWi4UPetenTdVgXu1Wy+woRUTyjZJ0kcJg75Wu7vUgsGKWXfsjL3Iy9upsnP6e1y7HJiIiUqB5l4TB30PZxpB8AWZ0gxMbCA/yZvqwpgT5uDurnk9MNTFQEZFbT0m6SGFwnVndoy+mMmzaJrpNXMuu0/H5HpaIiEie8SwBgxZChZaQmgAze8CRX7NU+WrjCdq8vYqNR2PNiVFEJB8oSRcp6JLOw9HLXd3/Mh49024Q4OWKv6cr5UpoJlwRESnk3H2h/zyIuAPSkxyTyh1cDoDdbrBk51kSUzMYMnUjG46cNzlYEZFbQ0m6SEG373swMiG0rmNd2T8J9ffgm0eaM/PBpgR4aSZ3EREpAty8oO8cqNYJMlLgq76w93usVguTBjWmdZUgLqVlMnTaJiXqIlIkKUkXKeiymdX9cHSic9vLzYVyJbzyNyYREZFbycUdHpjhGOZlT4evB8POeXi42rIk6kOmbmK9EnURKWKUpIsUZEnn4ehvju3L49GX7jpL+/d+5cOVBzEMw7zYREREbiWbK/ScDPX6OnqUfTsctsx0Juq3Vw0mOT2ToVM3se6wEnURKTqUpIsUZPt+uNzVvQ6UjMAwDF77fg+GARcupWGxWMyOUERE5NaxuUC3j6HxMMCARY/B5ul4uNr4fGAjZ6I+bJoSdREpOpSkixRkf5nVPTIhhTPxKdisFv7dsbppYYmIiOQbqxU6vwfNRjpefz8ats91JuptrrSoT9uoRF1EigQl6SIF1aXYq0vP1OoBwPaTjmXWqpTywdPNZlZkIiIi+ctigbvHQZPhgAELH4HdC/BwtfHZwEa0rRZMSrqdodM28vvhGLOjFRG5KaYn6RMnTiQ8PBwPDw+aNWvGxo0br1s3PT2d1157jYiICDw8PKhXrx5Lly7Nx2hF8tGVru4hjq7uADtOxQFQr1yAeXGJiIiYwWKBe96GBgPAsDvGqO//EQ9XG58OaES7y4n6sGmb+P2QEnURKbxMTdLnzp3LmDFjePnll9myZQv16tWjY8eOREVFZVv/hRde4LPPPuOjjz5iz549PPLII/To0YOtW7fmc+Qi+cA5q3s3Z9GOU46W9Lph/iYEJCIiYjKrFbp+CHV6gT0Dvh4Eh1Y6EvWBVxP1nafjzY5URCTXTE3S33vvPUaMGMHQoUOpWbMmn376KV5eXkyZMiXb+jNnzuQ///kPnTp1olKlSowcOZJOnTrx7rvv5nPkIrfYpVg4ermre01HV3fDMNSSLiIiYrVB90+hRlfITIM5/eHYGtxdHIn6hH4NeLhNhNlRiojkmmlJelpaGps3b6Z9+/ZXg7Faad++PevWrcv2mNTUVDw8PLKUeXp6smbNmuu+T2pqKgkJCVkeIgXevsWOFoKQ2hBUGYBj5y+RkJKBm4uVaqG+JgcoIpIzORneBhAXF8eoUaMoXbo07u7uVK1alSVLluRTtFLg2Vyg5xSo0hEykmH2A3ByI+4uNrrULeOslpSawaGoRBMDFRHJOdOS9JiYGDIzMwkJCclSHhISQmRkZLbHdOzYkffee4+DBw9it9tZvnw58+fP5+zZs9d9n3HjxuHv7+98hIWF5ennELkl/jKrO1wdj16ztB+uNtOnkxARuWE5Hd6WlpZGhw4dOHbsGPPmzWP//v1MmjSJsmXL5nPkUqC5uMEDM6BSW0hPglk94czVIZAJKekMmrKR3p+t41DURfPiFBHJoUL1S/+DDz6gSpUqVK9eHTc3Nx577DGGDh2K1Xr9jzF27Fji4+Odj5MnT+ZjxCK5cCkWjqxybNfq7iy+MrN7vXIajy4ihUtOh7dNmTKF2NhYFi5cSMuWLQkPD6dNmzbUq1cvnyOXAs/VA/p8BRVaQmoCzOwBkbsAMAxIzcgkPdNOYmqmyYGKiNw405L0oKAgbDYb586dy1J+7tw5QkNDsz0mODiYhQsXkpSUxPHjx9m3bx8+Pj5UqlTpuu/j7u6On59flodIgbb/R0dX91K1IKiKs/hKS3pdjUcXkUIkN8PbFi1aRPPmzRk1ahQhISHUrl2bN998k8zM6ydaGt5WjLl5Qb+5UK4JJF+AGd0g+gD+nq7MGNaMrx9pTv2wALOjFBG5YaYl6W5ubjRq1IiVK1c6y+x2OytXrqR58+Z/e6yHhwdly5YlIyODb7/9lm7duv1tfZFC5UpX9z+1omdk2tl15nJLumZ2F5FCJDfD244cOcK8efPIzMxkyZIlvPjii7z77ru8/vrr130fDW8r5tx9of88KF0PLsXAjHsh9iiB3m5UD73aQLPrdDzRF1NNDFRE5J+Z2t19zJgxTJo0ienTp7N3715GjhxJUlISQ4cOBWDQoEGMHTvWWX/Dhg3Mnz+fI0eOsHr1au6++27sdjv//ve/zfoIInkrOQ4O/+LY/tN49LPxKXi42vBxd6FSkI8poYmI5Be73U6pUqX4/PPPadSoEb179+b555/n008/ve4xGt4meAbAwIVQqiZcPAszu8PFqzeCNh+/QN/P1zNw8gYuJKWZFaWIyD9yMfPNe/fuTXR0NC+99BKRkZHUr1+fpUuXOu+2nzhxIst485SUFF544QWOHDmCj48PnTp1YubMmQQEBJj0CUTy2P4lYE93/MAIruosDgv0YuuLHYi+mIrVajExQBGRnMnN8LbSpUvj6uqKzWZzltWoUYPIyEjS0tJwc3O75hh3d3fc3d3zNngpfLwCYeACmNIRLhyDmffB0MXgWYKS3m54utnYF3mRwVM3Mmt4M/w8XM2OWETkGqZPHPfYY49x/PhxUlNT2bBhA82aNXPuW7VqFdOmTXO+btOmDXv27CElJYWYmBhmzJhBmTJlsjmrSCG1e6Hj+U+t6FdYLBZK+XlcUy4iUpDlZnhby5YtOXToEHa73Vl24MABSpcunW2CLpKFb6ijRd0nFKJ2O5ZnS0siPMib2cObEejtxo5T8Tw4bROX0jLMjlZE5BqmJ+kicllyHBz+2bH9p/HoIiKFXU6Ht40cOZLY2FhGjx7NgQMHWLx4MW+++SajRo0y6yNIYRNY0dGi7hEApzbC3AGQkUqVEF9mDGuKn4cLm45d4KEZm0nN0MzvIlKwKEkXKSj2/+jo6h5cA4KrOYtT0jNp8/YvPDJzM0mpuuMvIoVP7969eeedd3jppZeoX78+27Ztu2Z429mzZ531w8LCWLZsGZs2baJu3bo88cQTjB49mueee86sjyCFUUhNx2Ryrt6Om+DzHwJ7JrXL+jNtWFO83WysORTD6K+2kZFp/+fziYjkE4thGIbZQeSnhIQE/P39iY+P13JsUrDM6Q/7foC2Y6Ht1R+i207G0X3iWgK93dj8QnssFo1JFylqdG3Ke/pOxenwz44u7/Z0aDgYun4AFgu/H4phyNRNpGXaeaBxOf7Xs66usSJyy+TkuqSWdJGC4ux2x3PF27MUVwvx5asRt/F699r68SAiIpJTEXdAzy/AYoUt02HFKwC0qBzER/0aYLXA13+c4s0leylmbVciUkApSRcpCFISIP7yckGlamTZ5elmo3lESTrVKW1CYCIiIkVAre6OFnSAteNhzfsAdKwVyv961gVg0uqjfLzqsDnxiYj8iZJ0kYIger/j2bc0eJYwNxYREZGiqOEg6PBfx/aKV2DzNAB6NQ7jhc6OG+RvL9vP7A3HzYlPROQyJekiBUHUHsfzX1rRE1MzeO37PXy37bS64ImIiNyslk9AqzGO7e+fhF3zARjeuhKP31EZgN8OROuaKyKmcjE7ABEBovY6nkvVzFK863Q8U9YepYy/B93qlzUhMBERkSLmzpcg+QJsnuqY8d0zACLuYEyHqlQK9qZr3TKaA0ZETKWWdJGC4EpLenD1LMU7TsUBULdcQP7GIyIiUlRZLND5XajVwzHj+5wBcHoLFouFHg3K4WJz/Dw2DIOTsZdMDlZEiiMl6SIFQfQ+x/NfWtK3n4oHoG6Yf35HJCIiUnRZbdDjM6jYBtKTYPb9EHPIuTvTbjB2/k46fbiaPWcSTAxURIojJekiZks6D4nnHNvB1bLsutKSXk8t6SIiInnLxR36zIbS9eHSeZjZAxLOApCeaedQVCJJqRnsP6ckXUTyl5J0EbNFXx6PHlAB3H2cxbFJaZyMTQagdlm1pIuIiOQ5d1/oPw8CK0H8CZjVE5Lj8HC1MXlIE6YMaUKPBuXMjlJEihkl6SJmc04al3Vm9yut6JWCvPH3dM3noERERIoJn2AYuAB8QiBqN3zVF9KT8fd0pW21Us5q5xNTuZCUZmKgIlJcKEkXMdt1k/TL49HLqRVdRETklioRDgO+BXc/OPE7zHsQMjOcu0/HJdPrs3UMmbaJpNSM659HRCQPKEkXMdt1ll/TzO4iIiL5KLQO9J0DNnfYvxh+eBIur5d+KTWD2KQ0tp+M46GZf5CakWlurCJSpClJFzGTYVxdfu1PLemGYThndq+nmd1FRETyR3hLuH8KWKywdSb8/F8AqoT4Mm1oU7zdbKw9dJ7RX20jI9NucrAiUlQpSRcx08VISIlz/BgoWcVZHJmQQvTFVGxWCzVLK0kXERHJNzW6QJfxju3V78L6TwGoHxbApEGNcbNZWbo7krHzd2JcbmkXEclLStJFzHRlZvfACHD1cBZvP+loRa8a4ounm82MyERERIqvRoPhjhcc20ufhZ3zAGhROYiP+jXAaoFvNp/izSV7laiLSJ5Tki5ipn+Y2b2eJo0TERExR+unoenDju0Fj8DhnwHoWCuU//WsC8Ck1Uf5eNVhsyIUkSJKSbqImZzj0bNOGle3nD/31itD6yrBJgQlIiIiWCxw9/9BrfvAng5zB8KZrQD0ahzGC50dN9jfXrafWeuPmxmpiBQxLmYHIFKsOVvSq2cpvrt2ae6uXdqEgERERMTJaoUen8Kl83D0V5jdCx78CQIrMbx1JeKT0/no50O8+N0u/DxdubdeGbMjFpEiQC3pImax2yF6v2P7Ly3pIiIiUkC4uEPvWRBaF5KiYWYPSIwCYEyHqgy8rQKGAWPmbuOX/VEmBysiRYGSdBGzxJ+EtESwuUFgJWfxydhLHIq6iN2uiWhEREQKBA8/6D8PAirAhWMwqyekJGCxWHj13lp0q1+GDLvBuz/t1/VbRG6aknQRs1zp6l6yCthcncVT1x6j/Xu/8caSvSYFJiIiItfwDYGBC8ArCCJ3wNwBkJGK1WrhnV71ePj2SswY1gyr1WJ2pCJSyClJFzGLc9K4rDO7p2fa8XC1UquMnwlBiYiIyHWVjIAB88DNxzFGfcEjYLfjarMytlMNAr3dnFXTMuwmBioihZmSdBGzRO9zPP8lSf9v99rseqUjnetq4jgREZECp0wD6D0TrK6wez4s+w/8Za302RuO0+Wj1cQmpZkUpIgUZkrSRcxyneXXAFxsVtxdbPkckIiIiNyQiDscs74DbPgE1o537kpKzWDiz4c4cC6Rb/44aU58IlKoaQk2ETPYMyH6gGP7T8uvGYaBxaKxbCIiIgVenfsh8ZyjJX3FK+ATAvX74e3uwowHm7Js9zkeur3SP55GROSv1JIuYobYo5CZCi6eEBDuLH7pu920f+9XfthxxrzYRERE5MY0HwUtnnBsf/cYHPgJgMqlfBnVrrLzxntGpl2zvovIDVOSLmIGZ1f36mC9+s9w68kLHIpKxKrWdBERkcKh/atQtw8YmfDNYDi5Kcvu5LRMHp65mf8u3oNhKFEXkX+mJF3EDFeWX/vTePSU9Ez2nb0IQN1y/mZEJSIiIjlltUK3CVC5A6Rfgi97QfR+5+71R86zcl8UU9ce4+NVh00MVEQKCyXpIma40pIefHU8+t6zCWTYDUp6u1E2wNOkwERERCTHbK7wwHQo2wiSL8DM+yD+NADtqpfipS6Om/JvL9vPnI0nzIxURAoBJekiZnAuv3a1JX37yTjA0YquyeNEREQKGTdv6PcNlKwCCadg1n1wKRaAYa0qMqpdBAD/WbCTZbsjzYxURAo4Jeki+S0jFc4fcmz/aY30HafiAahbLsCEoEREROSmeZeEgfPBt7TjhvxXfSHtEgBP31WNPk3CsBvw+FdbWX/kvMnBikhBpSRdJL+dPwT2DHD3B78yzuJtl1vS64cFmBOXiIiI3LyA8jBgPnj4w8n1MG8YZGZgsVh4vXtt7qoZQlqGnRHT/2DX6XizoxWRAkhJukh+c04aVx0ud2uPTUrjSEwSAA3KB5gUmIiIiOSJkJrQdw64eMCBH+GH0WAYuNisfNi3Ac0qBnIxNYMhUzdy7PL1X0TkCiXpIvnNmaRf7eq+9cQFACKCvQnwcjMjKhEREclLFVrA/VPAYoWts+Dn/wLg4Wpj0uDG1CztR0xiGgOnbCAqIcXkYEWkIFGSLpLfsll+bfNxR5LeqEIJMyISERGRW6F6Z+gy3rG9+l1Y/ykAfh6uTB/WlAolvTgZm8ygKRuJT043L04RKVCUpIvkt2yWX1OSLiIiUkQ1Ggx3vODYXvoc7JwHQLCvOzOHNSPY1519kRcZM3ebeTGKSIGiJF0kP6VdggvHHNuXW9LTM+3Omd2VpIuIiBRBrZ+Gpg8BBix4BA7/AkD5kl5MH9qUSsHe/OuuaubGKCIFhpJ0kfwUsx8wwCsIfIIB2Hf2Isnpmfh5uFApyMfc+ERERCTvWSxw9/9BrR5gT4e5A+DsdgBqlvFj+VNtqFnGz+QgRaSgUJIukp+ymTSuVhk/Voxpw4d9G2C1WkwKTERERG4pqw16fAbhrSEtEWb3cvaus/3p+v/HsVjGrzhgUpAiUhAoSRfJT1fGo/8pSbdaLVQu5UPbaqVMCkpERETyhYs79JkNpWpB4jmY1ROSzjt3n0tIYeDkjYxfcZAFW0+ZGKiImElJukh+yqYlXURERIoRD38YMA/8w+D8Ifiqt2POGiDEz4Mn21fhjuqluLtWaZMDFRGzKEkXyU9R+xzPlyeNi0pI4fGvtjJz3THzYhIREZH85VcGBnwLHgFwahPMGwaZGQA83CaCSYMa4+lmMzdGETGN6Un6xIkTCQ8Px8PDg2bNmrFx48a/rT9+/HiqVauGp6cnYWFhPPXUU6SkpORTtCI3ISUeEi53Xbu8/Nofxy/w/fYzfLXxpImBiYiISL4Lrgb95oKLBxz4ERaPAcMAro5RNwyDD1ceZMuJC2ZGKiL5zNQkfe7cuYwZM4aXX36ZLVu2UK9ePTp27EhUVFS29b/88kuee+45Xn75Zfbu3cvkyZOZO3cu//nPf/I5cpFcuNKK7lsGPAMAqBbqy786VKVvs/LmxSUiIiLmKH8b9PwCLFbYMh1+fSvL7pnrj/Pe8gM8OG0Th6MTTQpSRPKbqUn6e++9x4gRIxg6dCg1a9bk008/xcvLiylTpmRb//fff6dly5b069eP8PBw7rrrLvr27fuPre8iBUI2k8ZFBPvw+J1VGHhbBZOCEhEREVPV6Aqd3nZsr3oTtsxw7urZsBz1yvlz4VI6gyZv5FyCeo+KFAe5StJ/+eWXm37jtLQ0Nm/eTPv27a8GY7XSvn171q1bl+0xLVq0YPPmzc6k/MiRIyxZsoROnTpd931SU1NJSEjI8hAxRfSV8eiaNE5Eip+cDG+bNm0aFosly8PDwyMfoxXJZ02GQ+unHdvfPwkHlgHg7e7ClCFNqBjkzem4ZAZP2Uh8crp5cYpIvshVkn733XcTERHB66+/zsmTuRtLGxMTQ2ZmJiEhIVnKQ0JCiIyMzPaYfv368dprr9GqVStcXV2JiIigbdu2f9vdfdy4cfj7+zsfYWFhuYpX5Kb9pSX9+Pkkftx5lijdFReRIi6nw9sA/Pz8OHv2rPNx/PjxfIxYxAR3vAD1+4ORCV8PhlN/AFDSx50Zw5oS7OvOvsiLjJjxBynpmSYHKyK3Uq6S9NOnT/PYY48xb948KlWqRMeOHfn6669JS0vL6/iyWLVqFW+++SYff/wxW7ZsYf78+SxevJj//ve/1z1m7NixxMfHOx+5vakgctP+svza0l2RjJy9hRe/22ViUCIit15Oh7cBWCwWQkNDnY+/3tQXKXIsFuj6AVTuABnJMLsXxBwCICzQi+lDm+Lr7sLGo7E8OWcbmXbD5IBF5FbJVZIeFBTEU089xbZt29iwYQNVq1bl0UcfpUyZMjzxxBNs3779hs5hs9k4d+5clvJz584RGhqa7TEvvvgiAwcOZPjw4dSpU4cePXrw5ptvMm7cOOx2e7bHuLu74+fnl+Uhku+SYiAp2rF9eWb3KzO1NqpQwqyoRERuudwMbwNITEykQoUKhIWF0a1bN3bv3v2376PhbVIk2Fyh1zQo0wCSY2HWfZDo6HFSs4wfnw9qjJvNytLdkby8aBeGoURdpCi66YnjGjZsyNixY3nsscdITExkypQpNGrUiNatW//tBdXNzY1GjRqxcuVKZ5ndbmflypU0b94822MuXbqE1Zo1ZJvNsYak/khJgXalFb1EOLh5YxgGm4/HAdCwvJJ0ESm6cjO8rVq1akyZMoXvvvuOWbNmYbfbadGiBadOnbru+2h4mxQZ7j7Q7xsoURHijjta1FMdM7s3jyjJ+D71sVhg1voTfPTzIZODFZFbIddJenp6OvPmzaNTp05UqFCBZcuWMWHCBM6dO8ehQ4eoUKECvXr1+ttzjBkzhkmTJjF9+nT27t3LyJEjSUpKYujQoQAMGjSIsWPHOut37dqVTz75hDlz5nD06FGWL1/Oiy++SNeuXZ3JukiBdCVJD3Z0dT8Zm0xMYiquNgu1y/qbGJiISMHTvHlzBg0aRP369WnTpg3z588nODiYzz777LrHaHibFCk+wTDgW/AKgrPb4JvBkOmYMK5TndK8em8tAN5bfoA5G0+YGKiI3AouuTno8ccf56uvvsIwDAYOHMhbb71F7dq1nfu9vb155513KFOmzN+ep3fv3kRHR/PSSy8RGRlJ/fr1Wbp0qfNu+4kTJ7K0nL/wwgtYLBZeeOEFTp8+TXBwMF27duWNN97IzccQyT9/mTRu84lYAGqX9cfDVTeYRKToys3wtr9ydXWlQYMGHDp0/VZDd3d33N3dbypWkQKlZAT0+xqmd4FDKxyzvnebABYLg5qHE5WQyoRfDvGfBTsJ9Hbjrlo39u9JRAq+XCXpe/bs4aOPPuK+++677gUxKCjohpZqe+yxx3jsscey3bdq1aosr11cXHj55Zd5+eWXcxyziKmck8bVBGDL5a7ujdTVXUSKuD8Pb+vevTtwdXjb9a7/f5WZmcnOnTv/dslVkSKpXCPHGPWv+sK2WeBXBu54HoB/3VWVqIspLNh6mtSM7OdmEpHCKVdJ+p/HkV/3xC4utGnTJjenFylaDAOis87svvm4Y9K4hpo0TkSKgTFjxjB48GAaN25M06ZNGT9+/DXD28qWLcu4ceMAeO2117jtttuoXLkycXFxvP322xw/fpzhw4eb+TFEzFG1I3R5H75/An57C/xKQ+NhWCwW3uxRh4G3hVOnnIbOiRQluUrSx40bR0hICMOGDctSPmXKFKKjo3n22WfzJDiRIuHiWUiJB4sNgqqQmJrBvkjHrMOa2V1EioOcDm+7cOECI0aMIDIykhIlStCoUSN+//13atasadZHEDFXo8GQcAZ+/T9Y/C/wLQ3V7sHFZs2SoEfGp5CeaScs0MvEYEXkZlmMXEyLHh4ezpdffkmLFi2ylG/YsIE+ffpw9OjRPAswryUkJODv7098fLyWY5P8cWgFzOoJQVXhsU2sPRRD/y82UDbAk7XP3WF2dCJSAOjalPf0nUqRYxiw6HHYOhNcPGHw9xDWxLn7SHQiAydvxN3FyjePNKekj+ZoEClIcnJdytXs7pGRkZQuXfqa8uDgYM6ePZubU4oUXVFZu7pvOa710UVERCSHLBZHt/cqd0FGMnzVG2KuTqbo7X61g2yKxqiLFGq5StLDwsJYu3btNeVr1679xxndRYqVjFTY9pVjO6QOAJtPXB6PXj7ApKBERESkULK5wv1ToUwDuHQeZt0HiVEAhPh5MGt4M755pDllAzxNDlREbkaukvQRI0bw5JNPMnXqVI4fP87x48eZMmUKTz31FCNGjMjrGEUKr5WvQdRuxzqnjQZjtxt/akkPNDk4ERERKXTcfaDfN1CiIsQdh9m9IPUiABWDvLN0c9964gJ2e45HtoqIyXI1cdwzzzzD+fPnefTRR0lLSwPAw8ODZ599lrFjx+ZpgCKF1pFVsG6CY7vbBPApxcXkdFpVCWLPmQSql/Y1NTwREREppHyCYcC3MLkDnN0Gcwc4EncXN2eVORtP8J8FOxnUPJyXu9bEYrGYF6+I5EiuJo67IjExkb179+Lp6UmVKlWuu2Z6QaKJZCRfXIqFT1rCxTPQaCh0HW92RCJSgOnalPf0nUqxcHozTOsK6UlQuyfc9wVcXinhu22nGT1nGwDPdKzGqHaVTQxURG75xHFX+Pj40KRJE2rXrl0oEnSRfGEY8MNTjgQ9MAI6vmF2RCIiIlIUlW0EvWeC1RV2fQtLn3X8DgG61S/LS10cyxa+vWw/czaeMDNSEcmBXHV3B/jjjz/4+uuvOXHihLPL+xXz58+/6cBECq0dc2HPQrC6QM9J4Obt3HUy9hLlSniqy5mIiIjkjcp3Qo9P4dsHYePn4F0K2jwDwLBWFYlJTOXjVYf5z4KdBHi5cXftUJMDFpF/kquW9Dlz5tCiRQv27t3LggULSE9PZ/fu3fz888/4+/vndYwihceF47D4acd22+ccd7iv7EpKo/Vbv9DkjRVcSsswKUAREREpcurcD3f/z7H9y+vwx1Tnrmc6VqN34zDsBjzx1VZ+PxRjUpAicqNylaS/+eabvP/++3z//fe4ubnxwQcfsG/fPh544AHKly+f1zGKFA72TFjwMKRdhLDboNWYLLsPRSfiZrPi5+GKl1uuO7GIiIiIXOu2R6D15YaCxWNgzyIALBYLb/SoTcdaIaRl2hkx4w92nIozL04R+Ue5StIPHz5M586dAXBzcyMpKQmLxcJTTz3F559/nqcBihQaa96HE+vAzRfu+wystiy7m4QHsvPVu5g6tIlJAYqI5Mz06dNZvHix8/W///1vAgICaNGiBcePHzcxMhHJ1h0vQMPBYNjh2+FwdDUALjYrH/RpQIuIkiSlZTJk6iYORSWaHKyIXE+ukvQSJUpw8aJjPcayZcuya9cuAOLi4rh06VLeRSdSWJzeAqvGObY7vQUlwrOt5u5io0JJ72z3iYgUNG+++Saenp4ArFu3jokTJ/LWW28RFBTEU089ZXJ0InINiwW6vA/Vu0BmKszpB2d3AODhauPzQY2pV86f2KQ0Bk7ewOm4ZJMDFpHs5CpJv/3221m+fDkAvXr1YvTo0YwYMYK+ffty55135mmAIgVeWhLMHwH2DKjZDer1NTsiEZE8cfLkSSpXdizbtHDhQnr27MlDDz3EuHHjWL16tcnRiUi2rDboORkqtILUBJjVE2KPAODj7sLUoU2JCPbmbHwKAydv4HxiqskBi8hf5SpJnzBhAn369AHg+eefZ8yYMZw7d46ePXsyefLkPA1QpMD76UU4fwh8S0OX8Y672H+x+0w8d4//jXE/7s3/+EREcsnHx4fz588D8NNPP9GhQwcAPDw8SE5WC5xIgeXqAX2/hJA6kBQFM++Di+cACPR2Y+aDzSjj78GR6CQW7zxrcrAi8lc5nr0qIyODH374gY4dOwJgtVp57rnn8jwwkULhwDL44/KNqe6fgFdgttU2H7/AvsiLhPh55GNwIiI3p0OHDgwfPpwGDRpw4MABOnXqBMDu3bsJDw83NzgR+Xse/jDgW5hyF1w4CrN7wpDF4OFPmQBPZg5vxuoD0QxqHm52pCLyFzluSXdxceGRRx4hJSXlVsQjUngkRsN3oxzbt42CiHbXrbr5+AUAGpYvkR+RiYjkiYkTJ9K8eXOio6P59ttvKVmyJACbN2+mb18N7REp8HxDYOAC8A6GyJ3wZW9Ic8wfFRHsw5CWFZ1VU9Izyci0mxWpiPxJrtaBatq0Kdu2baNChQp5HY9I4bHhU0iKhlI14c6X/rbqlSS9UQUl6SJSeAQEBDBhwoRryl999VUTohGRXAms5EjUp3Z2rELz9SDo8yW4uDmrXExJZ/j0PwgL9OKtnnWxWq8duici+SdXY9IfffRRxowZw4QJE1i3bh07duzI8hAp8gwDds93bLf+l2Ps13VEJaRw6kIyVgvUC/PPpwBFRG7e0qVLWbNmjfP1xIkTqV+/Pv369ePChQsmRiYiORJaB/p/DS6ecGg5LHgY7JnO3dtPxrPpWCxLd0VyPFYrNYmYLVct6VcmjXviiSecZRaLBcMwsFgsZGZmXu9QkaLh7HbHTKkuHlD17r+tuuWE44dstVA/fD1c8yM6EZE88cwzz/C///0PgJ07d/Kvf/2LMWPG8MsvvzBmzBimTp1qcoQicsPK3wZ9ZsGXfRwNDe6+0PUDsFhoVSWI93vXJyLYh4pBWipWxGy5StKPHj2a13GIFC67Fzieq9wF7j5/W3XJzkgAGpYPuMVBiYjkraNHj1KzZk0Avv32W7p06cKbb77Jli1bnJPIiUghUrk99JwE84bBlungGQAdXgOgW/2yWapeSEqjhLdbNicRkVstV0m6xqJLsfbnru617/vbqt/8cZJF289gsUD3BmX/tq6ISEHj5ubGpUuOrq8rVqxg0KBBAAQGBpKQkGBmaCKSW7V6QOpFWPQ4rP0APAKg9ZgsVbacuMDQqZsYe091+jQtb06cIsVYrpL0GTNm/O3+KxdxkSLpzBaIOwGuXlCl43Wr7T2bwIvf7QLgqfZVaRKe/fJsIiIFVatWrRgzZgwtW7Zk48aNzJ07F4ADBw5Qrlw5k6MTkVxrOAhS4uGnF2Dlq+DhB02GO3f/si+K+OR0xi7Yiaeb7ZpWdhG5tXKVpI8ePTrL6/T0dC5duoSbmxteXl5K0qVo23W5Fb3q3eDmlW2ViynpPDp7Cynpdm6vGsxj7SrnY4AiInljwoQJPProo8ybN49PPvmEsmUdP9R//PFH7r777+fjEJECrsXjkBwHq9+BxU87WtTr3A/AmA5ViU1KY/aGE4z5ejtebi50qBliargixUmukvTsZnQ9ePAgI0eO5JlnnrnpoEQKLLsddi90bF+nq7thGDz37U6OxiRR2t+D8b3raykTESmUypcvzw8//HBN+fvvv29CNCKS5+54wdGivmmSY8Z3d1+o2hGLxcJ/u9XmUlomC7aeZtTsLUwZ0oRWVYLMjlikWMhVkp6dKlWq8H//938MGDCAffv25dVpRQqW039Awilw84HKHbKtcigqkRV7z+FitTCxf0MCNemKiBRimZmZLFy4kL179wJQq1Yt7r33Xmw2m8mRichNs1jgnrcgNQF2zHWsoT7gWwhvhdVq4e3763IpLYNlu88xYsYfzBrelEYVNHxP5FbL1Trp1+Pi4sKZM2fy8pQiBcuVru7VOl13bfQqIb4seLQlb91fl4blS+RjcCIieevQoUPUqFGDQYMGMX/+fObPn8+AAQOoVasWhw8fNjs8EckLVit0mwhV74GMFMcSbac2A+Bis/Jh3wbcXjWY5PRMhkzdxK7T8SYHLFL0WQzDMHJ60KJFi7K8NgyDs2fPMmHCBMLCwvjxxx/zLMC8lpCQgL+/P/Hx8fj5+ZkdjhQmdju8XxMunoW+c6DaPWZHJCJFREG9NnXq1AnDMJg9ezaBgY7Ws/PnzzNgwACsViuLFy82OcLrK6jfqUiBlZ4Cs++HY6sd49OHLIbQ2gAkp2UyeMpGNh6LJdDbjbkP3UaVEF9z4xUpZHJyXcpVkm61Zm2At1gsBAcHc8cdd/Duu+9SunTpnJ4y3+iiLbl2/HeYeg+4+8MzB8HF3bnLbjcYO38nfZqG0UCt5yKSQwX12uTt7c369eupU6dOlvLt27fTsmVLEhMTTYrsnxXU71SkQEtNhJk94NRG8AqCoT9CcFXAMSlu/y82sONUPCF+7nzzcAvKl8x+Al0RuVZOrku56u5ut9uzPDIzM4mMjOTLL78s0Am6yE250tW9eucsCTrA9HXHmPvHSQZP2cjFlHQTghMRyXvu7u5cvHjxmvLExETc3DTfhkiR4+4D/b+B0LpwKQZm3AuxRwHw9XBl+tCmVAvx5VxCKv2+WM/puGSTAxYpmvJ0TLpIkWXPhD3fObazmdW9Z6Ny3FM7lJe71sLXwzWfgxMRuTW6dOnCQw89xIYNGzAMA8MwWL9+PY888gj33nuv2eGJyK3gGQADF0JwdccQvxn3QvxpAEp4uzFzeFPCS3px6kIyn/2quSlEboVcJek9e/bkf//73zXlb731Fr169brpoEQKnONrISnKMUarYptrdvt5uPJx/4b0bFQu/2MTEblFPvzwQyIiImjevDkeHh54eHjQokULKleuzPjx480OT0RuFe+SMOg7CKwEcScciXpiFAClfD34csRtDGkRzguda5ocqEjRlKsk/bfffqNTp07XlN9zzz389ttvNx2USIFzpat7ja7g4ujimZ5pZ9H2M1yZ1sFi0VroIlK0BAQE8N1333HgwAHmzZvHvHnzOHDgAAsWLCAgIMDs8ETkVvINhUGLwD8Mzh+CGd3hUiwAZQI8eeXeWri5OFIJwzBITM0wMViRoiVX66Rfbyyaq6srCQkJNx2USIGSmQF7L69o8Keu7l9uOMHLi3az7nAM4+6ra1JwIiJ5a8yYMX+7/5dffnFuv/fee7c6HBExU0CYo0V96j0QtRtm9XS89rg66ZXdbvDyot1sOXGBL4ffhr+Xhv2J3KxcJel16tRh7ty5vPTSS1nK58yZQ82a6vYiRcyx3+DSefAqCeG3O4u/2+YYnxUR7GNWZCIieW7r1q03VE+9h0SKiZIRlxP1TnBmC3z5AAz4Fty8ATh3MYUlO88SeymNdUfOc3ftUJMDFin8cpWkv/jii9x3330cPnyYO+64A4CVK1fy1Vdf8c033+RpgCKmc3Z1vxdsjn8yp+OS2XIiDosFutYrY2JwIiJ5688t5SIiAJSqAYMWwrSucGIdzOkHfeeCqwel/T2ZPaIZ+yMvKkEXySO5GpPetWtXFi5cyKFDh3j00Uf517/+xalTp1ixYgXdu3fP4xBFTJSZDnu/d2z/qav74h1nAGgaHkiIn4cZkYmIiIjkn9L1YMA8cPWGI6vgm8GQkQZA9VA/utUv66wam5RGclqmSYGKFH65akkH6Ny5M507d87LWEQKniOrICUOvEtBhZbO4sU7zgLQRa3oIiIiUlyENYV+c2H2/XBgKXwzBHpNc06qCxCVkEL/LzYQ6u/BpEGN8XC1mRauSGGVq5b0TZs2sWHDhmvKN2zYwB9//HHTQYkUGLsXOJ5rdgOr4yJz4vwltp+Kx2qBu2upW5eIiIgUIxVbQ58vweYO+xfDvKGOnoeXnbyQzKkLyaw+GMOo2VtIy7CbGKxI4ZSrJH3UqFGcPHnymvLTp08zatSomw5KpEDISIW9Pzi2/9zVfaejFb15REmCfd3NiExERETEPJXvvJyou8G+H+DbB52JeqMKJZg8uDHuLlZW7ovisS+VqIvkVK6S9D179tCwYcNryhs0aMCePXtuOiiRAuHwz5AaD76lIew2Z/EPl8ejd6mrru4iIiJSTFVpD71nOxL1Pd/B/BGOZWuBFpWD+HxQY9xcrPy05xyPf6VEXSQncpWku7u7c+7cuWvKz549i4tLroe5ixQszq7u3cHq+KdyNCaJ3WcSsFktdFRXdxERESnOqt4FD8wEq6vjd9OCh5yJepuqwXw+sBFuLlaW7VaiLpITuUrS77rrLsaOHUt8fLyzLC4ujv/85z906NAhz4ITMU16Cuxb4tiu1cNZfGVW95aVgwj0dsvuSBEREZHio9rd8MAMR6K+61tY+AjYHTO7t61WSom6SC7kKkl/5513OHnyJBUqVKBdu3a0a9eOihUrEhkZybvvvpvXMYrkv0PLIe0i+JWDck2cxT9cmdW9TmmzIhMREREpWKp3cszybnWBnd/AwkeVqIvchFwl6WXLlmXHjh289dZb1KxZk0aNGvHBBx+wc+dOwsLCcny+iRMnEh4ejoeHB82aNWPjxo3Xrdu2bVssFss1Dy0HJ3nqSlf3Wt2dXd0PRV1kX+RFXG3q6i4iIiKSRY0ucP8UsNhgxxxY9DjYHcm4EnWRnMlVkg7g7e1Nq1at6Nq1K7fffjsBAQH8+OOPLFq0KEfnmTt3LmPGjOHll19my5Yt1KtXj44dOxIVFZVt/fnz53P27FnnY9euXdhsNnr16pXbjyKSVdol2L/UsV3r6qzuvh6uPHFHZfo2LY+/l6tJwYmIiIgUUDW7wf2THYn6ttnwvRJ1kdzIVZJ+5MgR6tWrR+3atencuTPdu3enR48ezkdOvPfee4wYMYKhQ4dSs2ZNPv30U7y8vJgyZUq29QMDAwkNDXU+li9fjpeXl5J0yTsHl0F6EgSUh7JXVzEI8fNgzF3VeK1bbRODExEpnHLSa+7P5syZg8VioXv37rc2QBHJG7V6QM9JYLHC1lnw/RPZJuqHohK5mJL+DycTKZ5ylaSPHj2aihUrEhUVhZeXF7t27eLXX3+lcePGrFq16obPk5aWxubNm2nfvv3VgKxW2rdvz7p1627oHJMnT6ZPnz54e3tnuz81NZWEhIQsD5G/tXOe47n2/WCxmBuLiEgRkNNec1ccO3aMp59+mtatW+dTpCKSJ2r3hPuuJOoz4btRWcaoTxvShK9G3EZJH3eTAxUpmHKVpK9bt47XXnuNoKAgrFYrNpuNVq1aMW7cOJ544okbPk9MTAyZmZmEhIRkKQ8JCSEyMvIfj9+4cSO7du1i+PDh160zbtw4/P39nY/cjJmXYiT5Ahz8ybFd52rvjCU7z7J0VyQp6ZkmBSYiUnjltNccQGZmJv379+fVV1+lUqVK+RitiOSJOvdDzy8cXd+3fwkLHs6yjnopPw9n1d8Pxajru8if5CpJz8zMxNfXF4CgoCDOnHEsS1WhQgX279+fd9H9g8mTJ1OnTh2aNm163TpXloq78jh58mS+xSeF0N7vITMNStWCkJoAGIbBO8v288iszSzb/c83j0RE5Krc9pp77bXXKFWqFA8++OANvY96zokUQLV7Qq+pV2d9nz8cMrN2cV+w9RT9J2/g0dmblaiLXJarJL127dps374dgGbNmvHWW2+xdu1aXnvttRzd7Q4KCsJms3Hu3Lks5efOnSM09O9nz05KSmLOnDn/ePF2d3fHz88vy0PkunZ+43iuc7+zKC3Tzp01SlEpyJs7a4Rc50AREclObnrNrVmzhsmTJzNp0qQbfh/1nBMpoGp2u7qO+u4F8M0QyEhz7i7h5YabzUqovweuNg0zFIFcJukvvPAC9ssTQLz22mscPXqU1q1bs2TJEj788MMbPo+bmxuNGjVi5cqVzjK73c7KlStp3rz53x77zTffkJqayoABA3LzEUSulXAWjq52bNfu6Sx2d7HxfOearPxXG3zcXUwKTkSkeLh48SIDBw5k0qRJBAUF3fBx6jknUoBV7wx9vgSbO+z7Ab4eBBmpgGOM+qLHWvHavbWxaC4gEQBylXF07NjRuV25cmX27dtHbGwsJUqUyPE/rjFjxjB48GAaN25M06ZNGT9+PElJSQwdOhSAQYMGUbZsWcaNG5fluMmTJ9O9e3dKliyZm48gcq1d3wIGhN0GJSpcs1sXDhGRnMtpr7nDhw9z7Ngxunbt6iy70jDg4uLC/v37iYiIuOY4d3d33N01CZVIgVX1Luj7FczpBwd+hDn9ofcscPWgWqivs1pahp13l+/nkdsjKOHtZmLAIubJ9TrpfxUYGJirJKZ379688847vPTSS9SvX59t27axdOlSZ7e4EydOcPbs2SzH7N+/nzVr1tzwODWRG5JNV/djMUmsPhhNRqbGSImI5EZOe81Vr16dnTt3sm3bNufj3nvvpV27dmzbtk3d2EUKs8p3Qr+vwdULDi2Hr/pA2qUsVV75fjef/XqEPp+vJ+piikmBipjLYhiGYXYQ+SkhIQF/f3/i4+M1Pl2uijkIExo7ZiB9+gB4O7pYvrlkL5//doRejcrxdq96JgcpIkVVUb82zZ07l8GDB/PZZ585e819/fXX7Nu3j5CQkOv2mrtiyJAhxMXFsXDhwht+z6L+nYoUasfWwuxekJ4E4a2h31xwcyynfPDcRfp/sYGoi6lUCvJm1vBmlAnwNDlgkZuXk+tSnrWkixRqV9ZGj7jDmaAbhsHiHY5eHHfWKGVWZCIihV5ues2JSBEW3hIGzgc3Xzi2GmbdD6kXAagS4svXDzenbIAnR2KS6PXpOo6fTzI5YJH8pZZ0EcOAjxpB7GG4bxLUfQCALScucN/Hv+PtZmPzix3wcLWZHKiIFFW6NuU9facihcCpP2DmfZAaD2Ubw4B54FkCgNNxyQz4YgNHY5II8XNn9vBmVC7l+w8nFCm41JIukhNntjoSdBdPqNbJWfzDdkerTvuaIUrQRURERPJaucYwaKEjMT/9B0zrAolRAJQN8GTuw7dRLcSXcwmp9P5sPbvPxJsbr0g+UZIucqWre/VO4O4DgN1usGSnI0nvUreMWZGJiIiIFG1lG8KQJeATAud2wdR7IP4UAKV8PZjz0G3UKevP+aQ0+n6+ns3HL5gcsMitpyRdijd75uWl14A6vZzFm09cIDIhBV93F26veuPr9IqIiIhIDoXUhKE/gn8YnD8EU+6B84cBKOHtxuwRzWhcoQQJKRkM+GIDq/ZHmRywyK2lJF2Kt2NrIDESPAIg4k5n8Q/bzwDQoVYI7i7q6i4iIiJyS5WMgGFLoWRliD/haFE/twcAPw9XZjzYlDZVg0lOz2T49D/4bttpkwMWuXWUpEvxdmVt9FrdwcUNgEy7wZJdkQB0qVvapMBEREREihn/co4W9ZDakHgOpnWC01sA8HJzYdKgxtxbrwwZdoOXF+0mPjnd5IBFbg0l6VJ8ZaTCnkWO7T91df/jWCzRF1Px83ChVeVgk4ITERERKYZ8SsHg7x2zvSdfgOn3wvHfAXBzsTK+d31GtK7IF4Ma4+/panKwIreGknQpvg7+5Fjyw7cMlG/hLP758jinO2uE4OaifyIiIiIi+cor0DHre3hrSLvoWKbt0AoArFYLz3euSePwQGf1w9GJ2O3FalVpKeKUgUjxdaWre52eYL36T+HX/dEAtK2mVnQRERERU7j7Qv9voEpHyEiGL/tc7QH5J7tOx9N9wlpGz91GWobdhEBF8p6SdCmeUhJg/1LH9p+6ukfGp7Av8iIWC7SuoiRdRERExDSuntB7FtTqAfZ0+GYwbJ2dpcrJ2EukZGRyLiEFu6HWdCkaXMwOQMQU+36AzFQIqgqhdZ3Fbi5WnrunOqcvJBPo7WZigCIiIiKCixv0nAxu3rB1Fnz3KCRFQcsnwWLhnjqlmentRs0yfni4akUeKRqUpEvx5Ozq/gBYLM7iQG83HmkTYVJQIiIiInINqw3unQBeQbB2PKx4BRKj4K43wGrltkols1SfuvYoHWuFUibA05RwRW6WurtL8ZMYBUdWObbr9DQ1FBERERG5ARYLdHgVOr7peL3+Y1jwEGSkZak2a/1xXv1+D/d9/Dv7IhNMCFTk5ilJl+Jn9wIw7I6lPQIrOYsPRV1k/pZTxCSmmhiciIiIiFxX81Fw3ySwujh6Rn7VG1ITnbvbVS9F5VI+RCak0OuTdfx+OMbEYEVyR0m6FD/Oru69shQv2HqaMV9v57Xv95gQlIiIiIjckLoPQL+54OoNh3+G6V0hyZGMlw3w5NtHWtA0PJCLqRkMnrKR77adNjlgkZxRki7FS+xROLUJLFbHTKF/EurvSc3SfrSrrlndRURERAq0yu1h8PfgGQhntsCUjnDhOAD+Xq7MeLApneuUJj3TYPScbXz262EMzf4uhYSSdCleds1zPFdsA74hWXYNvK0CS0a3pnv9siYEJiIiIiI5Uq4RPPgT+IfB+UMw+S6I3AWAh6uNj/o2YFjLigCM+3Efr36/h0y7EnUp+JSkS/FhGLAj+67uf2b502zvIiIiIlKABVVxJOqlakJiJEztBMd/B8BqtfBS15q80LkGANN+P8ao2VtISc80M2KRf6QkXYqP6H0Qsx9s7lCjS5Zdu07Hcyktw6TARERERCTX/MrA0CVQvjmkxsOM7rDnO+fu4a0rMaFfA9xsVpbujmTAFxu4kJR2/fOJmExJuhQfh1Y4niu2Bg9/Z3FGpp3+X2yg/qvL2R950aTgRERERCTXPEvAwAVQrTNkpsLXg2Hdx87dXeqWYcaDTfHzcOGP4xfo+envnIy9ZGLAItenJF2KjytJeuX2WYq3n4onPjkdD1crEcHeJgQmIiIiIjfN1RN6z4QmwwEDlo2FpWPBbgfgtkolmTeyBWX8PTgWk6TGGSmwXMwOQCRfpCU5xycRcWeWXb/ujwKgddVgXGy6byUiIiJSaFlt0Okdx2RyK16G9R9D/Cm473Nw9aRqiC/zH23JpmOxtK8Z8s/nEzGBMhIpHo6thcw08C/vmGDkT1YdiAagbVUtvSYiIiJS6Fks0OpJ6DkZbG6wdxHM6AZJ5wEI9fega70yzuonYy8xc90xLdEmBYaSdCkeDq90PFe+w/GH+7KYxFR2nIoHoI2SdBEREZGio879jnHqHv5wcgNM7gCxR7JUuZSWwZCpG3nxu91MWn3kOicSyV9K0qV4uM549NUHHa3oNUv7UcrPI7+jEhEREZFbKbwVDLu8lnrsYfiiA5za7Nzt6Wqjd5Mwyvh7cG+9siYGKnKVknQp+i4cg/OHwGKDirdn2bVq/+Wu7tXUii4iIiJSJJWqDsNXQGhduBQD0zrDviUAWCwWHro9guVj2hDqf7XBJjlNa6mLeZSkS9F36HJX97BmWZZey7Qb/HZ5PLq6uouIiIgUYb6hMPRHqNwBMpJhbn/YOMm529v96nza328/wx3vrmLX6XgzIhVRki7FwOGfHc+V78hSvPN0PBcupePr7kLDCiVMCExERERE8o27D/SdAw0HgWGHJU/Dkn9DZoazSqbd4LPfDnM2PoUHPlvHyr3nTAxYiisl6VK0ZabDkV8d238Zj77q8tJrraoE4aql10RERESKPpsLdP0Q7nzJ8XrjZzC7JyRfcOy2Wpg9/DZaVi7JpbRMRsz4g2lrj2rmd8lXykykaDu5EdIuglcQhNbLsutXdXUXERERKX4sFmj9L+g9C1y94cgqmHQnxBwEwN/TlWlDm/JA43LYDXjl+z38e94OUtI1Tl3yh5J0KdquzOoecQdYr/7vfiEpjW0n4wBoo0njRERERIqfGl3hwWVXZ36fdKdzLiNXm5X/9azL2HuqY7XAN5tP8cBn6zgTl2xy0FIcKEmXos25PvqdWYrjktNpUzWYemEBlPb3NCEwERERETFdaB0Y8QuE3Qap8TC7F2z4DAwDi8XCw20imD6sKQFeruw4FU/Xj9aw7vB5s6OWIk5JuhRdiVFwdrtjOyLrpHEVg7yZNrQpCx9tYUJgIiIiIlJg+ATD4EVQrx8YmfDjv+GHJyEjDYDWVYL5/rFW1Cztx/mkNAZM3sAXq49onLrcMkrSpeg6/IvjObQu+JTKtorFYsnHgERERESkQHJxh+4fQ4f/AhbYPA1m9oAkR6t5WKAX345sQY8GZcm0G7y+eC9Pzt2m9dTlllCSLkXXlfHof+nqHpOYqvFEIiIiIpKVxQItn4B+c8HNF46vgUntIGovAJ5uNt57oB4vd62JzWrhu21nWHckxuSgpShSki5Fk93+p/XRsy699tWGE7T4v595+btdJgQmIiIiIgVa1Y4wfDmUCIe4444J5XZ8DTh6YQ5tWZHZw5vxTMdq3FE9xNxYpUhSki5FU+R2uBQDbj5QrmnWXQkpWC1QNdTXpOBEREREpEArVQOG/wwVb4f0JJg/AhY9DumO3pi3VSrJqHaVndXPJaTwxeoj2O0apy43T0m6FE2Xl8+gYhtwccuy640eddj8QgfurVfGhMBEREREpFDwLgkDF0Kb5wALbJnhaFWPPpClWkamnZGzNvP64r28vnivKaFK0aIkXYqmK0l65Tuy3V3C2w1fD9d8DEhERERECh2rDdqNhUELwbsURO2Gz9vC9rnOKjarhT5NyhPs686QFuFmRSpFiJJ0KXpS4uHkBsd2RNZJ49Iy7CYEJCIiIiKFWqW28Miaq93fFzwE3z0GaZewWCw80CSM1f9uR/mSXs5Dftkfpd+ekitK0qXoOfqbY43LwAgIrOgsNgyDtm//wv2f/M6pC5dMDFBERERECh3fEEf397b/ASywdSZ8cSdE7wfAw9XmrLrmYAzDpm3i/k9/51hMkjnxSqGlJF2KHufSa1lndd9xKp4z8SnsPpNAkI+7CYGJiIiISKFmtUHbZ2HwIvAJgag9ju7v277KUi3dbsff05Udp+Lp/OFqFm49bU68UigpSZeixTDg0JWl17J2dV9w+Y9jh5ohWe50ioiIiIjkSMXbHd3fK7WF9Euw8BFY8AikJADQrlopfhzdmqYVA0lKy+TJudsY8/U2klIzzI1bCgUl6VK0xByE+BNgc4PwVs7i9Ew7i7afAeC+hmXNik5EREREigqfUjBgPrR7HixW2P4VfNISjv8OQGl/T74acRtPtq+C1QLzt5ymy0dr2Hkq3uTApaAzPUmfOHEi4eHheHh40KxZMzZu3Pi39ePi4hg1ahSlS5fG3d2dqlWrsmTJknyKVgq8w5dndS/fHNy8ncW/7o8mNimNYF93WlUOMik4ERERESlSrDZo828YsgQCKjgai6Z2guUvQ0YqNquFJ9tX5asRt1Ha34OjMUn0+Hgt41ccID1Tk8pJ9kxN0ufOncuYMWN4+eWX2bJlC/Xq1aNjx45ERUVlWz8tLY0OHTpw7Ngx5s2bx/79+5k0aRJly6plVC67znj0+VtPAdC9fhlcbKbfmxIRKXZyclN+/vz5NG7cmICAALy9valfvz4zZ87Mx2hFRHKoQnNH9/cGAwAD1o53rKl+bg8AzSqV5MfRrelcpzQZdoPxKw5y38e/c/DcRVPDloLJ1GzlvffeY8SIEQwdOpSaNWvy6aef4uXlxZQpU7KtP2XKFGJjY1m4cCEtW7YkPDycNm3aUK9evXyOXAqk9GQ4ttax/afx6PGX0lmxx3Hj576G5cyITESkWMvpTfnAwECef/551q1bx44dOxg6dChDhw5l2bJl+Ry5iEgOePhBt4nQezZ4lYRzOx2Tyq2bCHY7AV5uTOjXgA/7NsDf05Wdp+Pp/NEaPv/tMJl2w+zopQAxLUlPS0tj8+bNtG9/tcXTarXSvn171q1bl+0xixYtonnz5owaNYqQkBBq167Nm2++SWZm5nXfJzU1lYSEhCwPKaKO/w4ZyeBbGkrVdBb/sPMMaZl2qof6UqO0n4kBiogUTzm9Kd+2bVt69OhBjRo1iIiIYPTo0dStW5c1a9bkc+QiIrlQows8uh6qdITMVFj2H5hxL8SdxGKxcG+9Mvz01O20qxZMWoadd386oOWBJQvTkvSYmBgyMzMJCQnJUh4SEkJkZGS2xxw5coR58+aRmZnJkiVLePHFF3n33Xd5/fXXr/s+48aNw9/f3/kICwvL088hBcjhy7O6R9wJFouzeP4Wx6zuPdWKLiKS73JzU/7PDMNg5cqV7N+/n9tvv/269XRTXkQKFJ9S0G8udBkPrl5wbLVjUrkdX4NhEOLnwZQhTfhfzzq82KUmFUp6/+MppfgoVINz7XY7pUqV4vPPP6dRo0b07t2b559/nk8//fS6x4wdO5b4+Hjn4+TJk/kYseQr53j0q13dj8Uksfn4BawW6Fa/jEmBiYgUX7m5KQ8QHx+Pj48Pbm5udO7cmY8++ogOHTpct75uyotIgWOxQOOhjrHqZRtDajzMHwFfD4LEKCwWC72blGfAbRWch2w+HsuQqRs5G59sYuBiNtOS9KCgIGw2G+fOnctSfu7cOUJDQ7M9pnTp0lStWhWb7eoa1zVq1CAyMpK0tLRsj3F3d8fPzy/LQ4qg+FMQvc+x/EWlts7i+ZfXRm9dJZhSfh4mBSciIjnl6+vLtm3b2LRpE2+88QZjxoxh1apV162vm/IiUmCVjIBhyxxLtVldYO8imNgUts8B4+pYdMMweH7BLlbtj2bCz4dMDFjMZlqS7ubmRqNGjVi5cqWzzG63s3LlSpo3b57tMS1btuTQoUPY7VeXKzhw4AClS5fGzc3tlscsBdihy/8flW0EXoEA2O0G87c4ZnXX2ugiIubIzU15cHSJr1y5MvXr1+df//oX999/P+PGjbtufd2UF5ECzebiWKptxC8QWheSL8CCh2F2L0djE2CxWJjQryEda4Xw77urOw81DE0qV9yY2t19zJgxTJo0ienTp7N3715GjhxJUlISQ4cOBWDQoEGMHTvWWX/kyJHExsYyevRoDhw4wOLFi3nzzTcZNWqUWR9BCoor66NHXO3qnpSWwW2VShLi585dNa//Q1BERG6d3NyUz47dbic1NfVWhCgikn9K14URP8OdL4HNDQ4th4m3wR9TwG6ncikfPhvYGH9PV8CRoI+YsZmJvxwiLUPrqhcXLma+ee/evYmOjuall14iMjKS+vXrs3TpUue4tRMnTmC1Xr2PEBYWxrJly3jqqaeoW7cuZcuWZfTo0Tz77LNmfQQpCNKT4fAqx/af1kf39XDlnV71yLQb2KyW7I8VEZFbbsyYMQwePJjGjRvTtGlTxo8ff81N+bJlyzpbyseNG0fjxo2JiIggNTWVJUuWMHPmTD755BMzP4aISN6wuULrf0H1LvDdY3BqI/zwFOyaD/d+CIGVnFVXH4xhxd5zrNh7jkXbzjCuZx0ali9hYvCSHyxGMes/kZCQgL+/P/Hx8eoKV1RsnARLngb/8jB6G1ht/3iIiEhBUhyuTRMmTODtt9923pT/8MMPadasGeBYci08PJxp06YB8MILLzB37lxOnTqFp6cn1atXZ/To0fTu3fuG3684fKciUgTYM2HDZ7DyNcdSwi6ecOeL0OwRsNowDIOF207z3x/2EpuUhsUCg26rwDN3V8fH3dT2VsmhnFyXlKRL4ZaZDh82gPiT0OkdaDoCgF2n4wGoVcYPi0Wt6CJSsOnalPf0nYpIoRJ7BBY94ViqDaBcE+j6IYTUdOxOSuP1xXucSwuX9vfgtW616VAz5HpnlAImJ9elQrUEm8g1dn7jSNC9S0GDAc7i95YfoMtHa5i85qiJwYmIiIiI3IDASjBokWNddTdfOLUJPm0Fy56H1IsEervx3gP1mflgU8oHenE2PoURM/5g5KzNWq6tCFKSLoWX3Q5r3ndsNx8Frp6Xiw38PFxwd7HSrnopEwMUEREREblBVqtjXfVR6x3j1Y1MWDcBJjSF3QvAMGhdJZhlT97OI20isFkt/Lgrkjvf/ZVPVh3WxHJFiLq7S+G1ZxF8PRA8/OHJXeCR9b9nUmoG3hqrIyKFgK5NeU/fqYgUegd+gh+fgQvHHK8rtXMM7wyqDMDuM/G8uHAXW07EOXYHefPyvbVoUzXYnHjlb6m7uxR9hgGr33VsN33omgQdUIIuIiIiIoVX1bvg0fXQ5jmwucORX+CT5vDz65CeTK0y/sx7pAXv9qpHkI87R2KSWLLjrNlRSx5Qki6F0+Gf4ew2cPWCZiOdxWfjkzl47qJ5cYmIiIiI5BVXT2g3Fh5d51hqODMNfnsbJjaD/UuxWi30bFSOn59uwyNtInjm7mrOQ6MvppKSnmli8JJbStKlcFr9nuO50RDwLuksnvb7MTq8/xtvLN5jTlwiIiIiInmtZAT0nwcPzAS/shB3HL7qDV/1hdgj+Hm48tw91QnycXce8uy3O2j/3q9sOhZrYuCSG0rSpfA5sQGOrwGrKzR/zFmcaTdYuNWxLEWjCoFmRSciIiIikvcsFqh5L4zaCC1Hg9UF9i9xtKr/9CKkxDurxiSmsvdsAucSUgj0djMxaMkNJelS+Ky53Iperw/4l3UW/344hnMJqQR4udKuuibMEBEREZEiyN0HOrwGj6x1TCaXmQa/fwgfNoRNkyEzgyAfd1b+qw2TBjUmItjHeej8LaeISUw1MXi5EZpZSwqXyJ1wYClYrNDqqSy75m9xtKJ3rVsGdxebGdGJFFl2u520tDSzwyi0XF1dsdn0d0lERPJQqeowcAEc/Mmxnvr5g7B4DGz6Ajq+gVfEHbStdnU54t1n4vnXN9vxdnNhZNsIHmxVEQ9XXZsKIiXpUrhcWRe9ZnfH2JzLklIzWLorEoD7GpbN5kARya20tDSOHj2K3a71V29GQEAAoaGhWCwWs0MREZGiwmKBqh0h4g74YwqsGgdRe2BmD6jSEe56HYKrAo7FkWqX8Wfn6XjeXrafLzec4N93V6Nr3TJYrbo2FSRK0qXwOH8Ydi9wbP+lFX3prkiS0zOpGORN/bCA/I9NpIgyDIOzZ89is9kICwvDatUoqZwyDINLly4RFRUFQOnSpU2OSEREihybKzR7GOr0csz+vvFzOLgMDq+EJsOhzbPULhvId6Na8t3207y9dD+n45IZPWcbU9Yc5YUuNWkSrjmdCgol6VJ4rP0ADDtUuQtK13UWG4bBN5tPAnBfg7JqpRLJQxkZGVy6dIkyZcrg5eVldjiFlqenJwBRUVGUKlVKXd9FROTW8AqEu8dB42GOyeQO/AgbPoXtc6D1v7A2fYgeDcpxT+3STF5zlI9/OcT2U/H0+nQdd9cK5bl7qhMe5G32pyj21CQihUPCGdj2pWO79b+cxWkZdp7+Zgfrj8RitUD3BurqLpKXMjMd66u6uWlm2Jt15SZHenq6yZGIiEiRF1QF+s2BgQuhVC1IiYPlL8JHDWHrLDxsMKpdZVY9045+zcpjtcDS3ZG0f+9XXly4i6iEFLM/QbGmJF0Kh98ngD0dKrSE8rcBcCEpjYGTN/DtllPYrBZe716HsEC19IncCuqhcvP0HYqISL6LaAePrIZuH4NfOUg4Dd+Ngk9awL7FBPu48WaPOix98nbaVgsmw24wc/1x2ry9ireX7SMjU/PRmEFJuhR8l2Jh81THdqsxAByNSeK+T35nw9FYfNxdmDy4Mf2alTcxSBERERGRAshqgwb94fHNjonkPAIgeh/M6QdTOsLxdVQN8WXa0KZ8NeI2GpQPIDk9k60n4rBpQjlTKEmXgm/Dp5B+CULrQuU7Adh0LJajMUmUDfDk25EtsiwvISKSl8LDwxk/frzZYYiIiNwcVw9o8TiM3u5o+HLxhJMbYOrd8GUfOLeH5hElmT+yBZ8PbMR/OtVw9gKLTUrjq40nSFfLer7QxHFSsKVedCTp4BiLfvkPxQONw0jNsNOxVgilfD1MDFBECqK2bdtSv379PEmuN23ahLe3JtEREZEiwjMA2r8MTR+CX/8Ptsx0TDB3YCnU64ul7bPcVSs8yyGfrDrEpNVHWX0wmo/7NzIj6mJFLelScBkGrP8EUv6/vTuPq7JO/z/+OmwHEREQZXEBTFJRIVdCJ8vdmmFMW0xt0iwtxzZNx5x+pem3NLUys8amzXEmtcnRymxxpzL3PRdKQ9BEKVNAEVHO5/fHyZO4ggv3OfB+Ph73o3Puc5/7XNf5UFfXue/7c+dgqsXxzqFG/Hqs0PXyX26MVoMuIpfFGMOpU6dKtG316tU1s72IiJQ/QZGQ8ioMXg0N/wwY2DwTXmsO8x+HnH2uTaOrVaZaZT96tvz98tLCUw6MMRYEXv6pSRf34yiCbR/B2x1h2fMAfFrlbsZ+9j0P/XsdRQ79x0DEavmFp0q9nDn5zKkiB/mFpyg4WVSi/ZZGv379SE1N5dVXX8Vms2Gz2Zg+fTo2m43PP/+c5s2bY7fb+eabb9i9ezfdunUjPDycwMBAWrZsyeLFi4vt7+zT3W02G2+//Tbdu3cnICCAuLg4Pvnkk9J/iSIiIu4gLA56/hseXAJ124HjFKyfDlOawmfDIe8A994Yzdcj2tE2Lsz1tmmpu/nz1BUs2XFQzfpVptPdxRKfbc3i/dUZVPL1JtDuQxV/X0J8T9LiyOc03fc+VY47f7kz3nZsLR+gQeIAqu1dx10tamsCCxE3EP/sl6V+z+u9m/HHhEgAvtx2kMEzN5AUG8oHDyW7tvnDi8uKnTFz2p7xfyzx57z66qt8//33NG7cmDFjxgCwbds2AJ566ikmTZpE3bp1CQkJYe/evdx22208//zz2O12ZsyYQUpKCmlpadSpc+HJKJ977jkmTJjAxIkTee211+jTpw8ZGRmEhoaWOE4RERG3UqsF3PcRZHwLS5+HjG9gzT9hwwxo+SABbZ4Av+qA88f2WWsyycop4IF/rSOxVlWe6Hg9t9SvrruZXAVq0qXMbcg8zBOzN1H421G1MHK4z+dL/uK9mBDbUQAOm0BmFHXiwcdeoHJoFHFA6t/aEWjXn6yIXFzVqlXx8/MjICCAiIgIAHbu3AnAmDFj6NSpk2vb0NBQEhMTXc/Hjh3LvHnz+OSTT3jkkUcu+Bn9+vWjV69eALzwwgtMmTKFNWvW0LVr12uRkoiISNmJbg39PoX0r5xnte5dDSunwrr3IGkgtH4Mn4BQPn30D/zzqx+ZsTKDzftyuH/6Wm6oHcyQTtfTNi5MzfoVUMcjZSo7r4BB/1lPYZGDXnWP86D3Z0T/NB8fh/PI2SHfKBZWvZPFfh04dNKXx0IiXe9Vgy7iPraP6VLq9/h5/36FVZdG4Wwf0wWvswr4NyPaXXFsF9OiRYtiz48ePcro0aNZsGABWVlZnDp1iuPHj5OZmXnR/SQkJLgeV65cmaCgILKzs69JzCIiImXOZoO6N0NsW9i1BJb9H+zfCN+8AmvehhsfptqNf2XkbQ0Z0LYub6bu5t+rMti09wh9311DszrOZv0P9dSsXw51PXJ1bf8EPnkUTp045yUDVD3lYLkx2PzBf/8Zp7TWbAFtHqNagz/Ry8ubXmUXsYhchgC/KysfPt5e+HifOy3Kle73Us6epX3YsGEsWrSISZMmUa9ePSpVqsSdd95JYeG5p9yfydfXt9hzm82Gw6Hb0oiISDljs0FcR+dtkNM+h2UvwMGt8NVEWPkGtHyAsORHePqP8b816z/yn1UZbMg8wl/ecTbrj7SvR7v6NdSsl4KadLl6jIHl46DgyHlftgH20w9Oq38btH4M6tzour2aiMiV8vPzo6io6JLbrVixgn79+tG9e3fAeWR9z5491zg6ERERD2OzQYPb4PqusPNTZ5N+YAt8O8V53XqzvtRo8zjP/Cmeh26uy7TlP/L+amez3n/6OhpEVOFvXevTvkG41Zl4BDXpcvXsWwvZ28HHHwamgm+lczbJLThJxqF8mtSsCn6BULmaBYGKSHkXExPD6tWr2bNnD4GBgRc8yh0XF8fcuXNJSUnBZrPxzDPP6Ii4iIjIhXh5QfyfoWEK/LAQUifAT+tgzZuw7l1o2ocabZ7g2ZR4Hr6lLu98k877qzLZeSCPnw4ftzp6j6FbsMnVs+495z8b9YAaDSAkGkKiKQis5XocFFmPJo0TnM/VoIvINTJs2DC8vb2Jj4+nevXqF7zG/OWXXyYkJITWrVuTkpJCly5daNasWRlHKyIi4mFsNri+Czy4GO77GGJuAsdJ563bXmsOcx+iRkEmI29tyIoR7RnRtQF3tajtevsX32Xx9tc/cuxE6W6zWlHYTAW7qV1ubi5Vq1YlJyeHoKAgq8MpP44fhpcawKkC6L8Q6iQBzonierzxLYNuuY4+SdEWBykipVVQUEB6ejqxsbH4+/tbHY5Hu9h3qdp09ek7FREpYxkr4etJsGvxbytszqPubZ6Amr//AF7kMHR6JZUffz7G079NPFcRlKYu6Ui6XB1bPnQ26DXioXYr1+pZq/ey7/Bxpq/YQ8HJS18fKiIiIiIiHig6Ge79HwxYBvX/CBjY/jG81Q7+leKcJd4YjDEMvKkuibWqck+r34+ub9l3hL2/5lsXvxvRNely5YyB9b+d6t68X7EJ4B7rUI9Kfl50io/A39fbmvhERERERKRs1GwGvWbCwe2w4lX4bo7znuvpX0FEE3zaPME9zW/nnlZ1XG8xxjBy7lZ2HsjjtiaRPNS2Lo1rVrUwCWvpSLpcuTMnjEvoWewlm83GwLbXERtW+QJvFhERERGRcic8Hnq8CY9tgqRB4BsAB7bC/x6A15rBmreg0HnkPLfgFKGV/ShyGOZv3s+fXvuGXv9cxbK0bCrY1dmAmnS5Gs6cMK5SMBszD/PE7I2aCEJEREREpKILrg23joch26Dd0xBQDY5kwGfDYHJjSJ1AVZPHvx9I4rPHbqJ705r4eNlY+eMh7n9vLV0mf8WH6/Zy4lTFuXRWTbpcmeOHYdtc5+Pm/cjOK+Dh/6zno037mbz4e2tjExERERER9xAQCjf/DZ74Dm6bBMHRkH8Ilj0PLzeETx4l3nsfr/S8ga/+1o4BN8USaPfh+4NHGT5nCze9uIypS3/g0NETVmdyzalJlytzxoRxplZLRszZwsHcE8TVCOTxjtdbHZ2IiIiIiLgTvwBoNQAe3QB3vAORic5+YsMM+Ecy/OvPRB1cztO3NuDbke0ZeWsDIoL8yc47waSF35M8finDP9zM9v25VmdyzWjiOLl8Z00Y99Hm/SxL+xk/by/+cW8zAu368xIRERERkfPw9oEmd0LjOyBzFaz+B+yYD+mpziUklqCkh3goqQ/3t4llwdb9TF+xh837cvhw/T4C/X0YFdXI6iyuCXVRcvnOmDDul7rdee4fmwB4vGMc9WpUsTY2ERERERFxfzab8/Zt0clwZC+sfQvW/wsOp8MXT8HS/8Ov6b10bzWQ229ow8a9R3hvxR7uS45x7WJD5mFW//gr97SsTUhlP+tyuUp0urtcvvXTnf9s1INRC/dxJP8k8ZFBDGxb19KwRERERETEAwXXhk5jYOh2+NMrEFYfCo/C6mnwWnNsM++mWcFaXuuZWOzuUW999SMvfrGTSQvTLAz+6lGTLpfn+BH4zjlh3KqQFBZszcLby8aEOxPw9daflYh4tpiYGCZPnux6brPZ+Oijjy64/Z49e7DZbGzatOmaxyYiIlLu+VWGFv1h8Gr4yzyI6wIY+GEhzLzLeQu3b1+D/F8B6BQfTuOaQcWOrm/fn8vcDfsoOOl5s8LrdHe5PFv+C6eOUxTWkEe/8QUKefjmujSuWdXqyERErrqsrCxCQkKsDkNERKRisdnguvbO5dBuWPcubPy381T4hf8Plj4PTe6kR6sB9Hj0pmJvffvrH5m78SfGfrqdu1vWpk+raOpUC7AokdLRIU8pPWNcp7p/4tOZn48Wcl31yjzaPs7auERErpGIiAjsdrvVYYiIiFRc1a6DLs/D0J2QMgXCm8Cp486m/c228E7n3+48VQhAg8gqRFX153D+Sd5M/ZGbJy3j/vfWsHTnQYocxuJkLk5NupTevrWQvY0ibzuj9jTGZoMJdybg7+ttdWQicq0ZA4XHrFlMyQrqP//5T6KionA4HMXWd+vWjf79+7N79266detGeHg4gYGBtGzZksWLF190n2ef7r5mzRqaNm2Kv78/LVq0YOPGjaX+KkVEROQy+AVA877w8NfQ/0vn7PBePrB3Ncx9EF6Jh0WjGNgIvvpbO/75l+bcFBeGMbAs7Wf6T19H2wnLeH3ZLrLzCqzO5rx0uruU3m9H0b80rcmlMv2SY2geHWptTCJSNk7mwwtR1nz23/c7r1G7hLvuuotHH32UZcuW0aFDBwB+/fVXvvjiCz777DOOHj3KbbfdxvPPP4/dbmfGjBmkpKSQlpZGnTp1Lrn/o0eP8qc//YlOnTrxn//8h/T0dB5//PErTk9ERERKwWaDOjc6l7wDzhnh178HeVmwYjKsmIxPbFs6N+tL574ppB85xczVGfx33T5+OnKciV+m8fKi72nfoAY9W9TmlvrV8XGTubXUpEvpnDlhXGgKteyVGN6lvrUxiYicISQkhFtvvZWZM2e6mvQ5c+YQFhZGu3bt8PLyIjEx0bX92LFjmTdvHp988gmPPPLIJfc/c+ZMHA4H77zzDv7+/jRq1Ih9+/YxaNCga5aTiIiIXESVCLhlBNw0FL7/wnlQcdcSSP/KuVQKJTaxF0+36suTnTswf/N+Zq/dy/qMwyzafpBF2w8SEeTP4idvJtBufYtsfQTiWX6bMI4a8Yx+6H4GHT1BZTf4QxaRMuIb4DyibdVnl1CfPn0YMGAAb7zxBna7nffff5977rkHLy8vjh49yujRo1mwYAFZWVmcOnWK48ePk5mZWaJ979ixg4SEBPz9/V3rkpOTS52OiIiIXGXevtAwxbkcyYSN/3EuuT/Bqtdh1ev410nmrmZ9ueuBbvxwuIj/rtvL/zb8xHU1Khdr0L/d/QvN6oRYckmvuispOWMw69/DBtC8H17eXkRWrWR1VCJSlmy2Ep1ybrWUlBSMMSxYsICWLVvy9ddf88orrwAwbNgwFi1axKRJk6hXrx6VKlXizjvvpLCw0OKoRURE5KoJrgPt/g43j4Bdi51H17//EjJXOpfPRxDXuDtP39CH4Z3bcyj/9/8PyM4t4C/vrKGynzfLh7cjtLJfmYbuFifdv/7668TExODv709SUhJr1qy54LbTp0/HZrMVW848miHX0L612LK3c9Lmx9EGd1odjYjIBfn7+9OjRw/ef/99Zs2aRf369WnWrBkAK1asoF+/fnTv3p0mTZoQERHBnj17Srzvhg0bsmXLFgoKfp9sZtWqVVc7BREREbkavLzh+i7QaxYM2Qbt/5+zgT+R42zc3+mE37RWRG55A3J+AiDz13wigvy5PrxKmTfo4AZN+gcffMDQoUMZNWoUGzZsIDExkS5dupCdnX3B9wQFBZGVleVaMjIyyjDiiuvYyrcB+PjUjazJOmVxNCIiF9enTx8WLFjAu+++S58+fVzr4+LimDt3Lps2bWLz5s307t37nJngL6Z3797YbDYGDBjA9u3b+eyzz5g0adK1SKFcKc0P8m+99RY33XQTISEhhISE0LFjx4tuLyIiUiJBkdB2ODy2GfrOh8RezsvpDu2CJWPglUbw7+60yFvK10Nu5I17m1kSpuWnu7/88ssMGDCA+++/H4Bp06a5/qfqqaeeOu97bDYbERERZRnm+R34jv3p2ziYW7qp+/19fGgYWcX1fHtWLidOFVGvRhWq/HYdRHbeCX46kl+q/fp42WhSM9j1PO1gHvmFp4ipFkhIgC8Ah/ML2XPoWKn2C9C0VhCVv/8EgKON+nBng/BS70NEpCy1b9+e0NBQ0tLS6N27t2v9yy+/TP/+/WndujVhYWGMGDGC3NzcEu83MDCQ+fPn8/DDD9O0aVPi4+N58cUXueOOO65FGuXC6R/kp02bRlJSEpMnT6ZLly6kpaVRo0aNc7Zfvnw5vXr1onXr1vj7+/Piiy/SuXNntm3bRs2aNS3IQEREyhUvL4ht61xumwjbP4ZNMyFjBexeCruX4mUPokaj7nBDH6jdynnJXxmxGVPCG89eA4WFhQQEBDBnzhxuv/121/q+ffty5MgRPv7443PeM336dB588EFq1qyJw+GgWbNmvPDCCzRq1Oi8n3HixAlOnDjhep6bm0vt2rXJyckhKCjoyhL48mlYOfXK9uFpasTDoG/L9I9URKxTUFBAeno6sbGxurToCl3su8zNzaVq1apXpza5oaSkJFq2bMnUqc6a6XA4qF27No8++ugFf5A/U1FRESEhIUydOpX77ruvRJ9Z3r9TERG5Bn5Nh82zYfNM58Rzp93/OUS3vqJdl6YuWXok/ZdffqGoqIjw8OJHZcPDw9m5c+d531O/fn3effddEhISyMnJYdKkSbRu3Zpt27ZRq1atc7YfN24czz333DWJn+Bofg5pyi9HT1x62zPYfbypG/b7xEs//nKUE6cc1AkNoLKfc0h+zS8s9RF6Hy8bcTV+P0Kf8Ws++YWnqBlciSB/55H03IKT/HTkeKn2awMaRAQ5Z0tsO0wNuoiIlFhhYSHr169n5MiRrnVeXl507NiRlStXlmgf+fn5nDx5ktDQ0Atuc74f5UVEREolNBbajXRONpexAjbPgp82QO0byzQMy093L63k5ORit7pp3bo1DRs25M0332Ts2LHnbD9y5EiGDh3qen76SPpVkTSQ6kkDqX6Fu6l7nnWhvy1XIvo864J+W0RERMrC5fwgf7YRI0YQFRVFx44dL7jNNf1RXkREKhYvL4i9ybk4HM7nZfnxZfppZwkLC8Pb25uDBw8WW3/w4MESX3Pu6+tL06ZN2bVr13lft9vtBAUFFVtERETEM4wfP57Zs2czb968i15yMXLkSHJyclzL3r17yzBKEREpt8q4QQeLm3Q/Pz+aN2/OkiVLXOscDgdLliwpdrT8YoqKiti6dSuRkZHXKkwRERG5TFfyg/ykSZMYP348CxcuJCEh4aLb6kd5EREpLyy/BdvQoUN56623+Ne//sWOHTsYNGgQx44dc832ft999xW7jm3MmDEsXLiQH3/8kQ0bNnDvvfeSkZHBgw8+aFUKIiLlnoVzjJYbFfU7vNwf5CdMmMDYsWP54osvaNGiRVmEKiIi4hYsvya9Z8+e/Pzzzzz77LMcOHCAG264gS+++MJ17VpmZiZeZ5xicPjwYQYMGMCBAwcICQmhefPmfPvtt8THx1uVgohIueXt7Q04J/+qVKmSxdF4tvx85201fX19LY6k7A0dOpS+ffvSokULWrVqxeTJk8/5Qb5mzZqMGzcOgBdffJFnn32WmTNnEhMTw4EDBwDn7e8CAwMty0NERKQsWHoLNivoliwiIiVnjCEzM5OTJ08SFRVV7EdTKRljDPn5+WRnZxMcHHzey7MqQm2aOnUqEydOdP0gP2XKFJKSkgC45ZZbiImJYfr06QDExMSQkZFxzj5GjRrF6NGjS/R5FeE7FRERz1GauqQmXURELqqwsJD09HQcDofVoXi04OBgIiIisJ3nNpaqTVefvlMREXEnHnOfdBERcX9+fn7ExcVRWFhodSgey9fX13XpgIiIiMjFqEkXEZFL8vLyuujtr0RERETk6tDFhSIiIiIiIiJuQk26iIiIiIiIiJtQky4iIiIiIiLiJircNemnJ7PPzc21OBIRERGn0zWpgt1w5ZpSvRcREXdSmlpf4Zr0vLw8AGrXrm1xJCIiIsXl5eVRtWpVq8MoF1TvRUTEHZWk1le4+6Q7HA72799PlSpVznuv2tLIzc2ldu3a7N2716PvwVoe8lAO7qM85KEc3EN5yAFKlocxhry8PKKiovDy0pVoV4PqfXHKwX2UhzyUg3soDzlA+cjjatf6Cnck3cvLi1q1al3VfQYFBXnsH9SZykMeysF9lIc8lIN7KA85wKXz0BH0q0v1/vyUg/soD3koB/dQHnKA8pHH1ar1+rleRERERERExE2oSRcRERERERFxE2rSr4DdbmfUqFHY7XarQ7ki5SEP5eA+ykMeysE9lIccoPzkUZGVhzFUDu6jPOShHNxDecgBykceVzuHCjdxnIiIiIiIiIi70pF0ERERERERETehJl1ERERERETETahJFxEREREREXETatJFRERERERE3ISa9Cvw+uuvExMTg7+/P0lJSaxZs8bqkEps9OjR2Gy2YkuDBg2sDuuSvvrqK1JSUoiKisJms/HRRx8Ve90Yw7PPPktkZCSVKlWiY8eO/PDDD9YEewGXyqFfv37njE3Xrl2tCfYCxo0bR8uWLalSpQo1atTg9ttvJy0trdg2BQUFDB48mGrVqhEYGMgdd9zBwYMHLYr4XCXJ4ZZbbjlnLB5++GGLIj7XP/7xDxISEggKCiIoKIjk5GQ+//xz1+vuPganXSoPdx+H8xk/fjw2m40nnnjCtc5TxkOK8+RaD55Z71Xr3YNqvfsoD/Vetb501KRfpg8++IChQ4cyatQoNmzYQGJiIl26dCE7O9vq0EqsUaNGZGVluZZvvvnG6pAu6dixYyQmJvL666+f9/UJEyYwZcoUpk2bxurVq6lcuTJdunShoKCgjCO9sEvlANC1a9diYzNr1qwyjPDSUlNTGTx4MKtWrWLRokWcPHmSzp07c+zYMdc2Q4YMYf78+Xz44Yekpqayf/9+evToYWHUxZUkB4ABAwYUG4sJEyZYFPG5atWqxfjx41m/fj3r1q2jffv2dOvWjW3btgHuPwanXSoPcO9xONvatWt58803SUhIKLbeU8ZDflceaj14Xr1XrXcPqvXuozzUe9X6UjJyWVq1amUGDx7sel5UVGSioqLMuHHjLIyq5EaNGmUSExOtDuOKAGbevHmu5w6Hw0RERJiJEye61h05csTY7XYza9YsCyK8tLNzMMaYvn37mm7dulkSz+XKzs42gElNTTXGOL93X19f8+GHH7q22bFjhwHMypUrrQrzos7OwRhjbr75ZvP4449bF9RlCAkJMW+//bZHjsGZTudhjGeNQ15enomLizOLFi0qFrenj0dF5em13hjPr/eq9e5Dtd69lId6r1p/YTqSfhkKCwtZv349HTt2dK3z8vKiY8eOrFy50sLISueHH34gKiqKunXr0qdPHzIzM60O6Yqkp6dz4MCBYuNStWpVkpKSPGpcAJYvX06NGjWoX78+gwYN4tChQ1aHdFE5OTkAhIaGArB+/XpOnjxZbCwaNGhAnTp13HYszs7htPfff5+wsDAaN27MyJEjyc/PtyK8SyoqKmL27NkcO3aM5ORkjxwDODeP0zxlHAYPHswf//jHYt87eOa/ExVdean1UL7qvWq9dVTr3UN5qPeq9Zfmc1UirWB++eUXioqKCA8PL7Y+PDycnTt3WhRV6SQlJTF9+nTq169PVlYWzz33HDfddBPfffcdVapUsTq8y3LgwAGA847L6dc8QdeuXenRowexsbHs3r2bv//979x6662sXLkSb29vq8M7h8Ph4IknnqBNmzY0btwYcI6Fn58fwcHBxbZ117E4Xw4AvXv3Jjo6mqioKLZs2cKIESNIS0tj7ty5FkZb3NatW0lOTqagoIDAwEDmzZtHfHw8mzZt8qgxuFAe4BnjADB79mw2bNjA2rVrz3nN0/6dkPJR66H81XvVemuo1luvPNR71fqSU5NeQd16662uxwkJCSQlJREdHc1///tfHnjgAQsjk3vuucf1uEmTJiQkJHDdddexfPlyOnToYGFk5zd48GC+++47t7/G8WIulMPAgQNdj5s0aUJkZCQdOnRg9+7dXHfddWUd5nnVr1+fTZs2kZOTw5w5c+jbty+pqalWh1VqF8ojPj7eI8Zh7969PP744yxatAh/f3+rwxFxUb13T6r1Zc+Taz2Uj3qvWl9yOt39MoSFheHt7X3OTH0HDx4kIiLCoqiuTHBwMNdffz27du2yOpTLdvq7L0/jAlC3bl3CwsLccmweeeQRPv30U5YtW0atWrVc6yMiIigsLOTIkSPFtnfHsbhQDueTlJQE4FZj4efnR7169WjevDnjxo0jMTGRV1991aPGAC6cx/m44zisX7+e7Oxs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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["model = Sequential()\n","\n","model.add(Convolution2D(1,(5,5),padding='same',input_shape=(pixel,pixel,1)))\n","model.add(Activation('relu'))\n","\n","# take the max over all values in the activation map\n","model.add(MaxPooling2D(pool_size=(pixel,pixel)))\n","model.add(Flatten())\n","model.add(Dense(2))\n","model.add(Activation('softmax'))\n","\n","# compile model and initialize weights\n","model.compile(loss='categorical_crossentropy',\n"," optimizer='adam',\n"," metrics=['accuracy'])\n","# train the model\n","history=model.fit(X_train, Y_train,\n"," validation_data=(X_val,Y_val),\n"," batch_size=64,\n"," epochs=40,\n"," verbose=1)\n","\n","# plot the development of the accuracy and loss during training\n","plt.figure(figsize=(12,4))\n","plt.subplot(1,2,(1))\n","plt.plot(history.history['accuracy'],linestyle='-.')\n","plt.plot(history.history['val_accuracy'])\n","plt.title('model accuracy')\n","plt.ylabel('accuracy')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='lower right')\n","plt.subplot(1,2,(2))\n","plt.plot(history.history['loss'],linestyle='-.')\n","plt.plot(history.history['val_loss'])\n","plt.title('model loss')\n","plt.ylabel('loss')\n","plt.xlabel('epoch')\n","plt.legend(['train', 'valid'], loc='upper right')"]}],"metadata":{"accelerator":"GPU","colab":{"provenance":[]},"kernelspec":{"display_name":"Python 3 (ipykernel)","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.9.18"},"widgets":{"application/vnd.jupyter.widget-state+json":{"1140e90db2fc4b9c91cbbe362767d65d":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"SliderStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"SliderStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":"","handle_color":null}},"11b66fd5176b475ba5c69140eae37d62":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"IntSliderModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"IntSliderModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"IntSliderView","continuous_update":true,"description":"vertical ","description_tooltip":null,"disabled":false,"layout":"IPY_MODEL_9b72172c1a1c46439102f6059066a39f","max":499,"min":0,"orientation":"horizontal","readout":true,"readout_format":"d","step":1,"style":"IPY_MODEL_613f8f4d5b0e4816aa55033960822230","value":0}},"2b9eb29c4c4d4b44b1e5592233ae4dab":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"VBoxModel","state":{"_dom_classes":["widget-interact"],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"VBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"VBoxView","box_style":"","children":["IPY_MODEL_11b66fd5176b475ba5c69140eae37d62","IPY_MODEL_ed53a993099641bb86c8d7a10fc17bdb","IPY_MODEL_e905c391b1d644bc9f0b59976800f391"],"layout":"IPY_MODEL_3ee2908fbdce4081a6bb10c970fa187d"}},"3ee2908fbdce4081a6bb10c970fa187d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5f1c8af64c254ffdb40ba8499cac6ca8":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"613f8f4d5b0e4816aa55033960822230":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"SliderStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"SliderStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":"","handle_color":null}},"9b72172c1a1c46439102f6059066a39f":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e905c391b1d644bc9f0b59976800f391":{"model_module":"@jupyter-widgets/output","model_module_version":"1.0.0","model_name":"OutputModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/output","_model_module_version":"1.0.0","_model_name":"OutputModel","_view_count":null,"_view_module":"@jupyter-widgets/output","_view_module_version":"1.0.0","_view_name":"OutputView","layout":"IPY_MODEL_f7e38cbf0fa84263916f1c8dbcf4c53c","msg_id":"","outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA5QAAAD7CAYAAAAVfNtaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTiElEQVR4nO3dd1gU1/s28HtpC9IUUBBFEDEiShEromJBsYstRA0CtkTR2DX+jDVR1CT2mkQRv2o01tijYkk0mBgUu0SNxgIoiIAUAdl5/+BlssMCwgouyP25rr2u2TNnZ54d9ug+e8rIBEEQQERERERERFRCWpoOgIiIiIiIiComJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlKVk7ty5kMlkar128+bNkMlkePDgQekGpeTBgweQyWTYvHlzmZ2D6F07c+YMZDIZzpw5887PHRgYCDs7u3d+XiIiIqLypNInlDdu3MDHH3+MWrVqQS6Xw9raGkOGDMGNGzc0HZpG5H1B3717t6ZDoTJ07949fPLJJ7C3t4e+vj5MTEzg6emJFStWICMjQ9PhvVfat2+Pxo0bazoMIiIiojJRqRPKvXv3wt3dHeHh4QgKCsLatWsxfPhwnD59Gu7u7ti3b1+xj/XFF1+o/UXc398fGRkZsLW1Vev1RCVx+PBhODs746effkKvXr2watUqhISEoE6dOpg6dSrGjx+v6RCJiIiIqILQ0XQAmnLv3j34+/vD3t4ev/76K6pXry7uGz9+PNq2bQt/f39cvXoV9vb2hR4nLS0NhoaG0NHRgY6OepdTW1sb2traar2WqCTu37+Pjz76CLa2tjh16hRq1qwp7gsODsbdu3dx+PBhDUZIRERERBVJpe2h/Prrr5Geno7vvvtOkkwCgIWFBTZs2IC0tDQsWbJELM+bJ3nz5k0MHjwY1apVQ5s2bST7lGVkZOCzzz6DhYUFjI2N0bt3bzx58gQymQxz584V6xU0h9LOzg49e/bEuXPn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k8lw//59cbXWNzl69CgmT56Mq1evQkfnrQd5vldKdDU2btxY5H59fX2sWbNG0jVMVNmwnRAREVFxGBgYYMuWLZIervj4eOzYsQNxcXEqN6AnzUlLS0NoaCiTyQLwihARERERaUj79u0lz2vUqAELCwt89913JRoOSmVLeaVdkmJCSURERERUTpRgNhq9hTlz5qjcF5zUw4SSiIgKpDwEK/8KhJcvXxa388/9atCgQYnvb0ZERPQu5V9ch9RX/LWAiYiIiIiIiJQwoSQiIiIiIiK1cMgrkZKKfFsWotL2/Plzcdvc3Fyy7++//xa3XV1dJfv09PQ45JWIiKiSYA8lERERERERqYUJJREREREREamFQ16JiilvOGxKSgpMTU01HA1R2UtKShK383/mX758WWA9gENeiYiIKhP2UBIREREREZFamFASERERERGRWphQEhERERERkVo4h5KIiAqUlZUlbsvl8kLrZWRkSJ6bmZmplBEREdH7iT2UREREREREpBYmlERERERERKQWDnklIqK3kn84bEJCAl69eqWhaIiIiOhdYg8lERERERERqYUJJREREREREamFQ16JiDREV1dX3M7Ozha3LSwsJPUePXokbsfExJR9YERERETFxB5KIiIiIiIiUgsTSiIiIiIiIlILE0oiIiIiIiJSy1sllIsWLYJMJsOECRPEslevXiE4OBjm5uYwMjJC//798fTp07eNk6jCYjuhwpibm4uP58+fiw/l8rzPSN4jLi5OfJQ1XV1d8ZGdnS15KKtSpYrkERsb+07iIyIiIs1TO6G8ePEiNmzYABcXF0n5xIkTcfDgQezatQtnz55FTEwM+vXr99aBElVEbCdERERE9D5TK6FMTU3FkCFD8P3336NatWpieXJyMjZu3IilS5eiY8eOaNq0KUJDQ/H777/jwoULpRY0UUXAdkJERERE7zu1bhsSHByMHj16wNvbG1999ZVYHhkZiezsbHh7e4tljo6OqFOnDiIiItCqVau3j5gqLJlMpukQ3im2E3oTc3Nzcfv58+cFlgO5P07keZe3DSksvvxq1qwpeR4TE6MyLJaIiIjeTyVOKHfs2IFLly7h4sWLKvvi4uKgp6eHqlWrSsotLS0LnU+TmZmJzMxM8XlKSkpJQyIqd0q7nQBsK0RERERU/pRoyOujR48wfvx4bNu2Dfr6+qUS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\n","text/plain":"
"},"metadata":{},"output_type":"display_data"},{"data":{"image/png":"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KLD3BZ8brJxYTwpX3PN/ilNPVIRnBgHpc5LKz0a+fPlSXFacQqM0z00XNbVGSkqK5L25uflrP1PelH+XZWdni8s1a9aUrLO2tpaMSExERETvL46aQERERERERGphQklERERERERqKdNpQ4iIiqM89YQixW6eit0pNdXFE4Bk6gvlOKpWrVrocmno6emJy6ampuKyYhdX5feavB4lFRcXJ/kZEhER0fuLLZRERERERESkFiaUREREREREpBZ2eSWit0axi6cyxW6dyl0+K7u4uDhNh0BERERUKLZQEhERERERkVqYUBIREREREZFamFASERERERGRWphQEhERERFpSEBAAObNm6fpMMqMTCbD7t27y2x/9vb2WLx4sfg+NDQUQUFBJf58QkICatSogYcPH5ZZTCTFhJKIiIiIqIwFBQVBJpNBJpNBT08PDg4OmDNnDl69eiVuc/HiRRw4cACff/65BiNVT2hoKJo0aaJSHhcXh65du779gIpgbm6OgQMHYtasWWWyv0uXLqFt27bQ19dHrVq1sGDBgmK3v3jxIvr27YtatWrBwMAADRo0wJIlSyTbxMXFoV+/fvjggw+gpaWFsWPHquzn6tWr8PPzg729PWQymSTJLhAaGirecwUvJyenNzndEmFCSURERERUDrp06YK4uDjcvHkTEyZMQGhoKL799ltx/dKlS9G7d28YGRlpMMrSEQRBkhQrs7Kyglwuf4sRvV5wcDA2btyIFy9evNF+kpOT0blzZ9jZ2SE6OhrffvstQkND8dNPPxX5mejoaNSoUQMbNmzA1atXMW3aNEydOhXLli0Tt8nKyoKFhQWmT58OV1fXQveTnp6OunXrYv78+bCysiryeI0aNUJcXJz4OnnypPonXEJMKImIiIiIyoFcLoeVlRXs7OwwcuRIeHt7Y8+ePQCA3NxcbN++HT179hS3nzNnDho3bqyynyZNmmDGjBmlPn6/fv3g7+8vKcvJyYG5uTnWr18PAMjLy0NYWBjq1KkDAwMDuLq6Yvv27eL2x48fh0wmw8GDB9G0aVPI5XJs2LABs2fPxsWLF8WWsLVr1wJQ7fL68OFD9O3bF2ZmZjA0NESzZs1w9uxZAMDt27fx8ccfw9LSEkZGRmjevDl+//33Up3joEGD4OLigqysLABAdnY23NzcMHDgQHGbRo0awcbGBrt27SrVvpVt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KJuIiSo41hMiIiIiqixK1UIZEhKCTZs24bfffoOxsbH4vJepqSkMDAxgamqKwYMHY/z48TAzM4OJiQnGjBkDDw8PjlxJlQbrCRERERFVFqVKKFeuXAkgf/4XReHh4QgKCgIALFq0CFpaWvDz80NWVhZ8fHywYsWKMgmW6F3AekJERERElUWpEkpBEF67jb6+PpYvX47ly5erHRTRu4z1hIiIiIgqizeah5KIiIiIiIgqLyaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERESkFiaUREREREREpBYmlERERERERKQWJpRERERERBoSEBCAefPmldv+ZTIZdu/e/c7tuyytXbsWVatWlZTJZDLcu3evxPuYMmUKxowZU7aBvSeYUBIRERERlbGgoCDIZDLIZDLo6enBwcEBc+bMwatXr8RtLl68iAMHDuDzzz/XYKTqi4uLQ9euXd/a8UJDQ9GkSZO3djxFEydOxLp163Dnzp1Sf/b+/fvo3r07qlSpgho1amDSpEmS+0DZ8ePHxXtH+XXu3Dlxu8OHD6NVq1YwNjaGhYUF/Pz8VJLkjRs3wtXVFVWqVIG1tTUGDRqE58+fi+vXrl2rcgx9ff1SnV+pEsqVK1fCxcUFJiYmMDExgYeHBw4ePCiuz8zMREhICKpXrw4jIyP4+fnhyZMnpQqI6F3HekJEREQA0KVLF8TFxeHmzZuYMGECQkND8e2334rrly5dit69e8PIyEiDUZZednY2AMDKygpyuVzD0bwd5ubm8PHxwcqVK0v1udzcXHTv3h3Z2dk4ffo01q1bh7Vr12LmzJlFfqZ169aIi4uTvIYMGYI6deqgWbNmAIC7d+/i448/RseOHRETE4PDhw8jISEBn376qbifU6dOYeDAgRg8eDCuXr2Kbdu24a+//sLQoUMlxzMxMZEc699//y3VOZYqoaxZsybmz5+P6Oho/P333+jYsSM+/vhjXL16FQAwbtw47N27F9u2bcOJEyfw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YkVZH4boncZ6QkRERETvgzdOKI8fPy55r6+vj+XLl2P58uVvumt6R1XEaUY03R24MtcTxa6hit0pFbuCAkB6erq4bGNj88bHVTzWixcvJOsU79GMjIxCl1/n+fPn4rJil9oGDRpItlM8dk5OjmSdYpdXxetU2BQjZam4YxW1Tnk7xeurvM7c3FwyIjERERG9v9Sah5KIiIiIiIiICSURERERERGppcyfoaSK4W12O1XuTqrp7qVUsSiOIqo4uqjyfZKcnCwul/Uop8ojmZqbm4vLdnZ24nJ8fLxkO8UuqcVR3E75WLdu3RKX69WrJ1lnZmYmLqempha6XB4Uu6sqH0ux+2qVKlXEZeXzet1Iscoj6xIREdH7iS2UREREREREpBYmlERERERERKQWJpRERERERESkFj5DWcYq4pQZ5a2ynDOfDVVPUdetuOtZ1tda8ZlBZcbGxuKy8lQmxX2uKMqxm5qaisvKzxUqPr/4NqcNSUlJKfJYBgYG4rLiubzNnxcRERG9O9hCSURERERERGphQklERERERERqYZfXMsauX0RS2trahZYrTw2iuF1Rn1GXYrdWQNqV9eXLl+JyXl6eZDt1unMrT8OheCzlc7ayshKX3dzcSn2s8vb06VNxubififK6zMxM5OTklFtcREREVHGwhZKIiIiIiIjUwoSSiIiIiIiI1MIur0RUrhRHDVWkONIoIB0Btay7S2ppSb87U9x/1apVC10uK1WqVCn0uABw//79Mj/e25KcnCwuK5+XqampyjUnIiKi9xP/4hMREREREZFamFASERERERGRWphQEhERERERkVr4DCURlSs9Pb1Cy83NzYt9T0REREQVH1soiYiIiIiISC1MKImIiIiIiEgtTCiJiIiIiIhILUwoiYiIiIiISC1MKImIiIiIiEgtTCiJiIiIiIhILUwoiYiIiIiISC1MKImIiIiIiEgtOpoOQJkgCJoOgahENH2vFhw/JydHo3EQFabgvqwo9SQrK0ujcRAVpuC+1HQ9ISJ6ExUuoUxJSdF0CEQlkpKSAlNTU40eHwC2b9+usRiIXqei1JMVK1ZoLAai19F0PSEiehMyoYJ9LZaXl4fHjx9DEATUrl0bDx48gImJiabD0qjk5GTUqlWL1+L/0/T1EAQBKSkpsLGxgZaW5nqN5+XlITY2Fg0bNuS98f9p+t6oSDR9LSpSPXn8+DGMjY0hk8k0FgdRYSpKPSEiehMVroVSS0sLNWvWRHJyMgDAxMSk0v9jWIDXQkqT16MifJOspaUFW1tbALw3lPF6/If1JP9vClFFVRHqCRHRm+DXYURERERERKQWJpRERERERESklgqbUMrlcsyaNQtyuVzToWgcr4UUr8d/eC2keD3+w2tBREREb0OFG5SHiIiIiIiI3g0VtoWSiIiIiIiIKjYmlERERERERKQWJpRERERERESklgqbUC5fvhz29vbQ19dHy5Yt8ddff2k6pHIXFhaG5s2bw9jYGDVq1ICvry9iY2Ml22RmZiIkJATVq1eHkZER/Pz88OTJEw1F/PbMnz8fMpkMY8eOFcsq67VQxHrCeqKI9YSIiIjetgqZUG7duhXjx4/HrFmzcP78ebi6usLHxwdPnz7VdGjl6sSJEwgJCcGZM2cQERGBnJwcdO7cGWlpaeI248aNw969e7Ft2zacOHECjx8/xqeffqrBqMvfuXPnsGrVKri4uEjKK+O1UMR6wnqiiPWEiIiINEKogFq0aCGEhISI73NzcwUbGxshLCxMg1G9fU+fPhUACCdOnBAEQRASExMFXV1dYdu2beI2169fFwAIUVFRmgqzXKWkpAiOjo5CRESE4OXlJXzxxReCIFTOa6GM9SQf6wnrCREREWlOhWuhzM7ORnR0NLy9vcUyLS0teHt7IyoqSoORvX1JSUkAADMzMwBAdHQ0cnJyJNfGyckJtWvXfm+vTUhICLp37y45Z6ByXgtFrCf/YT1hPSEiIiLN0dF0AMoSEhKQm5sLS0tLSbmlpSVu3Lihoajevry8PIwdOxaenp5o3LgxACA+Ph56enqoWrWqZFtLS0vEx8drIMrytWXLFpw/fx7nzp1TWVfZroUy1pN8rCesJ0RERKRZFS6hpHwhISG4cuUKTp48qelQNOLBgwf44osvEBERAX19fU2HQxUU6wnrCREREWlWhevyam5uDm1tbZVRCJ88eQIrKysNRfV2jR49Gvv27cOxY8dQs2ZNsdzKygrZ2dlITEyUbP8+Xpvo6Gg8ffoU7u7u0NHRgY6ODk6cOIEffvgBOjo6sLS0rDTXojCsJ6wnAOsJERERaV6FSyj19PTQtGlTREZGimV5eXmIjIyEh4eHBiMrf4IgYPTo0di1axeOHj2KOnXqSNY3bdoUurq6kmsTGxuL+/fvv3fX5sMPP8Tly5cRExMjvpo1a4b+/fuLy5XlWhSG9YT1BGA9ISIiIs2rkF1ex48fj8DAQDRr1gwtWrTA4sWLkZaWhuDgYE2HVq5CQkKwadMm/PbbbzA2NhafcTI1NYWBgQFMTU0xePBgjB8/HmZmZjAxMcGYMWPg4eGBVq1aaTj6smVsbCw+E1fA0NAQ1atXF8sry7UoCusJ6wnrCREREWlahUwo/f398ezZM8ycORPx8fFo0qQJDh06pDIAyftm5cqVAID27dtLysPDwxEUFAQAWLRoEbS0tODn54esrCz4+PhgxYoVbznSiqGyXwvWk/aSctaTwvFaEBERUXmSCYIgaDoIIiIiIiIievdUuGcoiYiIiIiI6N3AhJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjUwoSSiIiIiIiI1MKEkoiIiIiIiNTChJKIiIiIiIjU8v8A8zGO6WUQgBYAAAAASUVORK5CYII=\n","text/plain":"
"},"metadata":{},"output_type":"display_data"}]}},"ed53a993099641bb86c8d7a10fc17bdb":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"IntSliderModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"IntSliderModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"IntSliderView","continuous_update":true,"description":"horizontal","description_tooltip":null,"disabled":false,"layout":"IPY_MODEL_5f1c8af64c254ffdb40ba8499cac6ca8","max":999,"min":500,"orientation":"horizontal","readout":true,"readout_format":"d","step":1,"style":"IPY_MODEL_1140e90db2fc4b9c91cbbe362767d65d","value":500}},"f7e38cbf0fa84263916f1c8dbcf4c53c":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}}}}},"nbformat":4,"nbformat_minor":0}