Upload Zadanie4_Semenov_II_DRPK47.ipynb
Browse files- Zadanie4_Semenov_II_DRPK47.ipynb +233 -0
Zadanie4_Semenov_II_DRPK47.ipynb
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"nbformat": 4,
|
| 3 |
+
"nbformat_minor": 0,
|
| 4 |
+
"metadata": {
|
| 5 |
+
"colab": {
|
| 6 |
+
"provenance": []
|
| 7 |
+
},
|
| 8 |
+
"kernelspec": {
|
| 9 |
+
"name": "python3",
|
| 10 |
+
"display_name": "Python 3"
|
| 11 |
+
},
|
| 12 |
+
"language_info": {
|
| 13 |
+
"name": "python"
|
| 14 |
+
}
|
| 15 |
+
},
|
| 16 |
+
"cells": [
|
| 17 |
+
{
|
| 18 |
+
"cell_type": "code",
|
| 19 |
+
"execution_count": 9,
|
| 20 |
+
"metadata": {
|
| 21 |
+
"id": "nvCz0Ivjhvdu"
|
| 22 |
+
},
|
| 23 |
+
"outputs": [],
|
| 24 |
+
"source": [
|
| 25 |
+
"import numpy as np\n",
|
| 26 |
+
"import matplotlib.pyplot as plt\n",
|
| 27 |
+
"import tensorflow.keras as keras\n",
|
| 28 |
+
"import tensorflow.keras.datasets\n",
|
| 29 |
+
"from tensorflow.keras.datasets import fashion_mnist\n",
|
| 30 |
+
"from tensorflow.keras.layers import Input, Dense"
|
| 31 |
+
]
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"cell_type": "code",
|
| 35 |
+
"source": [
|
| 36 |
+
"(train_x, train_y), (test_x, test_y) = fashion_mnist.load_data()\n",
|
| 37 |
+
"\n",
|
| 38 |
+
"train_x = train_x / 255\n",
|
| 39 |
+
"test_x = test_x / 255\n",
|
| 40 |
+
"\n",
|
| 41 |
+
"train_x = np.reshape(train_x, (len(train_x), 28 * 28))\n",
|
| 42 |
+
"test_x = np.reshape(test_x, (len(test_x), 28 * 28))"
|
| 43 |
+
],
|
| 44 |
+
"metadata": {
|
| 45 |
+
"id": "qVz8ST8QIO-F",
|
| 46 |
+
"colab": {
|
| 47 |
+
"base_uri": "https://localhost:8080/"
|
| 48 |
+
},
|
| 49 |
+
"outputId": "9cb3f511-1e6f-4496-a198-0b90597c49b4"
|
| 50 |
+
},
|
| 51 |
+
"execution_count": 10,
|
| 52 |
+
"outputs": [
|
| 53 |
+
{
|
| 54 |
+
"output_type": "stream",
|
| 55 |
+
"name": "stdout",
|
| 56 |
+
"text": [
|
| 57 |
+
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n",
|
| 58 |
+
"29515/29515 [==============================] - 0s 0us/step\n",
|
| 59 |
+
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n",
|
| 60 |
+
"26421880/26421880 [==============================] - 0s 0us/step\n",
|
| 61 |
+
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n",
|
| 62 |
+
"5148/5148 [==============================] - 0s 0us/step\n",
|
| 63 |
+
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n",
|
| 64 |
+
"4422102/4422102 [==============================] - 0s 0us/step\n"
|
| 65 |
+
]
|
| 66 |
+
}
|
| 67 |
+
]
|
| 68 |
+
},
|
| 69 |
+
{
|
| 70 |
+
"cell_type": "code",
|
| 71 |
+
"source": [
|
| 72 |
+
"inputs = Input(shape = (28*28, ))\n",
|
| 73 |
+
"x = Dense(150, activation = 'relu')(inputs)\n",
|
| 74 |
+
"x = Dense(400, activation = 'relu')(x)\n",
|
| 75 |
+
"x = Dense(10, activation = 'relu')(x)\n",
|
| 76 |
+
"encoder = Dense(3, activation = 'linear')(x)\n",
|
| 77 |
+
"\n",
|
| 78 |
+
"\n",
|
| 79 |
+
"inputs_dec = Input(shape = (3, ))\n",
|
| 80 |
+
"x = Dense(10, activation = 'relu')(inputs_dec)\n",
|
| 81 |
+
"x = Dense(40, activation = 'relu')(x)\n",
|
| 82 |
+
"x = Dense(150, activation = 'relu')(x)\n",
|
| 83 |
+
"decoder = Dense(28*28, activation = 'relu')(x)"
|
| 84 |
+
],
|
| 85 |
+
"metadata": {
|
| 86 |
+
"id": "GPlnoZRcKkLr"
|
| 87 |
+
},
|
| 88 |
+
"execution_count": 11,
|
| 89 |
+
"outputs": []
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"cell_type": "code",
|
| 93 |
+
"source": [
|
| 94 |
+
"encoder_model = keras.Model(inputs, encoder)\n",
|
| 95 |
+
"decoder_model = keras.Model(inputs_dec, decoder)\n",
|
| 96 |
+
"autoenc = keras.Model(inputs, decoder_model(encoder_model(inputs)))"
|
| 97 |
+
],
|
| 98 |
+
"metadata": {
|
| 99 |
+
"id": "Bwn5HLpmMw2a"
|
| 100 |
+
},
|
| 101 |
+
"execution_count": 12,
|
| 102 |
+
"outputs": []
|
| 103 |
+
},
|
| 104 |
+
{
|
| 105 |
+
"cell_type": "code",
|
| 106 |
+
"source": [
|
| 107 |
+
"autoenc.compile(optimizer='adam', loss='mean_squared_error', metrics = ['accuracy'])"
|
| 108 |
+
],
|
| 109 |
+
"metadata": {
|
| 110 |
+
"id": "2nijZHIrPBWy"
|
| 111 |
+
},
|
| 112 |
+
"execution_count": 13,
|
| 113 |
+
"outputs": []
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"cell_type": "code",
|
| 117 |
+
"source": [
|
| 118 |
+
"autoenc.fit(train_x, train_x, epochs = 20, batch_size=50)"
|
| 119 |
+
],
|
| 120 |
+
"metadata": {
|
| 121 |
+
"colab": {
|
| 122 |
+
"base_uri": "https://localhost:8080/"
|
| 123 |
+
},
|
| 124 |
+
"id": "eS6_3HpQP8oD",
|
| 125 |
+
"outputId": "b299a4cb-0f46-4af6-baf4-c26509ce93b7"
|
| 126 |
+
},
|
| 127 |
+
"execution_count": 35,
|
| 128 |
+
"outputs": [
|
| 129 |
+
{
|
| 130 |
+
"output_type": "stream",
|
| 131 |
+
"name": "stdout",
|
| 132 |
+
"text": [
|
| 133 |
+
"Epoch 1/20\n",
|
| 134 |
+
"1200/1200 [==============================] - 8s 6ms/step - loss: 0.0253 - accuracy: 0.0177\n",
|
| 135 |
+
"Epoch 2/20\n",
|
| 136 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0249 - accuracy: 0.0181\n",
|
| 137 |
+
"Epoch 3/20\n",
|
| 138 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0246 - accuracy: 0.0188\n",
|
| 139 |
+
"Epoch 4/20\n",
|
| 140 |
+
"1200/1200 [==============================] - 8s 6ms/step - loss: 0.0243 - accuracy: 0.0200\n",
|
| 141 |
+
"Epoch 5/20\n",
|
| 142 |
+
"1200/1200 [==============================] - 9s 7ms/step - loss: 0.0241 - accuracy: 0.0203\n",
|
| 143 |
+
"Epoch 6/20\n",
|
| 144 |
+
"1200/1200 [==============================] - 9s 7ms/step - loss: 0.0240 - accuracy: 0.0205\n",
|
| 145 |
+
"Epoch 7/20\n",
|
| 146 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0239 - accuracy: 0.0210\n",
|
| 147 |
+
"Epoch 8/20\n",
|
| 148 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0238 - accuracy: 0.0213\n",
|
| 149 |
+
"Epoch 9/20\n",
|
| 150 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0236 - accuracy: 0.0221\n",
|
| 151 |
+
"Epoch 10/20\n",
|
| 152 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0234 - accuracy: 0.0220\n",
|
| 153 |
+
"Epoch 11/20\n",
|
| 154 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0233 - accuracy: 0.0223\n",
|
| 155 |
+
"Epoch 12/20\n",
|
| 156 |
+
"1200/1200 [==============================] - 9s 7ms/step - loss: 0.0233 - accuracy: 0.0224\n",
|
| 157 |
+
"Epoch 13/20\n",
|
| 158 |
+
"1200/1200 [==============================] - 9s 7ms/step - loss: 0.0231 - accuracy: 0.0230\n",
|
| 159 |
+
"Epoch 14/20\n",
|
| 160 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0230 - accuracy: 0.0223\n",
|
| 161 |
+
"Epoch 15/20\n",
|
| 162 |
+
"1200/1200 [==============================] - 9s 7ms/step - loss: 0.0231 - accuracy: 0.0222\n",
|
| 163 |
+
"Epoch 16/20\n",
|
| 164 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0230 - accuracy: 0.0225\n",
|
| 165 |
+
"Epoch 17/20\n",
|
| 166 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0229 - accuracy: 0.0234\n",
|
| 167 |
+
"Epoch 18/20\n",
|
| 168 |
+
"1200/1200 [==============================] - 8s 6ms/step - loss: 0.0228 - accuracy: 0.0225\n",
|
| 169 |
+
"Epoch 19/20\n",
|
| 170 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0228 - accuracy: 0.0231\n",
|
| 171 |
+
"Epoch 20/20\n",
|
| 172 |
+
"1200/1200 [==============================] - 8s 7ms/step - loss: 0.0228 - accuracy: 0.0233\n"
|
| 173 |
+
]
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"output_type": "execute_result",
|
| 177 |
+
"data": {
|
| 178 |
+
"text/plain": [
|
| 179 |
+
"<keras.callbacks.History at 0x7f56add3add0>"
|
| 180 |
+
]
|
| 181 |
+
},
|
| 182 |
+
"metadata": {},
|
| 183 |
+
"execution_count": 35
|
| 184 |
+
}
|
| 185 |
+
]
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"cell_type": "code",
|
| 189 |
+
"source": [
|
| 190 |
+
"y = autoenc.predict(test_x[:12])\n",
|
| 191 |
+
"plt.imshow(y[5].reshape(28, 28), cmap = 'gray')"
|
| 192 |
+
],
|
| 193 |
+
"metadata": {
|
| 194 |
+
"colab": {
|
| 195 |
+
"base_uri": "https://localhost:8080/",
|
| 196 |
+
"height": 467
|
| 197 |
+
},
|
| 198 |
+
"id": "cURfG8wfQgZX",
|
| 199 |
+
"outputId": "b16778e5-e72c-498c-aa43-7751c995c8f8"
|
| 200 |
+
},
|
| 201 |
+
"execution_count": 58,
|
| 202 |
+
"outputs": [
|
| 203 |
+
{
|
| 204 |
+
"output_type": "stream",
|
| 205 |
+
"name": "stdout",
|
| 206 |
+
"text": [
|
| 207 |
+
"1/1 [==============================] - 0s 19ms/step\n"
|
| 208 |
+
]
|
| 209 |
+
},
|
| 210 |
+
{
|
| 211 |
+
"output_type": "execute_result",
|
| 212 |
+
"data": {
|
| 213 |
+
"text/plain": [
|
| 214 |
+
"<matplotlib.image.AxesImage at 0x7f56a8f3d060>"
|
| 215 |
+
]
|
| 216 |
+
},
|
| 217 |
+
"metadata": {},
|
| 218 |
+
"execution_count": 58
|
| 219 |
+
},
|
| 220 |
+
{
|
| 221 |
+
"output_type": "display_data",
|
| 222 |
+
"data": {
|
| 223 |
+
"text/plain": [
|
| 224 |
+
"<Figure size 640x480 with 1 Axes>"
|
| 225 |
+
],
|
| 226 |
+
"image/png": "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bfX19Zf0+QAAw4OvX0RdtWqV3nvvPe3cuVPjx48PPZ6dna2enh41NzeH3QU1NTUpOzt7wM8VCAQUCAT8jAEAGMac7oA8z9OqVau0efNm7dixQ/n5+WHPz549W/Hx8dq+fXvoserqah07dkyFhYWRmRgAMCI43QGVlJRo48aN2rp1q1JTU0M/10lLS1NSUpLS0tL00EMPqbS0VBkZGRo9erQeeeQRFRYW8go4AEAYpwJat26dJGnevHlhj69fv17Lli2TJP3hD39QbGyslixZou7ubi1cuFB//OMfIzIsAGDkcCogz/Muuk9iYqIqKipUUVHheyiMXJWVlc4ZPy/NT05Ods5IUlxcnHNmypQpzpl//etfzhk//C5G2tfX55yJjXV/TVNnZ6dzpre31zmD6MRacAAAExQQAMAEBQQAMEEBAQBMUEAAABMUEADABAUEADBBAQEATFBAAAATFBAAwAQFBAAwQQEBAExQQAAAE77eERXw69SpU86Zw4cPO2f8vgFifHy8c+aGG25wzvz1r391zgyl/31H4+8qKSkp8oMM4Lusyo/hgTsgAIAJCggAYIICAgCYoIAAACYoIACACQoIAGCCAgIAmKCAAAAmKCAAgAkKCABgggICAJiggAAAJliMFFHvs88+c87cdtttvo7lZzHSvLw8X8caCikpKb5yHR0dQ3Ks3t5e50xPT49zBtGJOyAAgAkKCABgggICAJiggAAAJiggAIAJCggAYIICAgCYoIAAACYoIACACQoIAGCCAgIAmKCAAAAmWIwUUa++vt458/XXX/s61qhR7v9LJCcnO2cSExOdM11dXc4Zv/wsRuon09ra6pzx898I0Yk7IACACQoIAGCCAgIAmKCAAAAmKCAAgAkKCABgggICAJiggAAAJiggAIAJCggAYIICAgCYoIAAACZY1Q9R7+jRo86Z3bt3+zrW1KlTnTPd3d3OmYKCAudMVVWVc6a9vd05I0lffPGFc8bPAquff/65c+bMmTPOGUQn7oAAACYoIACACacCKi8v10033aTU1FSNGzdOixcvVnV1ddg+8+bNU0xMTNi2cuXKiA4NABj+nAqoqqpKJSUl2r17t95//3319vZqwYIF53yfefny5WpoaAhta9eujejQAIDhz+lFCNu2bQv7eMOGDRo3bpz27dunuXPnhh5PTk5WdnZ2ZCYEAIxI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m2uA6+NckyZNUmZm5oi8PlatWqX33ntPH374Ydjbt2RnZ6unp0fNzc1h+4/U6+F852EgBQUFkhRV10PUF1BCQoJmz56t7du3hx7r7+/X9u3bVVhYaDiZvba2NtXW1ionJ8d6FDP5+fnKzs4Ouz6CwaD27Nlz2V8fx48f1+nTp0fU9eF5nlatWqXNmzdrx44dys/PD3t+9uzZio+PD7seqqurdezYsRF1PVzsPAzkwIEDkhRd14P1qyC+i02bNnmBQMDbsGGD95///MdbsWKFl56e7jU2NlqPNqR++ctfepWVlV5dXZ33z3/+0ysqKvIyMzO9kydPWo82qFpbW739+/d7+/fv9yR5L7zwgrd//37viy++8DzP8373u9956enp3tatW72DBw96d955p5efn+91dnYaTx5ZFzoPra2t3mOPPebt2rXLq6ur8z744APve9/7njdlyhSvq6vLevSIefjhh720tDSvsrLSa2hoCG0dHR2hfVauXOlNmDDB27Fjh7d3716vsLDQKywsNJw68i52HmpqarznnnvO27t3r1dXV+dt3brVmzRpkjd37lzjycMNiwLyPM97+eWXvQkTJngJCQnenDlzvN27d1uPNOTuueceLycnx0tISPCuuuoq75577vFqamqsxxp0H374oSfpnG3p0qWe5519KfZTTz3lZWVleYFAwJs/f75XXV1tO/QguNB56Ojo8BYsWOCNHTvWi4+P9yZOnOgtX758xH2RNtDfX5K3fv360D6dnZ3ez3/+c+/KK6/0kpOTvbvuustraGiwG3oQXOw8HDt2zJs7d66XkZHhBQIB75prrvF+9atfeS0tLbaDfwtvxwAAMBH1PwMCAIxMFBAAwAQFBAAwQQEBAExQQAAAExQQAMAEBQQAMEEBAQBMUEAAABMUEADABAUEADBBAQEATPw/ZymUpTooJE0AAAAASUVORK5CYII=\n"
|
| 227 |
+
},
|
| 228 |
+
"metadata": {}
|
| 229 |
+
}
|
| 230 |
+
]
|
| 231 |
+
}
|
| 232 |
+
]
|
| 233 |
+
}
|