446 lines
80 KiB
Plaintext
446 lines
80 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "57aeff2c-619a-412f-8947-278f4e0fdc3d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from tensorflow.keras.datasets import mnist\n",
|
|
"from tensorflow.keras.layers import Input,Dense\n",
|
|
"from tensorflow.keras.models import Model\n",
|
|
"import matplotlib.pyplot as plt \n",
|
|
"import numpy as np \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "3c3c5ee0-eb4d-4ad9-8d1f-42bd153d7fa9",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(60000, 28, 28)\n",
|
|
"(10000, 28, 28)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"(X_train,_),(X_test,_) = mnist.load_data()\n",
|
|
"X_train= X_train.astype('float')/255\n",
|
|
"X_test = X_test.astype('float')/255\n",
|
|
"noise_factor = 0.5\n",
|
|
"\n",
|
|
"X_train_noisy = X_train + noise_factor * np.random.normal(loc= 0.0 ,scale=1.0, size=X_train.shape)\n",
|
|
"X_test_noisy = X_test+ noise_factor * np.random.normal(loc= 0.0 ,scale=1.0, size=X_test.shape)\n",
|
|
"\n",
|
|
"X_train_noisy= np.clip(X_train_noisy,0.,1.)\n",
|
|
"X_test_noisy= np.clip(X_test_noisy,0.,1.)\n",
|
|
"\n",
|
|
"print(X_train.shape)\n",
|
|
"print(X_test.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"id": "46fd7fed-d520-43b3-a13e-61b31219f8c3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(60000, 784)\n",
|
|
"(10000, 784)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"X_train = X_train.reshape(len(X_train),784)\n",
|
|
"X_test =X_test.reshape(len(X_test),784)\n",
|
|
"\n",
|
|
"X_train_noisy = X_train_noisy.reshape(len(X_train),784)\n",
|
|
"X_test_noisy =X_test_noisy.reshape(len(X_test),784)\n",
|
|
"\n",
|
|
"print(X_train.shape)\n",
|
|
"print(X_test.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "859ca52a-6459-42b6-87f2-9c71d6db83f5",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"functional_3\"</span>\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1mModel: \"functional_3\"\u001b[0m\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
|
"│ input_layer_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">InputLayer</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
|
"│ dense_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">25,120</span> │\n",
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
|
"│ dense_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">25,872</span> │\n",
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
|
"│ input_layer_2 (\u001b[38;5;33mInputLayer\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
|
"│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m25,120\u001b[0m │\n",
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
|
"│ dense_5 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m) │ \u001b[38;5;34m25,872\u001b[0m │\n",
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">50,992</span> (199.19 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m50,992\u001b[0m (199.19 KB)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">50,992</span> (199.19 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m50,992\u001b[0m (199.19 KB)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"input_img = Input(shape=(784,))\n",
|
|
"encoder= Dense(units=32,activation='relu')(input_img)\n",
|
|
"decoder= Dense(units=784,activation=\"sigmoid\")(encoder)\n",
|
|
"\n",
|
|
"autoencoder = Model(input_img,decoder)\n",
|
|
"autoencoder.summary()\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "4696941f-25c1-4761-8c7f-6fbf8d6d3fb2",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 1/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.2848\n",
|
|
"Epoch 2/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1957\n",
|
|
"Epoch 3/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1705\n",
|
|
"Epoch 4/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1567\n",
|
|
"Epoch 5/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1477\n",
|
|
"Epoch 6/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1411\n",
|
|
"Epoch 7/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1363\n",
|
|
"Epoch 8/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1324\n",
|
|
"Epoch 9/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1301\n",
|
|
"Epoch 10/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1287\n",
|
|
"Epoch 11/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1278\n",
|
|
"Epoch 12/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1273\n",
|
|
"Epoch 13/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1270\n",
|
|
"Epoch 14/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1264\n",
|
|
"Epoch 15/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1259\n",
|
|
"Epoch 16/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1257\n",
|
|
"Epoch 17/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1255\n",
|
|
"Epoch 18/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1253\n",
|
|
"Epoch 19/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1252\n",
|
|
"Epoch 20/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1251\n",
|
|
"Epoch 21/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1250\n",
|
|
"Epoch 22/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1249\n",
|
|
"Epoch 23/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1248\n",
|
|
"Epoch 24/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1247\n",
|
|
"Epoch 25/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1246\n",
|
|
"Epoch 26/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1245\n",
|
|
"Epoch 27/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1244\n",
|
|
"Epoch 28/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1243\n",
|
|
"Epoch 29/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1242\n",
|
|
"Epoch 30/30\n",
|
|
"\u001b[1m235/235\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 0.1242\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<keras.src.callbacks.history.History at 0x1c488e52d70>"
|
|
]
|
|
},
|
|
"execution_count": 23,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"autoencoder.compile(optimizer='adam',loss='binary_crossentropy' )\n",
|
|
"autoencoder.fit(X_train_noisy,\n",
|
|
" X_train,\n",
|
|
" epochs=30\n",
|
|
" ,batch_size=256)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"id": "236587e5-6a18-4d2f-b6a3-dc693369469e",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"functional_4\"</span>\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1mModel: \"functional_4\"\u001b[0m\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
|
"│ input_layer_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">InputLayer</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
|
"│ dense_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">25,120</span> │\n",
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
|
"│ input_layer_2 (\u001b[38;5;33mInputLayer\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
|
"│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m25,120\u001b[0m │\n",
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">25,120</span> (98.12 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m25,120\u001b[0m (98.12 KB)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">25,120</span> (98.12 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m25,120\u001b[0m (98.12 KB)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"encoder_model = Model(input_img,encoder)\n",
|
|
"encoder_model.summary()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"id": "32e5ec7d-36a0-45c7-972b-07c8dd08aebb",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 771us/step\n",
|
|
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 559us/step\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"pred = autoencoder.predict(X_test_noisy)\n",
|
|
"encoded_images = encoder_model.predict(X_test)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "71411a47-62a9-4a10-ade4-0e2fc518e5a4",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABe0AAAFICAYAAADNvNUkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAApcBJREFUeJzt3XeYFFX2xvEzwwSygoqCigqIERQT5oQiKmbFnCPmnH/GNa5Z15zRNa85RzCiYlZUTAgSzMQhTPj9gX1476WrqR5g6KG/n+fZZ8/QVT3V3advBee+VVJXV1dnAAAAAAAAAABgviud3xsAAAAAAAAAAABm4KI9AAAAAAAAAAAFgov2AAAAAAAAAAAUCC7aAwAAAAAAAABQILhoDwAAAAAAAABAgeCiPQAAAAAAAAAABYKL9gAAAAAAAAAAFAgu2gMAAAAAAAAAUCDK0ixUW1tro0aNslatWllJScm83qaiVldXZxMmTLAOHTpYaWlx/jcV+q3h0G8z0HMNg36bgX5rGPTbDPRbw6HnZqDnGgb9NgP91jDotxnot4ZDz9FvDYl+m4Geaxj59Fuqi/ajRo2ypZdeeq5sHNIZMWKELbXUUvN7M+YL+q3hFXO/mdFzDY1+o98aEv1GvzU0eo6ea0j0G/3WkOg3+q2hFXPP0W8Nr5j7zYyea2hp+i3VRftWrVolPrbWWmsFP3/44YdpnjLw9ttve73BBht43b9/f69vuummYJ3333/f63XWWcfrRRZZxOs//vgj721J68477/T6oIMOCh4rLy/3evr06V7ra1t11VWDdXbccUczM5s0aZLtuuuuOd/zBV382ldccUWvJ0yYEDz2yy+/5P38ZWUz23611VbzervttvP6vPPOC9bZb7/9vL733nvz/p0bbbSR17W1tV5r75uZ3XDDDV7ffffdXuf6Xo0bN87rhRZayOsOHTp4/cILLwTrdO/ePfi5mPvNLPfr32mnnYKf33jjDa//+uuvOfq9BxxwgNf6eddXjx49vP7444+zLrP66qsHP3/yySd5/562bdt6rd+NUaNGef3www8H61x44YU2ZcoUu+iii+i3f17/iBEjrHXr1rb++uv7Y19++WWwbPv27b3eZZddvNaxQscAs3AcUKeffrrXl156aapt3WKLLbx+5ZVXEpfTsXjJJZdMXG7zzTf3+phjjsn67yussEKwzpgxY2a7nfvuu2/w88CBA622ttZGjhxJv/3z+rt27WpNmjSxoUOHJi77zDPPeH3YYYd5rd/ttLR31lhjjeCxyy+/3OvDDz/c61tuuSXVcz/55JNeL7rool7rcZaZWbt27bz+9ddfvV5zzTW91n2/mdmrr77q9Ztvvum1nsBsueWWwTqDBg0ysxn79x9++IGe++f1V1ZWWklJiU2ZMsUfO/7444Nlr7nmmqzPsfDCC3u9+OKLB4+NGDHC68mTJ3u9++67e/3QQw+l2lb9K7KTTz45eOz111/3+scff/Q67fmF/uWUHvvpcahZ2LcDBw7M+lwvv/xy8LP2IP0Wvn7dt1x//fXBYx07dvT6888/z/rv8T41aX0dX+Lj9Isuusjrs846K+tz9evXL/j5tttu8zppP677SjOzK664wut4nM3Q3jULX9+ee+7p9dZbb+31VVddFazTrVs3q6mpsa+++op+i/apei754osvBsvuv//+XutYp5/BscceG6xz3XXXea19kOt4bJNNNvG6qqrKa71eEl+z2XDDDbNuWy4tW7bMWi+77LJex38x+s4773i97rrreq3j+OzO54u55zKvfeutt7by8vLgsz7ppJOCZXV8+vnnn73ee++9vY73jdXV1V7rmKTncfE+WPeBdXV1XtfU1CS+Dr329cUXX8x2mXi55Zdf3mvtvaTz3Zge93399dfBY5MmTQp+LuZ+M5v19a+00kpeN2/ePHhsyJAhXvft29drPZ+Irz3ocZeOF9tvv73X5557brBOmmtxH3zwQfDz2muvnXU5PU+tz7XEmPaWvh96rnPqqacG6+S7T0110T7XtIj4wLM+9IunKisrE7chaZ2GmsoSN6xKer/0vaqoqAgea9GiRarnKAbxa2/SpInXc+Pz1efX527atGniOvHnlS/97PXELdasWbOs6+TSunXrrP+u79XsBoNi7jez3K9f/yOc2dwdY+a0r2Laz3OyzOzoe6DjdPxeKf1+0W8zXn/r1q2tdevWOT+TpPdaJY0BsaT1c5nTcSjX8+l+T9evz3cs/i7pc9BvM15/kyZNZvv9189kTsc6/axz9V59xkHdzqTjQbPk15Br35/U8/pc8TbH7ys9V+L/H78XacehpGO1+DFVn17S54q3TXuhPt+HpO2M/z3NOBufJ6T5PcUinx7Tz1H3O2nfQ10/1+eW65wi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fBZ++eWXrbQ093V+zbFXcY69+vPPP73WLK20uUirrbaa15p/FGfY77TTTl5r9lBFRYXXcZaW0iy6iy66yOsRI0YkrqM5gmPGjPE6k50VL1ffXMYF0d9//20lJSWzZD4qvYfC0KFDvT7vvPO81s/KzOyss87yWjP8NDe5a9euwTrXXnut1yluAzELzbHK1QdKc+w1GzhX9r5accUVva6qqgoeu/XWW/3f41yuYjZy5MhgPMgmzvnM0GzHJ554InjsqKOO8nq55ZbzWnPhtC/NzLbddluvF1lkEa91jNX+z2WXXXbx+rHHHktc7vvvv/das9/i7PE111zTa+3tTK6z2az3n1h22WWttrY2MX+4GPXr188qKirsuuuu83979dVXg2VuvvnmrOs2bdrU6zhrXnPsleaXduzYMXhsv/328/rGG2/Mur7eD8TM7Ndff/VaswY7dOiQdX0zsylTpnitWa+PPvqo15oJHS+nLrjgAq/1OAK5aY59WVl4GKgZ3km537FNN93Ua836jve9SntW85pV2vzfXDn2SnOpM/tAs1n7XcdlzVpt166d13EGZiZXvz7HBwuy5557zlq0aBG8X7qfMQvffx1Tvvzyy8R1ku4TpMeLF154YbBOmn6O70fz3nvvZV1O7yMS3zNI95c6Fm644YZe33XXXcE6Oh7rfWv0XhA77rhjsM64ceOsurp6lvt3wezbb7/1Oj6e7969u9d6rLbVVlt5rfciiB1xxBFe63G6nkOYhTn22223ndeaJx3vq/UcNOlYNL7ny6BBg7zeeOONvT7++OO93nXXXYN10nwXNMMe2a266qpWXl6eM9M+aT+mY2J8jxSl97XQcS/OtNdrIXqcpZn4N910U+Lv0e9FLnofBz1v0WPAXPej0VxxHTvje63tv//+qbanGI0ePdrr+FhEe1HHJ72PT4sWLRKfW++L8dZbb3kd74M1I1+fWzO84+tjOt7p/Rk0n/zAAw8M1tFrGXpdUJfT98MsHN90v6vnn08//XSwTuZ4oaamJjgOwQz6nY4z7fVzSbofY7x/fP75573W6x3PPvus13379g3W0X786KOPUm33Mccc47Xek1XvR6rXns3C+7rpveT0OC0eS/W6ck1Njdd6XSQ+Jh08eHBwzjU7/KU9AAAAAAAAAAAFgov2AAAAAAAAAAAUiJK6FHN5M5Etiy66qJWW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LVu29FpzUmNnn3221//617+81mxUzaM3C8dWfezRRx9N/J06Zm+//fZea4awZrjGzjvvPK979erl9UYbbRQsd/7559uUKVPskksuod/+6bfBgwdby5Ytg/xSzRQ3C7/fmj+6yy67zNE2/PDDD8HPmrun/vzzT6/1XiFm4X0L2rVr5/XQoUO91v2zWZhjePrpp3t96aWXJm6r9mJSlnVsp512sunTp9szzzxDv/3Tb9dcc401a9bMnnvuOX9MsxfNwmOgHj16eP2///3Pa83mNgvv06LHOSo+NrvsssuyPqbHY+utt16wjuZH6zj81VdfZd1+s3Ac1ZzeXP2m9L45mnup+Z5mZqecckrwMz03o+dWWGEFa9KkSfAZxbQX9txzT687duyY6ndVVFR4PW3aNK/jfPoVVljBa80j1TzqXFKcLpmZ2f777+/15ptv7vXxxx/vdXxc8f7773ut92fSHHvN8I3RbzP6bckll7TS0lIbMWLEHD1ffI8hvYeBZtXrPdly3UMh6fwvvgeHnvfq/bw0mzrOp0+i34s4P1jvz5BEv4tm4X3h6Lfk89T4nh1LLLGE1wsvvLDXXbt29Vq//2n99ttvwc/aL5oRrsflerxuFubda160jr3x8f+4ceO81nMG3ffqPbly0RxovWeNmVllZaWZzRh3p02bVtQ9F/db0j0azcL7BSm9vvDTTz8l/q51113X6/fee8/rXPu/Aw880Ou77rorcTmlx1N6bBfvtzWvPnM/PrPwnEWvMZqFx6RJr2d2irnfzGb2XJ8+fay8vDy4B0E8jiRdr1Jx/+g9U/S5dV8V319Q78Wg1451HMmMGxl6bUbH5ldeecXr+Hghc38Ds/AeQ88++6zX8Zh9ww03eK29vd9++3l97733Buv06dPHqqur7ZVXXiHTHgAAAAAAAACAxoSL9gAAAAAAAAAAFIi84nHuvvtua968eTCl4NZbb031i3QK1jnnnBM8plMKdMp/+/btUz13WoMHD/ZaIyJ0CrhOwzELp1IcdNBBXuvUM51ybRZO81DHHXec19dee23ObS3maTnxNDCdmvLLL78Ey+q0l6222sprfX9XXHHFYB2d1nPuuedmXUenMZslT/3SqbErr7xysM6GG27otfZez549vdapXmZh9MNTTz3ltU5BjOmUaZ1m/s4773g9fPjwYJ1MBEddXZ1NnTq1qPvNLPdUV439MAvjQqqrq7Ouo1OrzMzefvvtrMvpVFmdzmdmdsUVVyRubxKNcvj888+91jEu1xT7JPFuQqefbbvttl4nRTXF6LcZ/XbTTTdZs2bN7IADDki1no5XGiPy9ddfB8tpvEKSXLv+vn37eq1TrmN33nmn16uttprXOoUxniYdj8fZxOP8kksu6fWoUaO81jioeIxbbrnlrK6uzurq6ui3f/pt++23t/Ly8iBmKRcd6zRO5vLLLw+WW2eddbzu37+/17rfjPtNI5QuvPBCr3XKrPa4mVn37t291qnRZWVlXsevbe+99/b6vvvu8zpXlIXS+DCNNrvqqquC5fSY0IwxLtNzK664ojVp0mSWz3JOaWSW7usGDRrk9VlnnRWss+mmm3p9/fXXe61RYfHYmTROasyhxnWahbGhGr2jUTl67GgWRk5pHIX23/PPP591W8zot0y/tWjRwkpKSoJzPI3IMgvjBjUm5thjj018fh0L27Rp47XGMcVxsTpeaXxmfA6cZNddd/Va+0h73CyMQnzxxRe91uO+ePr/xhtv7LUet2nsRhyP07VrV6upqbHvv/+efvun39q2bWulpaVB9MiHH36Y6jk0mm6vvfYKHrv99tu91vFJx7Rcx3AavbrYYot5vc8++wTLJe0HdXx76KGHgsc0nknjDzUSQsctszCORZfTuE+NoDIzW2ONNcxs5ntdzD2XeQ8OOOAAq6iosAcffNAfi6MtdXzQ81r9TPQ42izcN2nvaI/p+YdZGBUyadIkr/XYLo7h0e+JXlPTSFqtzcK4Od0evZaj1xhz0XgSHZ/NzFZfffXg52LuN7Pc10ViSfFvd9xxh9djx44N1jnzzDPz3ibdv+kxoJ5DxFGVGoMdx89mxNf8rrnmGq/1+3DCCSd4HY+dur/WSOK0iMcBAAAAAAAAAKAR4aI9AAAAAAAAAAAFIq94nDmx5ppreh1PgdJNOPHEE73W6XyPPPJIsM4LL7zg9TLLLON1aenM/w6xwgorBOvolBuN4WnVqtVst98snA6tU2zieBydiqZ3d9fXGU+ryEzzmDZtmt12221FPS0n02877LCDlZeX55xmolOc9U7SKo4i0piiOdWpUyevv//++1Tr5JqWn9Qjuaas5uqrjHjaV2ba7LRp0+z+++8v6n4zm3WMy3W3b4090kiQtdZay+uHH344WCfXtPaMfv36BT/Hz5GGRpFozIT2T5cuXYJ1dOp4UkzLFltsEfysfaZROU2aNElcR7+f9Fv6faq+p/r56rgWT3XVGIiBAwd63a1bN6/TxiTpZx0fLtx2221e61j47rvveh1He+mUcI3w0umVb731VrDOTTfd5LVO29bfr/t+szAyiH6r3zGcjmmLLrqo1zpF1Sx5mr7+exz3FU9hnVuaN28e/KxxAr///rvXGkGixxHxY2llIoJqampsyJAh9FwUAfbaa6/5YzpWmIXT3Ovj448/9lojBjXmy8xsxx139Fp7+7///a/X7733XrCOxtbovlOn9ut08JjGgemYFJ+faLSKRkzdeOONXmtkhpnZoYce6jX9NqPfvvvuO2vVqpUddthh/pjuc2I77LCD17o/iWPcnnvuOa+1R7R33n///VTbqpEB8b5Oe1S3TcXRI7ptb7zxhtd6bLb++usH6+hr2HLLLb2eMGFCji2fiX6b8+si9ZHiko2ZheOTHovHMTxK4zpbtGjhdRzHFJ9D5EvH3rRRQmbF3XOZfuvUqZOVlpYG0cBxrJdGfqWl0X9JY4B+bmazXsvLJo4N1EhLjQ2uDz230DhhM7OTTz7Z66So2XgfnDnXqampsWHDhhV1v5nN7Lnll1/emjRpMksMaxoa7RUf9yXZbrvtvNbzX7N0Ebx6zGYWnrto7LrGu8Z0v6zXfDQOrFevXsE6eq6sEXq6n4jjok4++WSbOnWqXX/99cTjAAAAAAAAAADQmHDRHgAAAAAAAACAAjHH8TiZu3tnfPTRR1mX06ibbbfdNnhsySWX9FpjJPS5dVq/mdk999zjtd7lV+8AnOuu1Wnp3bJ1Cu/IkSO9jqf/KH17dTpTPH0jM52pqqrKDj/88KKelhP3W1LckJnZ5Zdf7vWpp56a9fk0UsLM7Iwzzsi63BJLLOH1mDFjUm3rTjvt5LVOMTULpzjrtJlVVlkl67/HtF+mTJnidTw1VqMjtP+feOKJxOcmjimU6blWrVpZSUlJMC05nvqu/aRRDBq7dMghhwTr6LT2nj17eq2fZRwRoNOkNRJp9913T3wdOt7olGmdqtW5c+dgHZ3Sfdppp3n91Vdfea3fDTOz0aNHe53Uw3FcydSpU238+PG2yCKL0G/RGNexY0evf/7552DZc845x+sLLrgg6/PFcSVbbbWV1/fff7/XOjU6/tw0nkGnJGq/aOyOWTjtT3/nkUce6XU8LuuYrXR/vdxyy2VdJqbbHE91feqpp2zy5Mm2xx570G//9FubNm2spKQkiCt8+eWX834+nW5qFsbOaKzE0KFDvdZpqWZmTZs29Vo/b41R0Z4yM3vppZdmu23xlNVXXnkl63L6Xfjrr7+Cx7744guv9Vgvl8y079raWhszZgw9l+O8Yamllgp+1vdYx6V27dp5PXbs2GCdpOP+gw8+2GuNCjELj+s0WkafS6dCm5m9+eabWV6B2TPPPOO1Tuc2S45tzHUsq32rPbv88st7HZ/THHHEETZt2jS79dZb6bd/+q1nz55WVlZmDz74oD8Wn/vV1NTM9vlynRprjI7G8MT0XEN7TKNa4zgvjfK58sorvdbvUtyT2rMah6fn03EUhX439PhSoxRjI0aMsAkTJtjKK69Mv0Xjm8bJxJEvJ5xwgtd6/H7ggQcmPr9GDK633npeT5061es4xk3HEI3H0TExdsstt3g9ffp0r5PiZs3C79O0adO8jmMa8xV/5zLXRaZMmWKnnXZaUffc3IhjyhWlq8fSXbt29XqjjTbyOo7y0vPFyy67bI62TaOZJk2aFDymfbn//vt7XV1d7XUc/5W5xhHT649xBFpmG6ZMmWIXXXRRUfebWX49p9eh9PhHryOkpX2q45hZcqSNXrPZYIMNgsf0WtxFF13k9brrruu1Xm8xC48PdX+fKy5Wr+vqPuDmm2/2+ogjjsi6/Wbp4r/4S3sAAAAAAAAAAAoEF+0BAAAAAAAAACgQXLQHAAAAAAAAAKBA5JVpf+2111qzZs1yZvhpDv3ff//ttWbmab6ymdlJJ500c4MkLyhXdlAamjduZvb44497femll3o9bNgwrzV72szsqquu8vrEE0/0eplllvE6ziDWTEB93ZprF2dT6raZpcs2WlBpjlZJSUnOz/6XX37xWu+NkJQpWl+aATxkyBCvddvuuuuuYJ333nvPa+2DzTbbbI62Jc611sxrzQ/TjK5vv/02WGedddYxsxnZnkOGDCnqfjObNbtN34vx48eneg7NJm3ZsmXwmGaEP/TQQ15vvPHGXr/66qvBOppPqXl/Oq7m+m7897//9VozmjUn2CwclzTfPtMj2WgWnPb5brvt5vUjjzwSrHPooYfatGnT7J577qHfcmQFNmvWLPi5qqrKa81Ajccbpfs+zfc7+eSTvY57R3Oltd9atWrldXyvBs271KxJfe7vv/8+WEfvE6OvR3N+zzzzzGCdlVde2evHHnvMa83sjffd7du3t9raWhs7diz9FvXbaqut5nV8v4p33nnHa83T1vsV6ffcLDw20rGhR48eXn/yySeptlW3bcKECcFjP/zwQ6rnUNqLmi2ZlHNpZnbWWWdlfa5///vfXn/55ZfBY9q/ZsV9DGc2s+c22mgjKysrs80339wf032gWbh/SkuPaTSDV+29997Bz3p/jwMOOMBr/ezinGnNUNVxSe/joJmnMd336/2vct2nS8dIPZaN7yF2xRVX2KRJk2y77baj36IxbpFFFvE6zjt++umnZ/t88Rjwr3/9K+tyep4a3w8hzoDOJh7jdH+rmdHnn3++15WVlYnPt8UWW3it/dClS5dgOR3Levfu7bWOsXpfLTOzXXbZxaZPn25PPfUU/Rb1m55n3njjjcGyeg+Fvn37eq33xYjpfkuX0/VjK620ktdff/2113fccYfXcUZ0Er23TDxe33rrrV5rrnhZWVmq51b/93//5/WFF16Yc9li7rm43/SeYZn76WTo/Xruu+8+r/WeA/F9iT7++GOv9Z4zegwX32tK98F6PJT2M9VzGN036j2x4t+Tlt5/S+93pee/8XEH1+FCmZ5r27atlZaWBsc8MR2vysvLvdbxIbbWWmt5/cEHH3id63qF/qzr7LPPPl6n7Rfd5vi+Nw8//LDX+hp0H6/nE2bhcah+n/R6b/fu3WfZjqqqKjvmmGPItAcAAAAAAAAAoDHhoj0AAAAAAAAAAAUir7lM33//fc5peWZmkyZN8nr06NFe69RCnU5oFsbj9OnTx+sXXngh1XZdd911Xh977LFeP/vss4nrnH766V5rDET79u2D5XQqRLzdSTQKRa2++upeX3311ameq5i1a9fOSktLbcyYMYnLHHHEEV7rtHqdqpgrTkanjOpU0DjS4Y8//vB67bXX9nqbbbbxepVVVgnW0SmEWjdt2tTrKVOmBOto72hMwfDhw7Nuv5nZiBEjvNYpZh07drQkW265pZmZTZ06NYj7KXZ9+vSx8vLynNOnder6lVde6bVOwYvfU/3MdTmNM7rkkkuCddq2bet1z549vdZIkDhqSeNKkqYl6jabmR1++OFe61i49dZbZ/2dZmEkzmKLLeZ1ixYtvP7888+D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35O6ujqrrq6m3/7pt0UXXdRKS0uDcSOO5dh111291tiSP//802udBmoWjl0a56RTY99+++1ZtilfSZFzGhui+1ezMHZst912y1rH23b22Wd7/ccff3ida4p+5j2prq62N998k56L9qkaj/Dtt98Gy66xxhped+3a1et777038fk1WkuPmzTiId4fJe3jdUzSyC2zcKp20rTvzLT6DI0K0+MC/Z7ocYBZOL1c+yxthAD9lnwMpzGnZmFcYdJ+K6bH2dXV1V7rPnnvvfcO1tGYxUcffdRrHWPjsVSjwpJOzzWK0SyMGFlttdW81vE7jsPT36P7AO033e+amS2zzDIe/0W/zei3/v37W2VlZTDWXHHFFcGyevyv+x2NyNLvv5nZ/fff77V+Du+++67X8fGYjk+5YjTT0P1z2uhXde655wY/n3/++XlvQ+bcZPr06fbcc88Vdc9l+q1NmzZWUlISxInEsSN6jHzTTTd5rZ+bjltm4fmE9tX+++/vtZ5HmpkNHDgwvxcR0XNRHTs12sksvPb21ltv5f170vSr2cxjiurqanvllVeKut/MZvZcly5drEmTJrPEvyntuaqqKq/XX399r+Oo0v/85z9ea4xSTU2N1/H1Fz0+02NKjZ3ROJqYRkQNGjTI6zhSJ4l+1/TcwCy8nqPXovW9ifcNFRUVHo+Tpt/4S3sAAAAAAAAAAAoEF+0BAAAAAAAAACgQXLQHAAAAAAAAAKBAlM1+kZnuvvtua9asme2+++7+b3GWlmbhajbeyJEjvd5ggw2CddLk2Gu+s5nZcccdl3U5zVyKc9g0MzfOBMxYeOGFg581W0nzt0488USvNe/czKxHjx5ea/5WaWnyfyP597//nfhYsYrzumfn6KOP9vqGG27wOleG2cMPP5z139dee+3g5wsuuMDr3377zetcvau5+JpprznQcfaW5pxqtqtm9nbo0CFY5+eff/Y66bVWVFQEP+f73hYbzVHTLGez5FxczQGMc0r79euX9fk0f3f48OHBOvpZbr311l6fcMIJXuv9GczM/v77b6917Bo7dqzXp59+etbtNzPr1KmT10cccYTXcX76r7/+mvgcSfr27WtTp04NMqaL3QorrGCVlZWpM+01e1nFeaHnnHNO1uWef/55r9Pe86Jz585e6/0czCwx41AznSsrK4PHknJ6NaPz888/Dx7TzF29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zDp16mSlpaX23Xff+b/dcccdwTJHHHGE17vuuqvXp59+uterrbZasE7SsZV+JnpsaGb26KOPeq1xYtqvMe2xG2+8MesyOmXbLJxa/ccff2T9/fE0bY106tixY9bfkzlmy8iM5VOnTrWrrroq6zrFaPvtt7fKykobNmyY/1scPZJE+yqm+16N39QIm1xT4XNF4qgrr7zSa41W1D5ffvnlg3U0OkmX06izOE5AI5mURuLE8ZBXXXVVEBGAmd/rdddd1/8tjoIZOnSo1/r5vP/++16vs846wTr6sy6n0/p1fDILp+9rzKce2z/55JPBOhojpXGHOibFkXM333yz1/paL7/88sR1NIIgHpsz4nNbPRbADNneO43NnBu6du3qtcaCxeOjHre99NJLWZ/rnnvuCX7ef//9Z/v7NZbRLBx7NZppqaWW8vrpp58O1tFjT43r0Xic+Bguc0w4ZcqU2W5jsdFrAnGM4NVXX+31CSec4LWOdXodzyw8x9OonLTna88995zXTZs29bqioiJYTo+1NJ7k0EMP9To+5tLxTWMNtS/i4319bj3P1jFZj0nMZh6HTpgwYZZrjsXsoosusubNmwdRN2np9Vm99mVmdu6553qdNhJHI8f1PEbjqQcOHBiso8daOpZpjE48LurP2gs6rsVjXBoah2M241x52rRpwfiYC1eIAQAAAAAAAAAoEFy0BwAAAAAAAACgQJTU5cp0+EfmDsIXXnihNW3a1E455RR/7Pnnnw+W1buZ//TTT17r3ajj6Tavv/66119++aXX9957r9dxdMRHH33ktcYzKJ0GYxbe9VenL7dr185rnaZtFt6pXae86pTVeFqrRh289957Xu+3335eL7PMMsE6GsdhVtx3rY7vkp7Wwgsv7HU8XSwNnZ6z1157BY/pNFWd+qhTXjPRKtn85z//8fqoo45KXE7vrq1xFTqlR6d9mYXTyjReR6d+ffHFF8E6mViKiRMn2hprrFHU/WY2s+cuv/xya9asWRBJEmvWrJnXVVVVWZeJh1Wdxvrzzz97rT0TT+/TeJpevXp5vf766yeuoxEWl156qdc9e/b0WnvZzOyKK67wWqOfdCqbTmE1M2vTpo3XSbFfGgVgFvYw/RaOcRtvvLHX7777brDscsst57XGyei0wzja67HHHvNaxwSt42i7NHRMMjOrqanxeocddvBaY3xO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5513XtY6tuyyy3qdK8Yp6fhGP5c46m7IkCFe63TqNddc02udmm0WTu/WWM5c8YNqySWX9Fq/a3reYpZ73M/YeOONg5//+OMPq6mpsa+//pp++6ffNtpoIysrKwveC40oMgv3O19++aXXGo8TR79ee+21Xm+zzTZeb7rppl7Hka4aE6f7zr333ttrjQUwM9t555293nzzzb0+5phjLI2k84G0NPpHY/Ji9NuMfjvhhBOssrLSLr300sRlNaJEIy01TiY+jtZrGXqsl2t81Dg6jVDS+LiYRs7ptulnG8cVJh0HLr300l7HsbYHHHBA1nV0TIzj8C6//PLg52LuuXh/qr1z1113BcvquVv79u293meffbxOG7Or4jFIY3k0Munxxx/3OukaS33pebb+fo0mMQvHzqQI2PiYOLOfmDp1ql133XVF3W9mM3tu5513tvLy8iBC5umnn05c7/DDD/dar9m98MILwXI33nij13qdTsfCe++9N1hHxwS9rjFhwgSv42u/SZGJcaS10nhqjZvSc6KY7nv1Oo+O2bmk6Tf+0h4AAAAAAAAAgALBRXsAAAAAAAAAAApEWT4LH3744VZZWRlMSYjvRq13/542bVrW59E4nJhOW9xoo428vu6664LlNK5Bp35pBMMaa6wRrPPRRx95XV5e7vVWW23ltU7xMQunLibFDKyzzjrBOu+//77la4MNNjCzGXetHjx4cN7rL4i22WYbKy8vtyeeeML/bfnll0+1rk612WmnnYLHFl54Ya+Tpm7ptH6zcCqzTq/RGJU333wz1bbFkThKe1F17NjR63ga9UEHHZR1HY1o0btnm4UxPJhp6NCh1rRp02Cak06dNzNbYYUVvNYYJZ3mGcfW6Gehd6V/+eWXvdY7s8d07Fp77bW9jqfHai/E01OTaMSUjneLL7641zol0Syc5pYUOaFjsZlZWVmZ1dXVWU1NTartKiY63Th+r3UK6Lrrruu1xi7oNPxYUiSOfr5mZieeeOJst02jAMzC6Yk6Ff/qq6/2+oQTTgjW0X556qmnvNbXGU9B1CgVjSvRqLE4rmS33XYzhO68805r3ry57bHHHv5vcXxc3759vdYImlxRJfvtt5/XOp21R48eXsfRHnE8SIYeQ8bTvvX5NDJMYxy0P8zMtt12W68zx1lmZl999ZXXiy22WLBOJuomfj7tV63NZkaGVVdXG2bKTPnV8SGerq5Tnnv27Om1xrDFx2oaiaPxDR9//LHXd999d7BOUlyITkl+7LHHgse23HJLr3Us0/MbHbtiuu9/5JFHvNbYArPwPRk7dqzX2ucaXWU24zijuro65+8vNiNGjLDS0tJgfNFoGzOzkSNHeq1T9I888sjE59X9rfaE7jfjWESl0SUaA5srwkYjxfr06eN1HDOg0//1+PC4447zOo4W1Ygzfa90LI1j6vRcDDPU1NTM9ph23333zfrvGiEZHy///vvvXmuP5NoP6z4tVySO0ngc7bd27dp5nSsWUY0YMcLr+DxVz6n0utFDDz3kte53kV3//v2tsrIyuPagsahmYcSV1pdcconX8XURjTvRY5ijjz7aa+1Js/AcU/ebuSJx9PdqjI4ev2uMj5nZq6++6rXGbWqc2fnnnx+so7Gv+v3RPtQoMrOZEStJ1y6LVSaSV+OvHn300WAZ3Q9qpKBGy8TnmHqOpsfTGoceR2Qp3XfrsZVGvZrNGs2ZhsZH6fm1Hjs888wzwTp6/UXPXTQS9oorrgjW6dSpk9XW1uYc1xV/aQ8AAAAAAAAAQIHgoj0AAAAAAAAAAAUir3iczPQ6jQGJY2t0WoLG4Oj0zVatWgXr6F1/NRIn2NCycFM1kkanyeqUU42UiO2+++5ejx8/3uv4Lr8VFRVeT5o0yWudAn7xxRcH6+g0DZ3+obEqH3zwQbDOoYcemritxerXX3+1srKyYGqTRhSZmX333Xde67Srv//+22udghV76aWXvNapsfFURZ32p3RapEY2xXRKlk7ljqeRXXTRRVnX1+m0bdq0CR7TKUsae/Of//zH6zg6olOnTmZmeU3LKQZnn322lZSUBH0VT9Wrra31WqOWNB4nnv6vz6fTo3RcjGNRVl11Va+1f+KoI6Xj3/Tp073WWJX33nsvWEfHSe0t7Yu4R/T5WrZs6XWvXr281imNZsRGZLPuuutaWVlZMC1YpxPG7rvvPq932WWXxOV0arJGRLz++uteawRDrEmTJl7r+KLrm4XTTnU69cSJE73W3o3X0eMF/c7EMQM6DVGn+Wv0ybPPPpvtpUBkpm9qPE6839Jjm4UWWshrjRDRCAazMPpG188VFahRcLqPjiNx1KBBg7L+u04Bj2lf6OvW6JU4RkVpnJMep8XbqdPLMVOmh3QciOOINBJH6bRi3R+ahbExGt+g40sc39miRQuvNY5Op2DH+7pTTjnFa532nSuSJikybvjw4Vm338xs9OjRWZ/rjjvu8FqPMcxyR6sUq8znp+duJ510UrCMHvefd955WZ9H93tmYS/pMbweA3777beJ26XnFHG0gNLn69evn9cay6ixEGZhj+hY2qVLF6/jMU7HfY0CuOyyy7wmDmf2FllkEWvatKltv/32/m9xdFoS7Ynjjz8+eKw+3209/9PrLHrcFh83aqyJXqOYU/H3R+NKNGpqtdVW8/q2226ba79/QfX8889baWmp/fLLL/5vGoNlFo5vut/V88Mvv/wyWEf7RcdEvcYXxyTFMSQZen2uQ4cOwWM6Ph1zzDFeX3/99V7H0a46Xuo+WI/h4mizNPGY8Tlp5hwmvv6DGfSako53ZuE+9sorr/T61ltv9Tp+vw8//HCvtU/1Wkgc86WxrnoOq+Pl/vvvH6yj19X0WrKen8SxiHruc/PNN1s2uq82M3vllVe8/u9//+u1nk/H9ttvP5syZYpdeumlicso/tIeAAAAAAAAAIACwUV7AAAAAAAAAAAKBBftAQAAAAAAAAAoECV1ceBsFuPHjw/yfdT9998f/KyZfueff37eG6S5Wpp1r5l9ZmGm3yqrrOL12Wef7fWee+6Z9+/PRTPZ9t57b681AzCm2c/vvvuu17PLqxs3blyQIVtM4n7TbOwDDzwwWPb222/3unfv3l5rW8fvteb7aSaa5t0++OCDqbZV87o0a9kszCjNlVOtNJNQ73ug2V96zwSzMKd15MiRXueT91zM/WY2s+f69Olj5eXlOfOJNeP2008/9VpzBOsjvleB5pyr0tKZ/61V8/XNwizAYcOGea0507no90az45ZffvlguR49enit2ajxOK2OOeYYmzZtmt1yyy302z/9ttJKK1mTJk3siy++8Md0v2c26z1g0tAxQe/Foj7++OPgZ/1ML7jgAq/POeccr+N8Sh3Xunfv7vVnn33mddOmTYN1pkyZ4nWucTpJ2nXq6ur8fabfZrwPmXvE6P0uYiuvvLLXffv29VrHpzPOOCNx/TXWWMPrXPcV0n3dkCFDvE5xSDqLtD2hx4QPPfSQ1/E4OjfQczN6rmXLllZSUjLLuDanXnvtNa8333xzr7UXrrnmmmAdfWzgwIFejxs3zuv4vkJ6LKjr33DDDYnbpt+Pc8891+t4LFSa2a950EsssYTXue73QL/N6LeOHTtaaWlpcPwUH78k3RdIP7dLLrkk1e897LDDvNbzgbT23Xff4Ge9f0vSMWAuOn6Xl5d7Hd+X688///Raz6P0/hLdunUL1ll22WWttrbWfv75Z/otx3WRmO539HhqpZVW8jp+Lh2Tkv5d791mFu6j9RqFngvE9+LQ+7TMaaa83teoT58+wWNJ5yDNmjXzOr6/zhtvvGFmM45ht91226LuuUy/3Xnnnda8efPgfhOaIW8W3qNi2rRpef8u3RfpuYlezzIL++/nn3/2Wu/zGN+rQfeh6623ntfae/G4k3R8p/c41HMOszA/XY9D9X4kcUZ/rJj7zWzWMU7v1RHfX/LXX3+d7fPF91ac03to6Oenn2ucD6/fB6X3Hvrqq6+Cx/T6tebq6/lrLrqOXsvTc51Ymn7jL+0BAAAAAAAAACgQZbNfJPdfPk2ePDn4eU7vupz0u+L/AqtqamoSt2du0r/GSvs69b/2jR8/PvXvqs9fmy0o4teufyka/0Vc0l+R5nqvk9bJ9deHSbQvtQ/N6vfXe/oc+hr0v5bH70/S78nn9RRzv5nNfP3x3c2z0e9+muXz3YY5WU7/K3B9/sJCe077Kn6d+txpf8+0adN8WfptxuuPxwyz/PYTs3v+XCZOnJj4WNJfE+Qa07K9ltltS31ea9p1xo8f78vSb3XB/+ein6OOdWn/wiSpD3ItN6efT9qe0H3ivO4Jei59z9VHmmO/uGd1W7QXdP8WP2+uY68k+r1J25v6fdBtS7t/pd9mvP7MPkrfj7RjUn3OX+tznJVr/Tn9HPW16qzMXM+r5zG5jgtqa2uzvr/FKJ/Xr9/npPc37fPpeBLPXmrSpEnW35mr/+e0f5UeH86NcSszFmeu6xRzz2Vee+a7qp9vrv1cfST1S3wemHQMl+tYUftXny/XuJO0D9Uei7c56TXkc12mmPvNbNbXr9dX5/T61tyQNHsz7bmKfofi16P7xPr0Qa7eTJLm96SKxxk5cmQwXRPz3ogRI4I4nmJCvzW8Yu43M3quodFv9FtDot/ot4ZGz9FzDYl+o98aEv1GvzW0Yu45+q3hFXO/mdFzDS1Nv6W6aF9bW2ujRo2yVq1apc6dRf3U1dXZhAkTrEOHDsFfSRQT+q3h0G8z0HMNg36bgX5rGPTbDPRbw6HnZqDnGgb9NgP91jDotxnot4ZDz9FvDYl+m4Geaxj59Fuqi/YAAAAAAAAAAGDeK97/hAQAAAAAAAAAQIHhoj0AAAAAAAAAAAWCi/YAAAAAAAAAABQILtoDAAAAAAAAAFAguGgPAAAAAAAAAECB4KI9AAAAAAAAAAAFgov2AAAAAAAAAAAUCC7aAwAAAAAAAABQILhoDwAAAAAAAABAgeCiPQAAAAAAAAAABYKL9gAAAAAAAAAAFAgu2gMAAAAAAAAAUCC4aA8AAAAAAAAAQIHgoj0AAAAAAAAAAAWibH5vQG1trY0aNcpatWplJSUl83tzUqmrq7MJEyZYhw4drLSU/+7RmNBvaEiNsd/M6LnGrDH2HP3WeNFvaEj0GxpSY+w3M3quMWuMPUe/NV70GxpSY+w3s8Loufl+0X7UqFG29NJLz+/NqJcRI0bYUkstNb83A3mg39CQGnO/mdFzjVFj7jn6rfGh39CQ6Dc0pMbcb2b0XGPUmHuOfmt86Dc0pMbcb2bzt+fm+0X7Vq1amZnZ2WefbU2bNp3t8o8++mhezz9s2LDUy/bs2TPVctXV1TZo0CDfdjQemc+ssrIy1X/hy3dgeeONN1Ivu80226Rarqamxr744gv6rRHK9zM7/fTT81p+8cUXT73spZdemnrZ2tpa++233+i5Rijfz6xv3755Lf/++++nXrZHjx6plquurrZXX32VfmuECukzW2GFFVItV1NTY999911BbTvS0c8szTHcBx98kNfzP/7446mXve6661ItV1dXZxMnTqTfGqHMZ7bsssum+uu68vLyvJ5/8803T73sTTfdlNdzmxXW+Ix0CukzO/LII1MtN23aNLv99tsLatuRTuYzO/zww62iomK2y++33355Pf/aa6+detnVVlst1XJcF2m8Mp9Z9+7drUmTJrNdvra2Nq/nHzp0aOpl87n4Xltbaz/99NN87bn5ftE+c9DdtGnTVBft03zA2Z4/jbKy/N6OxjStAzNkPrOSkpJUn1++/da6devUy87LXkZhyPczSzMGqmbNmqVetj7Tuei5xiffzyzfiwz59FG+z02/NT6F9JmxT13w5XsM17Jly7yeP599cL79Q781PpnPrLS0NNW+L98xqLKysl7blRY91/gU0meWb38W0rYjncxnVlFRkerzznefmg+O4RZ8mc+sSZMmqT7veXmc1diuixAEBQAAAAAAAABAgeCiPQAAAAAAAAAABYKL9gAAAAAAAAAAFAgu2gMAAAAAAAAAUCC4aA8AAAAAAAAAQIHgoj0AAAAAAAAAAAWCi/YAAAAAAAAAABSIsvm9ARm33nqrlZbO/r8hrL322nk979JLL5162WuuuSbVchMmTLBu3brltR0oLFOmTEm13DnnnJPX85599tmpl/3oo4/yem40XldccYU1a9Zstsvl2xMDBgxIvexCCy2UetmamhobO3ZsXtuCwtKtWzdr0qTJbJfbZJNN8nrexx9/PPWyv/32W6rlqqur89oGFJ6DDz7YKioqZrvcEksskdfznnvuuXN92cmTJ9uBBx6Y13agsDz66KPWokWL2S53yy235PW877zzTuplq6qqUi1XV1eX1zag8Pzf//2fNW/efLbL5XsM99lnn6Ve9s4770y9bFVVlR111FF5bQsKy6GHHppqn/rxxx/n9bz5jHFXX311Xs+Nxqtfv37WsmXL2S636aabzrNtaNOmTarlOGdo/K655ppU/fbAAw/k9bz57INPOumk1MtWVVXZiSeemNe2zG38pT0AAAAAAAAAAAWCi/YAAAAAAAAAABQILtoDAAAAAAAAAFAguGgPAAAAAAAAAECB4KI9AAAAAAAAAAAFgov2AAAAAAAAAAAUCC7aAwAAAAAAAABQILhoDwAAAAAAAABAgeCiPQAAAAAAAAAABYKL9gAAAAAAAAAAFAgu2gMAAAAAAAAAUCDK5vcGZPz888+plvvpp5/yet6ll1469bI777xzquVqamry2gYUnhEjRljr1q1nu9wll1yS1/M+++yzqZddccUVUy1XU1Njw4YNy2s7UFhOPvnkefK8zZo1S73s2muvnXrZ6upqeq6Re+utt1KNcSUlJXk9bz7Ljx07NtVytbW1eW0DCs9qq62Wajw65JBD8nreNm3apF72xBNPTLUc/db47bLLLvN7E2yttdZKtVxNTY19/PHH83hrMC+9/PLLVlFRMdvl3nzzzbye96GHHkq97E477ZR6Wca4xm/EiBFWXl4+2+VuuummvJ533XXXTb1saWm6v+2sq6uzyZMn57UdKCzdu3dPdc4wYMCAvJ63d+/eqZe94IILUi03adIkGzhwYF7bgcKyySabzJPn7dmzZ+pl+/fvP0+2YV7hL+0BAAAAAAAAACgQXLQHAAAAAAAAAKBAcNEeAAAAAAAAAIACwUV7AAAAAAAAAAAKBBftAQAAAAAAAAAoEFy0BwAAAAAAAACgQHDRHgAAAAAAAACAAsFFewAAAAAAAAAACgQX7QEAAAAAAAAAKBBctAcAAAAAAAAAoECUze8NyNdaa62V1/K77bZb6mWvv/76VMvV1tbmtQ0oPJtttpk1adJktst98803eT1vXV1d6mVLSkryem40XmeccYY1bdp0tsu9+OKLeT1v//79Uy977LHHpl42nz5GYbr44outsrJytsttuOGGeT1vmzZtUi/74YcfplqOfWrjV1FRYRUVFbNdbty4cXk97yWXXJJ62WWWWSbVctXV1TZ69Oi8tgOF5V//+leqfertt9+e1/MOHjw49bILLbRQXs+Nxuu///3vPHnefv36pV62RYsWqZetqampz+aggLzwwguplltkkUXyet777rsv9bK///57quWqqqrs+OOPz2s7UFgmTpxopaWz/1vehx56KK/nPf3001Mv+84776RabsqUKXltAwpP+/btU/Xb4osvntfz5nMMt+aaa6Zetqamxj755JO8tmVu4y/tAQAAAAAAAAAoEFy0BwAAAAAAAACgQHDRHgAAAAAAAACAAsFFewAAAAAAAAAACgQX7QEAAAAAAAAAKBBctAcAAAAAAAAAoEBw0R4AAAAAAAAAgALBRXsAAAAAAAAAAAoEF+0BAAAAAAAAACgQXLQHAAAAAAAAAKBAlM3vDchYeOGFraSkZLbLffjhh3k9b9u2bVMvu+WWW6Zabtq0aXb//ffntR0oLBtuuKFVVFTMdrkrrrgir+dN08MoPk899ZQ1adJktssdccQReT3vsccem3rZPn36pF52+vTp9uijj+a1LSgsl112WarlWrZsmdfzduzYMfWyK6+8cqrlqqurbezYsXltBwpLr169rFWrVrNdLp9jMjOzm2++OfWyd955Z17PjcbrlVdesbKy2Z/C3HHHHXk973rrrZd62f/7v/9LtdzUqVPt8ssvz2s7UFheffXVVPvKvn375vW8o0ePTr3s8OHDUy87YcIE69y5c17bgsZp2LBheS3/0ksvpV62d+/eqZabPHlyXtuAwtO0aVNr2rTpbJcbM2ZMXs/7xRdfpF62U6dOqZabPn16XtuAwrPEEkukui6S73XffPZ7+VxDqaqqyvsazdzGX9oDAAAAAAAAAFAguGgPAAAA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ND631b7s1auX14sttpjX2pNmZu+++67Xep6b9tgsaf+Y65yTc4bClnQtJY5C0usfejynx329e/cO1tH9ph6r6e/JdS6s46Pum9dcc81gnZ49e3o9fPhwr/W4jd6bv9LGfs3p82o/JV2LjntBrwfW59rvvDq35S/tAQAAAAAAAAAoEFy0BwAAAAAAAACgQHDRHgAAAAAAAACAAlGvcOOkzDyzMGNNs02XWWYZrzWHyizMGF922WW9btOmjddxdpDmA3755Zde//jjj15PmDAhWEfzi1q3bu21Zvbqv5uFOb0ff/yx16NGjfI6zhokJ2v+089a+zCmWWcvvPCC188880yw3NixY73Wz3fRRRf1et999w3W2XXXXb3u0KGD1+utt57XX3/9dbCO5j2nzVxNynvT7C7Nxsz13Jj3co2fSseVpM9Lc53NzL766iuvJ0+e7HVSPtvstiFfZFUWNv18NIPSzOy8887zulOnTl7n+hz1fjSaIan3CnnzzTeDdTRDVe/vofnlZN03Xrqv22abbbxeffXVg+V07NLjLM2Fjo+ttC90TNOcUs2qj59D99fab3Hu+F9//ZV1OxnTCl+u/WtSrrLW8TnAWWed5bXmROux1m+//Raso+Ma9z5oPPS8oWnTpsFjG2+8sdeHHXaY1y1btvT6gQceCNYZMmSI1zoO5epR3YakOqZ5+5pfrs8dj3E6/pHz3HjoZ73GGmsEj5155plea8a39p4ef5mF+zqtc50zqLR5z9xDofHQfHkdT+JjuK222sprzbHXY0DtV7OwF/X+gHofLL2Hm1m4T15qqaW81jHxiy++CNYZPHhw1uej9xrWnF5fiNfX61p6nrn00kt73aVLl2CdDTbYwOsePXp43aJFC6917DMLr6XoPYv03z/99NNgnXHjxnmt5w1z83yWv7QHAAAAAAAAAKBAcNEeAAAAAAAAAIACUa94nKQppmZhFIlOQ9CpMyuttFKwjk7F16kvGrUTTw3UqQda6zS/eHqjbmvSVMN4GoNO37nzzju9vv/++73W6dyYf3RKl07J0ggHszBC6bPPPvNapw3G0UraF9o7ulwcw6PTypo3b+71dttt5/Wzzz4brKNxPfo7004xShu9gsKQ6zNKO+1U6fin3wcdS3V6WbwNcxpvw9TDwqZj4d133x08tvzyy3utY5zuXzW+yyycQq0ReO3a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nf6vUyfjiArMW7kiaJKiciorK4N1NG5JPz/t39tvvz1YJ46GmBO5prMmRfww9s0fY8aMCX4+//zzvb7sssu87ty5s9e77757sM5OO+3kdVJMncadmIX7Xn1M14+je04//XSvJ0+eHL8UNEL6vdda91s6ldrM7L333vNaxy3dp8a0z/W5dXyN19de1CnYWPDF+zCNB9NjJR2H3nnnnWAdjp1gljyuxRFeSscePWfUKf5xfKeOX59++mnW54olHavpuMix2YIhaV9rFvaBnk/ochqDEj+WFFGi569mYXyi9r/ux+N+JYZz/tDPN/4cVdL4omPdTz/9FDx25513et2zZ0+vNSqna9euwTp6DpJ0PBZHlfz8888JW52M8a4wJF0ryEWX02M2M7Nrr73W6xVWWCHrOvEYd8kll3j9wQcfeK293Vj6hTMYAAAAAAAAAAAKBBftAQAAAAAAAAAoEA0Wj6NTD+JpUjr9VKcQJkXTmIVTvzbYYAOvderN+PHjg3Vefvllr7///vus2xbT6Tta55qi1limWRSLeNrXRx995PX777/vtcaRtG7dOlhHpwrGsUsZuWKfNEZCp37FcRM6VVanGo4ePdrrJ554IlhHX4PetV2nwuWKHMC8l2aKWDxVUMfJX375xWudoqjTp+Pfo/R3xr9Hf67PFFbGu/kvHuMGDRrk9U033eT1BRdc4LVO0TebdRpihn6+uabo63j1zTffeH3MMccEy2m8E72zYNPPN44Z0f1TUoxDPFZ16NDBa91H5zq+TJqCTazXgikpIsLMbJ111vFaowg1HueHH36Yh1uHxippLMu1T0yi5xC5xkU9V2jatGnWfzcLx7ykmjGusOWKjkg6fo+jlfR8slmzZlmfK1fcl66z7LLLer388ssHy2n8icawaixF/L2g/+aPpGjWtPRzi8ed4cOHe92+fXuvu3fvnrU2C6/lJUUc6vmDWXg+o/vqXNfhUHhyxXkp3T9uuummwWO9evXKur720r333husc99993kd93Bjw1/aAwAAAAAAAABQILhoDwAAAAAAAABAgWiweBwVT5FIMzU6ngamU1tXXXVVr3XqzODBg4N17rnnHq8nTpyY9Xfmmj6UNBWHu6IXtniank7pOvHEE73efPPNvd5tt92CdXr06OG1TsvXHo2nHWqP/fbbb17niocYM2aM159//rnXX331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",
|
|
"text/plain": [
|
|
"<Figure size 4000x400 with 30 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure(figsize=(40,4))\n",
|
|
"for i in range(10): \n",
|
|
" #display original\n",
|
|
" ax = plt.subplot(3,20,i+1)\n",
|
|
" plt.imshow(X_test_noisy[i].reshape(28,28))\n",
|
|
" plt.gray()\n",
|
|
" ax.get_xaxis().set_visible(False)\n",
|
|
" ax.get_yaxis().set_visible(False)\n",
|
|
"\n",
|
|
" #display encoded image\n",
|
|
" ax = plt.subplot(3,20,i+1+20)\n",
|
|
" plt.imshow(encoded_images[i].reshape(8,4))\n",
|
|
" plt.gray()\n",
|
|
" ax.get_xaxis().set_visible(False)\n",
|
|
" ax.get_yaxis().set_visible(False)\n",
|
|
" #display reconstruction\n",
|
|
" ax = plt.subplot(3 , 20 ,2 * 20 + i+ 1)\n",
|
|
" plt.imshow(pred[i].reshape(28,28))\n",
|
|
" plt.gray()\n",
|
|
" ax.get_xaxis().set_visible(False)\n",
|
|
" ax.get_yaxis().set_visible(False)\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "580c3e12-c29b-4040-a419-c2f194ac766e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"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.13.9"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|