diff --git a/labworks/LW1/1.png b/labworks/LW1/1.png new file mode 100644 index 0000000..6219658 Binary files /dev/null and b/labworks/LW1/1.png differ diff --git a/labworks/LW1/10.png b/labworks/LW1/10.png new file mode 100644 index 0000000..0260a2c Binary files /dev/null and b/labworks/LW1/10.png differ diff --git a/labworks/LW1/11.png b/labworks/LW1/11.png new file mode 100644 index 0000000..a5ea844 Binary files /dev/null and b/labworks/LW1/11.png differ diff --git a/labworks/LW1/190.png b/labworks/LW1/190.png new file mode 100644 index 0000000..0e0fc25 Binary files /dev/null and b/labworks/LW1/190.png differ diff --git a/labworks/LW1/2.png b/labworks/LW1/2.png new file mode 100644 index 0000000..8bd3360 Binary files /dev/null and b/labworks/LW1/2.png differ diff --git a/labworks/LW1/3.png b/labworks/LW1/3.png new file mode 100644 index 0000000..bc9b7d2 Binary files /dev/null and b/labworks/LW1/3.png differ diff --git a/labworks/LW1/4.png b/labworks/LW1/4.png new file mode 100644 index 0000000..2f94f2f Binary files /dev/null and b/labworks/LW1/4.png differ diff --git a/labworks/LW1/5.png b/labworks/LW1/5.png new file mode 100644 index 0000000..fad0136 Binary files /dev/null and b/labworks/LW1/5.png differ diff --git a/labworks/LW1/6.png b/labworks/LW1/6.png new file mode 100644 index 0000000..c0cb170 Binary files /dev/null and b/labworks/LW1/6.png differ diff --git a/labworks/LW1/690.png b/labworks/LW1/690.png new file mode 100644 index 0000000..1e085c0 Binary files /dev/null and b/labworks/LW1/690.png differ diff --git a/labworks/LW1/7.png b/labworks/LW1/7.png new file mode 100644 index 0000000..6e76cb6 Binary files /dev/null and b/labworks/LW1/7.png differ diff --git a/labworks/LW1/8.png b/labworks/LW1/8.png new file mode 100644 index 0000000..6a0663b Binary files /dev/null and b/labworks/LW1/8.png differ diff --git a/labworks/LW1/9.png b/labworks/LW1/9.png new file mode 100644 index 0000000..e9e8aef Binary files /dev/null and b/labworks/LW1/9.png differ diff --git a/labworks/LW1/LR_1.ipynb b/labworks/LW1/LR_1.ipynb new file mode 100644 index 0000000..1d8e358 --- /dev/null +++ b/labworks/LW1/LR_1.ipynb @@ -0,0 +1,2897 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0G3B3V7wQOcB" + }, + "outputs": [], + "source": [ + "import os\n", + "os.chdir('/content/drive/MyDrive/Colab Notebooks')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "osfcYg__RCj4" + }, + "outputs": [], + "source": [ + "# импорт модулей\n", + "from tensorflow import keras\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rhibgIV6RLsB", + "outputId": "cb0bddd9-eec5-4746-f1fd-b4dbc58a09f9" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n", + "\u001b[1m11490434/11490434\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 0us/step\n" + ] + } + ], + "source": [ + "# загрузка датасета\n", + "from keras.datasets import mnist\n", + "(X_train, y_train), (X_test, y_test) = mnist.load_data()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EhjPpWFkSYbP" + }, + "outputs": [], + "source": [ + "# создание своего разбиения датасета\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hLYuoklsSf6l" + }, + "outputs": [], + "source": [ + "# объединяем в один набор\n", + "X = np.concatenate((X_train, X_test))\n", + "y = np.concatenate((y_train, y_test))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "T27CvmBSUUjw" + }, + "outputs": [], + "source": [ + "# разбиваем по вариантам\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y,\n", + " test_size = 10000,\n", + " train_size = 60000,\n", + " random_state = 27)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ONK_i4sFUfHu", + "outputId": "c0fcaa5a-bea9-4ae2-f37e-9dd907b1fe92" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of X train: (60000, 28, 28)\n", + "Shape of y train: (60000,)\n" + ] + } + ], + "source": [ + "# вывод размерностей\n", + "print('Shape of X train:', X_train.shape)\n", + "print('Shape of y train:', y_train.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 251 + }, + "id": "MFnSPykWUwv7", + "outputId": "b408d0d0-5e44-445f-9648-b1fbe8918df3" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzYAAADqCAYAAABwW9CIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALMhJREFUeJzt3Xl8VPW9//HPJMCwTwgxCWEzVDYBUYEgF5QgS8hDURCuhWrFFmVp4MomFi8QXDAql2IVRK+yyEWhQA0Cxdg2bNIbUEBlEwQaNSwJhN5sGJKQfH9/8GM08j05M8lMZs7M6/l4fB+P5j0z53xPmjfON5P5jk0ppQQAAAAALCzE1xMAAAAAgJpiYQMAAADA8ljYAAAAALA8FjYAAAAALI+FDQAAAADLY2EDAAAAwPJY2AAAAACwPBY2AAAAACyPhQ0AAAAAy2NhYzHffvut2Gw2+a//+i+PHXPnzp1is9lk586dHjsm4Gt0BTBHTwBz9MQ6WNjUglWrVonNZpP9+/f7eipe8/e//10GDBggEREREhYWJnFxcfI///M/vp4WLCbQu5KamioJCQkSExMjdrtdWrVqJaNGjZIjR474emqwkEDvyYcffii//OUvpV27dtKwYUPp2LGjzJgxQ/Ly8nw9NVhIoPdEhOdeOnV8PQFY3+bNm2X48OHSp08fmT9/vthsNlm/fr089thjkpubK9OmTfP1FAG/cPjwYWnWrJk89dRTEhERIdnZ2bJixQqJi4uTjIwM6d69u6+nCPjc+PHjJSYmRh599FFp06aNHD58WJYsWSLbtm2TgwcPSoMGDXw9RcDneO6lx8IGNbZkyRJp0aKFbN++Xex2u4iITJgwQTp16iSrVq0K2nIBPzdv3rwbsieeeEJatWoly5Ytk7feessHswL8y8aNGyU+Pr5S1qNHDxk7dqy8//778sQTT/hmYoAf4bmXHn+K5idKS0tl3rx50qNHD3E4HNKoUSO5++67ZceOHYaPWbx4sbRt21YaNGgg/fv31/45y/Hjx2XUqFESHh4u9evXl549e8rmzZtN5/PDDz/I8ePHJTc31/S+BQUF0qxZM2exRETq1KkjERER/GYNHmflruhERkZKw4YN+TMbeJSVe/LzRY2IyIgRI0RE5OuvvzZ9POAqK/eE5156LGz8REFBgbz77rsSHx8vr7zyisyfP18uXrwoCQkJ8uWXX95w/9WrV8vrr78uSUlJMnv2bDly5Ijce++9kpOT47zP0aNH5a677pKvv/5afv/738uiRYukUaNGMnz4cElNTa1yPp999pl07txZlixZYjr3+Ph4OXr0qMydO1dOnTolp0+flhdeeEH2798vs2bNcvt7AVTFyl25Li8vTy5evCiHDx+WJ554QgoKCmTgwIEuPx4wEwg9+ans7GwREYmIiKjW4wEdK/eE514GFLxu5cqVSkTU559/bnifq1evqpKSkkrZ//3f/6moqCj129/+1pllZmYqEVENGjRQZ86cceb79u1TIqKmTZvmzAYOHKi6deumrly54swqKirUv/3bv6n27ds7sx07digRUTt27LghS05ONr2+oqIi9fDDDyubzaZERImIatiwodq0aZPpY4GfCvSuXNexY0dnVxo3bqzmzJmjysvLXX48gluw9OSnxo0bp0JDQ9U333xTrccj+AR6T3jupccrNn4iNDRU6tWrJyIiFRUV8q9//UuuXr0qPXv2lIMHD95w/+HDh0vLli2dX8fFxUnv3r1l27ZtIiLyr3/9S7Zv3y4PP/ywFBYWSm5uruTm5sqlS5ckISFBTp48KWfPnjWcT3x8vCilZP78+aZzt9vt0qFDBxk1apSsXbtW1qxZIz179pRHH31U9u7d6+Z3Aqialbty3cqVKyUtLU3efPNN6dy5sxQXF0t5ebnLjwfMBEJPrvvggw9k+fLlMmPGDGnfvr3bjweMWLknPPfSY/MAP/Lee+/JokWL5Pjx41JWVubMY2Njb7iv7h/3Dh06yPr160VE5NSpU6KUkrlz58rcuXO157tw4UKlglbX5MmTZe/evXLw4EEJCbm2Vn744YelS5cu8tRTT8m+fftqfA7gp6zalev69Onj/N+jR4+Wzp07i4h49DMSAKv3RETk008/lXHjxklCQoIsWLDAo8cGRKzbE5576bGw8RNr1qyRxx9/XIYPHy5PP/20REZGSmhoqKSkpMjp06fdPl5FRYWIiMycOVMSEhK097nllltqNGeRa2+8W758ucyaNctZLBGRunXrSmJioixZskRKS0udvxEBasqqXTHSrFkzuffee+X9999nYQOPCYSefPXVV/LAAw9I165dZePGjVKnDk9Z4FlW7QnPvYzxr4Sf2Lhxo7Rr104+/PBDsdlszjw5OVl7/5MnT96Q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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Создаем subplot для 4 изображений\n", + "fig, axes = plt.subplots(1, 4, figsize=(10, 3))\n", + "\n", + "for i in range(4):\n", + " axes[i].imshow(X_train[i], cmap=plt.get_cmap('gray'))\n", + " axes[i].set_title(f'Label: {y_train[i]}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hNRbQ3GJU9fq" + }, + "outputs": [], + "source": [ + "# Добавляем метку как заголовок\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "js1x4HkMVfwm", + "outputId": "82515441-af66-4383-b7d0-24473fd417db" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of transformed X train: (60000, 784)\n" + ] + } + ], + "source": [ + "# развернем каждое изображение 28*28 в вектор 784\n", + "num_pixels = X_train.shape[1] * X_train.shape[2]\n", + "X_train = X_train.reshape(X_train.shape[0], num_pixels) / 255\n", + "X_test = X_test.reshape(X_test.shape[0], num_pixels) / 255\n", + "print('Shape of transformed X train:', X_train.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7k8dJS06WNfN", + "outputId": "c5527c79-25bd-409a-c8fe-33f5624618e6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of transformed y train: (60000, 10)\n" + ] + } + ], + "source": [ + "# переведем метки в one-hot\n", + "from keras.utils import to_categorical\n", + "y_train = to_categorical(y_train)\n", + "y_test = to_categorical(y_test)\n", + "print('Shape of transformed y train:', y_train.shape)\n", + "num_classes = y_train.shape[1]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Ir0bQztHWu9V" + }, + "outputs": [], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yQ9FXNqXXDHD", + "outputId": "b1735201-eab3-4fcd-8793-861f3dbf9ac3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.12/dist-packages/keras/src/layers/core/dense.py:93: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", + " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" + ] + } + ], + "source": [ + "model_1 = Sequential()\n", + "model_1.add(Dense(units=num_classes,input_dim=num_pixels, activation='softmax'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 181 + }, + "id": "RUvTKwOZXfEi", + "outputId": "7d762a7d-7b06-48c1-af64-6310475f1166" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m7,850\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense (Dense)                   │ (None, 10)             │         7,850 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ], + "text/html": [ + "
 Total params: 7,850 (30.66 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ], + "text/html": [ + "
 Trainable params: 7,850 (30.66 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "model_1.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", + "\n", + "print(\"Архитектура нейронной сети:\")\n", + "model_1.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l8f1EiJUYLvl", + "outputId": "8d88ef7c-7d4e-4067-d777-d78aee4c3c39" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.7168 - loss: 1.1499 - val_accuracy: 0.8695 - val_loss: 0.5093\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8763 - loss: 0.4841 - val_accuracy: 0.8858 - val_loss: 0.4226\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8890 - loss: 0.4170 - val_accuracy: 0.8953 - val_loss: 0.3855\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8923 - loss: 0.3911 - val_accuracy: 0.8990 - val_loss: 0.3649\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8989 - loss: 0.3692 - val_accuracy: 0.9032 - val_loss: 0.3503\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9034 - loss: 0.3525 - val_accuracy: 0.9055 - val_loss: 0.3410\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9026 - loss: 0.3452 - val_accuracy: 0.9080 - val_loss: 0.3325\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9063 - loss: 0.3369 - val_accuracy: 0.9087 - val_loss: 0.3263\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9084 - loss: 0.3280 - val_accuracy: 0.9112 - val_loss: 0.3212\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9097 - loss: 0.3235 - val_accuracy: 0.9123 - val_loss: 0.3169\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9092 - loss: 0.3218 - val_accuracy: 0.9127 - val_loss: 0.3130\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9105 - loss: 0.3134 - val_accuracy: 0.9142 - val_loss: 0.3089\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9136 - loss: 0.3088 - val_accuracy: 0.9142 - val_loss: 0.3076\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9143 - loss: 0.3086 - val_accuracy: 0.9160 - val_loss: 0.3041\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9145 - loss: 0.3049 - val_accuracy: 0.9152 - val_loss: 0.3016\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9159 - loss: 0.3041 - val_accuracy: 0.9157 - val_loss: 0.2994\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9171 - loss: 0.2976 - val_accuracy: 0.9143 - val_loss: 0.2982\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9144 - loss: 0.3051 - val_accuracy: 0.9168 - val_loss: 0.2964\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9173 - loss: 0.3012 - val_accuracy: 0.9173 - val_loss: 0.2954\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9165 - loss: 0.2982 - val_accuracy: 0.9168 - val_loss: 0.2945\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9175 - loss: 0.2946 - val_accuracy: 0.9172 - val_loss: 0.2934\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9174 - loss: 0.2937 - val_accuracy: 0.9172 - val_loss: 0.2911\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9191 - loss: 0.2884 - val_accuracy: 0.9173 - val_loss: 0.2912\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9196 - loss: 0.2908 - val_accuracy: 0.9162 - val_loss: 0.2890\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9191 - loss: 0.2870 - val_accuracy: 0.9183 - val_loss: 0.2886\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9193 - loss: 0.2891 - val_accuracy: 0.9187 - val_loss: 0.2881\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9194 - loss: 0.2837 - val_accuracy: 0.9182 - val_loss: 0.2867\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9195 - loss: 0.2867 - val_accuracy: 0.9187 - val_loss: 0.2862\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9217 - loss: 0.2817 - val_accuracy: 0.9182 - val_loss: 0.2856\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9229 - loss: 0.2757 - val_accuracy: 0.9178 - val_loss: 0.2850\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9195 - loss: 0.2809 - val_accuracy: 0.9180 - val_loss: 0.2847\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9213 - loss: 0.2825 - val_accuracy: 0.9193 - val_loss: 0.2838\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9216 - loss: 0.2822 - val_accuracy: 0.9197 - val_loss: 0.2832\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9232 - loss: 0.2757 - val_accuracy: 0.9202 - val_loss: 0.2823\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9207 - loss: 0.2836 - val_accuracy: 0.9197 - val_loss: 0.2822\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9220 - loss: 0.2791 - val_accuracy: 0.9192 - val_loss: 0.2823\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9215 - loss: 0.2777 - val_accuracy: 0.9173 - val_loss: 0.2824\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9238 - loss: 0.2752 - val_accuracy: 0.9180 - val_loss: 0.2809\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9250 - loss: 0.2707 - val_accuracy: 0.9200 - val_loss: 0.2809\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9228 - loss: 0.2783 - val_accuracy: 0.9188 - val_loss: 0.2807\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9251 - loss: 0.2679 - val_accuracy: 0.9198 - val_loss: 0.2806\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9235 - loss: 0.2774 - val_accuracy: 0.9188 - val_loss: 0.2797\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9225 - loss: 0.2772 - val_accuracy: 0.9198 - val_loss: 0.2791\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9240 - loss: 0.2749 - val_accuracy: 0.9193 - val_loss: 0.2791\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9265 - loss: 0.2666 - val_accuracy: 0.9197 - val_loss: 0.2786\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9246 - loss: 0.2747 - val_accuracy: 0.9198 - val_loss: 0.2786\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9239 - loss: 0.2721 - val_accuracy: 0.9193 - val_loss: 0.2783\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9224 - loss: 0.2779 - val_accuracy: 0.9200 - val_loss: 0.2787\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9233 - loss: 0.2755 - val_accuracy: 0.9203 - val_loss: 0.2778\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9247 - loss: 0.2684 - val_accuracy: 0.9182 - val_loss: 0.2778\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history = model_1.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "id": "UJ5yuJBrZsjT", + "outputId": "02557983-a862-4ac4-baef-8a4e0e35942c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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vr6+yl133WWz/4cffqgAyuLFi5VNmzYpGo1GefbZZ222ycnJKRbjxo0bFUD5/PPPi8X42GOPKU2aNLGWZ2dnK35+fkq/fv1K/AzC9aSrXDhVZmZmsVZISUJDQwGstxHVq1ePVq1a8eWXX1q3SU1N5ffff+fxxx8v1nWamZnJuXPnbJarycvLo1evXpw9e5YVK1ZQtWrVsny0Ep04cYL33nuPKVOm4OPjUyxGoEznW758OQCxsbE25ePGjQPgt99+K0u416QoCpMmTeLBBx+kVatWJW4TGxuLRqOxvu/fvz+hoaElxrNlyxYeeeQRHnzwQWbNmlXuc5fVH3/8QUFBAc8++yxq9aX/AocOHYqfn99167LofvWiJTQ0lO7du/P9999jNpvtisVkMrFq1Sr69OlD7dq1reXh4eH069ePf/75x+bWuqeffppu3brxv//9j/79+1OnTh1effVVm2N6enpaXxuNRs6fP090dDQBAQFs3769WAz9+/dn//791i7x77//Hn9/fzp16mTXZxE3jiRu4VTVqlXj0KFD193u4MGDADajkwcMGMD69es5duwYAN9++y1Go5H+/fsX23/IkCEEBwfbLEXX/K40ePBg/vnnHzIzM63XtR1l2rRpVKtWzXoN/nL169cnMDCQt956i/Xr13P27FnOnTuH0Wi87nGPHTuGWq0mOjrapjwsLIyAgABrHTnSl19+yd69e4slBsD6xalBgwY25RqNhrp16xa7nnrixAl69OhBdnY258+fv+4162udu7yK6qp+/fo25Xq9ntq1a1+3LpOSkor9rf3444+kp6df8wtjSc6ePUtOTk6xWAAaNmyI2WwmOTnZpnzBggXk5ORw4MABFi1aZJOoAXJzc5k6dSoREREYDAaCgoIIDg4mLS2N9PT0YucJDg6mR48eLFy4EICFCxcycOBAmy81omKR34xwqvvuu4/U1FQWLFhw1W1SUlL47LPPCA4O5o477rCWP/roo+h0Omure/HixbRo0aLE/+SmTp1KXFyczeLh4VHi+bZv387PP/9McHAwTz/9dDk/4SUJCQksWrSIl19+ucRrpD4+PixdupTs7GzatWtHSEgIwcHBbNiwodTnKM0gLUcoKChgypQpPPnkk9SrV6/Y+iuTxfUcPHiQmjVr8sUXX/DHH3/w2WeflfncrhYWFlbsb+2xxx67Yedfu3atdUDi7t27i63/3//+xyuvvMIjjzzCN998w6pVq4iLi6Nq1apX7REYMmQIX331FQkJCfz11182gzpFxSOD04RTTZ48mZ9++onhw4ezf/9++vXrh8lkAiwtl9WrVzN16lQuXLjAkiVLbAY0ValShR49evDll1/y+OOPs379eubMmVPieZo0aULnzp1tyi7vwr3cJ598Qq9evdBoNNx3330sWLCAJ598styfddKkScTExNC3b9+rbtOlSxfeeOMNHn/8cebPn0/t2rUZN26ctU6uJjIyErPZzIEDB2jYsKG1PCUlhbS0NCIjI8sd/+U++OADzpw5U2z0c5GiAVeJiYk2XbxFMV55X354eDjLly8nNDSUn3/+mXHjxtG9e3eCg4PtPnd5FdXVlbEXFBRY73q4Fg8Pj2LbvPvuu/j5+REUFGRXLMHBwXh5eZGYmFhs3f79+1Gr1URERFjLTp06xf/+9z+6du2KXq9n/PjxdOvWzeb3/9133zFw4EDeeusta1leXt41R8zfe++9eHh48Oijj9KuXTvq1KnD33//bddnETeOtLiFU4WFhbFx40buvfde3nrrLW677TYWL15MdnY2kZGRDBkyBE9PT5YtW1Ziq6V///7s27eP5557Do1Gw6OPPlrumO68804AevTowaOPPspzzz1X7HYee23cuJGff/6Z11577Zqt4uTkZEaMGMHo0aN5+umn6dy5M4GBgdc9fvfu3QGKfXGZPXs2YPksjpKZmckrr7zC2LFjCQsLK3GbTp06YTAYePfdd21acV9++SUpKSnFbkerV6+edRzDe++9h9lsZsyYMWU6d3l17twZvV7Pu+++i3LZNBYLFiwgPT39mnVZUot1x44d/P777/Tp08fu7mWNRkPXrl35+eefbS4vpKSksGTJEtq1a4efn5+1fOjQoZjNZhYsWMBHH32EVqvlySeftPkcGo3G5j1Y6vxaXw61Wi0DBgxg165dDBkyxK7PIG48aXELp4uIiODnn3/m1KlTrF+/nlmzZhEfH8/8+fOJiYkhJibmqsmuR48eVK1alW+//ZZ77723VAPd7PHOO+/QsGFD/ve///HNN9/YrNu4caPNNcuiQUIHDx5ky5YttGzZ0rquaCKSa7XWzGYz/fv3p0aNGrz22mt2xdmsWTPrJDVpaWm0b9+eLVu28Nlnn9GnTx86dOhgs33R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nu04OjoalUpFQkIC999/f7H1CQkJBAYGEhwcTGBg4FWPc/lscU8++SQDBgzg/fff59NPP6Vv377WAapVqlRh9uzZjB07lhdeeAGNRkN+fj49evSw7t+zZ08iIyP5+OOPqVatGmazmcaNGxcb8Ld06VISEhKsDY5rxWSv8ePHExcXx5tvvkl0dDSenp489NBDNjG8/fbbPP744wQFBeHl5eXyJ3rNmjWL+vXr07NnT5vEXdrfG1h+37///jsPPPAAffv2pVu3S188Bw4cyPnz53nnnXeIjIzEYDDQunVrtxqIaS+Xz5w2atQojh07Rn5+Pps3b6ZVq1bWdWvXrmXRokXW91qtlmnTpnHw4EHrt8y5c+cSEBBw4wMHPHRFLW5J3EI4UtWqVenSpQsffPBBse7r06dP8+WXX9K3b19UKhV16tRBq9Wyfv166zZms5kNGzbYtHi7d++Ot7c38+fPZ8WKFdZu8iIjR44kPT2dPXv2EB8fT69evazrzp8/T2JiIpMnT6ZTp07WrvqSRERE0K5dO9LS0my60ZOTk0lOTraJyV7r169n0KBB3H///TRp0oSwsDCOHj1qs029evUYNGgQUVFRbN68mU8++eSax2zYsCE7d+4kOzvb5jxqtZr69euXOVaAU6dO8dZbb/HWW28VW+fv709YWJjN7w3gn3/+KVZHX3zxBffccw8vvfQSQ4cOtRl1vn79ekaPHk337t255ZZbMBgMnDt3rlxxV3QuT9zuzEN7scUt17iFcLj333+f/Px8unXrxl9//UVycjIrVqygS5cuVK9e3drT5uPjw9ChQ3nuuedYvnw5CQkJjBgxgpMnTzJixAjr8TQaDY899hj/93//R926dUscS+Pp6UmdOnWIjo62GdgUGBhI1apV+eijjzh48CB//vnnVbvUwdJd3qpVKwYMGMCWLVvYvn07jz/+ODExMXTs2NG6naIo5OXlkZeXZ51voqCgwFpmMpkwm83We3zr1q3LDz/8QHx8PDt37qRfv37F7nfetGkT//d//8d3333HLbfcQvXq1a9Zz48//jgeHh4MHDiQPXv2sGbNGv73v//Rv39/m9t1zWazNa6i1mx+fr61rKT7rufOncv999/PrbfeWuK5x44dy+uvv87XX3/Nf//9x/Tp01mzZg3jx4+32a6oe3zs2LFERETY1H3dunX54osvSEhIYPPmzTz++OM3/cN0JHGXg7S4hXCeunXr8u+//1K7dm0eeeQR6tSpw9NPP02HDh3YuHGjzbXON998kz59+jBw4EBiYmLYuXMnK1euJDw83OaY/fv3p6CgwDqOprTUajVff/0127Zto3HjxowdO5ZZs2Zdc5/vv/+eiIgIOnXqRPv27QkKCuKnn36y6QbetWsXnp6eeHp6Wu+m6datm7Vs8eLFLFu2jKFDhwKW2SYDAwNp06YNPXv2pFu3btx2223W4509e5aHH36Y2bNn25Rfi5eXFytXriQ1NZXbb7+dhx56iE6dOvH+++/bbPfrr79a4yrqGW3QoIG17O+//y52bLPZfM1LmePGjWP06NGMGzeOxo0b88MPP/DDDz/QrFmzErdXq9V8+umnLFmyhFWrVgGwYMECLly4wG233Ub//v0ZPXo0ISEhpfrs7kqluGI4tgtlZGTg7+9Peno6fn5+5TrWyj0neWbxDppU92PZ/+50UISVg9FoZPny5XTv3l1uB7NDWeotLy+PI0eOUKtWrXI9StDdmc1mVqxYQZ8+fUhOTi42+VNF9dNPP/HTTz/ZXDa8kcxmMxkZGfj5+cljPe10Zd1d69+iPbmpYo9QqeAujSqXFrcQFVl+fj4pKSm8/vrrPPTQQ26TtMHSxS9fbsXl5OtTOXhYR5XLNW4hKrKvvvqKWrVqkZ6ezuuvv+7qcOzSs2dPPv74Y1eHISoQSdzlYLjY4pYJWISo2AYNGoTRaGTt2rXXHawlREUnibscPOQ+biGEEDeYJO5ysI4qlxa3EEKIG0QSdzkUDU4rKDRjNleqwflCCCFcRBJ3ORgum3dZrnMLIYS4ESRxl0NRixvkOrcQQogbQxJ3OWg1ajQqSxd5XqEkbiGEcGdFU8tWdJK4y+ni+DS5l1sIIdzMjz/+SI8ePYiKisLHx4c773SPGTAlcZfTpcQtLW4hHGnQoEGoVCrrUrVqVe655x527drl6tDETWDmzJkMHTqU++67j99++434+HiWL1/u6rBKRaY8LSdJ3EI4zz333MOnn34KWB7nOXnyZO677z6SkpJcHJlwZ4cPH+bVV19l06ZN3HLLLa4Ox27S4i6nosSdK4lbuAtFgYJs1yx2PtPIYDAQFhZGWFgYMTExTJw4keTkZM6ePWvdZsKECdSrVw8vLy9q167NlClTil2rPHr0KBqNhsDAQDQajbUVn5aWBsD06dOJiYmxbl9QUEB0dLTNNkWioqJsegJUKhU//fSTdf2KFSto164dAQEBVK1alfvuu49Dhw7ZxKJSqYiPjy923Dlz5ljf33333Tz77LPW94mJieh0Ops4zWYzL774IjVq1MBgMBATE8OKFSvsPteVn6Gk83/xxRe0aNECX19fwsLC6NevH2fOnLHZ59dff6VZs2Z4enpa66ZPnz5cy7x586hTpw56vZ769evzxRdf2Ky/MrZnn32Wu++++6qfce3atcV+b/3797c5zsqVK6lTpw6vvPIKwcHB+Pr68sADD3D8+HHrPlf+TWzfvp2AgACb55vPnj2bJk2a4O3tTUREBCNGjCArK+uan9cRpMVdTkWJO1+ucQt3YcyBV6u55tz/dxL03mXaNSsri8WLFxMdHU3VqlWt5b6+vixatIhq1aqxe/duhg4diq+vL88//7x1m6KHIP7000/cfvvtbNq0iQcffPCq53r//fdJSUm56voXX3zR+qjNKx8dmp2dTWxsLE2bNiUrK4upU6dy//33Ex8fX66naz333HPFnij1zjvv8NZbb/Hhhx9y6623snDhQnr16sXevXupW7dumc9VEqPRyEsvvUT9+vU5c+YMsbGxDBo0yNq9nJaWRt++fXnqqaf46aef8PT0ZMyYMdbnjJfkxx9/ZMyYMcyZM4fOnTvz66+/MnjwYGrUqEGHDh0cEve2bdv45ZdfbMrOnj3Lzp078fX15ffffwdgzJgx9OnTh61bt9o8ehVg//79dOvWjcmTJ/PUU09Zy9VqNe+++y61atXi8OHDjBgxgueff54PPvjAIbFfjSTucpKuciGc59dff8XHxwewJMTw8HB+/fVXmwQ4efJk6+uoqCjGjx/P119/bZO4i1rgISEhhIWF2TzL+0qpqam8/PLLTJgwgSlTphRbn5+fT5UqVazPz77SlV8IFi5cSHBwMPv27aNx48al+NTFrVmzhg0bNvDUU0+xZs0aa/mbb77JhAkTePTRRwF4/fXXWbNmDXPmzGHu3LllOtfVDBkyxFrvtWvX5t133+X2228nKysLHx8f/vvvP3JycpgwYQLVqlm+GHp6el4zcb/55psMGjSIESNGABAbG8umTZt48803HZa4Y2Njee6552x+l2azGY1Gw5IlS4iIiABgyZIl1KlTh9WrV9O5c2frtseOHaNLly48/fTTjB8/3ubYl/dIREVF8fLLLzNs2DBJ3BWdTq0AKrkdTLgPnZel5euqc9uhQ4cOzJs3D4ALFy7wwQcfcO+997JlyxYiIyMBWLp0Ke+++y6HDh0iKyuLwsLCYs8zzsjIAMDb+/qt/RdffJEOHTrQrl27EtenpqZe83nJBw4cYOrUqWzevJlz585hNlt645KSksqUuBVFYdy4cUybNo3z589byzMyMjh58iRt27a12b5t27bs3LnTpqxNmzY2X3ZycnKKneexxx5Do7k0qVRubq5NV/G2bdt48cUX2blzJxcuXLD5XI0aNSIiIgKtVstXX33F2LFjS9W7kJCQwNNPP10s/nfeeee6+5bGTz/9xOHDhxk3blyxL2ERERHWpA0QGRlJjRo12LdvnzVxp6Wl0blzZ44fP063bt2KHf+PP/5g5syZ7N+/n4yMDAoLC8nLyyMnJwcvL/v+1u0h17jLSS+3gwl3o1JZuqtdsVzRBXk93t7eREdHEx0dze23384nn3xCdna29TGXGzdu5PHHH6d79+78+uuv7NixgxdeeIGCggKb45w8eRK1Wk1ISMg1z3fgwAE++eSTqz768/jx4xQUFFCrVq2rHqNnz56kpqby8ccfs3nzZjZv3gxQLKbS+vzzz8nOzmbYsGFl2h8sX27i4+OtS1GL+HJvv/22zTYtWrSwrsvOzubee+/Fz8+PL7/8kq1bt/Ljjz8Clz5XeHg48+bN49VXX8XDwwMfHx++/PLLMsdcXkajkeeff55XXnkFT09Pm3WBgYFX3e/ybvJjx47RqlUrpk+fzpAhQ2y+8Bw9epT77ruPpk2b8v3337Nt2zZrL0dZf9elJYm7nKSrXIgbR6VSoVaryc3NBWDDhg1ERkbywgsv0KJFC+rWrcuxY8eK7bd161YaNGhQ7BrxlSZMmMBTTz1FdHR0ievXrVuHp6enTVK73Pnz50lMTGTy5Ml06tSJhg0bcuHCBTs/5SU5OTm88MILvP766+h0Opt1fn5+VKtWjfXr19uUr1+/nkaNGtmURUREWL8ARUdHo9UW72wNCwuz2ebyZHfgwAHOnz/Pa6+9xp133kmDBg2KDUwDGDhwIA0aNODpp58mPj6eXr16XfPzNWzYsFTxl8W8efPw8fGhf//+xdY1aNCA5ORkkpOTrWXHjh3j+PHjNueuXbs2ixYt4oUXXsDPz49JkyZZ123btg2z2cxbb73FHXfcQb169Th58sb0ZElXeTnJBCxCOE9+fj6nT58GLF3l77//PllZWfTs2ROAunXrkpSUxNdff83tt9/Ob7/9Zm0JgqXls3TpUmbPns306dOvea6DBw+SlJTEwYMHS1x/6NAhXnvtNXr37l1spHlaWhoFBQUEBgZStWpVPvroI8LDw0lKSmLixIklHq+goIC8vDzre0VRKCwsxGQyWbuslyxZQvPmza86Mvu5555j2rRp1KlTh5iYGD799FPi4+Md3tKtUaMGer2e9957j2HDhrFnzx5eeumlYtuNGzcOlUrF22+/jU6nw9fXt1hdXRn/I488wq233krnzp1ZtmwZP/zwA3/88YfNdkaj0VpXJpMJs9lsfX+1a+hvvPEGy5YtKzbQDKBLly40bNiQfv368fbbbwOWwWkxMTF07NjRup2vr6/1S86iRYto2bIlDz30EHfeeSfR0dEYjUbee+89evbsyfr165k/f/41atGBlEomPT1dAZT09PRyH6ugoEDpN/sXJXLCr8rsVYkOiK7yKCgoUH766SeloKDA1aG4lbLUW25urrJv3z4lNzfXiZE53sCBAxXAuvj6+iq333678t1339ls99xzzylVq1ZVfHx8lL59+ypvv/224u/vryiKovz7779K7dq1lZkzZypGo1G5cOGCYjKZlDVr1iiAcuHCBUVRFGXatGkKoLz55pvW4165TWRkpE08Vy5r1qxRFEVR4uLilIYNGyoGg0Fp2rSpsnbtWgVQfvzxR0VRFOXIkSPXPM6nn36qKIqitG/fXlGpVMrWrVutMU2bNk1p1qyZ9b3JZFKmT5+uVK9eXdHpdEqzZs2U33//3bq+6Fw7duywqbPIyEjl7bfftr6/PL4i7du3V8aMGaOYTCblwoULyuLFi5WoqCjFYDAorVu3Vn755RebYy9ZskQJDQ1VTpw4YfM77N27d8m/4Is++OADpXbt2opOp1Pq1aunfP755zbrr1VXly9FcRT93u67775ix7n8Mx46dEjp0aOH4uXlpfj4+Cj333+/cvz48avWtaIoyosvvqhER0cr2dnZiqIoyuzZs5Xw8HDF09NT6datm/L555/b/M0U1Z3JZFIU5dr/Fu3JTaqLH6jSyMjIwN/fn/T09GsOMCkNo9HI0A9WsPaUmmfa12bSvQ0dFOXN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65ZbbuHYsWM2ZUajEY1GY30fEBBAWFiY9b1er7e+PnDgAL/88gvr16+nTZs2AHz55ZdERETw008/8fDDD+Pj48PixYtp3749vr6+zJkzhzVr1uDn51diTC+88AJ9+/bljz/+cORHFeKmJIlbiEpm+fLl1pZxkTfeeIPFixeXav+EhAS0Wi2tWrWyllWtWpX69euTkJBgLWvdujXjx4/npZdeYsKECbRr167E423fvp0ff/yRxMRESdxClIIkbiEqmcjIyGJlhw4dol69eg49j9lsZv369Wg0Gg4ePHjV7caNG8f48eMJDw936PmFuFnJNW4hKonU1FQyMzOLlf/777+sWbOGfv36leo4DRs2pLCwkM2bN1vLzp8/T2JiIo0aNbKWzZo1i/3797Nu3TpWrFjBp59+WuxYv/zyC//99x/jx48vwycSonKSxC1EJZGUlERMTAwLFizg4MGDHD58mC+++ILevXtz55132owav5a6devSu3dvhg4dyj///MPOnTt54oknqF69Or179wZgx44dTJ06lU8++YS2bdsye/ZsxowZw+HDh22O9cYbb/Dyyy/j5eXl6I8rxE1LErcQlUTjxo2ZNm0aixYt4o477uCWW27hjTfeYNSoUaxatcpmANr1fPrppzRv3pz77ruP1q1boygKy5cvR6fTkZeXxxNPPMGgQYPo2bMnAE8//TQdOnSgf//+mEwm63Gio6MZOHCgwz+rEDczmYBFCCGEcCPS4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHcyP8DtRbt5d9QrrAAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RSH6UjI3aLvH", + "outputId": "176cf10e-718a-4416-98f5-6e7fa32c6aee" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9206 - loss: 0.2956\n", + "Lossontestdata: 0.2900226414203644\n", + "Accuracyontestdata: 0.9222000241279602\n" + ] + } + ], + "source": [ + "scores=model_1.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores[0])\n", + "print('Accuracyontestdata:',scores[1])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "oHKekiY0aYy2" + }, + "outputs": [], + "source": [ + "#Пункт 8\n", + "model_2l_100 = Sequential()\n", + "model_2l_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))\n", + "model_2l_100.add(Dense(units=num_classes, activation='softmax'))\n", + "# 2. компилируем модель\n", + "model_2l_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 213 + }, + "id": "jOQ74vuTab8l", + "outputId": "3ebe13db-8d47-4256-a8fd-49ee40801aab" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_1\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_1\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_1 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m78,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_1 (Dense)                 │ (None, 100)            │        78,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_2 (Dense)                 │ (None, 10)             │         1,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n" + ], + "text/html": [ + "
 Total params: 79,510 (310.59 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n" + ], + "text/html": [ + "
 Trainable params: 79,510 (310.59 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_2l_100.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rblSqgG8aoSl", + "outputId": "0eb3fa3d-50a7-4b77-fdf6-7b834228ce17" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.5185 - loss: 1.9076 - val_accuracy: 0.8188 - val_loss: 0.9700\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8349 - loss: 0.8532 - val_accuracy: 0.8565 - val_loss: 0.6222\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8649 - loss: 0.5911 - val_accuracy: 0.8718 - val_loss: 0.4999\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8795 - loss: 0.4889 - val_accuracy: 0.8837 - val_loss: 0.4374\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8879 - loss: 0.4305 - val_accuracy: 0.8913 - val_loss: 0.4000\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8955 - loss: 0.3942 - val_accuracy: 0.8972 - val_loss: 0.3744\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8999 - loss: 0.3707 - val_accuracy: 0.9007 - val_loss: 0.3557\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9011 - loss: 0.3581 - val_accuracy: 0.9047 - val_loss: 0.3405\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9034 - loss: 0.3444 - val_accuracy: 0.9067 - val_loss: 0.3298\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9057 - loss: 0.3285 - val_accuracy: 0.9110 - val_loss: 0.3196\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9096 - loss: 0.3217 - val_accuracy: 0.9142 - val_loss: 0.3112\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9111 - loss: 0.3150 - val_accuracy: 0.9152 - val_loss: 0.3043\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9138 - loss: 0.3049 - val_accuracy: 0.9148 - val_loss: 0.2976\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9160 - loss: 0.2993 - val_accuracy: 0.9172 - val_loss: 0.2920\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9176 - loss: 0.2897 - val_accuracy: 0.9162 - val_loss: 0.2876\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9175 - loss: 0.2886 - val_accuracy: 0.9197 - val_loss: 0.2811\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9203 - loss: 0.2774 - val_accuracy: 0.9208 - val_loss: 0.2774\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9189 - loss: 0.2852 - val_accuracy: 0.9228 - val_loss: 0.2725\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9194 - loss: 0.2757 - val_accuracy: 0.9225 - val_loss: 0.2685\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9221 - loss: 0.2701 - val_accuracy: 0.9242 - val_loss: 0.2651\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9230 - loss: 0.2631 - val_accuracy: 0.9257 - val_loss: 0.2615\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9260 - loss: 0.2609 - val_accuracy: 0.9270 - val_loss: 0.2578\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9261 - loss: 0.2607 - val_accuracy: 0.9275 - val_loss: 0.2545\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9262 - loss: 0.2595 - val_accuracy: 0.9288 - val_loss: 0.2509\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9269 - loss: 0.2580 - val_accuracy: 0.9292 - val_loss: 0.2482\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9303 - loss: 0.2420 - val_accuracy: 0.9298 - val_loss: 0.2447\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9322 - loss: 0.2410 - val_accuracy: 0.9303 - val_loss: 0.2412\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9324 - loss: 0.2404 - val_accuracy: 0.9313 - val_loss: 0.2386\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9341 - loss: 0.2307 - val_accuracy: 0.9308 - val_loss: 0.2359\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9303 - loss: 0.2417 - val_accuracy: 0.9323 - val_loss: 0.2333\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9342 - loss: 0.2315 - val_accuracy: 0.9330 - val_loss: 0.2305\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9342 - loss: 0.2296 - val_accuracy: 0.9333 - val_loss: 0.2279\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9357 - loss: 0.2289 - val_accuracy: 0.9340 - val_loss: 0.2257\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9378 - loss: 0.2179 - val_accuracy: 0.9347 - val_loss: 0.2230\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9379 - loss: 0.2208 - val_accuracy: 0.9358 - val_loss: 0.2216\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9375 - loss: 0.2193 - val_accuracy: 0.9365 - val_loss: 0.2182\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9362 - loss: 0.2210 - val_accuracy: 0.9373 - val_loss: 0.2165\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9401 - loss: 0.2116 - val_accuracy: 0.9375 - val_loss: 0.2143\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9411 - loss: 0.2100 - val_accuracy: 0.9385 - val_loss: 0.2121\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9402 - loss: 0.2093 - val_accuracy: 0.9385 - val_loss: 0.2098\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9417 - loss: 0.2065 - val_accuracy: 0.9405 - val_loss: 0.2083\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9413 - loss: 0.2075 - val_accuracy: 0.9398 - val_loss: 0.2063\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9426 - loss: 0.2033 - val_accuracy: 0.9407 - val_loss: 0.2047\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9448 - loss: 0.2010 - val_accuracy: 0.9418 - val_loss: 0.2028\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9448 - loss: 0.1964 - val_accuracy: 0.9412 - val_loss: 0.2012\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9443 - loss: 0.1986 - val_accuracy: 0.9417 - val_loss: 0.1992\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9445 - loss: 0.1920 - val_accuracy: 0.9418 - val_loss: 0.1972\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9451 - loss: 0.1891 - val_accuracy: 0.9428 - val_loss: 0.1954\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9463 - loss: 0.1912 - val_accuracy: 0.9433 - val_loss: 0.1941\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9456 - loss: 0.1900 - val_accuracy: 0.9433 - val_loss: 0.1923\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_2l_100 = model_2l_100.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "id": "3xxN78gZbbQG", + "outputId": "987b070c-a1e5-402d-bf9b-65a81c742bd7" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAHWCAYAAACxPmqWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAgUVJREFUeJzt3Xd8U9X7wPHPbZqke28oLVA2MkRFhl9ACggK4kRRpuAXga/IUOAn04WKIA4UB0MFxI2iiBRkKLKlDBmyZ1taSvdKk/v7I20gtECTpqSlz/v1yqvJuTf3PjktPDnnnnuOoqqqihBCCCGqBBdnByCEEEKIspPELYQQQlQhkriFEEKIKkQStxBCCFGFSOIWQgghqhBJ3EIIIUQVIolbCCGEqEIkcQshhBBViCRuIYRDmEwmUlJSOHbsmLNDEeKmJolbCGG3xMREnnvuOaKiotDpdAQHB9O4cWMyMjKcHZoQNy1XZwcgqp+BAwfy7bffkpWV5exQRDkcOXKETp06YTAYePbZZ7n11ltxdXXF3d0dT09PZ4cnxE1LEre4IS5cuMCSJUv4448/2LhxI7m5udxzzz20bNmSRx99lJYtWzo7RGGj//73v+h0OrZs2UKNGjWcHY4Q1YYii4yIirZs2TKGDh1KVlYW0dHRGAwGEhMTadmyJbt378ZgMDBgwAA+/vhjdDqds8MVZbBz505uu+02Vq9eTZcuXZwdjhDVilzjFhVq06ZNPPnkk4SFhbFp0yaOHz9ObGwsbm5ubN++nXPnzvH444/z2WefMXr0aABUVSU6Opr777+/xPHy8vLw9fXlv//9LwDr169HURS+/fbbEvt6eXkxcOBAy+tFixahKAonTpywlP3zzz/4+/tz3333UVhYaLXfjh07rI6XkpKCoihMmzbNqry0spkzZ6IoCh07drQqP3bsGI888ggRERG4uLigKAqKotC0adNrVSMAhYWFvPzyy9StWxe9Xk90dDT/93//R35+vtV+0dHR3HfffVZlI0eORFEUq7I1a9agKAo///yzpaxjx44lYt6+fbslzmJbtmzBzc2No0eP0qRJE/R6PWFhYfz3v/8lNTXV6v2lHfPVV1/FxcWFpUuX2nzuq+nYsaNl39Iel//eAT744ANL7BEREYwYMYK0tLRrniMzM5MhQ4YQFRWFXq+nZs2aDBs2jKSkJKv9iv+Grva48u9l165ddO/eHR8fH7y8vOjcuTNbtmyxbFdVlU6dOhEcHMz58+ct5QUFBdxyyy3UrVuX7OxsAE6ePMnw4cNp0KAB7u7uBAYG8sgjj5T4/MUx6nQ6kpOTrbZt3rzZEuuV/w6E80lXuahQr7/+OiaTiWXLltGqVasS24OCgvj888/Zv38/H330EVOnTiUkJIQnn3ySN998k9TUVAICAiz7r1ixgoyMDJ588slyx3b69GnuueceGjZsyNdff42rq2P+OaSlpTFjxowS5UajkV69enHy5Emee+456tevj6IovPrqq2U67pAhQ/jss894+OGHGTt2LFu3bmXGjBkcOHCAH374wSGxl2b8+PElyi5cuEBeXh7PPPMMd999N8OGDePo0aPMnTuXrVu3snXrVvR6fanHW7hwIZMmTWLWrFn07dvX5nNfS82aNUvU/cqVK/nyyy+tyqZNm8b06dOJjY3lmWee4dChQ3z44Yds376dTZs2odVqSz1+amoqe/bsYciQIYSFhXHkyBHmzZvHqlWr2LZtGyEhIVb7v/TSS9SuXdvyOisri2eeecZqn3/++Ye77roLHx8fXnjhBbRaLR999BEdO3Zkw4YNtG7dGkVRWLBgAc2aNWPYsGF8//33AEydOpV//vmH9evXW8YVbN++nb/++ovHHnuMmjVrcuLECT788EM6duzI/v378fDwsDq/RqNh8eLFli/OYP4dubm5kZeXV5ZqFzeaKkQFCggIUKOioqzKBgwYoHp6elqVTZ48WQXUFStWqKqqqocOHVIB9cMPP7Tar1evXmp0dLRqMplUVVXVdevWqYD6zTfflDi3p6enOmDAAMvrhQsXqoB6/PhxNTU1VW3cuLHaoEEDNSUlxep9xftt377dqjw5OVkF1KlTp1qVX1n2wgsvqCEhIWqrVq3UDh06WMqLP9OMGTOs3t+hQwe1SZMmJeK/XHx8vAqoQ4YMsSofN26cCqi///67pSwqKkq99957rfYbMWKEeuU/97i4OKs6L47l8phXrlypAuo999xj9f6pU6eqgNq5c2e1sLDQUl5cd++9916px/zll19UV1dXdezYsSU+Y1nPfTVXq8eZM2dafu+qqqrnz59XdTqd2rVrV9VoNFr2e//991VAXbBgwXXPdbl9+/aper1eHTx4sKXMlr+h3r17qzqdTj169Kil7Ny5c6q3t7f6n//8x+r9H330kQqoixcvVrds2aJqNBr1ueees9onJyenRIybN29WAfXzzz8vEePjjz+u3nLLLZby7Oxs1cfHR+3bt2+pn0E4n3SViwqVmZlZohVSmtDQUADLbUT169endevWLFmyxLJPamoqv/76K0888USJrtPMzExSUlKsHleTl5dHr169SE5OZtWqVQQGBtrz0Up19uxZ3nvvPSZPnoyXl1eJGAG7zrdy5UoAxowZY1U+duxYAH755Rd7wr0mVVWZOHEiDz30EK1bty51nzFjxqDRaCyv+/XrR2hoaKnxbNu2jUcffZSHHnqImTNnlvvc9lqzZg0FBQU899xzuLhc+i9w6NCh+Pj4XLcui+9XL36EhobSo0cPvvvuO0wmk02xGI1GVq9eTe/evalTp46lPDw8nL59+/Lnn39a3Vr39NNP061bN/73v//Rr18/6taty2uvvWZ1THd3d8tzg8HAhQsXiImJwc/Pj7///rtEDP369ePgwYOWLvHvvvsOX19fOnfubNNnETeOJG5RoSIiIjh69Oh19zty5AiA1ejk/v37s2nTJk6ePAnAN998g8FgoF+/fiXeP3jwYIKDg60exdf8rjRo0CD+/PNPMjMzLde1HWXq1KlERERYrsFfrkGDBvj7+zNr1iw2bdpEcnIyKSkpGAyG6x735MmTuLi4EBMTY1UeFhaGn5+fpY4cacmSJfzzzz8lEgNg+eLUsGFDq3KNRkO9evVKXE89e/Ys9957L9nZ2Vy4cOG616yvde7yKq6rBg0aWJXrdDrq1Klz3bo8depUib+1H374gfT09Gt+YSxNcnIyOTk5JWIBaNSoESaTidOnT1uVz58/n5ycHA4fPsyiRYusEjVAbm4uU6ZMITIyEr1eT1BQEMHBwaSlpZGenl7iPMHBwdx7770sWLAAgAULFjBgwACrLzWicpHfjKhQ9913H6mpqcyfP/+q+yQlJfHZZ58RHBzMnXfeaSl/7LHH0Gq1llb34sWLue2220r9T27KlCnExcVZPdzc3Eo9399//82PP/5IcHAwTz/9dDk/4SUHDhxg0aJFvPLKK6VeI/Xy8uKrr74iOzub9u3bExISQnBwMH/99VeZz1GWQVqOUFBQwOTJk3nqqaeoX79+ie1XJovrOXLkCLVq1eKLL75gzZo1fPbZZ3af29nCwsJK/K09/vjjN+z869evtwxI3Lt3b4nt//vf/3j11Vd59NFH+frrr1m9ejVxcXEEBgZetUdg8ODBfPnllxw4cICNGzdaDeoUlY8MThMVatKkSSxfvpxnnnmGgwcP0rdvX4xGI2Buuaxdu5YpU6Zw8eJFli5dajWgKSAggHvvvZclS5bwxBNPsGnTJubMmVPqeW655RZiY2Otyi7vwr3cp59+Sq9evdBoNNx3333Mnz+fp556qtyfdeLEibRo0YI+ffpcdZ8uXbrw5ptv8sQTTzBv3jzq1KnD2LFjLXVyNVFRUZhMJg4fPkyjRo0s5UlJSaSlpREVFVXu+C/3wQcfcP78+RKjn4sVD7g6dOiQVRdvcYxX3pcfHh7OypUrCQ0N5ccff2Ts2LH06NGD4OBgm89dXsV1dWXsBQUFlrsersXNza3EPu+++y4+Pj4EBQXZFEtwcDAeHh4cOnSoxLaDBw/i4uJCZGSkpSwhIYH//e9/dO3aFZ1Ox7hx4+jWrZvV7//bb79lwIABzJo1y1KWl5d3zRHz3bt3x83Njccee4z27dtTt25d/vjjD5s+i7hxpMUtKlRYWBibN2+me/fuzJo1i1tvvZXFixeTnZ1NVFQUgwcPxt3dnRUrVpTaaunXrx/79+/n+eefR6PR8Nhjj5U7prvuuguAe++9l8cee4znn3++xO08ttq8eTM//vgjr7/++jVbxadPn2b48OE8++yzPP3008TGxuLv73/d4/fo0QOgxBeX2bNnA+bP4iiZmZm8+uqrjB49mrCwsFL36dy5M3q9nnfffdeqFbdkyRKSkpJK3I5Wv359yziG9957D5PJxKhRo+w6d3nFxsai0+l49913US+bxmL+/Pmkp6dfsy5La7Hu2rWLX3/9ld69e9vcvazRaOjatSs//vij1eWFpKQkli5dSvv27fHx8bGUDx06FJPJxPz58/n4449xdXXlqaeesvocGo3G6jWY6/xaXw5dXV3p378/e/bsYfDgwTZ9BnHjSYtbVLjIyEh+/PFHEhIS2LRpEzNnziQ+Pp558+bRokULWrRocdVkd++99xIYGMg333xD9+7dyzTQzRbvvPMOjRo14n//+x9ff/211bbNmzdbXbMsHiR05MgRtm3bxh133GHZVjwRybVaayaTiX79+lGzZk1ef/11m+Js3ry5ZZKatLQ0OnTowLZt2/jss8/o3bs3nTp1stq/eOBdsVOnTgFYlcXHx5d6rr///pugoCBeeOGFq8YTEBDApEmTmDx5Mt26deP+++/n2LFjvP/++zRv3pwhQ4Zc9b1hYWHMnDmTIUOG8OSTT1q+lJT13OUVHBzMxIkTmT59Ovfccw+9evXi0KFDfPDBB9x+++3XvNXw1KlT3HvvvTzyyCPUqFGDffv28cknnxAUFGT39fhXXnmFuLg42rdvz/Dhw3F1deWjjz4iPz+fN99807LfwoUL+eWXX1i0aBE1a9YEzAn5ySef5MMPP2T48OGA+fLUF198ga+vL40bN2bz5s2sWbPmuoMiX375ZZ5//vkyfZEUTubUMe2iWirtdrBrGT58uAqoS5cuLbHN3tvBLvfZZ5+pgPrTTz9Z7Xetx+W3LQGqoijqzp07rY575e1Nr732mqrX69Xdu3eX2O96t4OpqqoaDAZ1+vTpau3atVWtVqtGRkaqEydOVPPy8qz2i4qKum78lz+uvB0MUN9++22rYxbf/nWluXPnqg0bNlS1Wq0aGhqq/ve//1UvXLhwzXoodvfdd6u1atVSMzMz7Tr3lcp6O1ix999/3yr2Z555Rr148eI1z5GZmakOHTpUjYqKUnU6nRocHKz269dPPXnypNV+tt5S+Pfff6vdunVTvby8VA8PD7VTp07qX3/9Zdl++vRp1dfXV+3Zs2eJmB544AHV09NTPXbsmKqqqnrx4kV10KBBalBQkOrl5aV269ZNPXjwoBoVFVXqv4er3e51ve3CeWTKU1HpjR49mvnz55OYmFhi8ghnmDZtGuvXr2f9+vXODkUIUQ3JNW5RqeXl5bF48WIeeuihSpG0hRDC2eQat6iUzp8/z5o1a/j222+5cOFCqQOZnCUmJoacnBxnhyGEqKakq1xUSuvXr6dTp06EhIQwefJkRo4c6eyQhBCiUpDELYQQQlQhTr3GvXHjRnr27ElERASKorB8+fLrvic/P58XX3zRsqxedHS0Zao+IYQQ4mbn1Gvc2dnZNG/enMGDB/Pggw+W6T2PPvooSUlJzJ8/n5iYGBISEmye2F8IIYSoqpyauLt370737t3LvP+qVavYsGEDx44ds6zRHB0dfc335OfnW+b1BfMkGKmpqQQGBt6weZ+FEEKIa1FVlczMTCIiIq47A1+VGlX+008/cdttt/Hmm2/yxRdf4OnpSa9evXj55ZevuujBjBkzmD59+g2OVAghhLDd6dOnLTPjXU2VStzHjh3jzz//xM3NjR9++IGUlBSGDx/OhQsXWLhwYanvmThxotUaxunp6dSqVYvjx4/j7e1d7pgMBgPr1q2jU6dOpa4IJUon9WYfqTf7Sd3ZR+rNfrbUXWZmJrVr1y5TXqpSidtkMqEoCkuWLMHX1xcwL7Lw8MMP88EHH5Ta6tbr9VYrThULCAiwmrzfXgaDAQ8PDwIDA+WP2gZSb/aRerOf1J19pN7sZ0vdFW8vyyXcKjVzWnh4ODVq1LAkbTAvNq+qKmfOnHFiZEIIIcSNUaUSd7t27Th37hxZWVmWsn///RcXF5frXhMQQgghbgZOTdxZWVnEx8dblhc8fvw48fHxliUIJ06cSP/+/S379+3bl8DAQAYNGsT+/fvZuHEjzz//vGVNZyGEEOJm59Rr3Dt27LBaR7h4ENmAAQNYtGgRCQkJliQO4OXlRVxcHP/73/+47bbbCAwM5NFHH+WVV1654bELUdWoqkphYSFGo9HZoTiFwWDA1dWVvLy8alsH9pB6s19x3RXfkuzq6uqQ25Cdmrg7duzItWZcXbRoUYmyhg0bEhcXV4FRCXHzKSgoICEhoVovjqKqKmFhYZw+fVrmcLCB1Jv9iuvu1KlTKIqCh4cH4eHh6HS6ch23So0qF0LYzmQycfz4cTQaDREREeh0umr5H7DJZCIrKwsvL6/rTnAhLpF6s19x3Xl6elJYWEhycjLHjx+nXr165apLSdxC3OQKCgowmUxERkZW6zXNTSYTBQUFuLm5SQKygdSb/Yrrzt3dHRcXF7RaLSdPnrTUp73ktyBENSH/6QrhXI76Nyj/koUQQogqRBK3EOKmZDAYnB2CsIP83q5PErcQ4qYQHx/PgAEDqF+/Pv7+/vj4+JCenu7ssMR1HDt2jGeeeYbGjRsTGBiIu7s7Bw8edHZYlZokbiFEpXX69GkGDx5sGQ0fFRXFqFGjuHDhgtV+69evp3379oSFhbFs2TK2b9/OkSNHrKZHFpXPgQMHaNWqFYWFhSxYsICtW7dy9OhRGjZs6OzQKjUZVS6EqJSOHTtGmzZtqF+/Pl9++SW1a9fmn3/+4fnnn+fXX39ly5YtBAQEoKoqQ4cOZc6cOQwZMsTZYQsbjBw5khEjRsgkWjaSFnc5LN91lp7v/8WPJ6UaRdWhqio5BYVOeVxrwqUrjRgxAp1Ox+rVq+nQoQO1atWie/furFmzhrNnz/Liiy8CcPDgQU6ePMmRI0eIiorCzc2NO++8kz///NPyeWNiYpg1a5bV8ePj41EUhSNHjrB+/XoURSEtLc2yfeDAgfTu3dvyetWqVbRv3x4/Pz8CAwO57777OHr0qGX7iRMnUBTFMoXz2bNneeSRRwgJCcHb25sHHnjAajGkadOm0aJFC8vrtLQ0FEVh/fr1V43h6NGj3H///YSGhuLl5cXtt9/OmjVrrD5XQkICDz74IIGBgSiKYnlc/tmutHfvXu6++27c3d0JDAzk6aeftloTYvjw4TzwwAMl6u7EiROWso4dO/Lcc89ZXkdHRzNnzhzL67Vr16IoiuXzZGdns27dOgoKCqhXrx5ubm7ccsst/Pjjj1et0/z8fGJjY4mNjbXMRrZ9+3a6dOlCUFAQvr6+dOjQgb///vuqn/VmIC3ucsjIM3AwKQu3AGdHIkTZ5RqMNJ7ym1POvf+lbnjorv/fTmpqKr/99huvvvpqiXUIwsLCeOKJJ/jqq6/44IMPSE5OxmAw8MUXX/DJJ59Qu3Zt3nnnHe655x4OHz5MeHg4gwcPZtGiRQwdOtRynIULF/Kf//yHmJiYMq0umJ2dzZgxY2jWrBlZWVlMmTKFBx54gPj4+BK3+RgMBnr06IFWq2XFihVotVpGjRpF79692b59u90T4GRlZdGjRw9effVV9Ho9n3/+OT179uTQoUPUqlULgLFjx/Lvv/+yatUqIiMj+euvv3jooYeu+bm6detGmzZt2L59O+fPn2fIkCGMHDmy1Nkr7WEymRg7dixeXl6WsgsXLqCqKh999BHz5s2jVatWLF26lAcffJCdO3dafakBMBqNPPbYY2RlZbFmzRrLcs2ZmZkMGDCA9957D1VVmTVrFj169ODw4cNlWtu6KpKmYjm4aTUAFJicHIgQN5nDhw+jqiqNGjUqdXujRo24ePEiycnJmEzmf4AzZ86kR48eNGrUiA8++ICIiAjmzp0LmFuuhw4dYufOnYA5sS5dupTBgwcDWL4c5ObmXjWmhx56iAcffJCYmBhatGjBggUL2Lt3L/v37y+x75o1a9izZw+ff/45rVu35tZbb2XJkiXEx8ezdu1au+ulefPm/Pe//6Vp06bUq1ePl19+mbp16/LTTz9Z9omPj6dv377cfvvthIWFERBw7ZbF0qVLycvL4/PPP6dp06bcfffdvP/++3zxxRckJSXZHevlPvvsM/Lz87n//vstZcW/t/Hjx/P4449Tv359pk2bRqdOnXjrrbes3q+qKoMGDeLIkSOsXLnS6gvA3XffzZNPPknDhg1p1KgRH3/8MTk5OWzYsMEhsVdG0uIuB3dJ3KIKctdq2P9SN6ed2xa2dK23a9fO8tzFxYW2bdtakmpERAQ9evRg8eLFdOrUiRUrVpCfn88jjzwCQL169dDpdHz55ZeWxY6udPjwYaZMmcLWrVtJSUmxJJ5Tp07RtGlTy35t27bFaDTi5+dH48aNLeW1atUiMjKS/fv3ExsbW/ZKuExWVhbTpk3jl19+ISEhgcLCQnJzc60WY6pduzYrV65k2LBh103aYB4g1rx5czw9PS1l7dq1w2QycejQIYKDg+2KtVhOTg6TJk1i3rx5fPfddyW2X/57A2jfvr3VFxGA559/nrVr1zJo0KASnykpKYlJkyaxfv16zp8/j9FoJCcnx6pObjbS4i6H4v+EDKbqN++zqLoURcFD5+qUR1m7iGNiYlAUhQMHDpS6/cCBA/j7+xMcHIy/v/81P2uxp556iu+//57c3FwWLlxInz59LFPABgQEMHv2bCZMmIC7uzteXl4sWbLE6lg9e/YkNTWVTz75hK1bt7J161bAPKXs5b766itefvnlMsVkq3HjxvHDDz/w2muv8ccffxAfH88tt9xiFcPbb79Nfn4+QUFBeHl50b17d7vP5wgzZ86kQYMG9OzZ06q8rL83MP++f/31V5YtW8Zvv1lf5hkwYADx8fG88847/PXXX8THxxMYGFji93IzkcRdDu66oha3rHQnhEMFBgbSpUsXPvjggxLd14mJiSxZsoQ+ffqgKAp169bF1dWVTZs2WfYxmUz89ddfVi3eHj164Onpybx581i1apWlm7zYiBEjSE9PZ9++fcTHx9OrVy/LtgsXLnDo0CEmTZpE586dLV31pYmMjKR9+/akpaVZdaOfPn2a06dPW8Vkq02bNjFw4EAeeOABbrnlFsLCwqwGiAHUr1+fgQMHEh0dzdatW/n000+vecxGjRqxe/dusrOzrc7j4uJCgwYN7I4VzAPlZs2aVWJgIICvry9hYWFWvzeAP//8s0QdffHFF9xzzz28/PLLDB06lIyMDKtYn332WXr06EGTJk3Q6/WkpKSUK+7KThJ3OVgSt3SVC+Fw77//Pvn5+XTr1o2NGzdy+vRpVq1aRZcuXahRowavvvoqAF5eXgwdOpTnn3+elStXcuDAAYYPH865c+cYPny45XgajYbHH3+c//u//6NevXq0adOmxDnd3d2pW7cuMTExVgOb/P39CQwM5OOPP+bIkSP8/vvvV+1SB3N3eevWrenfvz/btm3j77//5oknnqBFixbcfffdlv1UVSUvL4+8vDzLKOmCggJLmdFoxGQyWWYTq1evHt9//z3x8fHs3r2bvn37Wrrsi23ZsoX/+7//49tvv6VJkybUqFHjmvX8xBNP4ObmxoABA9i3bx/r1q3jf//7H/369SM0NNSyn8lkssRV3JrNz8+3lF0ZB8DcuXN54IEHaNmyZannHj16NG+88QbLli3j33//Zdq0aaxbt45x48ZZ7VfcPT569GgiIyOt6r5evXp88cUXHDhwgK1bt/LEE0+UGNB4s5HEXQ6XusqdHIgQN6F69eqxY8cO6tSpw6OPPkrdunV5+umn6dSpE5s3b7a61vnWW2/Ru3dvBgwYQIsWLdi9eze//fYb4eHhVsfs168fBQUFDBo0yKZYXFxcWLZsGTt37qRp06aMHj2amTNnXvM93333HZGRkXTu3JkOHToQFBTE8uXLrbqB9+zZg7u7O+7u7oSFhQHQrVs3S9nixYtZsWKFZTT87Nmz8ff3p23btvTs2ZNu3bpx6623Wo6XnJzMI488wuzZs63Kr8XDw4PffvuN1NRUbr/9dh5++GE6d+7M+++/b7Xfzz//bImrdevWADRs2NBS9scff5Q4tslksnzBKs3YsWN59tlnGTt2LE2bNuX777/n+++/p3nz5qXu7+LiwsKFC1m6dCmrV68GYP78+Vy8eJFbb72Vfv368eyzzxISElKmz15VKaotoz9uAhkZGfj6+pKeno6Pj0+5jnUiJZuOb63HTaOyd1o3tFqtg6K8+RkMBlauXGm5ZUaUjT31lpeXx/Hjx6ldu3a5lhKs6kwmE6tWraJ3796cPn3aqjVZmS1fvpzly5c77NYsW5lMJjIyMvDx8ZEV5mx0Zd1d69+iLblJRpWXw+XXuKvZ9x8hqpT8/HySkpJ44403ePjhh6tM0gZzF798uRWXk69P5VB8H7cJBYNRErcQlVXxlKnp6em88cYbzg7HJj179uSTTz5xdhiiEpHEXQ6X35OaZ5Ch5UJUVgMHDsRgMLB+/frrDtYSorKTxF0OWo2CxsU80CRXErcQQogbQBJ3OSiKgpvWXIV5MrRcCCHEDSCJu5yKu8ulxS2EEOJGkMRdTm6SuIUQQtxAkrjLyd3SVS6JWwghRMWTxF1Ol7rK5Rq3EEJUZcVTy1Z2krjLqbirPE9WGhFCiCrlhx9+4N577yU6OhovLy/uuusuZ4dUJpK4y0kGpwlRMQYOHIiiKJZHYGAg99xzD3v27HF2aOImMGPGDIYOHcp9993HL7/8Qnx8PCtXrnR2WGUiU56Wk5tc4xaiwtxzzz0sXLgQMC/nOWnSJO677z5OnTrl5MhEVXbs2DFee+01tmzZQpMmTZwdjs2kxV1Oco1bVDmqCgXZznnYOKe/Xq8nLCyMsLAwWrRowYQJEzh9+jTJycmWfcaPH0/9+vXx8PCgTp06TJ48ucS1yhMnTqDRaPD390ej0Vha8WlpaQBMmzaNFi1aWPYvKCggJibGap9i0dHRVj0BiqKwfPlyy/ZVq1bRvn17/Pz8CAwM5L777uPo0aNWsSiKQnx8fInjzpkzx/K6Y8eOPPfcc5bXhw4dQqvVWsVpMpl46aWXqFmzJnq9nhYtWrBq1Sqbz3XlZyjt/F988QW33XYb3t7ehIWF0bdvX86fP2/1np9//pnmzZvj7u5uqZvevXtzLR9++CF169ZFp9PRoEEDvvjiC6vtV8b23HPP0bFjx6t+xvXr15f4vfXr18/qOL/99ht169bl1VdfJTg4GG9vbx588EHOnDljec+VfxN///03fn5+Vuubz549m1tuuQVPT08iIyMZPnw4WVlZ1/y8jiAt7nJy00lXuahiDDnwWoRzzv1/50Dnaddbs7KyWLx4MTExMQQGBlrKvb29WbRoEREREezdu5ehQ4fi7e3NCy+8YNmneBGg5cuXc/vtt7NlyxYeeuihq57r/fffJykp6arbX3rpJctSm1cuHZqdnc2YMWNo1qwZWVlZTJkyhQceeID4+Phyra71/PPPl1hR6p133mHWrFl89NFHtGzZkgULFtCrVy/++ecf6tWrZ/e5SmMwGHj55Zdp0KAB58+fZ8yYMQwcONDSvZyWlkafPn0YMmQIy5cvx93dnVGjRlnWGS/NDz/8wKhRo5gzZw6xsbH8/PPPDBo0iJo1a9KpUyeHxL1z505++uknq7Lk5GR2796Nt7c3v/76KwCjRo2id+/ebN++3WrpVYCDBw/SrVs3Jk2axJAhQyzlLi4uvPvuu9SuXZtjx44xfPhwXnjhBT744AOHxH41krjLqbjFLV3lQjjezz//jJeXF2BOiOHh4fz8889WCXDSpEmW59HR0YwbN45ly5ZZJe7iFnhISAhhYWFWa3lfKTU1lVdeeYXx48czefLkEtvz8/MJCAiwrJ99pSu/ECxYsIDg4GD2799P06ZNy/CpS1q3bh1//fUXQ4YMYd26dZbyt956i/Hjx/PYY48B8MYbb7Bu3TrmzJnD3Llz7TrX1QwePNhS73Xq1OHdd9/l9ttvJysrCy8vL/79919ycnIYP348ERHmL4bu7u7XTNxvvfUWAwcOZPjw4QCMGTOGLVu28NZbbzkscY8ZM4bnn3/e6ndpMpnQaDQsXbqUyMhIAJYuXUrdunVZu3YtsbGxln1PnjxJly5dePrppxk3bpzVsS/vkYiOjuaVV15h2LBhkrgru+Jr3NJVLqoMrYe55eusc9ugU6dOfPjhhwBcvHiRDz74gO7du7Nt2zaioqIA+Oqrr3j33Xc5evQoWVlZFBYWlljPOCMjAwBPz+u39l966SU6depE+/btS92empp6zfWSDx8+zJQpU9i6dSspKSmYTOb/G06dOmVX4lZVlbFjxzJ16lQuXLhgKc/IyODcuXO0a9fOav927dqxe/duq7K2bdtafdnJyckpcZ7HH38cjebSwkm5ublWXcU7d+7kpZdeYvfu3Vy8eNHqczVu3JjIyEhcXV358ssvGT16dJl6Fw4cOMDTTz9dIv533nnnuu8ti+XLl3Ps2DHGjh1b4ktYZGSkJWkDREVFUbNmTfbv329J3GlpacTGxnLmzBm6detW4vhr1qxhxowZHDx4kIyMDAoLC8nLyyMnJwcPD9v+1m0h17jLSVrcospRFHN3tTMeV3RBXo+npycxMTHExMRw++238+mnn5KdnW1Z5nLz5s088cQT9OjRg59//pldu3bx4osvUlBQYHWcc+fO4eLiQkhIyDXPd/jwYT799NOrLv155swZCgoKqF279lWP0bNnT1JTU/nkk0/YunUrW7duBSgRU1l9/vnnZGdnM2zYMLveD+YvN/Hx8ZZHcYv4cm+//bbVPrfddptlW3Z2Nt27d8fHx4clS5awfft2fvjhB+DS5woPD+fDDz/ktddew83NDS8vL5YsWWJ3zOVlMBh44YUXePXVV3F3d7fa5u/vf9X3Xd5NfvLkSVq3bs20adMYPHiw1ReeEydOcN9999GsWTO+++47du7caenlsPd3XVaSuMvJMuWp3MctRIVTFAUXFxdyc3MB+Ouvv4iKiuLFF1/ktttuo169epw8ebLE+7Zv307Dhg1LXCO+0vjx4xkyZAgxMTGlbt+wYQPu7u5WSe1yFy5c4NChQ0yaNInOnTvTqFEjLl68aOOnvCQnJ4cXX3yRN954A61Wa7XNx8eHiIgINm3aZFW+adMmGjdubFUWGRlp+QIUExODq2vJztawsDCrfS5PdocPH+bChQu8/vrr3HXXXTRs2LDEwDSAAQMG0LBhQ55++mni4+Pp1avXNT9fo0aNyhS/PT788EO8vLzo169fiW0NGzbk9OnTnD592lJ28uRJzpw5Y3XuOnXqsGjRIl588UV8fHyYOHGiZdvOnTsxmUzMmjWLO++8k/r163Pu3I3pyZKu8nKSFrcQFSc/P5/ExETA3FX+/vvvk5WVRc+ePQGoV68ep06dYtmyZdx+++388ssvlpYgmFs+X331FbNnz2batGnXPNeRI0c4deoUR44cKXX70aNHef3117n//vtLjDRPS0ujoKAAf39/AgMD+fjjjwkPD+fUqVNMmDCh1OMVFBSQl5dnea2qKoWFhRiNRkuX9dKlS2nVqtVVR2Y///zzTJ06lbp169KiRQsWLlxIfHy8w1u6NWvWRKfT8d577zFs2DD27dvHyy+/XGK/sWPHoigKb7/9NlqtFm9v7xJ1dWX8jz76KC1btiQ2NpYVK1bw/fffs2bNGqv9DAaDpa6MRiMmk8ny+mrX0N98801WrFhRYqAZQJcuXWjUqBF9+/bl7bffBsyD01q0aMHdd99t2c/b29vyJWfRokXccccdPPzww9x1113ExMRgMBh477336NmzJ5s2bWLevHnXqEUHUquZ9PR0FVDT09Mdcrxvtp1Qo8b/rPb9eLNDjlddFBQUqMuXL1cLCgqcHUqVYk+95ebmqvv371dzc3MrMDLHGzBggApYHt7e3urtt9+ufvvtt1b7Pf/882pgYKDq5eWl9unTR3377bdVX19fVVVVdceOHWqdOnXUGTNmqAaDQb148aJqNBrVdevWqYB68eJFVVVVderUqSqgvvXWW5bjXrlPVFSUVTxXPtatW6eqqqrGxcWpjRo1UvV6vdqsWTN1/fr1KqD+8MMPqqqq6vHjx695nIULF6qqqqodOnRQFUVRt2/fbolp6tSpavPmzS2vjUajOm3aNLVGjRqqVqtVmzdvrv7666+W7cXn2rVrl1WdRUVFqW+//bbl9eXxFevQoYM6atQo1Wg0qhcvXlQXL16sRkdHq3q9Xm3Tpo36008/WR176dKlamhoqHr27Fmr3+H9999f+i+4yAcffKDWqVNH1Wq1av369dXPP//cavu16uryR3Ecxb+3++67r8RxLv+MR48eVe+9917Vw8ND9fLyUh944AH1zJkzV61rVVXVl156SY2JiVGzs7NVVVXV2bNnq+Hh4aq7u7varVs39fPPP7f6mymuO6PRqKrqtf8t2pKblKIPVG1kZGTg6+tLenr6NQeYlNUvu88w4svdtKrlx3fD213/DQIwf4NeuXIlPXr0KNEFKK7OnnrLy8vj+PHj1K5d+7pdxTczk8lERkYGPj4+dt2WFR0dzfr164mOji6xrXfv3iXuL7bHc889R4sWLRg4cGC5juNI5a236uzKurvWv0VbcpP8FspJpjwVonoIDg62GnV9OX9/f3Q6XbnPodVqr3oOIYrJNe5yksFpQlQP27dvv+q24mlZy2vmzJkOOY64uUmLu5ykxS2EEOJGcmri3rhxIz179iQiIqLUuXKvZdOmTbi6ulpNEOAMlxYZkQlYhBBCVDynJu7s7GyaN29u89R8aWlp9O/fn86dO1dQZGXnLnOViyqimo1DFaLScdS/Qade4+7evTvdu3e3+X3Dhg2jb9++aDSa67bS8/Pzre7zK5760GAwlFhByB6umFva+YUm8vMLcHGxbWao6qq47h3xO6hO7K03VVXJyspCr9dXRFhVQvF/mqqqWqbrFNcn9Wa/K+suKyvLUnblv2Fb/k1XucFpCxcu5NixYyxevJhXXnnluvvPmDGD6dOnlyhfvXq1Q+aSzTdCcTX++Muv6GVAqE3i4uKcHUKVZGu9eXt7k5+fT15eHjqdrtRJKaqLy+f7FmUn9Wa/lJQUCgoKSElJ4eLFixw+fLjEPqXNH381VSpxHz58mAkTJvDHH3+UOmVfaSZOnMiYMWMsrzMyMoiMjKRr164OuY87v6CAF7atB+A/d8cS6Fn+W0KqA4PBQFxcHF26dJH7uG1gb72pqsr58+ctPU7Vkaqq5OXl4ebmVq2/uNhK6s1+V9ZdcHAwTZo0KbUebfm3WWUSt9FopG/fvkyfPp369euX+X16vb7U7kGtVuuwhKFVVAyqQqGqSBKykSN/D9WJPfVWs2ZNjEZjtb08YTAY2LhxI//5z3/kb84GUm/2K667Dh064O7ufs179G2p2yqTuDMzM9mxYwe7du1i5MiRgHlWGlVVcXV1ZfXq1VZzzN5IWg0YCmW+clH5aTSaajvBh0ajobCwEDc3N0lANpB6s19x3en1eof+u6syidvHx4e9e/dalX3wwQf8/vvvfPvtt9dcZq+i6VwgB8gtkIEbQgghKpZTE3dWVpbVSjzHjx8nPj6egIAAatWqxcSJEzl79iyff/45Li4uJRahDwkJwc3Nza7F6R1JV3RTndwSJoQQoqI5NXHv2LGDTp06WV4XDyIbMGAAixYtIiEhgVOnTjkrvDLTSuIWQghxgzg1cXfs2PGaN6QvWrTomu+fNm3addfYvRGK5mCR+cqFEEJUOJmr3AG0LuYvHzI4TQghREWTxO0Aco1bCCHEjSKJ2wEsiVu6yoUQQlQwSdwOIIPThBBC3CiSuB2geHCaXOMWQghR0SRxO4B0lQshhLhRJHE7QPGocukqF0IIUdEkcTuAjCoXQghxo0jidgC5xi2EEOJGkcTtAMUt7hy5xi2EEKKCSeJ2ABmcJoQQ4kaRxO0AWukqF0IIcYNI4nYAGZwmhBDiRpHE7QA6uR1MCCHEDSKJ2wEsU54WmJwbiBBCiJueJG4HKO4ql2vcQgghKpokbgcovo8712BEVVXnBiOEEOKmJonbAYq7yo0mFYNRErcQQoiKI4nbAXSX1aIMUBNCCFGRJHE7gEYBjYsCyHVuIYQQFUsStwMoCrgV9ZfL7GlCCCEqkiRuB3Evmj5NusqFEEJUJEncDuImiVsIIcQNIInbQdyLusrzpKtcCCFEBZLE7SDSVS6EEOJGkMTtINJVLoQQ4kaQxO0glha3dJULIYSoQJK4HaT4djC5j1sIIURFksTtIHKNWwghxI0gidtB3HTFXeWytKcQQoiKI4nbQaTFLYQQ4kaQxO0gl6Y8LXRyJEIIIW5mkrgdxENa3EIIIW4ASdwOYrnGbZBr3EIIISqOJG4Hkfu4hRBC3AiSuB2keOY0uY9bCCFERZLE7SDFi4zINW4hhBAVSRK3g0hXuRBCiBtBEreDSFe5EEKIG0ESt4PIBCxCCCFuBEncDuIm17iFEELcAE5N3Bs3bqRnz55ERESgKArLly+/5v7ff/89Xbp0ITg4GB8fH9q0acNvv/12Y4K9DnedXOMWQghR8ZyauLOzs2nevDlz584t0/4bN26kS5curFy5kp07d9KpUyd69uzJrl27KjjS6yu+xp1faMJkUp0cjRBCiJuVqzNP3r17d7p3717m/efMmWP1+rXXXuPHH39kxYoVtGzZstT35Ofnk5+fb3mdkZEBgMFgwGAw2B70FYqP4cqlGdMyc/Pw0Dm1aiu94npzxO+gOpF6s5/UnX2k3uxnS93ZUr9VOruYTCYyMzMJCAi46j4zZsxg+vTpJcpXr16Nh4eHw2L5Y/3vFFfnz7+uxkvrsEPf1OLi4pwdQpUk9WY/qTv7SL3Zryx1l5OTU+bjVenE/dZbb5GVlcWjjz561X0mTpzImDFjLK8zMjKIjIyka9eu+Pj4lDsGg8FAXFwc3bp2Qb9jA/mFJtp16EQNP/dyH/tmVlxvXbp0QauVbzllJfVmP6k7+0i92c+WuivuDS4LmxP3sWPHqFOnjq1vc7ilS5cyffp0fvzxR0JCQq66n16vR6/XlyjXarUO/SPUarW46zTkF5ooVBX5Ay8jR/8eqgupN/tJ3dlH6s1+Zak7W+rW5sFpMTExdOrUicWLF5OXl2fr2x1i2bJlDBkyhK+//prY2FinxFCaS7OnyQphQgghKobNifvvv/+mWbNmjBkzhrCwMP773/+ybdu2ioitVF9++SWDBg3iyy+/5N57771h5y0LmYRFCCFERbM5cbdo0YJ33nmHc+fOsWDBAhISEmjfvj1NmzZl9uzZJCcnl/lYWVlZxMfHEx8fD8Dx48eJj4/n1KlTgPn6dP/+/S37L126lP79+zNr1ixat25NYmIiiYmJpKen2/oxKoSbJG4hhBAVzO77uF1dXXnwwQf55ptveOONNzhy5Ajjxo0jMjKS/v37k5CQcN1j7Nixg5YtW1pu5RozZgwtW7ZkypQpACQkJFiSOMDHH39MYWEhI0aMIDw83PIYNWqUvR/DoWQSFiGEEBXN7lHlO3bsYMGCBSxbtgxPT0/GjRvHU089xZkzZ5g+fTr333//dbvQO3bsiKpefbKSRYsWWb1ev369veHeEO6y0IgQQogKZnPinj17NgsXLuTQoUP06NGDzz//nB49euDiYm68165dm0WLFhEdHe3oWCs96SoXQghR0WxO3B9++CGDBw9m4MCBhIeHl7pPSEgI8+fPL3dwVU1xV3mOdJULIYSoIDYn7sOHD193H51Ox4ABA+wKqCpzL1ohTLrKhRBCVBS7rnFfvHiR+fPnc+DAAQAaNWrE4MGDrzn1aHVw6T5uSdxCCCEqhs2jyjdu3Eh0dDTvvvsuFy9e5OLFi7z33nvUrl2bjRs3VkSMVYZ70cIico1bCCFERbG5xT1ixAj69OnDhx9+iEZjbmEajUaGDx/OiBEj2Lt3r8ODrCpkAhYhhBAVzeYW95EjRxg7dqwlaQNoNBrGjBnDkSNHHBpcVeOuK7rGLV3lQgghKojNifvWW2+1XNu+3IEDB2jevLlDgqqqpMUthBCiotncVf7ss88yatQojhw5wp133gnAli1bmDt3Lq+//jp79uyx7NusWTPHRVoFyH3cQgghKprNifvxxx8H4IUXXih1m6IoqKqKoigYjdUrgcmUp0IIISqazYn7+PHjFRHHTUGmPBVCCFHRbE7cUVFRFRHHTUGucQshhKhodk3AcvToUebMmWMZpNa4cWNGjRpF3bp1HRpcVeOmk8QthBCiYtk8qvy3336jcePGbNu2jWbNmtGsWTO2bt1KkyZNiIuLq4gYq4xLM6eZnByJEEKIm5XNLe4JEyYwevRoXn/99RLl48ePp0uXLg4LrqqRa9xCCCEqms0t7gMHDvDUU0+VKB88eDD79+93SFBVlftlXeXXWmdcCCGEsJfNiTs4OJj4+PgS5fHx8YSEhDgipiqr+D5uo0nFYJTELYQQwvFs7iofOnQoTz/9NMeOHaNt27YAbNq0iTfeeIMxY8Y4PMCqpLirHMytbp2rzd+LhBBCiGuyOXFPnjwZb29vZs2axcSJEwGIiIhg2rRpPPvssw4PsCrRahQ0LgpGk0qewYivu9bZIQkhhLjJ2JS4CwsLWbp0KX379mX06NFkZmYC4O3tXSHBVTWKouCu1ZCVXyizpwkhhKgQNvXlurq6MmzYMPLy8gBzwpakbU3mKxdCCFGRbL4Ie8cdd7Br166KiOWmULy0pyRuIYQQFcHma9zDhw9n7NixnDlzhlatWuHp6Wm1vbqtCHYly73c0lUuhBCiAticuB977DEAq4Fo1XlFsCsVJ+4cSdxCCCEqgKwO5mByjVsIIURFsjlxnzx5krZt2+Lqav3WwsJC/vrrr2q/epi7LDQihBCiAtk8OK1Tp06kpqaWKE9PT6dTp04OCaoqk/nKhRBCVCSbE3fxtewrXbhwocRAterI0uKWa9xCCCEqQJm7yh988EHAPBBt4MCB6PV6yzaj0ciePXssU6BWZ+5yjVsIIUQFKnPi9vX1Bcwtbm9vb9zd3S3bdDodd955J0OHDnV8hFWMJG4hhBAVqcyJe+HChQBER0czbtw46Ra/iuKucrmPWwghREWweVT51KlTKyKOm4bcDiaEEKIi2Tw4LSkpiX79+hEREYGrqysajcbqUd1d6io3OTkSIYQQNyObW9wDBw7k1KlTTJ48mfDw8FJHmFdnMqpcCCFERbI5cf/555/88ccftGjRogLCqfrkPm4hhBAVyeau8sjISFRVrYhYbgpyjVsIIURFsjlxz5kzhwkTJnDixIkKCKfqk65yIYQQFcnmrvI+ffqQk5ND3bp18fDwQKvVWm0vbTrU6kS6yoUQQlQkmxP3nDlzKiCMm4dMwCKEEKIi2Zy4BwwYUBFx3DTcdearD5K4hRBCVASbr3EDHD16lEmTJvH4449z/vx5AH799Vf++ecfm46zceNGevbsSUREBIqisHz58uu+Z/369dx6663o9XpiYmJYtGiRHZ+g4lgGp8k1biGEEBXA5sS9YcMGbrnlFrZu3cr3339PVlYWALt377Z5VrXs7GyaN2/O3Llzy7T/8ePHuffee+nUqRPx8fE899xzDBkyhN9++83Wj1FhirvK8wtNmEwy+l4IIYRj2dxVPmHCBF555RXGjBmDt7e3pfzuu+/m/ffft+lY3bt3p3v37mXef968edSuXZtZs2YB0KhRI/7880/efvttunXrZtO5K0rxqHKAvEIjHjqbq1gIIYS4Kpuzyt69e1m6dGmJ8pCQEFJSUhwS1NVs3ryZ2NhYq7Ju3brx3HPPXfU9+fn55OfnW15nZGQAYDAYMBgM5Y6p+BjFPzWX3eOekZOPVpFWd2murDdRNlJv9pO6s4/Um/1sqTtb6tfmxO3n50dCQgK1a9e2Kt+1axc1atSw9XA2SUxMJDQ01KosNDSUjIwMcnNzrZYaLTZjxgymT59eonz16tV4eHg4LLa4uDjLc62iwaAq/Lp6DQH6a7xJWNWbKDupN/tJ3dlH6s1+Zam7nJycMh/P5sT92GOPMX78eL755hsURcFkMrFp0ybGjRtH//79bT1chZs4cSJjxoyxvM7IyCAyMpKuXbvi4+NT7uMbDAbi4uLo0qWL5Z72qfHrSMs10Lrdf6gX4lXuc9yMSqs3cX1Sb/aTurOP1Jv9bKm74t7gsrA5cb/22muMGDGCyMhIjEYjjRs3xmg00rdvXyZNmmTr4WwSFhZGUlKSVVlSUhI+Pj6ltrYB9Ho9en3JZq9Wq3XoH+Hlx3PXaUjLNVCoKvKHfh2O/j1UF1Jv9pO6s4/Um/3KUne21K3NiVun0/HJJ58wZcoU9u7dS1ZWFi1btqRevXq2Hspmbdq0YeXKlVZlcXFxtGnTpsLPbQt3uSVMCCFEBbF7yHNkZKSl1b13714uXryIv7+/TcfIysriyJEjltfHjx8nPj6egIAAatWqxcSJEzl79iyff/45AMOGDeP999/nhRdeYPDgwfz+++98/fXX/PLLL/Z+jAohC40IIYSoKDbfx/3cc88xf/58AIxGIx06dODWW28lMjKS9evX23SsHTt20LJlS1q2bAnAmDFjaNmyJVOmTAEgISGBU6dOWfavXbs2v/zyC3FxcTRv3pxZs2bx6aefVppbwYoV3xIm85ULIYRwNJtb3N9++y1PPvkkACtWrODYsWMcPHiQL774ghdffJFNmzaV+VgdO3a85hKhpc2K1rFjR3bt2mVr2BXDZITsZPSGdKtiD520uIUQQlQMm1vcKSkphIWFAbBy5UoeffRR6tevz+DBg9m7d6/DA6zUNs1BO6cRjc99ZVV8adpTkzOiEkIIcROzOXGHhoayf/9+jEYjq1atokuXLoD5HjSNRnOdd99kPEMA0BdaD+OXFcKEEEJUFJu7ygcNGsSjjz5KeHg4iqJYZjLbunUrDRs2dHiAlZpnMAB6Q+mJW65xCyGEcDSbE/e0adNo2rQpp0+f5pFHHrHcI63RaJgwYYLDA6zUihK37soWt05uBxNCCFEx7Lod7OGHH7Z6nZaWVj3X6fYMAsxd5abLBtnJ7WBCCCEqis3XuN944w2++urSYKxHH32UwMBAatasyZ49exwaXKVX1OLWqIWQn2kplmvcQgghKorNiXvevHlERkYC5lnL4uLi+PXXX7nnnnsYN26cwwOs1HQeqDpP8/OcZEuxu85crXnSVS6EEMLBbO4qT0xMtCTun3/+mUcffZSuXbsSHR1N69atHR5gpecRDAXZKNmXljSVFrcQQoiKYnOL29/fn9OnTwOwatUqy6hyVVUxGqtfolKLrnOTfanFLde4hRBCVBSbW9wPPvggffv2pV69ely4cIHu3bsD5vW4Y2JiHB5gpVd0nVvJvryrXEaVCyGEqBg2J+63336b6OhoTp8+zZtvvomXl3m96YSEBIYPH+7wACs9j6IWd07JrnK5j1sIIYSj2Zy4tVptqYPQRo8e7ZCAqhq1qMWNXOMWQghxA9h1H/fRo0eZM2cOBw4cAKBx48Y899xz1KlTx6HBVQlF17iVy1rcbrLIiBBCiApi8+C03377jcaNG7Nt2zaaNWtGs2bN2Lp1K40bNyYuLq4iYqzU1OKu8uzzljJ3WWRECCFEBbG5xT1hwgRGjx7N66+/XqJ8/PjxlkVHqg3L4DS5xi2EEKLi2dziPnDgAE899VSJ8sGDB7N//36HBFWVWK5xXz447bKu8mutNy6EEELYyubEHRwcTHx8fIny+Ph4QkJCHBFT1VLUVa7kXgSjAbh0H7fRpFJglO5yIYQQjmNzV/nQoUN5+umnOXbsGG3btgVg06ZNvPHGG4wZM8bhAVZ67v6oKCio5pHlPuGWrnKAvAITetdqtk65EEKICmNz4p48eTLe3t7MmjWLiRMnAhAREcG0adN49tlnHR5gpeeiId/VB7fCdPPsaT7haDUKGhcFo0kl12DEF62zoxRCCHGTsClxFxYWsnTpUvr27cvo0aPJzDSviOXt7V0hwVUVVokbUBQFd62GrPxCuSVMCCGEQ9l0jdvV1ZVhw4aRl5cHmBN2dU/aAAWuRXVw2chyy3zlMu2pEEIIB7J5cNodd9zBrl27KiKWKitf62N+cvm93EVLe0qLWwghhCPZfI17+PDhjB07ljNnztCqVSs8PT2ttjdr1sxhwVUV+a6+5ieXLzQi93ILIYSoADYn7sceewzAaiCaoiioqoqiKNVyac981+IW9+X3cpurVrrKhRBCOJLNifv48eMVEUeVdqmr/PIWt3SVCyGEcDybE3dUVFRFxFGlXWpxl+wql8QthBDCkco8OG3nzp106tSJjIyMEtvS09Pp1KkTu3fvdmhwVYUlcWddlrh1co1bCCGE45U5cc+aNYu7774bHx+fEtt8fX3p0qULM2fOdGhwVYVVi7tobnK5HUwIIURFKHPi3rp1K/fff/9Vt/fs2ZO//vrLIUFVNQXFiduYD/nmSWmkq1wIIURFKHPiPnv27DUnW/Hy8iIhIcEhQVU1Ro0eVVt0W1zRdW5J3EIIISpCmRN3cHAwhw4duur2gwcPEhQU5JCgqiTPos9enLiLr3FLV7kQQggHKnPijo2N5dVXXy11m6qqvPrqq8TGxjossKrGsi53UeJ2kxa3EEKIClDm28EmTZpEq1ataN26NWPHjqVBgwaAuaU9a9Ys/v33XxYtWlRRcVZ+Hle0uC2JW9bjFkII4ThlTtx169ZlzZo1DBw4kMceewxFUQBza7tx48bExcURExNTYYFWepaucvPsacVd5TKqXAghhCPZNAHLbbfdxr59+4iPj+fw4cOoqkr9+vVp0aJFBYVXdageRV3lWeaFRmSuciGEEBXB5pnTAFq0aCHJ+kpeco1bCCFExbN5WU9ROtVDusqFEEJUPEncjnLl7WDSVS6EEKICSOJ2EMs17mzra9w50uIWQgjhQJK4HaX4Pu7ci2A04K6TZT2FEEI4XpkGp+3Zs6fMB2zWrJndwVRp7v6guIBqgpwLuBWt0S2JWwghhCOVKXG3aNECRVFQi1a+ulLxNkVRMBptT1Rz585l5syZJCYm0rx5c9577z3uuOOOq+4/Z84cPvzwQ06dOkVQUBAPP/wwM2bMwM3NzeZzO4yLBjwCzde4s5Nx9/IHoKDQhNGkonFRnBebEEKIm0aZEvfx48crLICvvvqKMWPGMG/ePFq3bs2cOXPo1q0bhw4dIiQkpMT+S5cuZcKECSxYsIC2bdvy77//MnDgQBRFYfbs2RUWZ5l4Bl9K3AGNLMV5BiOeervuvBNCCCGslCmbREVFVVgAs2fPZujQoQwaNAiAefPm8csvv7BgwQImTJhQYv+//vqLdu3a0bdvXwCio6N5/PHH2bp1a4XFWGbF17mzknFz1ViKcyVxCyGEcBC7s8n+/fs5deoUBQUFVuW9evUq8zEKCgrYuXMnEydOtJS5uLgQGxvL5s2bS31P27ZtWbx4Mdu2beOOO+7g2LFjrFy5kn79+pW6f35+Pvn5+ZbXGRkZABgMBgwGQ5ljvZriYxgMBjQegbgAxsxETMZC9K4u5BeayMzJx1cv4wAvd3m9ibKTerOf1J19pN7sZ0vd2VK/NifuY8eO8cADD7B3716r697Fc5fbco07JSUFo9FIaGioVXloaCgHDx4s9T19+/YlJSWF9u3bo6oqhYWFDBs2jP/7v/8rdf8ZM2Ywffr0EuWrV6/Gw8OjzLFeT1xcHE3PZ1EXOLZnK/svRKNBAyisXruOMMed6qYSFxfn7BCqJKk3+0nd2UfqzX5lqbucnJwyH8/mxD1q1Chq167N2rVrqV27Ntu2bePChQuMHTuWt956y9bD2Wz9+vW89tprfPDBB7Ru3ZojR44watQoXn75ZSZPnlxi/4kTJzJmzBjL64yMDCIjI+natSs+Pj7ljsdgMBAXF0eXLl3QbzsE61dTN8yX6B49eH3/RnLS87i9TTtuqeFb7nPdTC6vN61W6+xwqgypN/tJ3dlH6s1+ttRdcW9wWdicuDdv3szvv/9OUFAQLi4uuLi40L59e2bMmMGzzz7Lrl27ynysoKAgNBoNSUlJVuVJSUmEhYWV+p7JkyfTr18/hgwZAsAtt9xCdnY2Tz/9NC+++CIuLtZd0nq9Hr1eX+I4Wq3WoX+EWq0Wjbe558AlNwUXrdYy7anBpMgf/FU4+vdQXUi92U/qzj5Sb/YrS93ZUrc2X3g1Go14e3sD5sR77tw5wDyA7dChQzYdS6fT0apVK9auXWspM5lMrF27ljZt2pT6npycnBLJWaMxJ8ir3a52w3gVjYIvsSa33MsthBDCMWxucTdt2pTdu3dTu3ZtWrduzZtvvolOp+Pjjz+mTp06NgcwZswYBgwYwG233cYdd9zBnDlzyM7Otowy79+/PzVq1GDGjBkA9OzZk9mzZ9OyZUtLV/nkyZPp2bOnJYE7TfGo8uKFRmS+ciGEEA5mc+KeNGkS2dnZALz00kvcd9993HXXXQQGBvLVV1/ZHECfPn1ITk5mypQpJCYm0qJFC1atWmUZsHbq1CmrFvakSZNQFIVJkyZx9uxZgoOD6dmzJ6+++qrN53a4yxcaUdVLK4RJ4hZCCOEgNifubt26WZ7HxMRw8OBBUlNT8ff3t4wst9XIkSMZOXJkqdvWr19v9drV1ZWpU6cydepUu85VoYpb3IV5kJ95aU3uApMTgxJCCHEzsfkad3p6OqmpqVZlAQEBXLx40aZRcTclnSdoPc3Ps5PlGrcQQgiHszlxP/bYYyxbtqxE+ddff81jjz3mkKCqNEt3eYpc4xZCCOFwNifurVu30qlTpxLlHTt2rBzTjjqbZYBaMn4e5uH9yZn513iDEEIIUXY2J+78/HwKCwtLlBsMBnJzcx0SVJV2WeKODjJ3mx9PyXZiQEIIIW4mNifuO+64g48//rhE+bx582jVqpVDgqrSvC5L3IHmxH3igiRuIYQQjmHzqPJXXnmF2NhYdu/eTefOnQFYu3Yt27dvZ/Xq1Q4PsMq5rMVdJ9icuE+n5lBQaELnKguNCCGEKB+bM0m7du3YvHkzkZGRfP3116xYsYKYmBj27NnDXXfdVRExVi2XJe4Qbz0eOg0mFU5fLPsE8kIIIcTV2LWsZ4sWLViyZImjY7k5XDZ7mqIoRAd6sj8hgxMp2dQN9nJubEIIIaq8MiXujIwMy0pa17tX2xErblVpxYk76zwAtYPMiVsGqAkhhHCEMiVuf39/EhISCAkJwc/Pr9QZ0lRVRVEUm9bjvild1lUOEB1kXohbErcQQghHKFPi/v333wkICABg3bp1FRpQlVecuHNTwVhI7SBz97gkbiGEEI5QpsTdoUMHAAoLC9mwYQODBw+mZs2aFRpYleURACiACjkXqF3U4j4hiVsIIYQD2DSq3NXVlZkzZ5Y6AYso4qIBj0Dz8+zzlhb3ufQ8mfpUCCFEudl8O9jdd9/Nhg0bKiKWm4dXiPlndjL+Hlp83MwdGzIRixBCiPKy+Xaw7t27M2HCBPbu3UurVq3w9PS02t6rVy+HBVdlXbbQiKIo1A7yZPeZdE6kZNMwrJqPuhdCCFEuNifu4cOHAzB79uwS22RUeZErRpYXJ+5jcp1bCCFEOdmcuE0mU0XEcXO54l7u4sVGZICaEEKI8pLJsyvCZbOngbnFDXAiRaY9FUIIUT52Je4NGzbQs2dPYmJiiImJoVevXvzxxx+Ojq3qKqWrHJCuciGEEOVmc+JevHgxsbGxeHh48Oyzz/Lss8/i7u5O586dWbp0aUXEWPWUmD3NnLhTsvLJzDM4KyohhBA3AZuvcb/66qu8+eabjB492lL27LPPMnv2bF5++WX69u3r0ACrpCu6yn3ctAR56UjJKuDkhRya1vB1YnBCCCGqMptb3MeOHaNnz54lynv16sXx48cdElSV51WcuM+DqgIQHSjd5UIIIcrP5sQdGRnJ2rVrS5SvWbOGyMhIhwRV5RW3uAvzoCALuHyAmiRuIYQQ9rO5q3zs2LE8++yzxMfH07ZtWwA2bdrEokWLeOeddxweYJWk8wStBxhyzNe59d6W69yy2IgQQojysDlxP/PMM4SFhTFr1iy+/vprABo1asRXX33F/fff7/AAqyzPIEg7Zb7OHVDH0uKWxC2EEKI8bE7cAA888AAPPPCAo2O5uXiGmBN30SQslq5yma9cCCFEOcgELBXlylvCiganpeUYuJhd4KyohBBCVHE2t7j9/f1RFKVEuaIouLm5ERMTw8CBAxk0aJBDAqyyLltoBMBdpyHc142E9DyOX8jG31PnxOCEEEJUVTa3uKdMmYKLiwv33nsv06dPZ/r06dx77724uLgwYsQI6tevzzPPPMMnn3xSEfFWHVe0uOFSq/t4snSXCyGEsI/NLe4///yTV155hWHDhlmVf/TRR6xevZrvvvuOZs2a8e677zJ06FCHBVrlWNbkPm8pig7yZPOxC3KdWwghhN1sbnH/9ttvxMbGlijv3Lkzv/32GwA9evTg2LFj5Y+uKrti9jSAOjKyXAghRDnZnLgDAgJYsWJFifIVK1YQEBAAQHZ2Nt7e3uWPriqzXOO+rKtcErcQQohysrmrfPLkyTzzzDOsW7eOO+64A4Dt27ezcuVK5s2bB0BcXBwdOnRwbKRVTSnXuGsHeQDm2dNUVS11kJ8QQghxLTYn7qFDh9K4cWPef/99vv/+ewAaNGjAhg0bLDOpjR071rFRVkXFiTsnFYyFoHElMsADFwWyC4wkZ+UT4u3m3BiFEEJUOXZNwNKuXTvatWvn6FhuLh6BgAKokHMBvEPRu2qo4e/O6dRcjidnS+IWQghhM7smYDl69CiTJk2ib9++nD9vHjX966+/8s8//zg0uCrNRVOUvLmiu9wLkBnUhBBC2MfmxL1hwwZuueUWtm7dynfffUdWlnn1q927dzN16lSHB1illXadO9B8nVuW9xRCCGEPmxP3hAkTeOWVV4iLi0OnuzT71913382WLVscGlyVd8XsaXBpZLks7ymEEMIeNifuvXv3lrrASEhICCkpKaW8oxorZRKWS+ty5zgjIiGEEFWczYnbz8+PhISEEuW7du2iRo0aDgnqpuFTVB8p/1qKLl8lzGRSnRGVEEKIKszmxP3YY48xfvx4EhMTURQFk8nEpk2bGDduHP3796+IGKuuWneaf57YZCmq4eeOVqOQX2giISPPSYEJIYSoqmxO3K+99hoNGzYkMjKSrKwsGjduzH/+8x/atm3LpEmT7Api7ty5REdH4+bmRuvWrdm2bds1909LS2PEiBGEh4ej1+upX78+K1eutOvcFapWG0CBC4chMwkAV40LkQHmAWqy2IgQQghb2Zy4dTodn3zyCceOHePnn39m8eLFHDx4kC+++AKNRmNzAF999RVjxoxh6tSp/P333zRv3pxu3bpZbjO7UkFBAV26dOHEiRN8++23HDp0iE8++aRydtN7BEBoU/Pzk5da3bWLVwmTW8KEEELYyObE/dJLL5GTk0NkZCQ9evTg0UcfpV69euTm5vLSSy/ZHMDs2bMZOnQogwYNonHjxsybNw8PDw8WLFhQ6v4LFiwgNTWV5cuX065dO6Kjo+nQoQPNmze3+dw3RHTRRDWXJ24ZWS6EEMJONs+cNn36dIYNG4aHh4dVeU5ODtOnT2fKlCllPlZBQQE7d+5k4sSJljIXFxdiY2PZvHlzqe/56aefaNOmDSNGjODHH38kODiYvn37Mn78+FJb/Pn5+eTn51teZ2RkAGAwGDAYDGWO9WqKj3G1Yyk178R16zzUE39SWLRPpL95xrSj5zMdEkNVdL16E6WTerOf1J19pN7sZ0vd2VK/Nifuqy2OsXv3bsvqYGWVkpKC0WgkNDTUqjw0NJSDBw+W+p5jx47x+++/88QTT7By5UqOHDnC8OHDMRgMpU4AM2PGDKZPn16ifPXq1SW+fJRHXFxcqeW6wmy6A0ryQdb8uIwCrQ/n0xVAw/5TyZXz2vwNdLV6E9cm9WY/qTv7SL3Zryx1l5NT9luEy5y4/f39URQFRVGoX7++VfI2Go1kZWUxbNiwMp/YXiaTiZCQED7++GM0Gg2tWrXi7NmzzJw5s9TEPXHiRMaMGWN5nZGRQWRkJF27dsXHx6fc8RgMBuLi4ujSpQtarbbUfdTE91GSD9ClgSdqwx60TM9j7v6NpBa40LVbF1w1ds08W6WVpd5ESVJv9pO6s4/Um/1sqbvi3uCyKHPinjNnDqqqMnjwYKZPn46vr69lm06nIzo6mjZt2pT5xABBQUFoNBqSkpKsypOSkggLCyv1PeHh4Wi1Wqtu8UaNGpGYmEhBQYHVbG4Aer0evV5f4jhardahf4TXPF50e0g+gOvpLXDLg9QMcEXv6kJ+oYmkrELLbGrVkaN/D9WF1Jv9pO7sI/Vmv7LUnS11W+bEPWDAAABq165N27ZtHfIL1Ol0tGrVirVr19K7d2/A3KJeu3YtI0eOLPU97dq1Y+nSpZhMJlxczC3Vf//9l/Dw8BJJu9KIbgfbP7EMUHNxUagd5MnBxEyOX8iu1olbCCGEbWzuo+3QoYMlaefl5ZGRkWH1sNWYMWP45JNP+Oyzzzhw4ADPPPMM2dnZDBo0CID+/ftbDV575plnSE1NZdSoUfz777/88ssvvPbaa4wYMcLmc98wUUUjy5P2mdfnBqKLbwmTe7mFEELYwObBaTk5Obzwwgt8/fXXXLhwocR2o9Fo0/H69OlDcnIyU6ZMITExkRYtWrBq1SrLgLVTp05ZWtYAkZGR/Pbbb4wePZpmzZpRo0YNRo0axfjx4239KDeOVwgENYCUQ3DyL2h0H7WDL019KoQQQpSVzYn7+eefZ926dXz44Yf069ePuXPncvbsWT766CNef/11u4IYOXLkVbvG169fX6KsTZs2VW8lsuh2RYl7kzlxF7e45V5uIYQQNrC5q3zFihV88MEHPPTQQ7i6unLXXXcxadIkXnvtNZYsWVIRMd4cirvLT/wJXFreUxK3EEIIW9icuFNTU6lTpw4APj4+pKaar9m2b9+ejRs3Oja6m0l0e/PPxL2Qe9Eye9rZtFzyC227vCCEEKL6sjlx16lTh+PHjwPQsGFDvv76a8DcEvfz83NocDcV7zAIjAFUOLWFIC8dXnpXVBVOXZC1uYUQQpSNzYl70KBB7N69G4AJEyYwd+5c3NzcGD16NM8//7zDA7ypXNZdriiKpdV9+HyWE4MSQghRldg8OG306NGW57GxsRw8eJCdO3cSExNDs2bNHBrcTSe6Pfz9meV+7tui/dl7Np3V/yTS45ZwJwcnhBCiKrA5cV8pKiqKqKgoR8Ry8ytucSfshrwMejaPYOGmE8TtTyK3wIi7zvZlUYUQQlQvZe4q//3332ncuHGpk6ykp6fTpEkT/vjjD4cGd9PxrQH+tUE1wakttIz0o6a/O9kFRn4/WPr640IIIcTlypy458yZw9ChQ0tdmMPX15f//ve/zJ4926HB3ZQs63Obr3P3bB4BwE+7zzoxKCGEEFVFmRP37t27ueeee666vWvXruzcudMhQd3UoopuCzthvs7ds5k5ca87lExGnqx3K4QQ4trKnLiTkpKuubCIq6srycnJDgnqplbc4j63C/KzaBTuTUyIFwWFJlb/k3Tt9wohhKj2ypy4a9Sowb59+666fc+ePYSHy8jo6/KrBb61QDXC6S3m7vJmxd3l55wcnBBCiMquzIm7R48eTJ48mby8vBLbcnNzmTp1Kvfdd59Dg7tpRVt3l/dqYU7cm46kcCEr31lRCSGEqALKnLgnTZpEamoq9evX58033+THH3/kxx9/5I033qBBgwakpqby4osvVmSsNw/LADVz4q4d5MktNXwxmlRW7kt0YmBCCCEquzLfxx0aGspff/3FM888w8SJE1FVFQBFUejWrRtz5861LMUprqP4fu6zf0NBNug86dk8nL1n01mx+xz97pT74oUQQpTOpglYoqKiWLlyJRcvXuTIkSOoqkq9evXw9/evqPhuTv7R4FMDMs7C6W1QtxP3NYvgtZUH2X4ilYT0XMJ93Z0dpRBCiErI5rnKAfz9/bn99tu54447JGnbQ1EuXecu6i6P8HPn9mh/VBV+3p3gxOCEEEJUZnYlbuEAlgVHNlmKehVNxrJij4wuF0IIUTpJ3M5S3OI+uwMMuQB0vyUcjYvCnjPpHE/JdmJwQgghKitJ3M4SUAe8wsBYAKe2ABDkpadt3UAAfpZ7uoUQQpRCErezKAo0KJpCdus8S3Gv5pcmYykeuS+EEEIUk8TtTG2fBcUF/l0FCXsA6NokDJ3GhcPnsziYmOnkAIUQQlQ2kridKbAuNHnQ/PyPWQD4umvp2CAYgBXSXS6EEOIKkrid7a6x5p/7f4TkQwCWpT5X7JHuciGEENYkcTtbaGNoeB+gwh/m9cw7NwrBQ6fhdGouu06nOTU8IYQQlYsk7sqguNW99xtIPY6HzpXYRubpY6W7XAghxOUkcVcGNW6FmFjzUp+b5gCXRpf/vCcBo0m6y4UQQphJ4q4s7hpn/rlrCaSf5a76Qfi6a0nOzOebHaedG5sQQohKQxJ3ZRHVBqLag8kAf72H3lXDiE51AZjx60FSZJ1uIYQQSOKuXP5T1OreuQiyzjOoXW0ahfuQnmvg1V8OODU0IYQQlYMk7sqkTkeo0QoKc2HzXLQaF2Y8eAuKAj/sOsufh1OcHaEQQggnk8RdmSgK/Od58/Ptn0JOKi0i/eh/ZxQAk5bvJc9gdGKAQgghnE0Sd2VT/x4IvQUKsmDbxwCM7daAUB89Jy7kMHfdEScHKIQQwpkkcVc2igJ3jTE/3/Ih5Gfi46ZlWs8mAMzbcJTDSTKHuRBCVFeSuCujxvdDYD3IS4Pt8wG4p2kYnRuGYDCq/N8PezHJvd1CCFEtSeKujFw0l1rdm9+HvAwUReGl3k3x0GnYfuIi3+yUe7uFEKI6ksRdWd3yCPjXhuxk+OG/YDJRw8+dMV3qA/DaSrm3WwghqiNJ3JWVRgsPzweNHg6thA2vAzCwbTSN5d5uIYSotiRxV2Y1WkHPd8zPN7wB+3/CVe7tFkKIak0Sd2XX4nG4c7j5+Q/DIGk/zSP9GNAmGoCJP+zhfGae8+ITQghxQ0nirgq6vAy1/wOGbFj2OOSkMrZrfWr6u3M6NZcnPtkq17uFEKKakMRdFWhc4eFF4FcLLp6A757CW6uwZEhrwnzcOHw+iyc/3UpqdoGzIxVCCFHBKkXinjt3LtHR0bi5udG6dWu2bdtWpvctW7YMRVHo3bt3xQZYGXgGwmNfgtYDjv4Oa6cRFejJl0/fSYi3noOJmTz56VbSciR5CyHEzczpifurr75izJgxTJ06lb///pvmzZvTrVs3zp8/f833nThxgnHjxnHXXXfdoEgrgbCm0PsD8/O/3oM9X1M7yJOlQ+8kyEvH/oQM+s3fRnquwblxCiGEqDBOT9yzZ89m6NChDBo0iMaNGzNv3jw8PDxYsGDBVd9jNBp54oknmD59OnXq1LmB0VYCTR6Au8aan//0PzgXT0yIF0uH3kmAp469Z9MZsGAbmXmSvIUQ4mbk6syTFxQUsHPnTiZOnGgpc3FxITY2ls2bN1/1fS+99BIhISE89dRT/PHHH9c8R35+Pvn5lwZuZWRkAGAwGDAYyp/cio/hiGOVWfsX0JzbjcvRNahL+1D42DJqhzZl0YBW9F+4g/jTaQxcsI35/W/FU+/UX/FVOaXebgJSb/aTurOP1Jv9bKk7W+rXqf+rp6SkYDQaCQ0NtSoPDQ3l4MGDpb7nzz//ZP78+cTHx5fpHDNmzGD69OklylevXo2Hh4fNMV9NXFycw45VFq6eD3OX2wF8ss6iLOjGjujhJPm2ZEgMzN2vYeepNB56Zy3/bWREr7mhodnkRtfbzULqzX5Sd/aRerNfWeouJyenzMernM2xq8jMzKRfv3588sknBAUFlek9EydOZMyYMZbXGRkZREZG0rVrV3x8fModk8FgIC4uji5duqDVast9PJvkxmL6fjCuJzbS+vg7mGJfxtT9adqczWDAop0czSzky4RA5jzajAg/9xsb23U4td6qMKk3+0nd2UfqzX621F1xb3BZODVxBwUFodFoSEpKsipPSkoiLCysxP5Hjx7lxIkT9OzZ01JmMpkAcHV15dChQ9StW9fqPXq9Hr1eX+JYWq3WoX+Ejj5e2U4aDP2+h1/Govz9GZq4F9GkHafVPW/w2eA7GLhgG7tOp9Nz7mbeeKgZ3W8Jv7HxlYFT6u0mIPVmP6k7+0i92a8sdWdL3Tp1cJpOp6NVq1asXbvWUmYymVi7di1t2rQpsX/Dhg3Zu3cv8fHxlkevXr3o1KkT8fHxREZG3sjwKweN1jwtatdXAAW2fwpLH6VVqAu/PHsXzSP9yMgr5JklfzPx+73kFhidHbEQQohycPqo8jFjxvDJJ5/w2WefceDAAZ555hmys7MZNGgQAP3797cMXnNzc6Np06ZWDz8/P7y9vWnatCk6nc6ZH8V5FAXa/g/6LC66z3stzO9KLZdkvh3Whmc61kVR4Mttp+j1/p8cSCh7l4wQQojKxemJu0+fPrz11ltMmTKFFi1aEB8fz6pVqywD1k6dOkVCQoKTo6wiGt0Hg34F73BIPgifdkZ7dhvj72nI4qdaE+Kt5/D5LO6fu4nPN59AVVVnRyyEEMJGlWJw2siRIxk5cmSp29avX3/N9y5atMjxAVVlES1g6O+wtA8k7oEF98DtQ2jXeTK/jrqL57/dw+8HzzPlx3/Y+G8Kbzx0C4FeJccACCGEqJyc3uIWFcAnwtzybt4XUGH7J/D+7QSe+Jn5/VsxtWdjdBoX1hxIouPM9cxdd0SufQshRBUhiftmpfeCBz6EASsgsB5kJcG3g1GWPMSghiZ+GNGWJhE+ZOYXMvO3Q3R6az1fbT+F0STd50IIUZlJ4r7Z1f4PPLMJOr0IGr15gZIP2tDk8MesGHY7c/q0oIafO4kZeYz/bi/3zNnI2gNJcv1bCCEqKUnc1YGrHjq8AMM3Q51OYMyHda/g8vFd9Pb8h9/H/odJ9zbCz0PL4fNZPPXZDvp8vIVdpy46O3IhhBBXkMRdnQTWhX4/wEPzwTMEUv6FpY+gX9SNIWHH2DCuI8M61EXv6sK246k88MFf9Ju/lbUHkjBJF7oQQlQKkrirG0WBWx6GkduhzUhwdYezO2DJQ/gu7cGEemdYN7YDj7SqiYsCfxxO4anPdtBp1nrm/3mcDFl1TAghnEoSd3Xl7gfdXoXn9lxK4Ge2w+KHiPjufma2TGHDuI48/Z86+Li5cvJCDi//vJ82r61l6o/7OJqc5exPIIQQ1ZIk7urOK8ScwEfthjtHgKsbnNkGix8kcvkD/F/NfWwZdyevPtCUeiFeZBcY+WzzSTrP2kD/BdtYsfuc3EomhBA3UKWYgEVUAt6hcM9r0G4UbJoDOxbA6a1weiseWk+eaHgvfe97hE1qKxZtOc3ag+fZ+G8yG/9NxkvvSrcmYTzQsgZt6gaicVGc/WmEEOKmJYlbWPMOhXtmmBP49vmw92u4eAL2fo2y92vaewbTvsmDJNzWi8WnA1ken8DZtFy++/sM3/19hhBvPb2aR9C7ZQ2aRPigKJLEhRDCkSRxi9J5h8HdL0Kn/4MzO8wJfN93kJ0M2z4ifNtHPB9Qh3G3Pcg/gZ1ZetyLX/Ymcj4zn0//PM6nfx6nbrAnXZuEEdsolJaRfrhIS1wIIcpNEre4NkWByNvNj26vwdF15iR+8BdIPYby51s05S1eC6rPS+3vZ6tHR5Ycc2fNgfMcTc7mw/VH+XD9UYK8dHRuGEps41DaxwThKjlcCCHsIolblJ1GC/W7mh/5WXDoV/jnBzgSByn/4vrHTNoxk3bBjcjr2ItN+vb8cMqTDf+mkJJVwFc7TvPVjtO4aV1oVzeQoAKFpqk51A31dfYnE0KIKkMSt7CP3guaPWJ+5KXDoVVFSXwNJB/ALfkAnXmDzr61MN7aiX+97uDH9BhW/JvD2bRc1h5MBjR89faf1PR3p23dQNrFBNGmbiAh3m7O/nRCCFFpSeIW5efmC837mB+5aXBoJez7Ho5vgPRTaHZ9RiM+o5Hiwvgat5HSpD1rChoz/4CeEzmunLmYy9c7zvD1jjMA1A/1om1dcxK/Lcpflh0VQojLSOIWjuXuBy36mh8F2XDyLziyFo6uhZR/Uc5sI/jMNh4HHnZxg3qtOePdnL8K6vL9+XB2Jhbyb1IW/yZlseivEwDUCfbk9qgAbov25/boAKICPWS0uhCi2pLELSqOzhPqdTE/ANJOm1cnO7oW9dh6tHnpcHIDtdlAbeAJxYXCWo0549WMrYUx/Hwxkj+SPTiWnM2x5Gy+2nEagCAvPbdH+3NrLX+aR/rRtIYPHjr5UxZCVA/yv524cfwiodUAaDWAwvw8/vz+E/4TrUNzbrt5spe0U7ie30f0+X1EA30AU2AIKX7N2efSgN+zovjxfCgpWfDrvkR+3ZcIgIsC9UO9aVnLj+Y1/Wge6Ue9EC9cNTIxoBDi5iOJWziHi4YMj1qYbuuBRvtfc1lGgmW2Nk5tgcQ9uGSfJyQ7jruJ427gZb0rOf6NOerWmJ2GKNamhrI1K4iDiZkcTMzky23mVrm7VkPjCB+aRvjQpIYvTSN8qRfqhVaSuRCiipPELSoPn3Bo0tv8ADDkwrl489zpp7fBme0oWUl4XthDM/bQDBgEqB5aMn1iOOlah12GmqxLC+Xv/JrsPGlk58lLa4rrXF1oGOZNkwhfmkT40Cjcm3qh3vi4aW/8ZxVCCDtJ4haVl9YdotqYHwCqCmmnzKuYndkOiXshcS9KfgY+aQe4hQPcAvRXADfI1wVwXluDo6YwducEcsgQwomzYfx4JowvuXTLWYSvG/XDvGkQ6k39UG8ahHkTE+KFm1bjlI8thBDXIolbVB2KAv5R5sctD5vLipN5URInaR8k7oG0U+gLUoksSCWSvXRUAN2lQ6Vqgtir1mFrfm12ZcawI7026w95WLa7KBAV6GlO5kVJvUGYF9GBnnLtXAjhVJK4RdV2eTJvdN+l8rwMSD0KF45C6rGin0Wvc1MJMKbQgRQ6aLcBoKJw3i2af5R6bMqLZmteLU6lhLAqJYtV/yRaDqvTuFA3xIt6IV7EhHhRN9iLuiGeRAd6SgtdCHFDSOIWNyc3H4hoaX5cKfcinD8IZ3fC2R1wZidK+ilC844TynHuBiia86VA48UF1xBOq8EczvfjeGEQZ5KCOZoYwmo1nLyiHRUFIv09qBvsSd1gL2oHe1I70JOoIE/CfdxkgRUhhMNI4hbVj7u/9bVzgKzz5lXQzu4w/0z6B3JS0BmzCDdmEc4x7lCAy8axmVBIdgnhX1MEBwojOJIewZGLNfj6UAQZeFn207m6EBXgQXSQJ7WDPIkK9KB2oCe1gz0J9ZakLoSwjSRuIQC8QqBhD/OjWEEOpJ82TxyTdrLo+Snz48JRXHJTCTUlEUoSd7nusjpchosfZwjhiCGIE2oIpy+EcCo5lBVqCIn4o2K+Tu6mdSE60JzQo4M8LQk9KtCDYC+9zBAnhChBErcQV6PzgOAG5kdpslMg+RCkHDL/TD4EKf9Cxll8TGk0Jo3Gmn9LvM2AlvNKIKeNAZxVA0hICSQhOZCDaiDr1EDOqQFk4ImHzpVaAR5EBXoQFWhO5jV89VzIg0KjCa3cxSZEtSSJWwh7eQaZH9HtrMvzMuDicbh44tIjteh1+mm0JgM11ERquCSWPGaRLNWNs2oQ5y4EcjYliHNqEFvVIHOZGsSM3XGE+XkQ6V/0CHAnMsDD/PD3IMhLJ611IW5SkriFcDQ3Hwhvbn5cyVgIGWch/cwVP89Cxhnzz9xUvJQ8GihnaMCZUk9hUDUkZAVwNjOYs6fMCf1PNYgzajBn1SBSNYEE+/lSw8/d/PB3J6LoeU1/d8J83WQWOSGqKEncQtxIGtdLt69dTUFOUTIvur6efsb8PP0Matop1LQzaBUjtZRkapF81cNcyPQmMSOAhJMBJKoBHFcD2awGkEAAiQRi8qpBSIAfNfzNydyc1D2o4e9OuK+b3N4mRCUliVuIykbnAUH1zI8rFBoMrPzlZ3rcdSva7IRLg+UsA+dOo6afQSnMJVDJJFDJpAknSz9PASQn+HDuXBDn1EDOqUGsUwNJVANIVn0xegSh8w3D1y+ICH8PIvzcqOFnbrmH+7kR5KmXEfFCOIEkbiGqGsUFfCIgMApq3Vlys6qa71XPOFf0OGv+mWl+raafgbTTKIW5BCsZBCsZNOdYyfMYgVTIv6AlGV9SVB+SVT/2qf78pgZyXgkm3zMM1ScSt8CahPh5E+7nToSvG2G+bkT4uuPnoZVr7UI4mCRuIW42igIeAeZHWNOSm8E8VWzuxaJu+DOXdcefRs1MxJR5HrLOozFkolcM1CSFmkpKyXPlA8lgOq+QjC8JaiBn1UA2F7Xgk12CKPCMQPGtiad/GKF+HoT5uhHq40aYjznBB3np0UjLXYgyk8QtRHV0eXIPb2a9CbBc3TbkQnayeYKarPOQlQSZCZjSTlNw4RRknEGbdQ6NqYBQ0ghV0mjBUetz5Zkf+Ymu5m54/EhVvflH9WEjvqTig0EfCJ7BuPqEoPcLwycglBAfd0uSD/Vxw8fNVVrvQiCJWwhxLVp38KtlflzGBS6tr6aqkHPBMoCOdPPAOmPaGQovnkbJOIs2Jwm9UkiUcp4ozpc8jxHIKHqcAaOqkIoPKaoviaov+/AlTfGjQB+A0SMYvELQ+oTi7h+Gd2Aowb4+hHjrCfF2w8ddEry4uUniFkKUj6Jcuqf9srnhNVzWcjcaIDPBnNSzk4seKZiykylIT6Iw4zzkpOCam4KbIQ2NohJMOsFKOo0uP5cBSC96nL1UnKZ6kqL6cgBfLuBHjjaAfLcgjB4hKN6haH3D0PuGcijVRNS5DCICPAn0lC56UTVJ4hZCVDyN9vot92JGg3lWuuxkyD4PWckYMhLJSU3AkJGEKSsZTU4KuvwLeBguosGIn5KNn5JNDOeKjgFkFz2uuGMudYEXF1RfjuNNlsafPF0Ahe6BqJ5BaLyCcfMOxN03GO+AEPwCQgn098NTL614UXlI4hZCVC4aLfiEmx9FtIBvafuaTJCXZr7+nn2egowksi+cI+9iAsaMRJTs82hzk3HLT8GrMA0XTAQoWQQoWeb3q5gH2OUDaaWHk69qOY8XWS4+ZLn6k6cPxOAWiOoRjItPCDqfMDz8w/AKDMfPPwAfbx8UV70DK0QIa5K4hRBVl4vLpUF2NEQH6K6yqyE/j99WfENsm+a45F0kMzWBnNRE8tOTKMw8j0t2Mpr8i+gK0nE3ZuBtysAVI3rFQCgXCVUvguGkubs+69phGXAlT3HD4OKOwdUd1dUDk86HQq9wFN8ItP6RuAdF4RkUiat/pHnFOmnRizKSxC2EqB5cNBRofSCkERqtFr+64Het/VUV8jPJSU8h7UISWRcTyUtLoiCj6Fa5nGR0eRfwMFzAy5iGnykdrWIEQEshWjULjFnmbvt8zN32F4HTJU+Vi54MjT8Frl4Uunph1PuguPng4uaL1sMHvZc/bj6BePgEo/Es+qLi7g/uAaAtcbFB3OQkcQshRGkUBdx88HDzwSO0TpnekpeXS0rqRdLSLpKekU5WRjrZWenkZmdQmJ2KLjsJz/xEfArOE2RKIVy5QKCSiTv5uBsTrZN8GRUobuRpfTDo/DDq/cAjAI1nADrvINx8AtF6BZmTvEegOdF7BIK7H7jIlLZVVaVI3HPnzmXmzJkkJibSvHlz3nvvPe64445S9/3kk0/4/PPP2bdvHwCtWrXitddeu+r+Qghxo7i5uVMzwp2aERHX3ddoUrmYU8Dh9Awyz58k52ISeZkXyctOozAnDVNuOmp+Bkp+JlpDFu7GTPyULPzIsvx0VUzo1Dx0BXlQcN7chX/h+nGqKOS7+lCg96PQLQDcA9C4eaPz8EHn4YPGzRt0nqDzQtG4EZp+COV0ABR/CXDzk5a+Ezk9cX/11VeMGTOGefPm0bp1a+bMmUO3bt04dOgQISEhJfZfv349jz/+OG3btsXNzY033niDrl278s8//1CjRg0nfAIhhLCdxkUhyEtPkFcw1Ai+7v5Gk0paTgEXcwo4lm0gNSuPzPSL5GUkk5+RQmHWBUw5qZB7EdeCNPQF6fiQiR9Z+Bcl+gAlEx8lBwUVt8J03ArTIfsqc9kXcQXuBDj2tnU8Gj0mvS+4+eHi4Y+LmzeK3ht0XqD3Nj8uf+7mZ27pu/leesggPrs4PXHPnj2boUOHMmjQIADmzZvHL7/8woIFC5gwYUKJ/ZcsWWL1+tNPP+W7775j7dq19O/f/4bELIQQN5rGRSHQS0+g1+XJ7uote1VVycgr5EJWPheyC/g325z007NyyM1IoTAzBWPWBZTcVFzyUqEgGxdDNh7k4kkeHko+XuTiQR5eSi6+mG+58yEbjaKiMeajyTkPOech1b7PpLq6obj5FSX3oiSvu/x50U8336Jr+n5FP4ta/W6+1bLL36mJu6CggJ07dzJx4kRLmYuLC7GxsWzevLlMx8jJycFgMBAQEFDq9vz8fPLz8y2vMzIyADAYDBgMhnJEj+U4l/8UZSP1Zh+pN/tVx7rzcAUPPz2Rfle2bOuWur/JZE72F3MKSMsxkJpTwMnMPLbt/ofgmrXJzDeSlp1PXnYGak4qal46Sl4aHqZsvJRcvIqSvreSiye5eCp5eGMu91Gy8SEHXyUbHyUHAKUwD7ISzQ87qJjHIRQncdXNr+i5z2XPfVHdfEBvfqhuvkXPi74YVOBoflv+5mz5u3Rq4k5JScFoNBIaGmpVHhoaysGDB8t0jPHjxxMREUFsbGyp22fMmMH06dNLlK9evRoPDw/bg76KuLg4hx2rOpF6s4/Um/2k7mzjBdwdAZiOmW+o9yt64Aa4oaqh5Jsg2wA5hZBdqHCu0Pw6uxByCpWin5ee5xWacCnMxaeoJe9JblHiN7fuL3/tTQ4+Sk5Riz8LHyUbP7LwVPJRUCEv3fygaAEdG6goFGrcKXTRY3TRl/hpdNFTqHHDoHGn0MUdg8bD/Lzop0HjQaHGnVxt4DW/AJTlby4nJ6fMcTu9q7w8Xn/9dZYtW8b69etxcyt9oMTEiRMZM2aM5XVGRgaRkZF07doVHx+fcsdgMBiIi4ujS5cuaLXach+vupB6s4/Um/2k7uxTUfVmNKlk5hWSlltAem4h6bkG0nIMZOSZf17MNXAi10BaroGM3EIy8sw/0/MM5BlMaCnEl2x8lSx8ycZHyS56fallX/zamxy8lRy8yS36mYNOMaKgojXmoDWWPWleSXVxpXBCQqmJ25a6K+4NLgunJu6goCA0Gg1JSUlW5UlJSYSFhV3zvW+99Ravv/46a9asoVmzZlfdT6/Xo9eXHACh1Wod+kfo6ONVF1Jv9pF6s5/UnX0c/n8m4KbXEexre89nfqGR9KKEbv5pIP2yR0augaSi52lFr9NyzK9zC4yAihsFRQk9F3fy8SAfDyUfd/LxJA93JR8P8vBU8vAhBy9y8VZyi3oAcvF1ycFLycWEK4Haa687X5a6s6VunZq4dTodrVq1Yu3atfTu3RsAk8nE2rVrGTly5FXf9+abb/Lqq6/y22+/cdttt92gaIUQQlQGelcNId4aQrxtf2+ewWhO5EXJPC2ngMy8Sy16808DyXmXvhhk5pufZ+YZMKnWx/PWu7L3Bs965/Su8jFjxjBgwABuu+027rjjDubMmUN2drZllHn//v2pUaMGM2bMAOCNN95gypQpLF26lOjoaBITzYMavLy88PLyctrnEEIIUfm5aTW4aTWE+Nh+H7qqqmQXmBN/caLPLzRWQJTX5vTE3adPH5KTk5kyZQqJiYm0aNGCVatWWQasnTp1ChcXF8v+H374IQUFBTz88MNWx5k6dSrTpk27kaELIYSoRhRFwUvvipfelQjcnRaH0xM3wMiRI6/aNb5+/Xqr1ydOnKj4gIQQQohKyuX6uwghhBCispDELYQQQlQhkriFEEKIKkQStxBCCFGFSOIWQgghqhBJ3EIIIUQVIolbCCGEqEIkcQshhBBViCRuIYQQogqRxC2EEEJUIZK4hRBCiCpEErcQQghRhUjiFkIIIaqQSrE62I2kquZV0DMyMhxyPIPBQE5ODhkZGWi1WoccszqQerOP1Jv9pO7sI/VmP1vqrjgnFeeoa6l2iTszMxOAyMhIJ0cihBBCWMvMzMTX1/ea+yhqWdL7TcRkMnHu3Dm8vb1RFKXcx8vIyCAyMpLTp0/j4+PjgAirB6k3+0i92U/qzj5Sb/azpe5UVSUzM5OIiAhcXK59FbvatbhdXFyoWbOmw4/r4+Mjf9R2kHqzj9Sb/aTu7CP1Zr+y1t31WtrFZHCaEEIIUYVI4hZCCCGqEEnc5aTX65k6dSp6vd7ZoVQpUm/2kXqzn9SdfaTe7FdRdVftBqcJIYQQVZm0uIUQQogqRBK3EEIIUYVI4hZCCCGqEEncQgghRBUiibsc5s6dS3R0NG5ubrRu3Zpt27Y5O6RKZ+PGjfTs2ZOIiAgURWH58uVW21VVZcqUKYSHh+Pu7k5sbCyHDx92TrCVyIwZM7j99tvx9vYmJCSE3r17c+jQIat98vLyGDFiBIGBgXh5efHQQw+RlJTkpIgrhw8//JBmzZpZJrxo06YNv/76q2W71FnZvP766yiKwnPPPWcpk7or3bRp01AUxerRsGFDy/aKqDdJ3Hb66quvGDNmDFOnTuXvv/+mefPmdOvWjfPnzzs7tEolOzub5s2bM3fu3FK3v/nmm7z77rvMmzePrVu34unpSbdu3cjLy7vBkVYuGzZsYMSIEWzZsoW4uDgMBgNdu3YlOzvbss/o0aNZsWIF33zzDRs2bODcuXM8+OCDToza+WrWrMnrr7/Ozp072bFjB3fffTf3338///zzDyB1Vhbbt2/no48+olmzZlblUndX16RJExISEiyPP//807KtQupNFXa544471BEjRlheG41GNSIiQp0xY4YTo6rcAPWHH36wvDaZTGpYWJg6c+ZMS1laWpqq1+vVL7/80gkRVl7nz59XAXXDhg2qqprrSavVqt98841lnwMHDqiAunnzZmeFWSn5+/urn376qdRZGWRmZqr16tVT4+Li1A4dOqijRo1SVVX+3q5l6tSpavPmzUvdVlH1Ji1uOxQUFLBz505iY2MtZS4uLsTGxrJ582YnRla1HD9+nMTERKt69PX1pXXr1lKPV0hPTwcgICAAgJ07d2IwGKzqrmHDhtSqVUvqrojRaGTZsmVkZ2fTpk0bqbMyGDFiBPfee69VHYH8vV3P4cOHiYiIoE6dOjzxxBOcOnUKqLh6q3aLjDhCSkoKRqOR0NBQq/LQ0FAOHjzopKiqnsTERIBS67F4mzCvaPfcc8/Rrl07mjZtCpjrTqfT4efnZ7Wv1B3s3buXNm3akJeXh5eXFz/88AONGzcmPj5e6uwali1bxt9//8327dtLbJO/t6tr3bo1ixYtokGDBiQkJDB9+nTuuusu9u3bV2H1JolbiEpuxIgR7Nu3z+q6mbi6Bg0aEB8fT3p6Ot9++y0DBgxgw4YNzg6rUjt9+jSjRo0iLi4ONzc3Z4dTpXTv3t3yvFmzZrRu3ZqoqCi+/vpr3N3dK+Sc0lVuh6CgIDQaTYmRgUlJSYSFhTkpqqqnuK6kHq9u5MiR/Pzzz6xbt85qOdqwsDAKCgpIS0uz2l/qDnQ6HTExMbRq1YoZM2bQvHlz3nnnHamza9i5cyfnz5/n1ltvxdXVFVdXVzZs2MC7776Lq6sroaGhUndl5OfnR/369Tly5EiF/c1J4raDTqejVatWrF271lJmMplYu3Ytbdq0cWJkVUvt2rUJCwuzqseMjAy2bt1a7etRVVVGjhzJDz/8wO+//07t2rWttrdq1QqtVmtVd4cOHeLUqVPVvu6uZDKZyM/Plzq7hs6dO7N3717i4+Mtj9tuu40nnnjC8lzqrmyysrI4evQo4eHhFfc3Z/ewtmpu2bJlql6vVxctWqTu379fffrpp1U/Pz81MTHR2aFVKpmZmequXbvUXbt2qYA6e/ZsddeuXerJkydVVVXV119/XfXz81N//PFHdc+ePer999+v1q5dW83NzXVy5M71zDPPqL6+vur69evVhIQEyyMnJ8eyz7Bhw9RatWqpv//+u7pjxw61TZs2aps2bZwYtfNNmDBB3bBhg3r8+HF1z5496oQJE1RFUdTVq1erqip1ZovLR5WrqtTd1YwdO1Zdv369evz4cXXTpk1qbGysGhQUpJ4/f15V1YqpN0nc5fDee++ptWrVUnU6nXrHHXeoW7ZscXZIlc66detUoMRjwIABqqqabwmbPHmyGhoaqur1erVz587qoUOHnBt0JVBanQHqwoULLfvk5uaqw4cPV/39/VUPDw/1gQceUBMSEpwXdCUwePBgNSoqStXpdGpwcLDauXNnS9JWVakzW1yZuKXuStenTx81PDxc1el0ao0aNdQ+ffqoR44csWyviHqTZT2FEEKIKkSucQshhBBViCRuIYQQogqRxC2EEEJUIZK4hRBCiCpEErcQQghRhUjiFkIIIaoQSdxCCCFEFSKJWwghhKhCJHELIYQQVYgkbiGqCYPBwKJFi2jfvj3BwcG4u7vTrFkz3njjDQoKCpwdnhCijGTKUyGqifj4eMaOHcvw4cNp2bIleXl57N27l2nTphEeHs5vv/2GVqt1dphCiOuQFrcQ1UTTpk1Zu3YtDz30EHXq1KFx48b06dOHjRs3sm/fPubMmQOAoiilPp577jnLsS5evEj//v3x9/fHw8OD7t27c/jwYcv2wYMH06xZM/Lz8wEoKCigZcuW9O/fH4ATJ06gKArx8fGW90yePBlFUSxxCCFKJ4lbiGrC1dW11PLg4GAefPBBlixZYilbuHAhCQkJlseVawcPHDiQHTt28NNPP7F582ZUVaVHjx4YDAYA3n33XbKzs5kwYQIAL774Imlpabz//vulxnDmzBnmzJmDu7u7Iz6qEDe10v8lCyFuWk2aNOHkyZNWZQaDAY1GY3nt5+dHWFiY5bVOp7M8P3z4MD/99BObNm2ibdu2ACxZsoTIyEiWL1/OI488gpeXF4sXL6ZDhw54e3szZ84c1q1bh4+PT6kxvfjii/Tp04c1a9Y48qMKcVOSxC1ENbNy5UpLy7jYm2++yeLFi8v0/gMHDuDq6krr1q0tZYGBgTRo0IADBw5Yytq0acO4ceN4+eWXGT9+PO3bty/1eH///Tc//PADhw4dksQtRBlI4haimomKiipRdvToUerXr+/Q85hMJjZt2oRGo+HIkSNX3W/s2LGMGzeO8PBwh55fiJuVXOMWoppITU0lMzOzRPmOHTtYt24dffv2LdNxGjVqRGFhIVu3brWUXbhwgUOHDtG4cWNL2cyZMzl48CAbNmxg1apVLFy4sMSxfvrpJ/7991/GjRtnxycSonqSxC1ENXHq1ClatGjB/PnzOXLkCMeOHeOLL77g/vvv56677rIaNX4t9erV4/7772fo0KH8+eef7N69myeffJIaNWpw//33A7Br1y6mTJnCp59+Srt27Zg9ezajRo3i2LFjVsd68803eeWVV/Dw8HD0xxXipiWJW4hqomnTpkydOpVFixZx55130qRJE958801GjhzJ6tWrrQagXc/ChQtp1aoV9913H23atEFVVVauXIlWqyUvL48nn3ySgQMH0rNnTwCefvppOnXqRL9+/TAajZbjxMTEMGDAAId/ViFuZjIBixBCCFGFSItbCCGEqEIkcQshhBBViCRuIYQQogqRxC2EEEJUIZK4hRBCiCpEErcQQghRhUjiFkIIIaoQSdxCCCFEFSKJWwghhKhCJHELIYQQVYgkbiGEEKIK+X8UjWlFv06cagAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_2l_100.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_2l_100.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zPAyv-kzb5s6", + "outputId": "7bf8991c-f122-408d-b657-a62c21c28652" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9436 - loss: 0.2091\n", + "Lossontestdata: 0.20427274703979492\n", + "Accuracyontestdata: 0.9438999891281128\n" + ] + } + ], + "source": [ + "scores_2l_100=model_2l_100.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_2l_100[0])\n", + "print('Accuracyontestdata:',scores_2l_100[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "YA-uMXpAb9Lm" + }, + "outputs": [], + "source": [ + "#Пункт 8\n", + "model_2l_300 = Sequential()\n", + "model_2l_300.add(Dense(units=300,input_dim=num_pixels, activation='sigmoid'))\n", + "model_2l_300.add(Dense(units=num_classes, activation='softmax'))\n", + "# 2. компилируем модель\n", + "model_2l_300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 213 + }, + "id": "XuNfGZBtcB9y", + "outputId": "a7f1866c-6a08-4c5c-dd3c-631aa53926cc" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_3\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_3\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_5 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m300\u001b[0m) │ \u001b[38;5;34m235,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_6 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m3,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_5 (Dense)                 │ (None, 300)            │       235,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_6 (Dense)                 │ (None, 10)             │         3,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n" + ], + "text/html": [ + "
 Total params: 238,510 (931.68 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n" + ], + "text/html": [ + "
 Trainable params: 238,510 (931.68 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_2l_300.summary()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9Xitmk0EcDXW", + "outputId": "71ff6e9a-7026-41e7-a488-a70188d483f2" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.5528 - loss: 1.7901 - val_accuracy: 0.8203 - val_loss: 0.8592\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8386 - loss: 0.7584 - val_accuracy: 0.8618 - val_loss: 0.5684\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8667 - loss: 0.5470 - val_accuracy: 0.8748 - val_loss: 0.4692\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8820 - loss: 0.4562 - val_accuracy: 0.8857 - val_loss: 0.4180\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8882 - loss: 0.4171 - val_accuracy: 0.8907 - val_loss: 0.3849\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8947 - loss: 0.3853 - val_accuracy: 0.8945 - val_loss: 0.3657\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8986 - loss: 0.3605 - val_accuracy: 0.9007 - val_loss: 0.3484\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9029 - loss: 0.3491 - val_accuracy: 0.9048 - val_loss: 0.3384\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9011 - loss: 0.3418 - val_accuracy: 0.9040 - val_loss: 0.3294\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9073 - loss: 0.3307 - val_accuracy: 0.9077 - val_loss: 0.3223\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9055 - loss: 0.3271 - val_accuracy: 0.9077 - val_loss: 0.3149\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9073 - loss: 0.3190 - val_accuracy: 0.9125 - val_loss: 0.3084\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9110 - loss: 0.3118 - val_accuracy: 0.9113 - val_loss: 0.3046\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9113 - loss: 0.3054 - val_accuracy: 0.9127 - val_loss: 0.2996\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9119 - loss: 0.3018 - val_accuracy: 0.9138 - val_loss: 0.2966\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9160 - loss: 0.2951 - val_accuracy: 0.9143 - val_loss: 0.2926\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9143 - loss: 0.2991 - val_accuracy: 0.9162 - val_loss: 0.2902\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9160 - loss: 0.2885 - val_accuracy: 0.9165 - val_loss: 0.2859\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9159 - loss: 0.2888 - val_accuracy: 0.9160 - val_loss: 0.2831\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9192 - loss: 0.2835 - val_accuracy: 0.9158 - val_loss: 0.2805\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9190 - loss: 0.2817 - val_accuracy: 0.9178 - val_loss: 0.2783\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9207 - loss: 0.2744 - val_accuracy: 0.9182 - val_loss: 0.2753\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9218 - loss: 0.2724 - val_accuracy: 0.9188 - val_loss: 0.2742\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9221 - loss: 0.2702 - val_accuracy: 0.9198 - val_loss: 0.2709\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9216 - loss: 0.2714 - val_accuracy: 0.9182 - val_loss: 0.2692\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9245 - loss: 0.2650 - val_accuracy: 0.9217 - val_loss: 0.2665\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9237 - loss: 0.2650 - val_accuracy: 0.9228 - val_loss: 0.2638\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9258 - loss: 0.2602 - val_accuracy: 0.9228 - val_loss: 0.2619\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9253 - loss: 0.2593 - val_accuracy: 0.9222 - val_loss: 0.2608\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9264 - loss: 0.2600 - val_accuracy: 0.9240 - val_loss: 0.2580\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9278 - loss: 0.2537 - val_accuracy: 0.9230 - val_loss: 0.2575\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9284 - loss: 0.2526 - val_accuracy: 0.9247 - val_loss: 0.2552\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9283 - loss: 0.2503 - val_accuracy: 0.9252 - val_loss: 0.2511\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9291 - loss: 0.2496 - val_accuracy: 0.9250 - val_loss: 0.2509\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9318 - loss: 0.2444 - val_accuracy: 0.9260 - val_loss: 0.2484\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9291 - loss: 0.2486 - val_accuracy: 0.9273 - val_loss: 0.2452\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9304 - loss: 0.2447 - val_accuracy: 0.9287 - val_loss: 0.2437\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9321 - loss: 0.2355 - val_accuracy: 0.9260 - val_loss: 0.2446\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9335 - loss: 0.2358 - val_accuracy: 0.9287 - val_loss: 0.2413\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9337 - loss: 0.2346 - val_accuracy: 0.9288 - val_loss: 0.2369\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9326 - loss: 0.2387 - val_accuracy: 0.9283 - val_loss: 0.2371\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9327 - loss: 0.2357 - val_accuracy: 0.9285 - val_loss: 0.2347\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9345 - loss: 0.2281 - val_accuracy: 0.9290 - val_loss: 0.2327\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9366 - loss: 0.2256 - val_accuracy: 0.9308 - val_loss: 0.2319\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9359 - loss: 0.2239 - val_accuracy: 0.9307 - val_loss: 0.2287\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9377 - loss: 0.2224 - val_accuracy: 0.9320 - val_loss: 0.2273\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9373 - loss: 0.2172 - val_accuracy: 0.9335 - val_loss: 0.2260\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9371 - loss: 0.2191 - val_accuracy: 0.9335 - val_loss: 0.2238\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9378 - loss: 0.2159 - val_accuracy: 0.9342 - val_loss: 0.2205\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9395 - loss: 0.2136 - val_accuracy: 0.9347 - val_loss: 0.2197\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_2l_300 = model_2l_300.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1LkgLfwmdEZJ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "outputId": "72d41f55-dd67-4fd4-c915-63157e2bb252" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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/2Xb/5o1a2wDEnfu3Flu+f/93//x3HPPce+99/LFF1+wcuVKEhMTCQ4OvuARgeHDh/PZZ5+xZ88e1q1bZzeoU9Q+MjhN1Kjp06fz3Xff8eijj7J3714GDhyI2WwGrD2XVatW8dRTT5GVlcXSpUvtBjQFBQVx66238umnn/LAAw+wfv16FixYUOF+rrrqKhISEuzazj2Ee6733nuP22+/HbVazW233cb777/PQw89VO3POm3aNOLj4xkwYMAF1+nRowcvvvgiDzzwAIsWLaJRo0ZMmjTJlpMLiYmJwWKxsH//flq0aGFrT0tLIzs7m5iYmGrHf64333yTU6dOlRv9XKZswNW+ffvsDvGWxXj+dfmRkZEsX76c8PBwvv/+eyZNmkSfPn0IDQ11eN/VVZar82M3Go22qx4uxmAwlFvntddew8/Pj5CQEIdiCQ0NxcvLi3379pVbtnfvXjw8PIiOjra1paam8n//93/07NkTnU7H5MmT6dWrl93v/6uvvmLIkCHMmzfP1lZcXHzREfO9e/fGYDBw33330aVLFxo3bswff/zh0GcRl4/0uEWNioiIYMOGDfTu3Zt58+Zx9dVXs2TJEgoKCoiJiWH48OF4enry448/VthrGTRoELt37+bxxx9HrVZz3333VTumG264AYBbb72V++67j8cff7zc5TyO2rBhA99//z1z5869aK/46NGjjB49mscee4yRI0eSkJBAYGDgJbffp08fgHJfXObPnw9YP4uz5OXl8dxzzzFhwgQiIiIqXOfmm29Gr9fz2muv2fXiPv30U9LS0spdjta0aVPbOIbXX38di8XCuHHjqrTv6kpISECn0/Haa6+hnDONxfvvv09OTs5Fc1lRj3Xbtm388ssv9O/f3+HDy2q1mp49e/L999/bnV5IS0tj6dKldOnSBT8/P1v7iBEjsFgsvP/++7zzzjtoNBoeeughu8+hVqvtXoM15xf7cqjRaBg8eDA7duxg+PDhDn0GcflJj1vUuOjoaL7//ntSU1NZv349L730EklJSSxatIj4+Hji4+MvWOxuvfVWgoOD+fLLL+ndu3elBro54tVXX6VFixb83//9H1988YXdsg0bNtidsywbJJScnMymTZvo2LGjbVnZRCQX661ZLBYGDRpE/fr1mTt3rkNxtm3b1jZJTXZ2Nl27dmXTpk189NFH9O/fn+7d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mJgY9Ho9nTt3tsuJq5R9GTv386hUqgr//Try/6DbXA6Wl5fHP//8w9ixY9FoNGg0Gp5++mm2b9+ORqPh999/v+wxGbTW//yKTHKrOyGcKTg4mB49evDmm29SVFRkt+zkyZN8+umnDBgwAJVKRePGjdFoNKxfv962jsVi4a+//qJly5a2tj59+uDt7c2iRYtYsWIFw4cPt9vumDFjyMnJYdeuXSQlJXH77bfblmVkZLBv3z6mT5/OzTffTIsWLcjKyqow9ujoaLp06UJ2dja7d++2tR89epSjR4/axeSo9evXM3ToUO644w6uuuoqIiIi7AaIgfVLz9ChQ4mNjWXjxo289957F91mixYt2L59u+3wd9l+PDw8bIfbqyo1NZV58+aVGxgI4O/vT0REhN3vDeDPP/8sl6NPPvnEdm5/xIgRdr3T9evX89hjj9GnTx9atWqFXq/n9OnT1Yq7tnObwu3n58fOnTtJSkqyPUaNGkWzZs1ISkqiU6dOlz2mssJdXCqFWwhne+ONNygpKaFXr16sW7eOo0ePsmLFCnr06EG9evV47rnnAOvh2hEjRvD444+zfPly9uzZw+jRozlx4gSjR4+2bU+tVnP//ffzv//9jyZNmtC5c+dy+/T09KRx48bExcXZDWwKDAwkODiYd955h+TkZH7//Xe7U3Dnu+666+jUqRODBw9m06ZNbN26lQceeID4+Hhuuukm23qKolBcXExxcbFtEK3RaLS1mc1m28AsgCZNmvDNN9+QlJTE9u3bGThwYLkBZ3///Tf/+9//+Oqrr2jVqtUlL4t74IEHMBgMDBkyhF27drF69Wr+7//+j0GDBhEeHm5br+ycdXFxMUajEbAO/i1rq2jg28KFC7njjjto165dhfueMGECL7zwAp9//jn//fcfs2bNYvXq1UyePNluvaCgINv60dHRdrlv0qQJn3zyCXv27GHjxo088MADV/zNdFx6qDw/P5/k5GTb64MHD5KUlERQUBANGjRg2rRpHD9+nI8//hgPDw9at25t9/6wsDAMBkO59svFoLF+7yk2lf+DFUJUT5MmTfjnn3+YOXMm9957L5mZmURERNC/f39mzpxp+88c4OWXX0alUjFkyBByc3O5+uqr+fXXX+3O2wIMGjSI+fPnM2zYMIdi8fDw4PPPP+exxx6jdevWNGvWjNdee41u3bpd8D1f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tdc4cOAA+fn5lJaW4ufnZ7ed3NxcALy9L93bf/rpp+nevTtdunSpcHlmZma57Z9r//79PPXUU2zcuJHTp09jsVj/bzhy5EiVCreiKEyaNImZM2eSkZFha8/NzeXEiRNcf/31dutff/31bN++3a7tuuuus/uyU1hYWG4/999/P2r12UmlioqK7A4Vb9myhaeffprt27eTlZVl97latmxJdHQ0Go2Gzz77jAkTJlTq6MKePXsYOXJkufhfffXVS763Mr777jtSUlKYNGlSuS9h0dHRtqINEBMTQ/369dm9e7etcGdnZ5OQkMCxY8fo1atXue3/9ttvzJkzh71795Kbm0tpaSnFxcUUFhbi5eXY37oj5Bx3NZUVbulxC7ehUlkPV7vicd4hyEvx9vYmLi6OuLg4rrnmGt577z0KCgpst7ncsGEDDzzwAH369OGnn35i27ZtPPnkkxiNRrvtnDhxAg8PD8LCwi66v/379/Pee+9d8Nafx44dw2g00rBhwwtuo2/fvmRmZvLuu++yceNGNm7cCFAupsr6+OOPKSgoYNSoUVV6P1i/3CQlJdkeZT3ic73yyit263To0MG2rKCggN69e+Pn58enn37K5s2b+fbbb4GznysyMpK33nqL559/HoPBgI+PD59++mmVY64uk8nEE088wXPPPYenp6fdssDAwAu+79zD5IcPH6ZTp07MmjWL4cOH233hOXToELfddhtt2rTh66+/ZsuWLbajHFX9XVeWFO5qknPcQlw+KpUKDw8PioqKAPjrr7+IiYnhySefpEOHDjRp0oTDhw+Xe9/mzZtp3rx5uXPE55syZQoPP/wwcXFxFS5fu3Ytnp6edkXtXBkZGezbt4/p06dz880306JFC7Kyshz8lGcVFhby5JNP8sILL6DVau2W+fn5ERUVxfr16+3a169fT8uWLe3aoqOjbV+A4uLi0GjKH2yNiIiwW+fcYrd//34yMjKYO3cuN9xwA82bNy83MA1gyJAhNG/enJEjR5KUlMTtt99+0c/XokWLSsVfFW+99RY+Pj4MGjSo3LLmzZtz9OhRjh49ams7fPgwx44ds9t3o0aNWLx4MU8++SR+fn5MmzbNtmzLli1YLBbmzZvHtddeS9OmTTlx4vIcyZJD5dWkO3NkSQq3EM5XUlLCyZMnAeuh8jfeeIP8/Hz69u0LQJMmTThy5Aiff/4511xzDT///LOtJwjWns+yZcuYP38+s2bNuui+kpOTOXLkCMnJyRUuP3DgAHPnzqVfv37lRppnZ2djNBoJDAwkODiYd955h8jISI4cOcLUqVMr3J7RaKS4uNj2WlEUSktLMZvNtkPWS5cupX379hccmf34448zc+ZMGjduTHx8PB9++CFJSUlO7+nWr18fnU7H66+/zqhRo9i1axfPPPNMufUmTZqESqXilVdeQavV4uvrWy5X58d/77330q5dOxISEvjxxx/55ptv+O233+zWM5lMtlyZzWYsFovt9YXOob/44ov8+OOP5QaaAfTo0YMWLVowcOBAXnnlFcA6OC0+Pp6bbrrJtp6vr6/tS87ixYvp2LEjd999NzfccANxcXGYTCZef/11+vbty/r161m0aNFFsuhESh2Tk5OjAEpOTk61t2U0GpVhr/6gxEz5SXn2p3+dEF3dYTQale+++04xGo2uDsWtVCVvRUVFyu7du5WioqIajMz5hgwZogC2h6+vr3LNNdcoX331ld16jz/+uBIcHKz4+PgoAwYMUF555RXF399fURRF+eeff5RGjRopc+bMUUwmk5KVlaWYzWZl9erVCqBkZWUpiqIoM2fOVADl5Zdftm33/HViYmLs4jn/sXr1akVRFCUxMVFp0aKFotfrlTZt2ihr1qxRAOXbb79VFEVRDh48eNHtfPjhh4qiKErXrl0VlUqlbN682RbTzJkzlbZt29pem81mZdasWUq9evUUrVartG3bVvnll19sy8v2tW3bNrucxcTEKK+88ort9bnxlenatasybtw4xWw2K1lZWcqSJUuU2NhYRa/XK507d1Z++OEHu20vXbpUCQ8PV44fP273O+zXr1/Fv+Az3nzzTaVRo0aKVqtVmjZtqnz88cd2yy+Wq3MfZXGU/d5uu+22cts59zMeOHBAufXWWxUvLy/Fx8dHueOOO5Rjx45dMNeKoihPP/20EhcXpxQUFCiKoijz589XIiMjFU9PT6VXr17Kxx9/bPc3U5Y7s9msKMrF/y06UptUZz5QnZGbm4u/vz85OTkXHWBSGSaTif97ewUrjnnw4LUNeLb/VU6K8spnMplYvnw5ffr0KXcIUFxYVfJWXFzMwYMHadiw4SUPFV/JLBYLubm5+Pn5VemyrNjYWNasWUNsbGy5Zf379y93fXFVjB8/nvj4eIYO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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_2l_300.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_2l_300.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AJQ9PCjDdIWx", + "outputId": "0465f6cc-a514-447c-a6fb-5d42a75a146f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9365 - loss: 0.2352\n", + "Lossontestdata: 0.23040874302387238\n", + "Accuracyontestdata: 0.9372000098228455\n" + ] + } + ], + "source": [ + "scores_2l_300=model_2l_300.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_2l_300[0])\n", + "print('Accuracyontestdata:',scores_2l_300[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lMwKttpGdRBF" + }, + "outputs": [], + "source": [ + "#Пункт 8\n", + "model_2l_500 = Sequential()\n", + "model_2l_500.add(Dense(units=500,input_dim=num_pixels, activation='sigmoid'))\n", + "model_2l_500.add(Dense(units=num_classes, activation='softmax'))\n", + "# 2. компилируем модель\n", + "model_2l_500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 213 + }, + "id": "kp_GuJGtdTt7", + "outputId": "cf1cc121-c59a-4d1a-d095-2373226b04b4" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_4\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_4\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_7 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m500\u001b[0m) │ \u001b[38;5;34m392,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_8 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m5,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_7 (Dense)                 │ (None, 500)            │       392,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_8 (Dense)                 │ (None, 10)             │         5,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n" + ], + "text/html": [ + "
 Total params: 397,510 (1.52 MB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n" + ], + "text/html": [ + "
 Trainable params: 397,510 (1.52 MB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_2l_500.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YdDl5OBkdXYf", + "outputId": "345e610e-0037-424b-e537-e13a3c867f9d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.5493 - loss: 1.7652 - val_accuracy: 0.8298 - val_loss: 0.8146\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8435 - loss: 0.7186 - val_accuracy: 0.8608 - val_loss: 0.5514\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8698 - loss: 0.5216 - val_accuracy: 0.8768 - val_loss: 0.4572\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8831 - loss: 0.4475 - val_accuracy: 0.8865 - val_loss: 0.4084\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8879 - loss: 0.4108 - val_accuracy: 0.8918 - val_loss: 0.3823\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8930 - loss: 0.3828 - val_accuracy: 0.8972 - val_loss: 0.3626\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8983 - loss: 0.3595 - val_accuracy: 0.9015 - val_loss: 0.3486\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9001 - loss: 0.3542 - val_accuracy: 0.9023 - val_loss: 0.3385\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9007 - loss: 0.3479 - val_accuracy: 0.9048 - val_loss: 0.3280\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9042 - loss: 0.3333 - val_accuracy: 0.9060 - val_loss: 0.3242\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9067 - loss: 0.3251 - val_accuracy: 0.9077 - val_loss: 0.3177\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9089 - loss: 0.3189 - val_accuracy: 0.9093 - val_loss: 0.3119\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9082 - loss: 0.3227 - val_accuracy: 0.9117 - val_loss: 0.3078\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9119 - loss: 0.3072 - val_accuracy: 0.9123 - val_loss: 0.3037\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9122 - loss: 0.3064 - val_accuracy: 0.9107 - val_loss: 0.3013\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9133 - loss: 0.3014 - val_accuracy: 0.9138 - val_loss: 0.2988\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9133 - loss: 0.3027 - val_accuracy: 0.9152 - val_loss: 0.2962\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9147 - loss: 0.2972 - val_accuracy: 0.9170 - val_loss: 0.2914\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9154 - loss: 0.2965 - val_accuracy: 0.9145 - val_loss: 0.2898\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9179 - loss: 0.2874 - val_accuracy: 0.9163 - val_loss: 0.2878\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9170 - loss: 0.2921 - val_accuracy: 0.9165 - val_loss: 0.2874\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9187 - loss: 0.2833 - val_accuracy: 0.9163 - val_loss: 0.2845\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9192 - loss: 0.2845 - val_accuracy: 0.9167 - val_loss: 0.2810\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9198 - loss: 0.2798 - val_accuracy: 0.9158 - val_loss: 0.2819\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9196 - loss: 0.2829 - val_accuracy: 0.9180 - val_loss: 0.2782\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9215 - loss: 0.2812 - val_accuracy: 0.9168 - val_loss: 0.2774\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9220 - loss: 0.2716 - val_accuracy: 0.9175 - val_loss: 0.2754\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9220 - loss: 0.2714 - val_accuracy: 0.9198 - val_loss: 0.2750\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9221 - loss: 0.2716 - val_accuracy: 0.9190 - val_loss: 0.2739\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9246 - loss: 0.2690 - val_accuracy: 0.9197 - val_loss: 0.2717\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9223 - loss: 0.2720 - val_accuracy: 0.9217 - val_loss: 0.2701\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9244 - loss: 0.2632 - val_accuracy: 0.9203 - val_loss: 0.2682\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9252 - loss: 0.2610 - val_accuracy: 0.9222 - val_loss: 0.2680\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9247 - loss: 0.2616 - val_accuracy: 0.9205 - val_loss: 0.2654\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9262 - loss: 0.2621 - val_accuracy: 0.9215 - val_loss: 0.2641\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9266 - loss: 0.2599 - val_accuracy: 0.9217 - val_loss: 0.2626\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9273 - loss: 0.2577 - val_accuracy: 0.9230 - val_loss: 0.2596\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9268 - loss: 0.2608 - val_accuracy: 0.9223 - val_loss: 0.2588\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9266 - loss: 0.2571 - val_accuracy: 0.9230 - val_loss: 0.2577\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9263 - loss: 0.2576 - val_accuracy: 0.9247 - val_loss: 0.2567\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9295 - loss: 0.2481 - val_accuracy: 0.9270 - val_loss: 0.2543\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9297 - loss: 0.2504 - val_accuracy: 0.9253 - val_loss: 0.2534\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9313 - loss: 0.2430 - val_accuracy: 0.9253 - val_loss: 0.2528\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9288 - loss: 0.2501 - val_accuracy: 0.9250 - val_loss: 0.2502\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9312 - loss: 0.2430 - val_accuracy: 0.9275 - val_loss: 0.2470\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9310 - loss: 0.2461 - val_accuracy: 0.9250 - val_loss: 0.2479\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9311 - loss: 0.2470 - val_accuracy: 0.9272 - val_loss: 0.2445\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9308 - loss: 0.2468 - val_accuracy: 0.9280 - val_loss: 0.2432\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9310 - loss: 0.2396 - val_accuracy: 0.9277 - val_loss: 0.2417\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9335 - loss: 0.2354 - val_accuracy: 0.9285 - val_loss: 0.2419\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_2l_500 = model_2l_500.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "id": "P1jA4OiUecrl", + "outputId": "83e6a06e-7438-4fb9-a0d7-6d13ebe73993" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAHWCAYAAACxPmqWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAfhVJREFUeJzt3Xd4U2X7wPFvdvfeUFqgTJEhKoL4AlJAUBQniiLjBWX4ylThJ9OFiiIOFCeogOACRREpyFBkQxkypOxRyuieSZPz+yM0EFqgSVPS0PtzXbmanHNyzp27hTvPc57zHJWiKApCCCGE8AhqdwcghBBCiPKTwi2EEEJ4ECncQgghhAeRwi2EEEJ4ECncQgghhAeRwi2EEEJ4ECncQgghhAeRwi2EEEJ4ECncQgiXsFgsnD17loMHD7o7FCGua1K4hRBOO3XqFMOHDycuLg69Xk94eDiNGzcmOzvb3aEJcd3SujsAUf307duX77//ntzcXHeHIiogJSWFDh06YDKZePbZZ7npppvQarV4e3vj6+vr7vCEuG5J4RbXxLlz55g7dy5//vkna9asoaCggLvuuosWLVrwyCOP0KJFC3eHKBz09NNPo9frWb9+PTVq1HB3OEJUGyq5yYiobPPnz2fgwIHk5uYSHx+PyWTi1KlTtGjRgu3bt2MymejTpw+ffPIJer3e3eGKctiyZQs333wzy5Yto1OnTu4OR4hqRc5xi0q1du1annjiCaKioli7di2HDh0iMTERLy8vNm3axMmTJ3nsscf48ssvGTFiBACKohAfH899991Xan+FhYUEBgby9NNPA7Bq1SpUKhXff/99qW39/Pzo27ev7fXs2bNRqVQcPnzYtuyff/4hODiYe+65h+LiYrvtNm/ebLe/s2fPolKpmDRpkt3yspZNnToVlUpF+/bt7ZYfPHiQhx9+mJiYGNRqNSqVCpVKRZMmTa6URgCKi4t5+eWXqVu3LgaDgfj4eP7v//6PoqIiu+3i4+O555577JY988wzqFQqu2XLly9HpVLxyy+/2Ja1b9++VMybNm2yxVli/fr1eHl5ceDAAW644QYMBgNRUVE8/fTTpKen272/rH2++uqrqNVq5s2b5/CxL6d9+/a2bct6XPx7B/jwww9tscfExDB06FAyMzOveIycnBwGDBhAXFwcBoOBmjVrMmjQINLS0uy2K/kbutzj0r+Xbdu20bVrVwICAvDz86Njx46sX7/etl5RFDp06EB4eDinT5+2LTcajdx4443UrVuXvLw8AI4cOcKQIUNo0KAB3t7ehIaG8vDDD5f6/CUx6vV6zpw5Y7du3bp1tlgv/Xcg3E+6ykWlev3117FYLMyfP5+WLVuWWh8WFsZXX33F7t27+fjjj5k4cSIRERE88cQTvPnmm6SnpxMSEmLbfvHixWRnZ/PEE09UOLZjx45x11130bBhQ7799lu0Wtf8c8jMzGTKlCmllpvNZu69916OHDnC8OHDqV+/PiqVildffbVc+x0wYABffvklDz30EKNGjWLDhg1MmTKFPXv2sHDhQpfEXpYXXnih1LJz585RWFjI4MGDufPOOxk0aBAHDhxgxowZbNiwgQ0bNmAwGMrc36xZsxg3bhxvv/02vXr1cvjYV1KzZs1SuV+yZAnffPON3bJJkyYxefJkEhMTGTx4MPv27eOjjz5i06ZNrF27Fp1OV+b+09PT2bFjBwMGDCAqKoqUlBRmzpzJ0qVL2bhxIxEREXbbv/TSS9SuXdv2Ojc3l8GDB9tt888//3DHHXcQEBDA888/j06n4+OPP6Z9+/asXr2aVq1aoVKp+OKLL2jatCmDBg3ixx9/BGDixIn8888/rFq1yjauYNOmTfz99988+uij1KxZk8OHD/PRRx/Rvn17du/ejY+Pj93xNRoNc+bMsX1xBuvvyMvLi8LCwvKkXVxrihCVKCQkRImLi7Nb1qdPH8XX19du2fjx4xVAWbx4saIoirJv3z4FUD766CO77e69914lPj5esVgsiqIoysqVKxVA+e6770od29fXV+nTp4/t9axZsxRAOXTokJKenq40btxYadCggXL27Fm795Vst2nTJrvlZ86cUQBl4sSJdssvXfb8888rERERSsuWLZV27drZlpd8pilTpti9v127dsoNN9xQKv6LJScnK4AyYMAAu+WjR49WAOWPP/6wLYuLi1Puvvtuu+2GDh2qXPrPPSkpyS7nJbFcHPOSJUsUQLnrrrvs3j9x4kQFUDp27KgUFxfblpfk7v333y9zn7/++qui1WqVUaNGlfqM5T325Vwuj1OnTrX93hVFUU6fPq3o9Xqlc+fOitlstm33wQcfKIDyxRdfXPVYF9u1a5diMBiU/v3725Y58jfUo0cPRa/XKwcOHLAtO3nypOLv76/85z//sXv/xx9/rADKnDlzlPXr1ysajUYZPny43Tb5+fmlYly3bp0CKF999VWpGB977DHlxhtvtC3Py8tTAgIClF69epX5GYT7SVe5qFQ5OTmlWiFliYyMBLBdRlS/fn1atWrF3Llzbdukp6fz22+/8fjjj5fqOs3JyeHs2bN2j8spLCzk3nvv5cyZMyxdupTQ0FBnPlqZTpw4wfvvv8/48ePx8/MrFSPg1PGWLFkCwMiRI+2Wjxo1CoBff/3VmXCvSFEUxo4dy4MPPkirVq3K3GbkyJFoNBrb6969exMZGVlmPBs3buSRRx7hwQcfZOrUqRU+trOWL1+O0Whk+PDhqNUX/gscOHAgAQEBV81lyfXqJY/IyEi6devGDz/8gMVicSgWs9nMsmXL6NGjB3Xq1LEtj46OplevXvz11192l9Y99dRTdOnShf/973/07t2bunXr8tprr9nt09vb2/bcZDJx7tw5EhISCAoKYuvWraVi6N27N3v37rV1if/www8EBgbSsWNHhz6LuHakcItKFRMTw4EDB666XUpKCoDd6OQnn3yStWvXcuTIEQC+++47TCYTvXv3LvX+/v37Ex4ebvcoOed3qX79+vHXX3+Rk5NjO6/tKhMnTiQmJsZ2Dv5iDRo0IDg4mLfffpu1a9dy5swZzp49i8lkuup+jxw5glqtJiEhwW55VFQUQUFBthy50ty5c/nnn39KFQbA9sWpYcOGdss1Gg316tUrdT71xIkT3H333eTl5XHu3LmrnrO+0rErqiRXDRo0sFuu1+upU6fOVXN59OjRUn9rCxcuJCsr64pfGMty5swZ8vPzS8UC0KhRIywWC8eOHbNb/vnnn5Ofn8/+/fuZPXu2XaEGKCgoYMKECcTGxmIwGAgLCyM8PJzMzEyysrJKHSc8PJy7776bL774AoAvvviCPn362H2pEVWL/GZEpbrnnntIT0/n888/v+w2aWlpfPnll4SHh3PbbbfZlj/66KPodDpbq3vOnDncfPPNZf4nN2HCBJKSkuweXl5eZR5v69at/PTTT4SHh/PUU09V8BNesGfPHmbPns0rr7xS5jlSPz8/FixYQF5eHm3btiUiIoLw8HD+/vvvch+jPIO0XMFoNDJ+/Hj++9//Ur9+/VLrLy0WV5OSkkKtWrX4+uuvWb58OV9++aXTx3a3qKioUn9rjz322DU7/qpVq2wDEnfu3Flq/f/+9z9effVVHnnkEb799luWLVtGUlISoaGhl+0R6N+/P9988w179uxhzZo1doM6RdUjg9NEpRo3bhyLFi1i8ODB7N27l169emE2mwFry2XFihVMmDCBjIwM5s2bZzegKSQkhLvvvpu5c+fy+OOPs3btWqZPn17mcW688UYSExPtll3chXuxzz77jHvvvReNRsM999zD559/zn//+98Kf9axY8fSvHlzevbsedltOnXqxJtvvsnjjz/OzJkzqVOnDqNGjbLl5HLi4uKwWCzs37+fRo0a2ZanpaWRmZlJXFxcheO/2Icffsjp06dLjX4uUTLgat++fXZdvCUxXnpdfnR0NEuWLCEyMpKffvqJUaNG0a1bN8LDwx0+dkWV5OrS2I1Go+2qhyvx8vIqtc17771HQEAAYWFhDsUSHh6Oj48P+/btK7Vu7969qNVqYmNjbctSU1P53//+R+fOndHr9YwePZouXbrY/f6///57+vTpw9tvv21bVlhYeMUR8127dsXLy4tHH32Utm3bUrduXf7880+HPou4dqTFLSpVVFQU69ato2vXrrz99tvcdNNNzJkzh7y8POLi4ujfvz/e3t4sXry4zFZL79692b17N8899xwajYZHH320wjHdcccdANx99908+uijPPfcc6Uu53HUunXr+Omnn3j99dev2Co+duwYQ4YM4dlnn+Wpp54iMTGR4ODgq+6/W7duAKW+uEybNg2wfhZXycnJ4dVXX2XEiBFERUWVuU3Hjh0xGAy89957dq24uXPnkpaWVupytPr169vGMbz//vtYLBaGDRvm1LErKjExEb1ez3vvvYdy0TQWn3/+OVlZWVfMZVkt1m3btvHbb7/Ro0cPh7uXNRoNnTt35qeffrI7vZCWlsa8efNo27YtAQEBtuUDBw7EYrHw+eef88knn6DVavnvf/9r9zk0Go3da7Dm/EpfDrVaLU8++SQ7duygf//+Dn0Gce1Ji1tUutjYWH766SdSU1NZu3YtU6dOJTk5mZkzZ9K8eXOaN29+2WJ39913ExoaynfffUfXrl3LNdDNEe+++y6NGjXif//7H99++63dunXr1tmdsywZJJSSksLGjRu59dZbbetKJiK5UmvNYrHQu3dvatasyeuvv+5QnM2aNbNNUpOZmUm7du3YuHEjX375JT169KBDhw5225cMvCtx9OhRALtlycnJZR5r69athIWF8fzzz182npCQEMaNG8f48ePp0qUL9913HwcPHuSDDz6gWbNmDBgw4LLvjYqKYurUqQwYMIAnnnjC9qWkvMeuqPDwcMaOHcvkyZO56667uPfee9m3bx8ffvght9xyyxUvNTx69Ch33303Dz/8MDVq1GDXrl18+umnhIWFOX0+/pVXXiEpKYm2bdsyZMgQtFotH3/8MUVFRbz55pu27WbNmsWvv/7K7NmzqVmzJmAtyE888QQfffQRQ4YMAaynp77++msCAwNp3Lgx69atY/ny5VcdFPnyyy/z3HPPleuLpHAzt45pF9VSWZeDXcmQIUMUQJk3b16pdc5eDnaxL7/8UgGUn3/+2W67Kz0uvmwJUFQqlbJlyxa7/V56edNrr72mGAwGZfv27aW2u9rlYIqiKCaTSZk8ebJSu3ZtRafTKbGxscrYsWOVwsJCu+3i4uKuGv/Fj0svBwOUd955x26fJZd/XWrGjBlKw4YNFZ1Op0RGRipPP/20cu7cuSvmocSdd96p1KpVS8nJyXHq2Jcq7+VgJT744AO72AcPHqxkZGRc8Rg5OTnKwIEDlbi4OEWv1yvh4eFK7969lSNHjtht5+glhVu3blW6dOmi+Pn5KT4+PkqHDh2Uv//+27b+2LFjSmBgoNK9e/dSMd1///2Kr6+vcvDgQUVRFCUjI0Pp16+fEhYWpvj5+SldunRR9u7dq8TFxZX57+Fyl3tdbb1wH5nyVFR5I0aM4PPPP+fUqVOlJo9wh0mTJrFq1SpWrVrl7lCEENWQnOMWVVphYSFz5szhwQcfrBJFWwgh3E3OcYsq6fTp0yxfvpzvv/+ec+fOlTmQyV0SEhLIz893dxhCiGpKuspFlbRq1So6dOhAREQE48eP55lnnnF3SEIIUSVI4RZCCCE8iJzjFkIIITyIFG4hhBDCg1S7wWkWi4WTJ0/i7+9/zeZ9FkIIIa5EURRycnKIiYm56gx81a5wnzx50m7uXyGEEKKqOHbsmG1mvMtxa+Fes2YNU6dOZcuWLaSmprJw4UJ69OhRrveuXbuWdu3a0aRJk8tO3VgWf39/wJqci+cAdobJZGLZsmV07ty5zLtBicuT3DlH8uY8yZ1zJG/OcyR32dnZxMbG2mrUlbi1cOfl5dGsWTP69+/PAw88UO73ZWZm8uSTT9KxY0eHbw5R0j0eEBDgksLt4+NDQECA/EE7SHLnHMmb8yR3zpG8Oc+Z3JXnFK5bC3fXrl3p2rWrw+8bNGgQvXr1QqPRsGjRItcHJoQQQlRRHneOe9asWRw8eJA5c+bwyiuvXHX7oqIi203n4cIdnkwmEyaTqUKxlLy/ovupjiR3zpG8OU9y5xzJm/McyZ0j+fWowr1//37GjBnDn3/+iVZbvtCnTJnC5MmTSy1ftmyZy+a+TkpKcsl+qiPJnXMkb86T3DlH8ua88uTOkWmUPaZwm81mevXqxeTJk6lfv3653zd27FhGjhxpe10yAKBz584uOcedlJREp06d5NyPgyR3zqlI3sxmM8XFxVTXyRKLi4v5+++/adOmTbm/+AvJW0VcnDsvLy80Gs1lz2GX9AaXh8f8FnJycti8eTPbtm2zzVttsVhQFAWtVsuyZcu48847S73PYDBgMBhKLdfpdC4rGK7cV3UjuXOOo3nLzc3l+PHj1bZog/U62aioKFJTU2UOBwdI3px3ae58fHyIjo5Gr9eX2taRf88eU7gDAgLYuXOn3bIPP/yQP/74g++//57atWu7KTIhqjaz2czx48fx8fEhPDy82v7na7FYyM3Nxc/P76oTXIgLJG/OK8mdr68vxcXFnDlzhkOHDlGvXr0K5dKthTs3N5eUlBTb60OHDpGcnExISAi1atVi7NixnDhxgq+++gq1Wk2TJk3s3h8REYGXl1ep5UKIC0wmE4qiEB4ejre3t7vDcRuLxYLRaMTLy0sKkAMkb84ryZ23tzdqtRqdTseRI0ds+XSWWwv35s2b6dChg+11ybnoPn36MHv2bFJTUzl69Ki7whPiulJdW9pCVBWu+uLj1sLdvn37K55zmz179hXfP2nSJCZNmuTaoIQQQogqTPo9hBDXJbnu2DPJ7+3qpHALIa4LycnJ9OnTh/r16xMcHExAQABZWVnuDktcxcGDBxk8eDCNGzcmNDQUb29v9u7d6+6wqjQp3EKIKuvYsWP079+fmJgY9Ho9cXFxDBs2jHPnztltt2rVKtq2bUtUVBTz589n06ZNpKSkEBgY6KbIRXns2bOHli1bUlxczBdffMGGDRs4cOAADRs2dHdoVZrHXA4mhKheDh48SOvWralfvz7ffPMNtWvX5p9//uG5557jt99+Y/369YSEhKAoCgMHDmT69OkMGDDA3WELBzzzzDMMHTq0XNNXiwukxV0Bn/51iNeTNcxed8TdoQhRboqikG8sdsvDkQlghg4dil6vZ9myZbRr145atWrRtWtXli9fzokTJ3jxxRcB2Lt3L0eOHCElJYW4uDi8vLy47bbb+Ouvv2yfNyEhgbfffttu/8nJyahUKlJSUli1ahUqlYrMzEzb+r59+9rdZnjp0qW0bduWoKAgQkNDueeeezhw4IBt/eHDh1GpVLbbDJ84cYKHH36YiIgI/P39uf/++zl+/Lht+0mTJtG8eXPb68zMTFQqFatWrbpsDAcOHOC+++4jMjISPz8/brnlFpYvX273uVJTU3nggQcIDQ1FpVLZHhd/tkvt3LmTO++8E29vb0JDQ3nqqafIzc21rR8yZAj3339/qdwdPnzYtqx9+/YMHz7c9jo+Pp7p06fbXq9YsQKVSmX7PHl5eaxcuRKj0Ui9evXw8vLixhtv5KeffrpsTouKikhMTCQxMdF2D4pNmzbRqVMnwsLCCAwMpF27dmzduvWyn/V6IC3uCjiXayS1QMWprEJ3hyJEuRWYzDSe8Ltbjr37pS746K/+3056ejq///47r776aqlrz6Oionj88cdZsGABH374IWfOnMFkMvH111/z6aefUrt2bd59913uuusu9u/fT3R0NP3792f27NkMHDjQtp9Zs2bxn//8h4SEBLuCejl5eXmMHDmSpk2bkpuby4QJE7j//vtJTk4udZmPyWSiW7du6HQ6Fi9ejE6nY9iwYfTo0YNNmzY5fWlebm4u3bp149VXX8VgMPDVV1/RvXt39u3bR61atQAYNWoU//77L0uXLiU2Npa///6bBx988Iqfq0uXLrRu3ZpNmzZx+vRpBgwYwDPPPHPVK3vKy2KxMGrUKPz8/GzLzp07h6IofPzxx8ycOZOWLVsyb948HnjgAbZs2WL3pQasEwk9+uij5Obmsnz5ctuMmDk5OfTp04f3338fRVF4++236datG/v37y/Xva09kbS4K8BLpwGgqNji5kiEuL7s378fRVFo1KhRmesbNWpERkYGZ86cwWKx/vubOnUq3bp1o1GjRnz44YfExMQwY8YMwNpy3bdvH1u2bAGshXXevHn0798fwPbloKCg4LIxPfjggzzwwAMkJCTQvHlzvvjiC3bu3Mnu3btLbbt8+XJ27NjBV199RatWrbjpppuYO3cuycnJrFixwum8NGvWjKeffpomTZpQr149Xn75ZerWrcvPP/9s2yY5OZlevXpxyy23EBUVRUhIyBX3OW/ePAoLC/nqq69o0qQJd955Jx988AFff/01aWlpTsd6sS+//JKioiLuu+8+27KS39sLL7zAY489Rv369Zk0aRIdOnTgrbfesnu/oij069ePlJQUlixZYvcF4M477+SJJ56gYcOGNGrUiE8++YT8/HxWr17tktirImlxV4CX1vq9p8BkdnMkQpSft07D7pe6uO3YjnCka/3222+3PVer1bRp08ZWVGNiYujWrRtz5syhQ4cOLF68mKKiIh5++GEA6tWrh16v55tvvrG7KdHF9u/fz4QJE9iwYQNnz561FZ6jR4/azd7Ypk0bzGYzQUFBNG7c2La8Vq1axMbGsnv3bhITE8ufhIvk5uYyadIkfv31V1JTUykuLqagoMBuoqratWuzZMkSBg0adNWiDdYBYs2aNcPX19e27Pbbb8disbBv3z7Cw8OdirVEfn4+48aNY+bMmfzwww+l1l/8ewNo27at3RcRgOeee44VK1bQr1+/Up8pLS2NcePGsWrVKk6fPo3ZbCY/P/+6nrxLWtwVYDj/n1ChSVrcwnOoVCp89Fq3PMrbRZyQkIBKpWLPnj1lrt+zZw/BwcGEh4cTHBx8xc9a4r///S8//vgjBQUFzJo1i549e9pu7RsSEsK0adMYM2YM3t7e+Pn5MXfuXLt9de/enfT0dD799FM2bNjAhg0bADAajXbbLViwgJdffrlcMTlq9OjRLFy4kNdee40///yT5ORkbrzxRrsY3nnnHYqKiggLC8PPz4+uXbs6fTxXmDp1Kg0aNKB79+52y8v7ewPr7/u3335j/vz5/P67/WmePn36kJyczLvvvsvff/9NcnIyoaGhpX4v1xMp3BXgpbOmr0ha3EK4VGhoKJ06deLDDz8s1X196tQp5s6dS8+ePVGpVNStWxetVsvatWtt21gsFv7++2+7Fm+3bt3w9fVl5syZLF261NZNXmLo0KFkZWWxa9cukpOTuffee23rzp07x759+xg3bhwdO3a0ddWXJTY2lrZt25KZmWnXjX7s2DGOHTtmF5Oj1q5dS9++fbn//vu58cYbiYqKshsgBlC/fn369u1LfHw8GzZs4LPPPrviPhs1asT27dvJy8uzO45araZBgwZOxwrWgXJvv/12qYGBAIGBgURFRdn93gD++uuvUjn6+uuvueuuu3j55ZcZOHCg3S0w165dy7PPPku3bt244YYbMBgMnD17tkJxV3VSuCvAS3u+xS3nuIVwuQ8++ICioiK6dOnCmjVrOHbsGEuXLqVTp07UqFGDV199FQA/Pz8GDhzIc889x5IlS9izZw9Dhgzh5MmTDBkyxLY/jUbDY489xv/93/9Rr149WrduXeqY3t7e1K1bl4SEBLuBTcHBwYSGhvLJJ5+QkpLCH3/8cdkudbB2l7dq1Yonn3ySjRs3snXrVh5//HGaN29ud/thRVEoLCyksLDQNkraaDTalpnNZiwWi202sXr16vHjjz+SnJzM9u3b6dWrl63LvsT69ev5v//7P77//ntuuOEGatSoccU8P/7443h5edGnTx927drFypUr+d///kfv3r2JjIy0bWexWGxxlbRmi4qKbMsujQNgxowZ3H///bRo0aLMY48YMYI33niD+fPn8++//zJp0iRWrlzJ6NGj7bYr6R4fMWIEsbGxdrmvV68eX3/9NXv27GHDhg08/vjj1/3NdKRwV0BJi7tQWtxCuFy9evXYvHkzderU4ZFHHqFu3bo89dRTdOjQgXXr1tmd63zrrbfo0aMHffr0oXnz5mzfvp3ff/+d6Ohou3327t0bo9FIv379HIpFrVYzf/58tmzZQpMmTRgxYgRTp0694nt++OEHYmNj6dixI+3atSMsLIxFixbZdQPv2LEDb29vvL29iYqKAqBLly62ZXPmzGHx4sW20fDTpk0jODiYNm3a0L17d7p06cJNN91k29+ZM2d4+OGHmTZtmt3yK/Hx8eH3338nPT2dW265hYceeoiOHTvywQcf2G33yy+/2OJq1aoVAA0bNrQt+/PPP0vt22Kx2L5glWXUqFE8++yzjBo1iiZNmvDjjz/y448/0qxZszK3V6vVzJo1i3nz5rFs2TIAPv/8czIyMrjpppvo3bs3zz77LBEREeX67J5KpTgy+uM6kJ2dTWBgIFlZWQQEBFRoX8t2neSpOdu4sUYAi/93h4sirB5MJhNLliyxXTIjyseZvBUWFnLo0CFq165doVsJejqLxcLSpUvp0aMHx44ds2tNVmWLFi1i0aJFLrs0y1EWi4Xs7GwCAgLktp4OujR3V/q36EhtklHlFSAtbiE8Q1FREWlpabzxxhs89NBDHlO0wdrFL19uxcXk61MFlJzjLpBR5UJUaSVTpmZlZfHGG2+4OxyHdO/enU8//dTdYYgqRAp3BRhkVLkQHqFv376YTCZWrVp11cFaQlR1UrgrQEaVCyGEuNakcFeAnOMWQghxrUnhroCSucpNZgWzpVoNzhdCCOEmUrgroKTFDVBULK1uIYQQlU8KdwWUnOMGma9cCCHEtSGFuwLUahUalbWLXO4QJoQQnq1katmqTgp3BenPZ1AGqAkhhGdZuHAhd999N/Hx8fj5+XHHHZ4xA6YU7grSSeEWolL07dsXlUple4SGhnLXXXexY8cOd4cmrgNTpkxh4MCB3HPPPfz6668kJyezZMkSd4dVLjLlaQVdKNxyjlsIV7vrrruYNWsWYL2d57hx47jnnns4evSomyMTnuzgwYO89tprrF+/nhtuuMHd4ThMWtwVVFK4ZfY04TEUBYx57nk4eE8jg8FAVFQUUVFRNG/enDFjxnDs2DHOnDlj2+aFF16gfv36+Pj4UKdOHcaPH1/qXOXhw4fRaDQEBwej0WhsrfjMzEwAJk2aRPPmzW3bG41GEhIS7LYpER8fb9cToFKpWLRokW390qVLadu2LUFBQYSGhnLPPfdw4MABu1hUKhXJycml9jt9+nTb6/bt2zN8+HDb63379qHT6ezitFgsvPTSS9SsWRODwUDz5s1ZunSpw8e69DOUdfyvv/6am2++GX9/f6KioujVqxenT5+2e88vv/xCs2bN8Pb2tuWmR48eXMlHH31E3bp10ev1NGjQgK+//tpu/aWxDR8+nPbt21/2M65atarU76137952+/n999+pW7cur776KuHh4fj7+/PAAw9w/Phx23su/ZvYunUrQUFBdvc3nzZtGjfeeCO+vr7ExsYyZMgQcnNzr/h5XUFa3BVka3HL5WDCU5jy4bUY9xz7/06C3tept+bm5jJnzhwSEhIIDQ21Lff392f27NnExMSwc+dOBg4ciL+/P88//7xtm5KbIC5atIhbbrmF9evX8+CDD172WB988AFpaWmXXf/SSy/ZbrV56a1D8/LyGDlyJE2bNiU3N5cJEyZw//33k5ycXKG7az333HOl7ij17rvv8vbbb/Pxxx/TokULvvjiC+69917++ecf6tWr5/SxymIymXj55Zdp0KABp0+fZuTIkfTt29fWvZyZmUnPnj0ZMGAAixYtwtvbm2HDhtnuM16WhQsXMmzYMKZPn05iYiK//PIL/fr1o2bNmnTo0MElcW/ZsoWff/7ZbtmZM2fYvn07/v7+/PbbbwAMGzaMHj16sGnTJrtbrwLs3buXLl26MG7cOAYMGGBbrlaree+996hduzYHDx5kyJAhPP/883z44Ycuif1ypHBXkF66yoWoNL/88gt+fn6AtSBGR0fzyy+/2BXAcePG2Z7Hx8czevRo5s+fb1e4S1rgERERREVF2d3L+1Lp6em88sorvPDCC4wfP77U+qKiIkJCQmz3z77UpV8IvvjiC8LDw9m9ezdNmjQpx6cubeXKlfz9998MGDCAlStX2pa/9dZbvPDCCzz66KMAvPHGG6xcuZLp06czY8YMp451Of3797flvU6dOrz33nvccsst5Obm4ufnx7///kt+fj4vvPACMTHWL4be3t5XLNxvvfUWffv2ZciQIQCMHDmS9evX89Zbb7mscI8cOZLnnnvO7ndpsVjQaDTMmzeP2NhYAObNm0fdunVZsWIFiYmJtm2PHDlCp06deOqppxg9erTdvi/ukYiPj+eVV15h0KBBUrirOp1aAVQyOE14Dp2PteXrrmM7oEOHDnz00UcAZGRk8OGHH9K1a1c2btxIXFwcAAsWLOC9997jwIED5ObmUlxcXOp+xtnZ2QD4+l69tf/SSy/RoUMH2rZtW+b69PT0K94vef/+/UyYMIENGzZw9uxZLBbrl/qjR486VbgVRWHUqFFMnDiRc+fO2ZZnZ2dz8uRJbr/9drvtb7/9drZv3263rE2bNnZfdvLz80sd57HHHkOjuTA3RUFBgV1X8ZYtW3jppZfYvn07GRkZdp+rcePGxMbGotVq+eabbxgxYkS5ehf27NnDU089VSr+d99996rvLY9FixZx8OBBRo0aVepLWGxsrK1oA8TFxVGzZk12795tK9yZmZkkJiZy/PhxunTpUmr/y5cvZ8qUKezdu5fs7GyKi4spLCwkPz8fHx/H/tYdIee4K6ikq1yu4xYeQ6Wydle743FJF+TV+Pr6kpCQQEJCArfccgufffYZeXl5tttcrlu3jscff5xu3brxyy+/sG3bNl588UWMRqPdfk6ePIlarSYiIuKKx9u/fz+fffbZZW/9efz4cYxGI7Vr177sPrp37056ejqffvopGzZsYMOGDQClYiqvr776iry8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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_2l_500.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_2l_500.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "s2IdipB3eh3Z", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "df6151d8-b1fc-4e69-8dda-076b2c836468" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9290 - loss: 0.2572\n", + "Lossontestdata: 0.25275251269340515\n", + "Accuracyontestdata: 0.9301000237464905\n" + ] + } + ], + "source": [ + "scores_2l_500=model_2l_500.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_2l_500[0])\n", + "print('Accuracyontestdata:',scores_2l_500[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sPmUCF2q-yKD" + }, + "source": [ + "Лучшая метрика - Accuracyontestdata : 0.9438999891281128, при архитектуре со 100 нейронами." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qB_TMC8KfLxV" + }, + "outputs": [], + "source": [ + "#9 пункт\n", + "model_3l_100_50 = Sequential()\n", + "model_3l_100_50.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n", + "model_3l_100_50.add(Dense(units=50, activation='sigmoid'))\n", + "model_3l_100_50.add(Dense(units=num_classes, activation='softmax'))\n", + "\n", + "model_3l_100_50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BeZb9kX_fSjT", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 246 + }, + "outputId": "02d33699-95a4-4ceb-e2b2-a849a5b3c16a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_5\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_5\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_9 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m78,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_10 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m50\u001b[0m) │ \u001b[38;5;34m5,050\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_11 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m510\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_9 (Dense)                 │ (None, 100)            │        78,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_10 (Dense)                │ (None, 50)             │         5,050 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_11 (Dense)                │ (None, 10)             │           510 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n" + ], + "text/html": [ + "
 Total params: 84,060 (328.36 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n" + ], + "text/html": [ + "
 Trainable params: 84,060 (328.36 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_3l_100_50.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "M6fHvyBifb76", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "abf93d28-a4b9-4814-96a4-9d4d4c531f29" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 3ms/step - accuracy: 0.2184 - loss: 2.2653 - val_accuracy: 0.4402 - val_loss: 2.0564\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.5373 - loss: 1.9305 - val_accuracy: 0.6475 - val_loss: 1.4814\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.6621 - loss: 1.3505 - val_accuracy: 0.7543 - val_loss: 1.0269\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.7630 - loss: 0.9652 - val_accuracy: 0.8047 - val_loss: 0.7883\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8158 - loss: 0.7571 - val_accuracy: 0.8412 - val_loss: 0.6438\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8455 - loss: 0.6224 - val_accuracy: 0.8575 - val_loss: 0.5530\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8636 - loss: 0.5428 - val_accuracy: 0.8652 - val_loss: 0.4939\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8749 - loss: 0.4841 - val_accuracy: 0.8773 - val_loss: 0.4487\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8809 - loss: 0.4496 - val_accuracy: 0.8850 - val_loss: 0.4174\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8883 - loss: 0.4151 - val_accuracy: 0.8903 - val_loss: 0.3935\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8935 - loss: 0.3920 - val_accuracy: 0.8973 - val_loss: 0.3757\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8959 - loss: 0.3821 - val_accuracy: 0.9000 - val_loss: 0.3597\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9008 - loss: 0.3563 - val_accuracy: 0.9027 - val_loss: 0.3473\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9018 - loss: 0.3480 - val_accuracy: 0.9038 - val_loss: 0.3370\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9057 - loss: 0.3381 - val_accuracy: 0.9048 - val_loss: 0.3282\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9060 - loss: 0.3279 - val_accuracy: 0.9077 - val_loss: 0.3197\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9070 - loss: 0.3260 - val_accuracy: 0.9090 - val_loss: 0.3124\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9082 - loss: 0.3208 - val_accuracy: 0.9093 - val_loss: 0.3056\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9121 - loss: 0.3049 - val_accuracy: 0.9112 - val_loss: 0.2994\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9136 - loss: 0.2994 - val_accuracy: 0.9128 - val_loss: 0.2937\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9125 - loss: 0.3029 - val_accuracy: 0.9128 - val_loss: 0.2895\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9147 - loss: 0.2911 - val_accuracy: 0.9163 - val_loss: 0.2839\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9146 - loss: 0.2905 - val_accuracy: 0.9162 - val_loss: 0.2788\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9174 - loss: 0.2865 - val_accuracy: 0.9182 - val_loss: 0.2746\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9193 - loss: 0.2795 - val_accuracy: 0.9190 - val_loss: 0.2707\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9231 - loss: 0.2650 - val_accuracy: 0.9202 - val_loss: 0.2665\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9221 - loss: 0.2665 - val_accuracy: 0.9212 - val_loss: 0.2618\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9243 - loss: 0.2587 - val_accuracy: 0.9222 - val_loss: 0.2583\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9246 - loss: 0.2599 - val_accuracy: 0.9228 - val_loss: 0.2543\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9278 - loss: 0.2529 - val_accuracy: 0.9238 - val_loss: 0.2506\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9254 - loss: 0.2524 - val_accuracy: 0.9253 - val_loss: 0.2472\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9307 - loss: 0.2428 - val_accuracy: 0.9267 - val_loss: 0.2427\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9284 - loss: 0.2449 - val_accuracy: 0.9285 - val_loss: 0.2403\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9316 - loss: 0.2332 - val_accuracy: 0.9298 - val_loss: 0.2365\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9322 - loss: 0.2345 - val_accuracy: 0.9307 - val_loss: 0.2325\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9315 - loss: 0.2356 - val_accuracy: 0.9303 - val_loss: 0.2297\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9338 - loss: 0.2272 - val_accuracy: 0.9327 - val_loss: 0.2273\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9361 - loss: 0.2201 - val_accuracy: 0.9342 - val_loss: 0.2240\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9352 - loss: 0.2239 - val_accuracy: 0.9348 - val_loss: 0.2209\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9384 - loss: 0.2145 - val_accuracy: 0.9357 - val_loss: 0.2181\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9375 - loss: 0.2188 - val_accuracy: 0.9373 - val_loss: 0.2145\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9379 - loss: 0.2157 - val_accuracy: 0.9380 - val_loss: 0.2121\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9416 - loss: 0.2053 - val_accuracy: 0.9380 - val_loss: 0.2091\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9418 - loss: 0.2027 - val_accuracy: 0.9397 - val_loss: 0.2068\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9413 - loss: 0.2037 - val_accuracy: 0.9403 - val_loss: 0.2036\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9443 - loss: 0.1954 - val_accuracy: 0.9395 - val_loss: 0.2011\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9449 - loss: 0.1941 - val_accuracy: 0.9410 - val_loss: 0.1992\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9431 - loss: 0.1947 - val_accuracy: 0.9415 - val_loss: 0.1964\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9444 - loss: 0.1934 - val_accuracy: 0.9417 - val_loss: 0.1940\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9475 - loss: 0.1858 - val_accuracy: 0.9422 - val_loss: 0.1914\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_3l_100_50 = model_3l_100_50.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hkDzHYXkgPbY", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "outputId": "ce3685f3-2bdb-406c-cc09-e210e2282c3c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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6TC5Z8+eUtufeOIJXn/9de69916+//57/vzzT2JjY/H39y+3RWH06NF89913HDhwgPXr11t1OhU1i3SeEw43depUli9fzuOPP87BgwcZPnw4RqMRMNd81q5dy7Rp08jIyGDJkiVWHa78/Py4/fbb+fbbb7n//vvZuHEj8+bNK/M6rVu3JiYmxmrdpU3El/r8888ZNGgQGo2GO+64gy+++IKHH374qt/rlClTaNeuHffdd1+5+/Tu3ZvZs2dz//33s2DBAho2bMjkyZMtZVKeiIgITCYThw8fpnnz5pb1ycnJZGZmEhERcdXxX+rjjz/m/PnzpXpvlyjpEHbo0CGrJuSSGC8flyA0NJSVK1cSHBzMr7/+yuTJkxkwYACBgYE2X/tqlZTV5bEXFRVZntqoiIuLS6l93n//fby8vAgICLAplsDAQNzc3Dh06FCpbQcPHkStVhMeHm5Zl5iYyBNPPEGfPn1wdnbmmWeeoW/fvlY//x9//JGRI0cyZ84cy7qCgoIKe/z3798fFxcXhg4dSrdu3WjUqBH//POPTe9FXBtSYxcOFxISwubNm+nfvz9z5szhxhtv5JtvviE3N5eIiAhGjx6Nq6srK1asKLPW8+CDD7J//36effZZNBoNQ4cOveqYbrnlFgBuv/12hg4dyrPPPlvqcSVbbd68mV9//ZU333yzwlr16dOnGTduHE8++SSPPPIIMTEx+Pr6XvH8AwYMACj1wWbu3LmA+b1UlZycHF5//XWefvppQkJCytzntttuQ6fT8f7771vVAr/99luSk5NLPW7XpEkTSz+KDz74AJPJxFNPPWXXta9WTEwMzs7OvP/++yiXDPXxxRdfkJWVVWFZllXj3blzJ3/88QeDBw+2uflao9HQp08ffv31V6vbF8nJySxZsoRu3brh5eVlWT927FhMJhNffPEFn376KU5OTjz88MNW70Oj0Vi9BnOZV/Th0cnJiREjRrB7925Gjx5t03sQ15bU2EWNEB4ezq+//kpiYiIbN27k7bffJiEhgQULFtCuXTvatWtXbjK8/fbb8ff354cffqB///6V6ohni/fee4/mzZvzxBNP8P3331tt27x5s9U905JOTEeOHGHr1q106tTJsq1koJaKansmk4kHH3yQ+vXr8+abb9oUZ9u2bS2D+GRmZtK9e3e2bt3KV199xeDBg+nZs6fV/iUd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xMfHA+ZJdi61bNkyXn311UrFZKtnnnmGX375hTfeeIN//vmHhIQEWrdubRXDu+++S2FhIQEBAXh4eNC/f3+7r1cV3n77bZo2bcrAgQOt1lf25wbmn/cff/zB0qVLS3WgHjlyJAkJCbz33nts2rSJhIQE/P39S/1cagtJ7NXMUmOXpnghqpS/vz+9e/fm448/LtU8npSUxLfffst9992HSqWiUaNGODk5sXHjRss+JpOJTZs2WdWYBwwYgLu7OwsWLGDVqlWWZvgS48ePJysri71795KQkMCgQYMs29LS0jh06BBTp07ltttus9wKKEt4eDjdunUjMzPTqpn+9OnTnD592iomW23cuJFRo0YxZMgQWrduTUhISKmniZo0acKoUaOIjIwkPj6ezz//vMJzNm/enF27dpGbm2t1HbVaTdOmTe2OFcwd+ebMmVOq4yKAt7c3ISEhVj83gA0bNpQqo6+//pp+/frx6quvMnbsWMtkXiWxPvnkkwwYMICWLVui0+lITU29qrhrMkns1SzE+0KNXZrihahyH374IYWFhfTt25f169dz+vRpVq1aRe/evalXrx6vv/46AB4eHowdO5Znn32WlStXcuDAAcaNG8e5c+cYN26c5XwajYZhw4bx4osv0rhxY7p06VLqmq6urjRq1Ijo6Girjle+vr74+/vz6aefcuTIEf76669ym+zB3BzfuXNnRowYwdatW9mxYwf3338/7dq1o1evXpb9FEWhoKCAgoICSy/voqIiyzqj0YjJZLKMxta4cWN+/vlnEhIS2LVrF8OHD7fcEiixZcsWXnzxRX788UdatmxJvXr1Kizn+++/HxcXF0aOHMnevXv5+++/eeKJJ3jwwQcJDg627GcymSxxldSGCwsLLesujwPgo48+YsiQIdxwQ9ndi59++mneeustli5dyn///ceMGTP4+++/eeaZZ6z2K2l+f/rppwkPD7cq+8aNG/P1119z4MAB4uPjuf/++0t1uKxVFFFKVlaWAihZWVlXfa5jyVlKxPO/KY1fWqmYTKYqiK7uKCoqUpYvX64UFRU5OpTriq3llp+fr+zfv1/Jz8+v5siqx4kTJ5SRI0cqwcHBilarVcLDw5UnnnhCSU1NtdovNzdXGTdunBIQEKA4OzsrN910k7JhwwarfYxGo7Jz504FUGbPnn3Fa48cOVK58847La9j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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_3l_100_50.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_3l_100_50.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VdJfu6Djgik1", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2e7b1bd4-e509-4981-fc3e-4974a4908d13" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9423 - loss: 0.2074\n", + "Lossontestdata: 0.20320768654346466\n", + "Accuracyontestdata: 0.9427000284194946\n" + ] + } + ], + "source": [ + "scores_3l_100_50=model_3l_100_50.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_3l_100_50[0])\n", + "print('Accuracyontestdata:',scores_3l_100_50[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EkTKyuyMgviX" + }, + "outputs": [], + "source": [ + "#9 пункт\n", + "model_3l_100_100 = Sequential()\n", + "model_3l_100_100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n", + "model_3l_100_100.add(Dense(units=100, activation='sigmoid'))\n", + "model_3l_100_100.add(Dense(units=num_classes, activation='softmax'))\n", + "\n", + "model_3l_100_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fVv9bbckg1df", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 246 + }, + "outputId": "45c82f28-3212-4241-ce0b-098a23b2bd2f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_6\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_6\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_12 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m78,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_13 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m10,100\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_14 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_12 (Dense)                │ (None, 100)            │        78,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_13 (Dense)                │ (None, 100)            │        10,100 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_14 (Dense)                │ (None, 10)             │         1,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n" + ], + "text/html": [ + "
 Total params: 89,610 (350.04 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n" + ], + "text/html": [ + "
 Trainable params: 89,610 (350.04 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_3l_100_100.summary()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DBmXBpkEg482", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "59470c59-cc9d-436a-ad18-d2c31dc3755f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.2217 - loss: 2.2757 - val_accuracy: 0.4550 - val_loss: 2.0754\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.5328 - loss: 1.9426 - val_accuracy: 0.6695 - val_loss: 1.4533\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.6905 - loss: 1.3098 - val_accuracy: 0.7663 - val_loss: 0.9693\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.7778 - loss: 0.9031 - val_accuracy: 0.8193 - val_loss: 0.7365\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8182 - loss: 0.7111 - val_accuracy: 0.8360 - val_loss: 0.6098\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8400 - loss: 0.5970 - val_accuracy: 0.8538 - val_loss: 0.5323\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8530 - loss: 0.5334 - val_accuracy: 0.8658 - val_loss: 0.4795\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8729 - loss: 0.4714 - val_accuracy: 0.8770 - val_loss: 0.4420\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8781 - loss: 0.4415 - val_accuracy: 0.8828 - val_loss: 0.4129\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8848 - loss: 0.4121 - val_accuracy: 0.8882 - val_loss: 0.3905\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8926 - loss: 0.3878 - val_accuracy: 0.8930 - val_loss: 0.3729\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8940 - loss: 0.3762 - val_accuracy: 0.8970 - val_loss: 0.3591\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.8983 - loss: 0.3611 - val_accuracy: 0.8998 - val_loss: 0.3470\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9010 - loss: 0.3482 - val_accuracy: 0.9030 - val_loss: 0.3364\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9049 - loss: 0.3351 - val_accuracy: 0.9047 - val_loss: 0.3295\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9049 - loss: 0.3361 - val_accuracy: 0.9077 - val_loss: 0.3200\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9069 - loss: 0.3236 - val_accuracy: 0.9097 - val_loss: 0.3141\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9081 - loss: 0.3148 - val_accuracy: 0.9110 - val_loss: 0.3077\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9100 - loss: 0.3122 - val_accuracy: 0.9128 - val_loss: 0.3004\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9108 - loss: 0.3060 - val_accuracy: 0.9145 - val_loss: 0.2951\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9121 - loss: 0.3015 - val_accuracy: 0.9167 - val_loss: 0.2893\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9166 - loss: 0.2886 - val_accuracy: 0.9168 - val_loss: 0.2845\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9152 - loss: 0.2864 - val_accuracy: 0.9177 - val_loss: 0.2807\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9170 - loss: 0.2838 - val_accuracy: 0.9202 - val_loss: 0.2750\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9199 - loss: 0.2770 - val_accuracy: 0.9218 - val_loss: 0.2712\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9224 - loss: 0.2716 - val_accuracy: 0.9233 - val_loss: 0.2663\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9244 - loss: 0.2639 - val_accuracy: 0.9235 - val_loss: 0.2633\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9234 - loss: 0.2602 - val_accuracy: 0.9243 - val_loss: 0.2584\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9256 - loss: 0.2614 - val_accuracy: 0.9252 - val_loss: 0.2556\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9269 - loss: 0.2521 - val_accuracy: 0.9268 - val_loss: 0.2511\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9278 - loss: 0.2485 - val_accuracy: 0.9275 - val_loss: 0.2472\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9284 - loss: 0.2445 - val_accuracy: 0.9272 - val_loss: 0.2434\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9307 - loss: 0.2422 - val_accuracy: 0.9280 - val_loss: 0.2407\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9298 - loss: 0.2395 - val_accuracy: 0.9293 - val_loss: 0.2367\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9311 - loss: 0.2357 - val_accuracy: 0.9303 - val_loss: 0.2339\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9332 - loss: 0.2273 - val_accuracy: 0.9323 - val_loss: 0.2307\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9333 - loss: 0.2269 - val_accuracy: 0.9330 - val_loss: 0.2283\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9365 - loss: 0.2195 - val_accuracy: 0.9327 - val_loss: 0.2249\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9369 - loss: 0.2157 - val_accuracy: 0.9327 - val_loss: 0.2215\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9364 - loss: 0.2184 - val_accuracy: 0.9360 - val_loss: 0.2180\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9384 - loss: 0.2135 - val_accuracy: 0.9353 - val_loss: 0.2158\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9388 - loss: 0.2112 - val_accuracy: 0.9370 - val_loss: 0.2128\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9413 - loss: 0.2068 - val_accuracy: 0.9357 - val_loss: 0.2107\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9414 - loss: 0.2046 - val_accuracy: 0.9362 - val_loss: 0.2078\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9424 - loss: 0.2021 - val_accuracy: 0.9372 - val_loss: 0.2053\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9429 - loss: 0.1996 - val_accuracy: 0.9368 - val_loss: 0.2030\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9463 - loss: 0.1907 - val_accuracy: 0.9387 - val_loss: 0.2007\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9450 - loss: 0.1945 - val_accuracy: 0.9393 - val_loss: 0.1983\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9472 - loss: 0.1869 - val_accuracy: 0.9407 - val_loss: 0.1958\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9460 - loss: 0.1903 - val_accuracy: 0.9403 - val_loss: 0.1929\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_3l_100_100 = model_3l_100_100.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bRUvSIR0hv9g", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "outputId": "6413487c-9cd1-4e20-a493-3d267049ed43" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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qcPkwYMHy2z/v//7P15//XUeeughvv32W37//XeioqLw8/OrsEVhzJgxfPPNNxw9epStW7eadToVNxbpPCfsbsaMGaxdu5ZnnnmGY8eOMWLECPR6PWCs+WzevJmZM2eSlpbGqlWrzDpc+fr6MnDgQL7++mseeeQRtm/fzqJFi8q9TuvWrenVq5fZupJNxCV99tlnDB48GLVazT333MPnn3/OE088Ue3POn36dNq1a8fDDz9c4T69e/fmrbfe4pFHHmHp0qU0atSIqVOnmsqkIuHh4RgMBk6cOEGLFi1M65OSkkhPTyc8PLza8Zf00UcfcenSpTK9t4sVdwg7fvy4WRNycYylxyUICQlh/fr1BAUF8fPPPzN16lQGDBhAQECAxdeuruKyKh17YWGh6amNyjg7O5fZ5/3338fT0xN/f3+LYgkICMDV1ZXjx4+X2Xbs2DEcHBwICwszrUtISOD//u//6NOnD05OTjz//PP07dvX7Of//fffM2rUKBYsWGBal5+fX2mP//79++Ps7MywYcPo2rUrjRs35q+//rLos4jrQ2rswu6Cg4PZuXMn/fv3Z8GCBdx222189dVX5OTkEB4ezpgxY3BxcWHdunXl1noee+wxjhw5wgsvvIBarWbYsGHVjumuu+4CYODAgQwbNowXXnihzONKltq5cyc///wz8+fPr7RWfe7cOcaPH8+zzz7Lk08+Sa9evfDx8bnm+QcMGABQ5ovNwoULAeNnsZWsrCxef/11Jk+eTHBwcLn73H333Wi1Wt5//32zWuDXX39NUlJSmcftmjZtaupH8cEHH2AwGHjuueesunZ19erVCycnJ95//32UEkN9fP7552RkZFRaluXVeP/55x9+++03hgwZYnHztVqtpk+fPvz8889mty+SkpJYtWoVXbt2xdPT07R+3LhxGAwGPv/8cz755BMcHR154oknzD6HWq02ew/GMq/sy6OjoyMjR47kwIEDjBkzxqLPIK4vqbGLG0JYWBg///wzCQkJbN++nbfffpvY2FiWLl1Ku3btaNeuXYXJcODAgfj5+fHdd9/Rv3//KnXEs8R7771HixYt+L//+z++/fZbs207d+40u2da3IkpLi6O3bt307FjR9O24oFaKqvtGQwGHnvsMerXr8/8+fMtirNt27amQXzS09Pp1q0bu3fv5osvvmDIkCH06NHDbP/i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sRf56fQhXLwDGDCgfbWuVduULjtRNVJu1pOys46Um3UsLbfi1uRruSkTu6IoLFu2jMceewwnJ6dK9/X29qZp06bExcVVuI9Wq0Wr1ZZZr9FobPZLajqXmx8A6oIM1BoN/h7GYWXT83TyB1EBW/4c6hIpN+tJ2VlHys06VS23qpbtTfkc+5YtW4iLi6uwBl5SdnY28fHxhISEXIfIqqBUr3gft+LH3eTelBBCiOqza2LPzs4mNjaW2NhYAE6dOkVsbCxnz54FjE3kI0eOLHPc559/TqdOnbjlllvKbHv++efZsmULp0+fZseOHQwdOhS1Ws3w4cNr9LNUWanx4n2u9IpPk+fYhRBC2IBdm+L//vtvevToYXpffJ971KhRrFixgoSEBFOSL5aRkcEPP/zAe++9V+45z58/z/Dhw0lJSSEgIICuXbuya9cuAgICau6DWKLUePHeVwaoyS3Uk6/T46xR2ysyIYQQtYBdE3v37t2prFP+ihUryqzz8vIiNze3wmNWr15ti9BqTqmmeE9nR9QOKvQGhfRcHcFektiFEEJY76a8x35TK9UUr1KppDleCCGEzUhiv96Km+Lz0sFgnIPd21WGlRVCCGEbFif2kydP1kQcdUdxYkeB/AygZAc66RkvhBCieixO7JGRkfTo0YOvvvqK/Pz8moipdnN0AqcrI+CZesZfqbFLU7wQQohqsjix79u3jzZt2jBlyhSCg4N56qmn2L17d03EVnuV6hkvU7cKIYSwFYsTe7t27Xjvvfe4ePEiy5YtIyEhga5du3LLLbewcOFCkpOTayLO2sW1+D77lUfe3K7M8JYjTfFCCCGqx+rOc46Ojtx333189913vPnmm8TFxfH8888TFhbGyJEjSUhIsGWctUupnvG+UmMXQghhI1Yn9r///pvx48cTEhLCwoULef7554mPjycqKoqLFy9y77332jLO2qWCpni5xy6EEKK6LB6gZuHChSxfvpzjx48zYMAAVq5cyYABA3BwMH5HaNiwIStWrCAiIsLWsdYepQap8b7SKz5VesULIYSoJosT+5IlSxgzZgyjR4+ucGKVwMBAPv/882oHV2uVbop3k6Z4IYQQtmFxYj9x4sQ193FycmLUqFFWBVQnVDBevAxQI4QQorqsGis+LS2Nzz//nKNHjwLQokULxowZg6+vr02Dq7VKT916pSk+M7+I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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_3l_100_100.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_3l_100_100.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "M9nWMqSXiErG", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "92accb15-9c22-46d8-a60a-f5f64488809f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9435 - loss: 0.2058\n", + "Lossontestdata: 0.2007063776254654\n", + "Accuracyontestdata: 0.9431999921798706\n" + ] + } + ], + "source": [ + "scores_3l_100_100=model_3l_100_100.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_3l_100_100[0])\n", + "print('Accuracyontestdata:',scores_3l_100_100[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "s7xnJPAsiJ4-", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "outputId": "418ceaef-1937-4c15-f327-940560f8866b" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Слои Нейроны 1 Нейроны 2 Метрика\n", + "0 1 100 - 0.9439\n", + "1 1 300 - 0.9372\n", + "2 1 500 - 0.9301\n", + "3 2 100 50 0.9427\n", + "4 2 100 100 0.9432" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
СлоиНейроны 1Нейроны 2Метрика
01100-0.9439
11300-0.9372
21500-0.9301
32100500.9427
421001000.9432
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "df", + "summary": "{\n \"name\": \"df\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"\\u0421\\u043b\\u043e\\u0438\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 1,\n \"max\": 2,\n \"num_unique_values\": 2,\n \"samples\": [\n 2,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041d\\u0435\\u0439\\u0440\\u043e\\u043d\\u044b 1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 178,\n \"min\": 100,\n \"max\": 500,\n \"num_unique_values\": 3,\n \"samples\": [\n 100,\n 300\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041d\\u0435\\u0439\\u0440\\u043e\\u043d\\u044b 2\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"-\",\n 50\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041c\\u0435\\u0442\\u0440\\u0438\\u043a\\u0430\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.005850374852367438,\n \"min\": 0.9301000237464905,\n \"max\": 0.9438999891281128,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.9372000098228455,\n 0.9431999921798706\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 47 + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "data = {\n", + " 'Слои': [ 1, 1, 1, 2, 2],\n", + " 'Нейроны 1': [ 100, 300, 500, 100, 100],\n", + " 'Нейроны 2': [ '-', '-', '-', 50, 100],\n", + " 'Метрика': [ 0.9438999891281128, 0.9372000098228455, 0.9301000237464905, 0.9427000284194946, 0.9431999921798706]\n", + "}\n", + "\n", + "df = pd.DataFrame(data)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "55eu09I9kA93" + }, + "outputs": [], + "source": [ + "model_2l_100.save(filepath='best_model.keras')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mvjk1vAK8Qaa", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 534 + }, + "outputId": "a8cf252d-4e39-49e1-e4c9-c3b71aa0d7d1" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 266ms/step\n", + "NN output: [[3.86779779e-04 3.69515050e-08 2.03053992e-06 1.15266894e-05\n", + " 1.57332561e-05 4.79512411e-04 7.92529917e-08 9.95542467e-01\n", + " 1.50878295e-05 3.54681048e-03]]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAG05JREFUeJzt3X9sVfX9x/FXC/SK2N6ulvb2SoGCP9gEOsekNCrD0QDdQkRI5q8/wDCIenGDzulqVMSZdLJMCQuDmGwwM0FlEYguYcFqS3Qthl8hbLOjXRWQtigL90KRwujn+wfZ/XqlBc/l3r57L89HchJ67/n0vj2765PTnh4ynHNOAAD0sUzrAQAAVyYCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATAy0HuCruru7deTIEWVnZysjI8N6HACAR845nThxQsFgUJmZvZ/n9LsAHTlyRMXFxdZjAAAu06FDhzRs2LBen+9334LLzs62HgEAkACX+nqetACtWrVKI0eO1FVXXaWysjJ9+OGHX2sd33YDgPRwqa/nSQnQ66+/rqqqKi1dulS7d+9WaWmppk+frqNHjybj5QAAqcglwcSJE10oFIp+fO7cORcMBl1NTc0l14bDYSeJjY2NjS3Ft3A4fNGv9wk/Azpz5ox27dqlioqK6GOZmZmqqKhQQ0PDBft3dXUpEonEbACA9JfwAH3++ec6d+6cCgsLYx4vLCxUe3v7BfvX1NTI7/dHN66AA4Arg/lVcNXV1QqHw9Ht0KFD1iMBAPpAwn8PKD8/XwMGDFBHR0fM4x0dHQoEAhfs7/P55PP5Ej0GAKCfS/gZUFZWliZMmKDa2troY93d3aqtrVV5eXmiXw4AkKKScieEqqoqzZ07V9/97nc1ceJErVixQp2dnXrwwQeT8XIAgBSUlADdc889+uyzz/TMM8+ovb1d3/72t7V169YLLkwAAFy5MpxzznqIL4tEIvL7/dZjAAAuUzgcVk5OTq/Pm18FBwC4MhEgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMJD9Czzz6rjIyMmG3MmDGJfhkAQIobmIxPevPNN+udd975/xcZmJSXAQCksKSUYeDAgQoEAsn41ACANJGUnwEdOHBAwWBQo0aN0gMPPKCDBw/2um9XV5cikUjMBgBIfwkPUFlZmdatW6etW7dq9erVam1t1R133KETJ070uH9NTY38fn90Ky4uTvRIAIB+KMM555L5AsePH9eIESP04osvav78+Rc839XVpa6urujHkUiECAFAGgiHw8rJyen1+aRfHZCbm6sbb7xRzc3NPT7v8/nk8/mSPQYAoJ9J+u8BnTx5Ui0tLSoqKkr2SwEAUkjCA/TYY4+pvr5eH3/8sf72t7/p7rvv1oABA3Tfffcl+qUAACks4d+CO3z4sO677z4dO3ZMQ4cO1e23367GxkYNHTo00S8FAEhhSb8IwatIJCK/3289BgDgMl3qIgTuBQcAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmEj6P0gHfFl1dbXnNc8995znNdu3b/e8RpJ27tzpec2nn37qec2f/vQnz2v6u4vddLI3t9xyi+c1kyZN8rymL73wwgue1/znP/9JwiT9H2dAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMJHhnHPWQ3xZJBKR3++3HuOKMmTIkLjWPfnkk57X/OQnP/G8Jt75AAvx3A07nrvEp4JwOHzRu6RzBgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmBhoPQDs/ehHP4prXbreQBG4HFu2bLEeIWVwBgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmOBmpGmmsrLS85rf/OY3SZjE1kcffRTXuk8++STBk/SsubnZ85o333wzCZPYqqio8LymL2+Ce/jwYc9r/v73vydhkvTEGRAA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iBF64403NH/+fMPJ0B/ce++90T+PGzdO48eP1+jRo1VXV6epU6caTpYcoVBI+/fvvyJ+DnoxvR2HhQsXRv88btw4FRUVaerUqWppadHo0aP7eswe9ftvweXn52vAgAEXXMXS0dGhQCBgNFX/kJubqxtvvFHNzc3Wo5j533uA98eFRo0apfz8/LR8fyxatEhvv/223nvvvZh/viUQCOjMmTM6fvx4zP7p+n7o7Tj0pKysTJL61fuh3wcoKytLEyZMUG1tbfSx7u5u1dbWqry83HAyeydPnlRLS4uKioqsRzFTUlKiQCAQ8/6IRCLasWPHFf/+OHz4sI4dO5ZW7w/nnBYtWqRNmzbp3XffVUlJSczzEyZM0KBBg2LeD01NTTp48GBavR8udRx6snfvXknqX+8H66sgvo7XXnvN+Xw+t27dOvePf/zDLVy40OXm5rr29nbr0frUz372M1dXV+daW1vdBx984CoqKlx+fr47evSo9WhJdeLECbdnzx63Z88eJ8m9+OKLbs+ePe6TTz5xzjn3q1/9yuXm5rotW7a4ffv2ubvuusuVlJS4L774wnjyxLrYcThx4oR77LHHXENDg2ttbXXvvPOO+853vuNuuOEGd/r0aevRE+bhhx92fr/f1dXVuba2tuh26tSp6D4PPfSQGz58uHv33Xfdzp07XXl5uSsvLzecOvEudRyam5vdc88953bu3OlaW1vdli1b3KhRo9zkyZONJ4+VEgFyzrnf/va3bvjw4S4rK8tNnDjRNTY2Wo/U5+655x5XVFTksrKy3HXXXefuuece19zcbD1W0r333ntO0gXb3LlznXPnL8V++umnXWFhofP5fG7q1KmuqanJdugkuNhxOHXqlJs2bZobOnSoGzRokBsxYoRbsGBB2v0lraf/fklu7dq10X2++OIL98gjj7hvfOMb7uqrr3Z33323a2trsxs6CS51HA4ePOgmT57s8vLynM/nc9dff737+c9/7sLhsO3gX8E/xwAAMNHvfwYEAEhPBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJ/wPpxromZauT4QAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Real mark: 7\n", + "NN answer: 7\n" + ] + } + ], + "source": [ + "# вывод тестового изображения и результата распознавания\n", + "n = 150\n", + "result = model_2l_100.predict(X_test[n:n+1])\n", + "print('NN output:', result)\n", + "\n", + "plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))\n", + "plt.show()\n", + "print('Real mark: ', str(np.argmax(y_test[n])))\n", + "print('NN answer: ', str(np.argmax(result)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Mc1vi6w59TOw", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 517 + }, + "outputId": "28932b4f-4d56-40c5-d253-59c985f1230e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 28ms/step\n", + "NN output: [[8.1927046e-06 9.8501807e-01 4.7102575e-03 1.5754283e-03 5.3024664e-06\n", + " 2.3075400e-03 6.3471968e-04 7.6599965e-05 5.5682263e-03 9.5791329e-05]]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGiNJREFUeJzt3Xts1Xf9x/FXufTAWHtqKe3p4dIV2EDHZYpQ67bKpKGtSrglwuQPMAQEyyIwNmVxsKlJFZO5zFRm1FAXB0xUIMOkCZS1zWbLAgMJURuKdRShZRB7Tim0YPv5/cFvx53Rwk45p+/28Hwkn4Se8/30vP165Om35/SQ4JxzAgCgjw2yHgAAcG8iQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwMQQ6wE+rqurS+fPn1dSUpISEhKsxwEARMg5p9bWVvn9fg0a1PN1Tr8L0Pnz5zV27FjrMQAAd6mxsVFjxozp8f5+9yO4pKQk6xEAAFFwp7/PYxag0tJSPfDAAxo2bJhycnL07rvvfqJ9/NgNAOLDnf4+j0mA3njjDW3cuFFbt27Ve++9p+nTp6ugoEAXL16MxcMBAAYiFwOzZs1yxcXFoa87Ozud3+93JSUld9wbCAScJBaLxWIN8BUIBG77933Ur4CuX7+uY8eOKT8/P3TboEGDlJ+fr5qamluO7+joUDAYDFsAgPgX9QBdunRJnZ2dysjICLs9IyNDTU1NtxxfUlIir9cbWrwDDgDuDebvgtu8ebMCgUBoNTY2Wo8EAOgDUf89oLS0NA0ePFjNzc1htzc3N8vn891yvMfjkcfjifYYAIB+LupXQImJiZoxY4YqKipCt3V1damiokK5ubnRfjgAwAAVk09C2Lhxo5YvX67Pf/7zmjVrll5++WW1tbXpm9/8ZiweDgAwAMUkQEuWLNEHH3ygLVu2qKmpSY888ojKy8tveWMCAODeleCcc9ZDfFQwGJTX67UeAwBwlwKBgJKTk3u83/xdcACAexMBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwMcR6AAD9T0FBQcR7ysvLYzDJrSZMmBDxnn/+858xmAR3iysgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEH0YKxLERI0b0at+mTZsi3uOci3hPXV1dxHtaW1sj3oP+iSsgAIAJAgQAMBH1AL3wwgtKSEgIW5MnT472wwAABriYvAb08MMP69ChQ/97kCG81AQACBeTMgwZMkQ+ny8W3xoAECdi8hrQ6dOn5ff7NX78eC1btkxnz57t8diOjg4Fg8GwBQCIf1EPUE5OjsrKylReXq7t27eroaFBjz/+eI9vnSwpKZHX6w2tsWPHRnskAEA/lOB68+b9CLS0tCgrK0svvfSSVq5cecv9HR0d6ujoCH0dDAaJEBAlvf09oH379kW8Z86cORHv6c3vAeXl5UW854MPPoh4D+5eIBBQcnJyj/fH/N0BKSkpeuihh1RfX9/t/R6PRx6PJ9ZjAAD6mZj/HtCVK1d05swZZWZmxvqhAAADSNQDtGnTJlVVVelf//qX/vKXv2jhwoUaPHiwnnzyyWg/FABgAIv6j+DOnTunJ598UpcvX9aoUaP02GOPqba2VqNGjYr2QwEABrCoB2j37t3R/pYAeumLX/xir/b15g0FvbF9+/aI9/CGgvjBZ8EBAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACZi/i+iRioYDMrr9VqPAfQ7EydOjHjPO++806vH6qtPr+/N/9ZbW1tjMAli4U7/IipXQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADAxxHoAAJ9MVlZWxHv66lOtJekPf/hDxHuuXbsWg0kwUHAFBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCY4MNIAQOPPPJIxHvKysqiPkdP2traIt6zbdu2iPf897//jXgP4gdXQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACT6MFDCwY8eOiPeMHj06BpN077nnnot4z9GjR2MwCeIZV0AAABMECABgIuIAVVdXa968efL7/UpISNC+ffvC7nfOacuWLcrMzNTw4cOVn5+v06dPR2teAECciDhAbW1tmj59ukpLS7u9f9u2bXrllVf06quv6siRIxoxYoQKCgrU3t5+18MCAOJHxG9CKCoqUlFRUbf3Oef08ssv6/vf/77mz58vSXrttdeUkZGhffv2aenSpXc3LQAgbkT1NaCGhgY1NTUpPz8/dJvX61VOTo5qamq63dPR0aFgMBi2AADxL6oBampqkiRlZGSE3Z6RkRG67+NKSkrk9XpDa+zYsdEcCQDQT5m/C27z5s0KBAKh1djYaD0SAKAPRDVAPp9PktTc3Bx2e3Nzc+i+j/N4PEpOTg5bAID4F9UAZWdny+fzqaKiInRbMBjUkSNHlJubG82HAgAMcBG/C+7KlSuqr68Pfd3Q0KATJ04oNTVV48aN0/r16/WjH/1IDz74oLKzs/X888/L7/drwYIF0ZwbADDARRygo0eP6oknngh9vXHjRknS8uXLVVZWpmeffVZtbW1avXq1Wlpa9Nhjj6m8vFzDhg2L3tQAgAEvwTnnrIf4qGAwKK/Xaz0G8IlNmjQp4j2HDh2KeE9vPoz0ypUrEe+RpK997WsR76muru7VYyF+BQKB276ub/4uOADAvYkAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmIv7nGIB41ptPti4vL494T28+2fo///lPxHuWLVsW8R6JT7ZG3+AKCABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwwYeRAh9RWFgY8Z6srKwYTHKr999/P+I9vfmgVKCvcAUEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJjgw0iBj/D7/dYj9OhXv/qV9QhAVHEFBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCY4MNIEZe+/vWv92rf008/HeVJuvf2229HvGfv3r0xmASwwxUQAMAEAQIAmIg4QNXV1Zo3b578fr8SEhK0b9++sPtXrFihhISEsFVYWBiteQEAcSLiALW1tWn69OkqLS3t8ZjCwkJduHAhtHbt2nVXQwIA4k/Eb0IoKipSUVHRbY/xeDzy+Xy9HgoAEP9i8hpQZWWl0tPTNWnSJK1du1aXL1/u8diOjg4Fg8GwBQCIf1EPUGFhoV577TVVVFToJz/5iaqqqlRUVKTOzs5ujy8pKZHX6w2tsWPHRnskAEA/FPXfA1q6dGnoz1OnTtW0adM0YcIEVVZWas6cObccv3nzZm3cuDH0dTAYJEIAcA+I+duwx48fr7S0NNXX13d7v8fjUXJyctgCAMS/mAfo3Llzunz5sjIzM2P9UACAASTiH8FduXIl7GqmoaFBJ06cUGpqqlJTU/Xiiy9q8eLF8vl8OnPmjJ599llNnDhRBQUFUR0cADCwRRygo0eP6oknngh9/eHrN8uXL9f27dt18uRJ/fa3v1VLS4v8fr/mzp2rH/7wh/J4PNGbGgAw4CU455z1EB8VDAbl9Xqtx0A/MmzYsIj3VFVV9eqxZs6c2at9kfrsZz8b8Z6//vWvMZgEiJ1AIHDb1/X5LDgAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYiPo/yQ1EW2JiYsR7+upTrQH0HldAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJPowUuEt79uyJeM+pU6diMAkwsHAFBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCY4MNI0e9973vfsx7hto4fPx7xns7OzhhMAgwsXAEBAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACb4MFL0qTFjxkS8Z+XKlTGYpHv//ve/I97z61//OgaTAPGPKyAAgAkCBAAwEVGASkpKNHPmTCUlJSk9PV0LFixQXV1d2DHt7e0qLi7WyJEjdf/992vx4sVqbm6O6tAAgIEvogBVVVWpuLhYtbW1OnjwoG7cuKG5c+eqra0tdMyGDRv05ptvas+ePaqqqtL58+e1aNGiqA8OABjYInoTQnl5edjXZWVlSk9P17Fjx5SXl6dAIKDf/OY32rlzp7785S9Lknbs2KFPf/rTqq2t1Re+8IXoTQ4AGNDu6jWgQCAgSUpNTZUkHTt2TDdu3FB+fn7omMmTJ2vcuHGqqanp9nt0dHQoGAyGLQBA/Ot1gLq6urR+/Xo9+uijmjJliiSpqalJiYmJSklJCTs2IyNDTU1N3X6fkpISeb3e0Bo7dmxvRwIADCC9DlBxcbFOnTql3bt339UAmzdvViAQCK3Gxsa7+n4AgIGhV7+Ium7dOh04cEDV1dVhv1jo8/l0/fp1tbS0hF0FNTc3y+fzdfu9PB6PPB5Pb8YAAAxgEV0BOee0bt067d27V4cPH1Z2dnbY/TNmzNDQoUNVUVERuq2urk5nz55Vbm5udCYGAMSFiK6AiouLtXPnTu3fv19JSUmh13W8Xq+GDx8ur9erlStXauPGjUpNTVVycrKeeuop5ebm8g44AECYiAK0fft2SdLs2bPDbt+xY4dWrFghSfrZz36mQYMGafHixero6FBBQYF+8YtfRGVYAED8iChAzrk7HjNs2DCVlpaqtLS010Mhfn3rW9+KeM+oUaNiMEn3/vjHP0a859KlSzGYBIh/fBYcAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATPTqX0QFeuszn/mM9QgA+gmugAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE3wYKfrUgQMHIt6zcOHCGEzSvT//+c999ljAvY4rIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADARIJzzlkP8VHBYFBer9d6DADAXQoEAkpOTu7xfq6AAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgImIAlRSUqKZM2cqKSlJ6enpWrBggerq6sKOmT17thISEsLWmjVrojo0AGDgiyhAVVVVKi4uVm1trQ4ePKgbN25o7ty5amtrCztu1apVunDhQmht27YtqkMDAAa+IZEcXF5eHvZ1WVmZ0tPTdezYMeXl5YVuv+++++Tz+aIzIQAgLt3Va0CBQECSlJqaGnb766+/rrS0NE2ZMkWbN2/W1atXe/weHR0dCgaDYQsAcA9wvdTZ2em++tWvukcffTTs9l/+8peuvLzcnTx50v3ud79zo0ePdgsXLuzx+2zdutVJYrFYLFacrUAgcNuO9DpAa9ascVlZWa6xsfG2x1VUVDhJrr6+vtv729vbXSAQCK3Gxkbzk8ZisVisu193ClBErwF9aN26dTpw4ICqq6s1ZsyY2x6bk5MjSaqvr9eECRNuud/j8cjj8fRmDADAABZRgJxzeuqpp7R3715VVlYqOzv7jntOnDghScrMzOzVgACA+BRRgIqLi7Vz507t379fSUlJampqkiR5vV4NHz5cZ86c0c6dO/WVr3xFI0eO1MmTJ7Vhwwbl5eVp2rRpMfkPAAAYoCJ53Uc9/Jxvx44dzjnnzp496/Ly8lxqaqrzeDxu4sSJ7plnnrnjzwE/KhAImP/cksVisVh3v+70d3/C/4el3wgGg/J6vdZjAADuUiAQUHJyco/381lwAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAAT/S5AzjnrEQAAUXCnv8/7XYBaW1utRwAARMGd/j5PcP3skqOrq0vnz59XUlKSEhISwu4LBoMaO3asGhsblZycbDShPc7DTZyHmzgPN3EebuoP58E5p9bWVvn9fg0a1PN1zpA+nOkTGTRokMaMGXPbY5KTk+/pJ9iHOA83cR5u4jzcxHm4yfo8eL3eOx7T734EBwC4NxAgAICJARUgj8ejrVu3yuPxWI9iivNwE+fhJs7DTZyHmwbSeeh3b0IAANwbBtQVEAAgfhAgAIAJAgQAMEGAAAAmBkyASktL9cADD2jYsGHKycnRu+++az1Sn3vhhReUkJAQtiZPnmw9VsxVV1dr3rx58vv9SkhI0L59+8Lud85py5YtyszM1PDhw5Wfn6/Tp0/bDBtDdzoPK1asuOX5UVhYaDNsjJSUlGjmzJlKSkpSenq6FixYoLq6urBj2tvbVVxcrJEjR+r+++/X4sWL1dzcbDRxbHyS8zB79uxbng9r1qwxmrh7AyJAb7zxhjZu3KitW7fqvffe0/Tp01VQUKCLFy9aj9bnHn74YV24cCG03n77beuRYq6trU3Tp09XaWlpt/dv27ZNr7zyil599VUdOXJEI0aMUEFBgdrb2/t40ti603mQpMLCwrDnx65du/pwwtirqqpScXGxamtrdfDgQd24cUNz585VW1tb6JgNGzbozTff1J49e1RVVaXz589r0aJFhlNH3yc5D5K0atWqsOfDtm3bjCbugRsAZs2a5YqLi0Nfd3Z2Or/f70pKSgyn6ntbt25106dPtx7DlCS3d+/e0NddXV3O5/O5n/70p6HbWlpanMfjcbt27TKYsG98/Dw459zy5cvd/PnzTeaxcvHiRSfJVVVVOedu/nc/dOhQt2fPntAxf//7350kV1NTYzVmzH38PDjn3Je+9CX3ne98x26oT6DfXwFdv35dx44dU35+fui2QYMGKT8/XzU1NYaT2Th9+rT8fr/Gjx+vZcuW6ezZs9YjmWpoaFBTU1PY88Pr9SonJ+eefH5UVlYqPT1dkyZN0tq1a3X58mXrkWIqEAhIklJTUyVJx44d040bN8KeD5MnT9a4cePi+vnw8fPwoddff11paWmaMmWKNm/erKtXr1qM16N+92GkH3fp0iV1dnYqIyMj7PaMjAz94x//MJrKRk5OjsrKyjRp0iRduHBBL774oh5//HGdOnVKSUlJ1uOZaGpqkqRunx8f3nevKCws1KJFi5Sdna0zZ87oueeeU1FRkWpqajR48GDr8aKuq6tL69ev16OPPqopU6ZIuvl8SExMVEpKStix8fx86O48SNI3vvENZWVlye/36+TJk/rud7+ruro6/elPfzKcNly/DxD+p6ioKPTnadOmKScnR1lZWfr973+vlStXGk6G/mDp0qWhP0+dOlXTpk3ThAkTVFlZqTlz5hhOFhvFxcU6derUPfE66O30dB5Wr14d+vPUqVOVmZmpOXPm6MyZM5owYUJfj9mtfv8juLS0NA0ePPiWd7E0NzfL5/MZTdU/pKSk6KGHHlJ9fb31KGY+fA7w/LjV+PHjlZaWFpfPj3Xr1unAgQN66623wv75Fp/Pp+vXr6ulpSXs+Hh9PvR0HrqTk5MjSf3q+dDvA5SYmKgZM2aooqIidFtXV5cqKiqUm5trOJm9K1eu6MyZM8rMzLQexUx2drZ8Pl/Y8yMYDOrIkSP3/PPj3Llzunz5clw9P5xzWrdunfbu3avDhw8rOzs77P4ZM2Zo6NChYc+Huro6nT17Nq6eD3c6D905ceKEJPWv54P1uyA+id27dzuPx+PKysrc3/72N7d69WqXkpLimpqarEfrU08//bSrrKx0DQ0N7p133nH5+fkuLS3NXbx40Xq0mGptbXXHjx93x48fd5LcSy+95I4fP+7ef/9955xzP/7xj11KSorbv3+/O3nypJs/f77Lzs52165dM548um53HlpbW92mTZtcTU2Na2hocIcOHXKf+9zn3IMPPuja29utR4+atWvXOq/X6yorK92FCxdC6+rVq6Fj1qxZ48aNG+cOHz7sjh496nJzc11ubq7h1NF3p/NQX1/vfvCDH7ijR4+6hoYGt3//fjd+/HiXl5dnPHm4AREg55z7+c9/7saNG+cSExPdrFmzXG1trfVIfW7JkiUuMzPTJSYmutGjR7slS5a4+vp667Fi7q233nKSblnLly93zt18K/bzzz/vMjIynMfjcXPmzHF1dXW2Q8fA7c7D1atX3dy5c92oUaPc0KFDXVZWllu1alXc/Z+07v7zS3I7duwIHXPt2jX37W9/233qU59y9913n1u4cKG7cOGC3dAxcKfzcPbsWZeXl+dSU1Odx+NxEydOdM8884wLBAK2g38M/xwDAMBEv38NCAAQnwgQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE/8H341JvPmYkeEAAAAASUVORK5CYII=\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Real mark: 1\n", + "NN answer: 1\n" + ] + } + ], + "source": [ + "# вывод тестового изображения и результата распознавания\n", + "n = 810\n", + "result = model_2l_100.predict(X_test[n:n+1])\n", + "print('NN output:', result)\n", + "\n", + "plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))\n", + "plt.show()\n", + "print('Real mark: ', str(np.argmax(y_test[n])))\n", + "print('NN answer: ', str(np.argmax(result)))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KB4fgTJ0_EIL" + }, + "outputs": [], + "source": [ + "#загрузка собственного изображения\n", + "from PIL import Image\n", + "file_1_data = Image.open('ИИЛР1_6.png')\n", + "file_1_data = file_1_data.convert('L') #перевод в градации серого\n", + "test_1_img = np.array(file_1_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "no8ogZL3_t57", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "7640781d-fdca-4355-a086-6ab27b2f9f8a" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGl9JREFUeJzt3V9M1ff9x/HX8Q+ntuUcRIQDFRW11aVWdE4ZcWXdJIJbTP1z4bpe6GJsdNhMXbvFJWq7LWGzSbd0cXYXi25ZtZ3J1NQLE0XBbAMbKcSYbUQYDoyAq5FzFAsa+fwu/O20p4J6jufwPhyej+STlHPOl/P222999sDhg8c55wQAwBAbZT0AAGBkIkAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMDEGOsBvqi/v1+XL19Wenq6PB6P9TgAgCg553T9+nXl5eVp1KjBX+ckXYAuX76s/Px86zEAAI+ovb1dkyZNGvT+pPsSXHp6uvUIAIA4eNDf5wkL0O7duzV16lQ99thjKioq0kcfffRQx/FlNwBIDQ/6+zwhAfrggw+0detW7dy5Ux9//LEKCwtVVlamK1euJOLpAADDkUuAhQsXuoqKivDHd+7ccXl5ea6ysvKBxwaDQSeJxWKxWMN8BYPB+/59H/dXQLdu3VJ9fb1KS0vDt40aNUqlpaWqra295/F9fX0KhUIRCwCQ+uIeoE8++UR37txRTk5OxO05OTnq7Oy85/GVlZXy+/3hxTvgAGBkMH8X3LZt2xQMBsOrvb3deiQAwBCI+88BZWVlafTo0erq6oq4vaurS4FA4J7He71eeb3eeI8BAEhycX8FlJaWpvnz56uqqip8W39/v6qqqlRcXBzvpwMADFMJ2Qlh69atWrNmjb7yla9o4cKF+vWvf62enh5973vfS8TTAQCGoYQEaPXq1frvf/+rHTt2qLOzU3PnztWxY8fueWMCAGDk8jjnnPUQnxcKheT3+63HAAA8omAwKJ/PN+j95u+CAwCMTAQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACAiYTshg3g/hoaGqI+Zu7cuVEf09jYGPUxkjRv3ryYjgOiwSsgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmGA3bCS9odo5OhXFeh6cc/EdZBCx7NbNTt2pg1dAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJNiPFkGJjUXxeLP9uY9koNZZNTyU2Pk00XgEBAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACY8Lpad/RIoFArJ7/dbj4EESbLL7R7d3d1RHzN+/Pj4DzIMXbt2LepjYtkkNJYNTDMyMqI+RoptPjYw/UwwGJTP5xv0fl4BAQBMECAAgIm4B+iNN96Qx+OJWLNmzYr30wAAhrmE/EK6Z599VidOnPjsScbwe+8AAJESUoYxY8YoEAgk4lMDAFJEQr4HdOHCBeXl5WnatGl6+eWX1dbWNuhj+/r6FAqFIhYAIPXFPUBFRUXat2+fjh07pj179qi1tVXPP/+8rl+/PuDjKysr5ff7wys/Pz/eIwEAklDCfw6ou7tbU6ZM0dtvv61169bdc39fX5/6+vrCH4dCISKUwvg5oNTFzwHdxc8BfeZBPweU8HcHZGRk6JlnnlFzc/OA93u9Xnm93kSPAQBIMgn/OaAbN26opaVFubm5iX4qAMAwEvcAvfbaa6qpqdHFixf197//XStWrNDo0aP10ksvxfupAADDWNy/BHfp0iW99NJLunr1qiZOnKivfe1rqqur08SJE+P9VACAYYzNSBGzhoaGqI+J5RvIvDEAjyqWN0jEimvvM2xGCgBISgQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACTYjRcyG6tLxeDxD8jwA4ovNSAEASYkAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMjLEeAPYaGhqsRwAwAvEKCABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwwWak0Ny5c61HADAC8QoIAGCCAAEATEQdoNOnT2vZsmXKy8uTx+PR4cOHI+53zmnHjh3Kzc3VuHHjVFpaqgsXLsRrXgBAiog6QD09PSosLNTu3bsHvH/Xrl1655139O677+rMmTN64oknVFZWpt7e3kceFgCQQtwjkOQOHToU/ri/v98FAgH31ltvhW/r7u52Xq/XHThw4KE+ZzAYdJJYQ7iSnfX5YbFYsa1gMHjf/7bj+j2g1tZWdXZ2qrS0NHyb3+9XUVGRamtrBzymr69PoVAoYgEAUl9cA9TZ2SlJysnJibg9JycnfN8XVVZWyu/3h1d+fn48RwIAJCnzd8Ft27ZNwWAwvNrb261HAgAMgbgGKBAISJK6uroibu/q6grf90Ver1c+ny9iAQBSX1wDVFBQoEAgoKqqqvBtoVBIZ86cUXFxcTyfCgAwzEW9Fc+NGzfU3Nwc/ri1tVWNjY3KzMzU5MmTtXnzZv385z/X008/rYKCAm3fvl15eXlavnx5POcGAAx30b4l9tSpUwO+3W7NmjXOubtvxd6+fbvLyclxXq/XLV682DU1NT305+dt2EO/kp31+WGxWLGtB70N2/P//4EnjVAoJL/fbz3GiHLt2rWYjsvIyIjvIIPweDxD8jzJrqGhIepjkn2j2cbGxqiPmTdvXvwHQUIEg8H7fl/f/F1wAICRiQABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACai/n1ASD3jx4+P6bih2kg9ll2gY90xORV3nI5FLLtUT506NepjYjl3sVx3sfx5JHbeTjReAQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJjxuqHaUfEihUEh+v996DDyEJLt0IsS6+WQsG2pevHgx6mNScQPTVBTLdcQGpp8JBoPy+XyD3s8rIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABJuRImZJdumY6e7ujvqY8ePHx3+QOLp27VrUx2RkZMR/EGOx/LuNZQPTb3zjG1EfMxywGSkAICkRIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACbGWA8AJEIsm0hKyb9J6FBJtfMQy+aqknTx4sWoj0nVjUUTgVdAAAATBAgAYCLqAJ0+fVrLli1TXl6ePB6PDh8+HHH/2rVr5fF4IlZ5eXm85gUApIioA9TT06PCwkLt3r170MeUl5ero6MjvA4cOPBIQwIAUk/Ub0JYunSpli5det/HeL1eBQKBmIcCAKS+hHwPqLq6WtnZ2Zo5c6Y2btyoq1evDvrYvr4+hUKhiAUASH1xD1B5ebn++Mc/qqqqSr/85S9VU1OjpUuX6s6dOwM+vrKyUn6/P7zy8/PjPRIAIAl5nHMu5oM9Hh06dEjLly8f9DH//ve/NX36dJ04cUKLFy++5/6+vj719fWFPw6FQkRomHiESyfh+DkgfN5Q/hzQvHnzYnquVBQMBuXz+Qa9P+Fvw542bZqysrLU3Nw84P1er1c+ny9iAQBSX8IDdOnSJV29elW5ubmJfioAwDAS9bvgbty4EfFqprW1VY2NjcrMzFRmZqbefPNNrVq1SoFAQC0tLfrRj36kGTNmqKysLK6DAwCGt6gDdPbs2Yi9jrZu3SpJWrNmjfbs2aNz587pD3/4g7q7u5WXl6clS5boZz/7mbxeb/ymBgAMe4/0JoRECIVC8vv91mPgISTZpRPB4/FYj4AUEMs1zrX3GfM3IQAAMBACBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwMcZ6AIws3d3dUR+TkZER9zkwsjQ0NFiPgAHwCggAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMMFmpBhSbCyKRxXLxqJTp06N/yB4ZLwCAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMsBkpYtbd3R31MUO1GWksG1ZK0rx58+I8Ce4nlushlo1FL168GPUxsT4XHh6vgAAAJggQAMBEVAGqrKzUggULlJ6eruzsbC1fvlxNTU0Rj+nt7VVFRYUmTJigJ598UqtWrVJXV1dchwYADH9RBaimpkYVFRWqq6vT8ePHdfv2bS1ZskQ9PT3hx2zZskUffvihDh48qJqaGl2+fFkrV66M++AAgOEtqjchHDt2LOLjffv2KTs7W/X19SopKVEwGNTvf/977d+/X9/85jclSXv37tWXvvQl1dXV6atf/Wr8JgcADGuP9D2gYDAoScrMzJQk1dfX6/bt2yotLQ0/ZtasWZo8ebJqa2sH/Bx9fX0KhUIRCwCQ+mIOUH9/vzZv3qxFixZp9uzZkqTOzk6lpaXd89bKnJwcdXZ2Dvh5Kisr5ff7wys/Pz/WkQAAw0jMAaqoqND58+f1/vvvP9IA27ZtUzAYDK/29vZH+nwAgOEhph9E3bRpk44eParTp09r0qRJ4dsDgYBu3bql7u7uiFdBXV1dCgQCA34ur9crr9cbyxgAgGEsqldAzjlt2rRJhw4d0smTJ1VQUBBx//z58zV27FhVVVWFb2tqalJbW5uKi4vjMzEAICVE9QqooqJC+/fv15EjR5Senh7+vo7f79e4cePk9/u1bt06bd26VZmZmfL5fHr11VdVXFzMO+AAABGiCtCePXskSS+88ELE7Xv37tXatWslSb/61a80atQorVq1Sn19fSorK9Nvf/vbuAwLAEgdHuecsx7i80KhkPx+v/UYSJBr165FfUwsG1bGslFqrM+F2A3VhraxXg/jx4+P6TjcFQwG5fP5Br2fveAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgIqbfiArEKpbdhYdqB+1YNTY2Rn3M1KlToz4mlj9TLLPFau7cuVEfM1Q7W7OrdXLiFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYMLjnHPWQ3xeKBSS3++3HgMjVLJvfDpU2PAT8RAMBuXz+Qa9n1dAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJMdYDAMmEDTWBocMrIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGAiqgBVVlZqwYIFSk9PV3Z2tpYvX66mpqaIx7zwwgvyeDwRa8OGDXEdGgAw/EUVoJqaGlVUVKiurk7Hjx/X7du3tWTJEvX09EQ8bv369ero6AivXbt2xXVoAMDwF9VvRD127FjEx/v27VN2drbq6+tVUlISvv3xxx9XIBCIz4QAgJT0SN8DCgaDkqTMzMyI29977z1lZWVp9uzZ2rZtm27evDno5+jr61MoFIpYAIARwMXozp077tvf/rZbtGhRxO2/+93v3LFjx9y5c+fcn/70J/fUU0+5FStWDPp5du7c6SSxWCwWK8VWMBi8b0diDtCGDRvclClTXHt7+30fV1VV5SS55ubmAe/v7e11wWAwvNrb281PGovFYrEefT0oQFF9D+h/Nm3apKNHj+r06dOaNGnSfR9bVFQkSWpubtb06dPvud/r9crr9cYyBgBgGIsqQM45vfrqqzp06JCqq6tVUFDwwGMaGxslSbm5uTENCABITVEFqKKiQvv379eRI0eUnp6uzs5OSZLf79e4cePU0tKi/fv361vf+pYmTJigc+fOacuWLSopKdGcOXMS8gcAAAxT0XzfR4N8nW/v3r3OOefa2tpcSUmJy8zMdF6v182YMcO9/vrrD/w64OcFg0Hzr1uyWCwW69HXg/7u9/x/WJJGKBSS3++3HgMA8IiCwaB8Pt+g97MXHADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADARNIFyDlnPQIAIA4e9Pd50gXo+vXr1iMAAOLgQX+fe1ySveTo7+/X5cuXlZ6eLo/HE3FfKBRSfn6+2tvb5fP5jCa0x3m4i/NwF+fhLs7DXclwHpxzun79uvLy8jRq1OCvc8YM4UwPZdSoUZo0adJ9H+Pz+Ub0BfY/nIe7OA93cR7u4jzcZX0e/H7/Ax+TdF+CAwCMDAQIAGBiWAXI6/Vq586d8nq91qOY4jzcxXm4i/NwF+fhruF0HpLuTQgAgJFhWL0CAgCkDgIEADBBgAAAJggQAMDEsAnQ7t27NXXqVD322GMqKirSRx99ZD3SkHvjjTfk8Xgi1qxZs6zHSrjTp09r2bJlysvLk8fj0eHDhyPud85px44dys3N1bhx41RaWqoLFy7YDJtADzoPa9euvef6KC8vtxk2QSorK7VgwQKlp6crOztby5cvV1NTU8Rjent7VVFRoQkTJujJJ5/UqlWr1NXVZTRxYjzMeXjhhRfuuR42bNhgNPHAhkWAPvjgA23dulU7d+7Uxx9/rMLCQpWVlenKlSvWow25Z599Vh0dHeH117/+1XqkhOvp6VFhYaF279494P27du3SO++8o3fffVdnzpzRE088obKyMvX29g7xpIn1oPMgSeXl5RHXx4EDB4ZwwsSrqalRRUWF6urqdPz4cd2+fVtLlixRT09P+DFbtmzRhx9+qIMHD6qmpkaXL1/WypUrDaeOv4c5D5K0fv36iOth165dRhMPwg0DCxcudBUVFeGP79y54/Ly8lxlZaXhVENv586drrCw0HoMU5LcoUOHwh/39/e7QCDg3nrrrfBt3d3dzuv1ugMHDhhMODS+eB6cc27NmjXuxRdfNJnHypUrV5wkV1NT45y7++9+7Nix7uDBg+HH/POf/3SSXG1trdWYCffF8+Ccc1//+tfdD37wA7uhHkLSvwK6deuW6uvrVVpaGr5t1KhRKi0tVW1treFkNi5cuKC8vDxNmzZNL7/8stra2qxHMtXa2qrOzs6I68Pv96uoqGhEXh/V1dXKzs7WzJkztXHjRl29etV6pIQKBoOSpMzMTElSfX29bt++HXE9zJo1S5MnT07p6+GL5+F/3nvvPWVlZWn27Nnatm2bbt68aTHeoJJuM9Iv+uSTT3Tnzh3l5ORE3J6Tk6N//etfRlPZKCoq0r59+zRz5kx1dHTozTff1PPPP6/z588rPT3dejwTnZ2dkjTg9fG/+0aK8vJyrVy5UgUFBWppadFPfvITLV26VLW1tRo9erT1eHHX39+vzZs3a9GiRZo9e7aku9dDWlqaMjIyIh6bytfDQOdBkr773e9qypQpysvL07lz5/TjH/9YTU1N+stf/mI4baSkDxA+s3Tp0vA/z5kzR0VFRZoyZYr+/Oc/a926dYaTIRl85zvfCf/zc889pzlz5mj69Omqrq7W4sWLDSdLjIqKCp0/f35EfB/0fgY7D6+88kr4n5977jnl5uZq8eLFamlp0fTp04d6zAEl/ZfgsrKyNHr06HvexdLV1aVAIGA0VXLIyMjQM888o+bmZutRzPzvGuD6uNe0adOUlZWVktfHpk2bdPToUZ06dSri17cEAgHdunVL3d3dEY9P1ethsPMwkKKiIklKqush6QOUlpam+fPnq6qqKnxbf3+/qqqqVFxcbDiZvRs3bqilpUW5ubnWo5gpKChQIBCIuD5CoZDOnDkz4q+PS5cu6erVqyl1fTjntGnTJh06dEgnT55UQUFBxP3z58/X2LFjI66HpqYmtbW1pdT18KDzMJDGxkZJSq7rwfpdEA/j/fffd16v1+3bt8/94x//cK+88orLyMhwnZ2d1qMNqR/+8Ieuurratba2ur/97W+utLTUZWVluStXrliPllDXr193DQ0NrqGhwUlyb7/9tmtoaHD/+c9/nHPO/eIXv3AZGRnuyJEj7ty5c+7FF190BQUF7tNPPzWePL7udx6uX7/uXnvtNVdbW+taW1vdiRMn3Je//GX39NNPu97eXuvR42bjxo3O7/e76upq19HREV43b94MP2bDhg1u8uTJ7uTJk+7s2bOuuLjYFRcXG04dfw86D83Nze6nP/2pO3v2rGttbXVHjhxx06ZNcyUlJcaTRxoWAXLOud/85jdu8uTJLi0tzS1cuNDV1dVZjzTkVq9e7XJzc11aWpp76qmn3OrVq11zc7P1WAl36tQpJ+metWbNGufc3bdib9++3eXk5Div1+sWL17smpqabIdOgPudh5s3b7olS5a4iRMnurFjx7opU6a49evXp9z/pA3055fk9u7dG37Mp59+6r7//e+78ePHu8cff9ytWLHCdXR02A2dAA86D21tba6kpMRlZmY6r9frZsyY4V5//XUXDAZtB/8Cfh0DAMBE0n8PCACQmggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE/8HYMK6RNiPcj0AAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "#вывод собственного изображения\n", + "plt.imshow(test_1_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mpkMp0r0_z_N" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_1_img = test_1_img / 255\n", + "test_1_img = test_1_img.reshape(1, num_pixels)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "brZ2LVVK_640", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "69d1d18e-6241-43b4-9610-bcf1685594d3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 45ms/step\n", + "I think it's 6\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_1 = model_2l_100.predict(test_1_img)\n", + "print('I think it\\'s', np.argmax(result_1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "le5KqCc1wMwT" + }, + "outputs": [], + "source": [ + "#загрузка собственного изображения\n", + "from PIL import Image\n", + "file_2_data = Image.open('ИИЛР1_1.png')\n", + "file_2_data = file_2_data.convert('L') #перевод в градации серого\n", + "test_2_img = np.array(file_2_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "YVYE-Vkq5wR7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "0c932382-ef82-4388-8197-3419fd063826" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGLRJREFUeJzt3X9MVff9x/HXVeFWW+5FRLjcihS11aRWmjllxNU1kShuMfXHH67rH9oYG+21mbp2i0vUdlnCZpNm6WLW/aVZVm1nMjT1DxNFwWxDm1qNMeuIMDYwcnE141xEQQOf7x+u99tbQbx6L28uPB/JJ5F7zr33zemRZy/3CD7nnBMAAMNsnPUAAICxiQABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATE6wH+Kb+/n5dvXpVOTk58vl81uMAAJLknFNXV5fC4bDGjRv8dc6IC9DVq1dVXFxsPQYA4BG1tbVp2rRpg24fcd+Cy8nJsR4BAJACQ309T1uA9u7dq6eeekqPPfaYysvL9emnnz7Q/fi2GwCMDkN9PU9LgD7++GNt375du3fv1ueff66ysjItW7ZM165dS8fTAQAykUuDhQsXukgkEv+4r6/PhcNhV11dPeR9Pc9zklgsFouV4cvzvPt+vU/5K6Dbt2/r3LlzqqysjN82btw4VVZWqqGh4Z79e3t7FYvFEhYAYPRLeYC+/PJL9fX1qbCwMOH2wsJCRaPRe/avrq5WMBiML66AA4CxwfwquB07dsjzvPhqa2uzHgkAMAxS/u+A8vPzNX78eHV0dCTc3tHRoVAodM/+fr9ffr8/1WMAAEa4lL8Cys7O1vz581VbWxu/rb+/X7W1taqoqEj10wEAMlRafhLC9u3btW7dOn3729/WwoUL9Zvf/Ebd3d169dVX0/F0AIAMlJYArV27Vv/5z3+0a9cuRaNRPf/88zp27Ng9FyYAAMYun3POWQ/xdbFYTMFg0HoMAMAj8jxPgUBg0O3mV8EBAMYmAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYGKC9QBAptu3b9+wPM+rr746LM8DDBdeAQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJnzOOWc9xNfFYjEFg0HrMTBGPcwPFl2/fn3qBxmAz+cblucBUsXzPAUCgUG38woIAGCCAAEATKQ8QG+//bZ8Pl/CmjNnTqqfBgCQ4dLyC+meffZZnThx4v+fZAK/9w4AkCgtZZgwYYJCoVA6HhoAMEqk5T2gy5cvKxwOa8aMGXrllVfU2to66L69vb2KxWIJCwAw+qU8QOXl5dq/f7+OHTum3/3ud2ppadELL7ygrq6uAfevrq5WMBiMr+Li4lSPBAAYgdL+74A6OztVUlKi9957Txs2bLhne29vr3p7e+Mfx2IxIgQz/DsgIHWG+ndAab86IDc3V88884yampoG3O73++X3+9M9BgBghEn7vwO6ceOGmpubVVRUlO6nAgBkkJQH6M0331R9fb3+9a9/6W9/+5tWrVql8ePH6+WXX071UwEAMljKvwV35coVvfzyy7p+/bqmTp2q7373uzpz5oymTp2a6qcCAGQwfhgp8DUj7K9DAi5CQKbhh5ECAEYkAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMDHBegBgJOns7Ez6Prm5uUnfp6+vL+n7AKMNr4AAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABP8MFLgayZPnpz0fZxzSd9n/PjxSd8HGG14BQQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMJB2g06dPa8WKFQqHw/L5fDp8+HDCduecdu3apaKiIk2cOFGVlZW6fPlyquYFAIwSSQeou7tbZWVl2rt374Db9+zZo/fff18ffPCBzp49q8cff1zLli1TT0/PIw8LABhF3COQ5GpqauIf9/f3u1Ao5N599934bZ2dnc7v97uDBw8+0GN6nucksVgZs4aL9efJYiW7PM+77zmd0veAWlpaFI1GVVlZGb8tGAyqvLxcDQ0NA96nt7dXsVgsYQEARr+UBigajUqSCgsLE24vLCyMb/um6upqBYPB+CouLk7lSACAEcr8KrgdO3bI87z4amtrsx4JADAMUhqgUCgkSero6Ei4vaOjI77tm/x+vwKBQMICAIx+KQ1QaWmpQqGQamtr47fFYjGdPXtWFRUVqXwqAECGm5DsHW7cuKGmpqb4xy0tLbpw4YLy8vI0ffp0bd26Vb/85S/19NNPq7S0VDt37lQ4HNbKlStTOTcAINMleynoqVOnBrzcbt26dc65u5di79y50xUWFjq/3++WLFniGhsbH/jxuQyblWlruFh/nixWsmuoy7B9/zuxR4xYLKZgMGg9BvDAhuuvkM/nG5bnAVLF87z7vq9vfhUcAGBsIkAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYmWA8AjCTnz5+3HgEYM3gFBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCY4IeRAl/z/PPPW48AjBm8AgIAmCBAAAATSQfo9OnTWrFihcLhsHw+nw4fPpywff369fL5fAmrqqoqVfMCAEaJpAPU3d2tsrIy7d27d9B9qqqq1N7eHl8HDx58pCEBAKNP0hchLF++XMuXL7/vPn6/X6FQ6KGHAgCMfml5D6iurk4FBQWaPXu2Nm/erOvXrw+6b29vr2KxWMICAIx+KQ9QVVWV/vCHP6i2tla//vWvVV9fr+XLl6uvr2/A/aurqxUMBuOruLg41SMBAEYgn3POPfSdfT7V1NRo5cqVg+7zz3/+UzNnztSJEye0ZMmSe7b39vaqt7c3/nEsFiNCMPMIfx3SzufzWY8AJMXzPAUCgUG3p/0y7BkzZig/P19NTU0Dbvf7/QoEAgkLADD6pT1AV65c0fXr11VUVJTupwIAZJCkr4K7ceNGwquZlpYWXbhwQXl5ecrLy9M777yjNWvWKBQKqbm5WT/96U81a9YsLVu2LKWDAwAynEvSqVOnnKR71rp169zNmzfd0qVL3dSpU11WVpYrKSlxGzdudNFo9IEf3/O8AR+fxRqONZJZHxsWK9nled59z+lHugghHWKxmILBoPUYGKP++9//Jn2f3Nzc1A8yAC5CQKYxvwgBAICBECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwETSvw8IGM0mT56c9H1G2A+UBzIGr4AAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJpIKUHV1tRYsWKCcnBwVFBRo5cqVamxsTNinp6dHkUhEU6ZM0RNPPKE1a9aoo6MjpUMDADJfUgGqr69XJBLRmTNndPz4cd25c0dLly5Vd3d3fJ9t27bpk08+0aFDh1RfX6+rV69q9erVKR8cAJDh3CO4du2ak+Tq6+udc851dna6rKwsd+jQofg+X3zxhZPkGhoaHugxPc9zklisjFnDxfrzZLGSXZ7n3fecfqT3gDzPkyTl5eVJks6dO6c7d+6osrIyvs+cOXM0ffp0NTQ0DPgYvb29isViCQsAMPo9dID6+/u1detWLVq0SHPnzpUkRaNRZWdnKzc3N2HfwsJCRaPRAR+nurpawWAwvoqLix92JABABnnoAEUiEV26dEkfffTRIw2wY8cOeZ4XX21tbY/0eACAzDDhYe60ZcsWHT16VKdPn9a0adPit4dCId2+fVudnZ0Jr4I6OjoUCoUGfCy/3y+/3/8wYwAAMlhSr4Ccc9qyZYtqamp08uRJlZaWJmyfP3++srKyVFtbG7+tsbFRra2tqqioSM3EAIBRIalXQJFIRAcOHNCRI0eUk5MTf18nGAxq4sSJCgaD2rBhg7Zv3668vDwFAgG98cYbqqio0He+8520fAIAgAyVistA9+3bF9/n1q1b7vXXX3eTJ092kyZNcqtWrXLt7e0P/Bxchs3KtDVcrD9PFivZNdRl2L7/ndgjRiwWUzAYtB4DeGDD9VfI5/MNy/MAqeJ5ngKBwKDb+VlwAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYGKC9QBApuvs7Ez6PoFAIPWDABmGV0AAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAl+GCnwiCZPnmw9ApCReAUEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATCQVoOrqai1YsEA5OTkqKCjQypUr1djYmLDPiy++KJ/Pl7A2bdqU0qEBAJkvqQDV19crEonozJkzOn78uO7cuaOlS5equ7s7Yb+NGzeqvb09vvbs2ZPSoQEAmS+p34h67NixhI/379+vgoICnTt3TosXL47fPmnSJIVCodRMCAAYlR7pPSDP8yRJeXl5Cbd/+OGHys/P19y5c7Vjxw7dvHlz0Mfo7e1VLBZLWACAMcA9pL6+PveDH/zALVq0KOH23//+9+7YsWPu4sWL7o9//KN78skn3apVqwZ9nN27dztJLBaLxRply/O8+3bkoQO0adMmV1JS4tra2u67X21trZPkmpqaBtze09PjPM+Lr7a2NvODxmKxWKxHX0MFKKn3gL6yZcsWHT16VKdPn9a0adPuu295ebkkqampSTNnzrxnu9/vl9/vf5gxAAAZLKkAOef0xhtvqKamRnV1dSotLR3yPhcuXJAkFRUVPdSAAIDRKakARSIRHThwQEeOHFFOTo6i0agkKRgMauLEiWpubtaBAwf0/e9/X1OmTNHFixe1bds2LV68WPPmzUvLJwAAyFDJvO+jQb7Pt2/fPuecc62trW7x4sUuLy/P+f1+N2vWLPfWW28N+X3Ar/M8z/z7liwWi8V69DXU137f/8IyYsRiMQWDQesxAACPyPM8BQKBQbfzs+AAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACZGXICcc9YjAABSYKiv5yMuQF1dXdYjAABSYKiv5z43wl5y9Pf36+rVq8rJyZHP50vYFovFVFxcrLa2NgUCAaMJ7XEc7uI43MVxuIvjcNdIOA7OOXV1dSkcDmvcuMFf50wYxpkeyLhx4zRt2rT77hMIBMb0CfYVjsNdHIe7OA53cRzusj4OwWBwyH1G3LfgAABjAwECAJjIqAD5/X7t3r1bfr/fehRTHIe7OA53cRzu4jjclUnHYcRdhAAAGBsy6hUQAGD0IEAAABMECABgggABAExkTID27t2rp556So899pjKy8v16aefWo807N5++235fL6ENWfOHOux0u706dNasWKFwuGwfD6fDh8+nLDdOaddu3apqKhIEydOVGVlpS5fvmwzbBoNdRzWr19/z/lRVVVlM2yaVFdXa8GCBcrJyVFBQYFWrlypxsbGhH16enoUiUQ0ZcoUPfHEE1qzZo06OjqMJk6PBzkOL7744j3nw6ZNm4wmHlhGBOjjjz/W9u3btXv3bn3++ecqKyvTsmXLdO3aNevRht2zzz6r9vb2+PrLX/5iPVLadXd3q6ysTHv37h1w+549e/T+++/rgw8+0NmzZ/X4449r2bJl6unpGeZJ02uo4yBJVVVVCefHwYMHh3HC9Kuvr1ckEtGZM2d0/Phx3blzR0uXLlV3d3d8n23btumTTz7RoUOHVF9fr6tXr2r16tWGU6fegxwHSdq4cWPC+bBnzx6jiQfhMsDChQtdJBKJf9zX1+fC4bCrrq42nGr47d6925WVlVmPYUqSq6mpiX/c39/vQqGQe/fdd+O3dXZ2Or/f7w4ePGgw4fD45nFwzrl169a5l156yWQeK9euXXOSXH19vXPu7n/7rKwsd+jQofg+X3zxhZPkGhoarMZMu28eB+ec+973vud+/OMf2w31AEb8K6Dbt2/r3LlzqqysjN82btw4VVZWqqGhwXAyG5cvX1Y4HNaMGTP0yiuvqLW11XokUy0tLYpGownnRzAYVHl5+Zg8P+rq6lRQUKDZs2dr8+bNun79uvVIaeV5niQpLy9PknTu3DnduXMn4XyYM2eOpk+fPqrPh28eh698+OGHys/P19y5c7Vjxw7dvHnTYrxBjbgfRvpNX375pfr6+lRYWJhwe2Fhof7xj38YTWWjvLxc+/fv1+zZs9Xe3q533nlHL7zwgi5duqScnBzr8UxEo1FJGvD8+GrbWFFVVaXVq1ertLRUzc3N+vnPf67ly5eroaFB48ePtx4v5fr7+7V161YtWrRIc+fOlXT3fMjOzlZubm7CvqP5fBjoOEjSj370I5WUlCgcDuvixYv62c9+psbGRv35z382nDbRiA8Q/t/y5cvjf543b57Ky8tVUlKiP/3pT9qwYYPhZBgJfvjDH8b//Nxzz2nevHmaOXOm6urqtGTJEsPJ0iMSiejSpUtj4n3Q+xnsOLz22mvxPz/33HMqKirSkiVL1NzcrJkzZw73mAMa8d+Cy8/P1/jx4++5iqWjo0OhUMhoqpEhNzdXzzzzjJqamqxHMfPVOcD5ca8ZM2YoPz9/VJ4fW7Zs0dGjR3Xq1KmEX98SCoV0+/ZtdXZ2Juw/Ws+HwY7DQMrLyyVpRJ0PIz5A2dnZmj9/vmpra+O39ff3q7a2VhUVFYaT2btx44aam5tVVFRkPYqZ0tJShUKhhPMjFovp7NmzY/78uHLliq5fvz6qzg/nnLZs2aKamhqdPHlSpaWlCdvnz5+vrKyshPOhsbFRra2to+p8GOo4DOTChQuSNLLOB+urIB7ERx995Px+v9u/f7/7+9//7l577TWXm5vrotGo9WjD6ic/+Ymrq6tzLS0t7q9//aurrKx0+fn57tq1a9ajpVVXV5c7f/68O3/+vJPk3nvvPXf+/Hn373//2znn3K9+9SuXm5vrjhw54i5evOheeuklV1pa6m7dumU8eWrd7zh0dXW5N9980zU0NLiWlhZ34sQJ961vfcs9/fTTrqenx3r0lNm8ebMLBoOurq7Otbe3x9fNmzfj+2zatMlNnz7dnTx50n322WeuoqLCVVRUGE6dekMdh6amJveLX/zCffbZZ66lpcUdOXLEzZgxwy1evNh48kQZESDnnPvtb3/rpk+f7rKzs93ChQvdmTNnrEcadmvXrnVFRUUuOzvbPfnkk27t2rWuqanJeqy0O3XqlJN0z1q3bp1z7u6l2Dt37nSFhYXO7/e7JUuWuMbGRtuh0+B+x+HmzZtu6dKlburUqS4rK8uVlJS4jRs3jrr/SRvo85fk9u3bF9/n1q1b7vXXX3eTJ092kyZNcqtWrXLt7e12Q6fBUMehtbXVLV682OXl5Tm/3+9mzZrl3nrrLed5nu3g38CvYwAAmBjx7wEBAEYnAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMDE/wHey6QFMggR7wAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ], + "source": [ + "#вывод собственного изображения\n", + "plt.imshow(test_2_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iabh56bf52Cx" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_2_img = test_2_img / 255\n", + "test_2_img = test_2_img.reshape(1, num_pixels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "184Hvdg26hoh", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "53455b67-6eac-4625-cd82-2eb64ba5ec27" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 30ms/step\n", + "I think it's 1\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_2 = model_2l_100.predict(test_2_img)\n", + "print('I think it\\'s', np.argmax(result_2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ELjlb0b28h8d" + }, + "outputs": [], + "source": [ + "from PIL import Image\n", + "file_190_data = Image.open('ИИЛР1_690.png')\n", + "file_190_data = file_190_data.convert('L') #перевод в градации серого\n", + "test_190_img = np.array(file_190_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "nDvEgbbU8wcC", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "7356832f-7b05-4876-c0f2-8996dea2ac2c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ], + "source": [ + "plt.imshow(test_190_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "V954Q-Us82lQ" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_190_img = test_190_img / 255\n", + "test_190_img = test_190_img.reshape(1, num_pixels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5uEzkB1N89-i", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "e38b9678-2ed7-4d0c-d3ac-76a8769abda1" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 27ms/step\n", + "I think it's 2\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_190 = model_2l_100.predict(test_190_img)\n", + "print('I think it\\'s', np.argmax(result_190))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Cp-Y7YSb9IKI" + }, + "outputs": [], + "source": [ + "from PIL import Image\n", + "file_290_data = Image.open('ИИЛР1_190.png')\n", + "file_290_data = file_290_data.convert('L') #перевод в градации серого\n", + "test_290_img = np.array(file_290_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fHfFgIu49QqP", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "44ece705-518a-4b12-e7e0-c1e1144ce02b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGDBJREFUeJzt3X9MVff9x/HX9Qen2sJFRLjciha11aQqzZwy4uq6SBS3mPrjD9v1D22MjfbaTFm7hSVquy1hs0mzdDHt/tItq7YzmZr6h4lFwWxDG63GmHVECBsY+bGacC6ioIHP9w/X+92tICL38ubC85F8Eu8959779njKs5d7xIBzzgkAgGE2znoAAMDYRIAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJCdYDfFNvb6+uX7+u9PR0BQIB63EAAIPknFNHR4fC4bDGjev/fc6IC9D169eVn59vPQYAYIiampo0ffr0frePuG/BpaenW48AAEiAgb6eJy1A+/bt01NPPaXHHntMRUVF+vzzzx/qcXzbDQBGh4G+niclQJ988onKysq0Z88effHFFyosLNTKlSvV1taWjJcDAKQilwRLlixxkUgkdrunp8eFw2FXUVEx4GN933eSWCwWi5Xiy/f9B369T/g7oDt37ujChQsqKSmJ3Tdu3DiVlJSopqbmvv27u7sVjUbjFgBg9Et4gL766iv19PQoNzc37v7c3Fy1tLTct39FRYWCwWBscQUcAIwN5lfBlZeXy/f92GpqarIeCQAwDBL+94Cys7M1fvx4tba2xt3f2tqqUCh03/6e58nzvESPAQAY4RL+DigtLU2LFi1SZWVl7L7e3l5VVlaquLg40S8HAEhRSflJCGVlZdq4caO+/e1va8mSJfrtb3+rzs5Ovfrqq8l4OQBACkpKgDZs2KD//Oc/2r17t1paWvTcc8/pxIkT912YAAAYuwLOOWc9xP+KRqMKBoPWYwAAhsj3fWVkZPS73fwqOADA2ESAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwkPEBvv/22AoFA3Jo3b16iXwYAkOImJONJn332WX322Wf//yITkvIyAIAUlpQyTJgwQaFQKBlPDQAYJZLyGdDVq1cVDoc1a9YsvfLKK2psbOx33+7ubkWj0bgFABj9Eh6goqIiHThwQCdOnNAHH3yghoYGPf/88+ro6Ohz/4qKCgWDwdjKz89P9EgAgBEo4JxzyXyB9vZ2zZw5U++99542b9583/bu7m51d3fHbkejUSIEAKOA7/vKyMjod3vSrw7IzMzUM888o7q6uj63e54nz/OSPQYAYIRJ+t8Dunnzpurr65WXl5fslwIApJCEB+jNN99UdXW1/vWvf+nvf/+71q5dq/Hjx+vll19O9EsBAFJYwr8Fd+3aNb388su6ceOGpk2bpu9+97s6e/aspk2bluiXAgCksKRfhDBY0WhUwWDQegwAwBANdBECPwsOAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYGHSAzpw5o9WrVyscDisQCOjo0aNx251z2r17t/Ly8jRp0iSVlJTo6tWriZoXADBKDDpAnZ2dKiws1L59+/rcvnfvXr3//vv68MMPde7cOT3++ONauXKlurq6hjwsAGAUcUMgyR05ciR2u7e314VCIffuu+/G7mtvb3ee57lDhw491HP6vu8ksVgsFivFl+/7D/x6n9DPgBoaGtTS0qKSkpLYfcFgUEVFRaqpqenzMd3d3YpGo3ELADD6JTRALS0tkqTc3Ny4+3Nzc2Pbvqmi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\n" + }, + "metadata": {} + } + ], + "source": [ + "plt.imshow(test_290_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VigLQgvN9Vtz" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_290_img = test_290_img / 255\n", + "test_290_img = test_290_img.reshape(1, num_pixels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "OT4Gyq3w9cKm", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "7f87b9cb-2d20-4f07-df92-8fdfb155f614" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 29ms/step\n", + "I think it's 4\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_290 = model_2l_100.predict(test_290_img)\n", + "print('I think it\\'s', np.argmax(result_290))" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/labworks/LW1/LR_1full.ipynb b/labworks/LW1/LR_1full.ipynb new file mode 100644 index 0000000..1d8e358 --- /dev/null +++ b/labworks/LW1/LR_1full.ipynb @@ -0,0 +1,2897 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0G3B3V7wQOcB" + }, + "outputs": [], + "source": [ + "import os\n", + "os.chdir('/content/drive/MyDrive/Colab Notebooks')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "osfcYg__RCj4" + }, + "outputs": [], + "source": [ + "# импорт модулей\n", + "from tensorflow import keras\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rhibgIV6RLsB", + "outputId": "cb0bddd9-eec5-4746-f1fd-b4dbc58a09f9" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n", + "\u001b[1m11490434/11490434\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 0us/step\n" + ] + } + ], + "source": [ + "# загрузка датасета\n", + "from keras.datasets import mnist\n", + "(X_train, y_train), (X_test, y_test) = mnist.load_data()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EhjPpWFkSYbP" + }, + "outputs": [], + "source": [ + "# создание своего разбиения датасета\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hLYuoklsSf6l" + }, + "outputs": [], + "source": [ + "# объединяем в один набор\n", + "X = np.concatenate((X_train, X_test))\n", + "y = np.concatenate((y_train, y_test))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "T27CvmBSUUjw" + }, + "outputs": [], + "source": [ + "# разбиваем по вариантам\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y,\n", + " test_size = 10000,\n", + " train_size = 60000,\n", + " random_state = 27)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ONK_i4sFUfHu", + "outputId": "c0fcaa5a-bea9-4ae2-f37e-9dd907b1fe92" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of X train: (60000, 28, 28)\n", + "Shape of y train: (60000,)\n" + ] + } + ], + "source": [ + "# вывод размерностей\n", + "print('Shape of X train:', X_train.shape)\n", + "print('Shape of y train:', y_train.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 251 + }, + "id": "MFnSPykWUwv7", + "outputId": "b408d0d0-5e44-445f-9648-b1fbe8918df3" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzYAAADqCAYAAABwW9CIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALMhJREFUeJzt3Xl8VPW9//HPJMCwTwgxCWEzVDYBUYEgF5QgS8hDURCuhWrFFmVp4MomFi8QXDAql2IVRK+yyEWhQA0Cxdg2bNIbUEBlEwQaNSwJhN5sGJKQfH9/8GM08j05M8lMZs7M6/l4fB+P5j0z53xPmjfON5P5jk0ppQQAAAAALCzE1xMAAAAAgJpiYQMAAADA8ljYAAAAALA8FjYAAAAALI+FDQAAAADLY2EDAAAAwPJY2AAAAACwPBY2AAAAACyPhQ0AAAAAy2NhYzHffvut2Gw2+a//+i+PHXPnzp1is9lk586dHjsm4Gt0BTBHTwBz9MQ6WNjUglWrVonNZpP9+/f7eipe8/e//10GDBggEREREhYWJnFxcfI///M/vp4WLCbQu5KamioJCQkSExMjdrtdWrVqJaNGjZIjR474emqwkEDvyYcffii//OUvpV27dtKwYUPp2LGjzJgxQ/Ly8nw9NVhIoPdEhOdeOnV8PQFY3+bNm2X48OHSp08fmT9/vthsNlm/fr089thjkpubK9OmTfP1FAG/cPjwYWnWrJk89dRTEhERIdnZ2bJixQqJi4uTjIwM6d69u6+nCPjc+PHjJSYmRh599FFp06aNHD58WJYsWSLbtm2TgwcPSoMGDXw9RcDneO6lx8IGNbZkyRJp0aKFbN++Xex2u4iITJgwQTp16iSrVq0K2nIBPzdv3rwbsieeeEJatWoly5Ytk7feessHswL8y8aNGyU+Pr5S1qNHDxk7dqy8//778sQTT/hmYoAf4bmXHn+K5idKS0tl3rx50qNHD3E4HNKoUSO5++67ZceOHYaPWbx4sbRt21YaNGgg/fv31/45y/Hjx2XUqFESHh4u9evXl549e8rmzZtN5/PDDz/I8ePHJTc31/S+BQUF0qxZM2exRETq1KkjERER/GYNHmflruhERkZKw4YN+TMbeJSVe/LzRY2IyIgRI0RE5OuvvzZ9POAqK/eE5156LGz8REFBgbz77rsSHx8vr7zyisyfP18uXrwoCQkJ8uWXX95w/9WrV8vrr78uSUlJMnv2bDly5Ijce++9kpOT47zP0aNH5a677pKvv/5afv/738uiRYukUaNGMnz4cElNTa1yPp999pl07txZlixZYjr3+Ph4OXr0qMydO1dOnTolp0+flhdeeEH2798vs2bNcvt7AVTFyl25Li8vTy5evCiHDx+WJ554QgoKCmTgwIEuPx4wEwg9+ans7GwREYmIiKjW4wEdK/eE514GFLxu5cqVSkTU559/bnifq1evqpKSkkrZ//3f/6moqCj129/+1pllZmYqEVENGjRQZ86cceb79u1TIqKmTZvmzAYOHKi6deumrly54swqKirUv/3bv6n27ds7sx07digRUTt27LghS05ONr2+oqIi9fDDDyubzaZERImIatiwodq0aZPpY4GfCvSuXNexY0dnVxo3bqzmzJmjysvLXX48gluw9OSnxo0bp0JDQ9U333xTrccj+AR6T3jupccrNn4iNDRU6tWrJyIiFRUV8q9//UuuXr0qPXv2lIMHD95w/+HDh0vLli2dX8fFxUnv3r1l27ZtIiLyr3/9S7Zv3y4PP/ywFBYWSm5uruTm5sqlS5ckISFBTp48KWfPnjWcT3x8vCilZP78+aZzt9vt0qFDBxk1apSsXbtW1qxZIz179pRHH31U9u7d6+Z3Aqialbty3cqVKyUtLU3efPNN6dy5sxQXF0t5ebnLjwfMBEJPrvvggw9k+fLlMmPGDGnfvr3bjweMWLknPPfSY/MAP/Lee+/JokWL5Pjx41JWVubMY2Njb7iv7h/3Dh06yPr160VE5NSpU6KUkrlz58rcuXO157tw4UKlglbX5MmTZe/evXLw4EEJCbm2Vn744YelS5cu8tRTT8m+fftqfA7gp6zalev69Onj/N+jR4+Wzp07i4h49DMSAKv3RETk008/lXHjxklCQoIsWLDAo8cGRKzbE5576bGw8RNr1qyRxx9/XIYPHy5PP/20REZGSmhoqKSkpMjp06fdPl5FRYWIiMycOVMSEhK097nllltqNGeRa2+8W758ucyaNctZLBGRunXrSmJioixZskRKS0udvxEBasqqXTHSrFkzuffee+X9999nYQOPCYSefPXVV/LAAw9I165dZePGjVKnDk9Z4FlW7QnPvYzxr4Sf2Lhxo7Rr104+/PBDsdlszjw5OVl7/5MnT96Q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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Создаем subplot для 4 изображений\n", + "fig, axes = plt.subplots(1, 4, figsize=(10, 3))\n", + "\n", + "for i in range(4):\n", + " axes[i].imshow(X_train[i], cmap=plt.get_cmap('gray'))\n", + " axes[i].set_title(f'Label: {y_train[i]}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hNRbQ3GJU9fq" + }, + "outputs": [], + "source": [ + "# Добавляем метку как заголовок\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "js1x4HkMVfwm", + "outputId": "82515441-af66-4383-b7d0-24473fd417db" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of transformed X train: (60000, 784)\n" + ] + } + ], + "source": [ + "# развернем каждое изображение 28*28 в вектор 784\n", + "num_pixels = X_train.shape[1] * X_train.shape[2]\n", + "X_train = X_train.reshape(X_train.shape[0], num_pixels) / 255\n", + "X_test = X_test.reshape(X_test.shape[0], num_pixels) / 255\n", + "print('Shape of transformed X train:', X_train.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7k8dJS06WNfN", + "outputId": "c5527c79-25bd-409a-c8fe-33f5624618e6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of transformed y train: (60000, 10)\n" + ] + } + ], + "source": [ + "# переведем метки в one-hot\n", + "from keras.utils import to_categorical\n", + "y_train = to_categorical(y_train)\n", + "y_test = to_categorical(y_test)\n", + "print('Shape of transformed y train:', y_train.shape)\n", + "num_classes = y_train.shape[1]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Ir0bQztHWu9V" + }, + "outputs": [], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yQ9FXNqXXDHD", + "outputId": "b1735201-eab3-4fcd-8793-861f3dbf9ac3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.12/dist-packages/keras/src/layers/core/dense.py:93: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", + " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" + ] + } + ], + "source": [ + "model_1 = Sequential()\n", + "model_1.add(Dense(units=num_classes,input_dim=num_pixels, activation='softmax'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 181 + }, + "id": "RUvTKwOZXfEi", + "outputId": "7d762a7d-7b06-48c1-af64-6310475f1166" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m7,850\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense (Dense)                   │ (None, 10)             │         7,850 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ], + "text/html": [ + "
 Total params: 7,850 (30.66 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ], + "text/html": [ + "
 Trainable params: 7,850 (30.66 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "model_1.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", + "\n", + "print(\"Архитектура нейронной сети:\")\n", + "model_1.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l8f1EiJUYLvl", + "outputId": "8d88ef7c-7d4e-4067-d777-d78aee4c3c39" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.7168 - loss: 1.1499 - val_accuracy: 0.8695 - val_loss: 0.5093\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8763 - loss: 0.4841 - val_accuracy: 0.8858 - val_loss: 0.4226\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8890 - loss: 0.4170 - val_accuracy: 0.8953 - val_loss: 0.3855\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8923 - loss: 0.3911 - val_accuracy: 0.8990 - val_loss: 0.3649\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8989 - loss: 0.3692 - val_accuracy: 0.9032 - val_loss: 0.3503\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9034 - loss: 0.3525 - val_accuracy: 0.9055 - val_loss: 0.3410\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9026 - loss: 0.3452 - val_accuracy: 0.9080 - val_loss: 0.3325\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9063 - loss: 0.3369 - val_accuracy: 0.9087 - val_loss: 0.3263\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9084 - loss: 0.3280 - val_accuracy: 0.9112 - val_loss: 0.3212\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9097 - loss: 0.3235 - val_accuracy: 0.9123 - val_loss: 0.3169\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9092 - loss: 0.3218 - val_accuracy: 0.9127 - val_loss: 0.3130\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9105 - loss: 0.3134 - val_accuracy: 0.9142 - val_loss: 0.3089\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9136 - loss: 0.3088 - val_accuracy: 0.9142 - val_loss: 0.3076\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9143 - loss: 0.3086 - val_accuracy: 0.9160 - val_loss: 0.3041\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9145 - loss: 0.3049 - val_accuracy: 0.9152 - val_loss: 0.3016\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9159 - loss: 0.3041 - val_accuracy: 0.9157 - val_loss: 0.2994\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9171 - loss: 0.2976 - val_accuracy: 0.9143 - val_loss: 0.2982\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9144 - loss: 0.3051 - val_accuracy: 0.9168 - val_loss: 0.2964\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9173 - loss: 0.3012 - val_accuracy: 0.9173 - val_loss: 0.2954\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9165 - loss: 0.2982 - val_accuracy: 0.9168 - val_loss: 0.2945\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9175 - loss: 0.2946 - val_accuracy: 0.9172 - val_loss: 0.2934\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9174 - loss: 0.2937 - val_accuracy: 0.9172 - val_loss: 0.2911\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9191 - loss: 0.2884 - val_accuracy: 0.9173 - val_loss: 0.2912\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9196 - loss: 0.2908 - val_accuracy: 0.9162 - val_loss: 0.2890\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9191 - loss: 0.2870 - val_accuracy: 0.9183 - val_loss: 0.2886\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9193 - loss: 0.2891 - val_accuracy: 0.9187 - val_loss: 0.2881\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9194 - loss: 0.2837 - val_accuracy: 0.9182 - val_loss: 0.2867\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9195 - loss: 0.2867 - val_accuracy: 0.9187 - val_loss: 0.2862\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9217 - loss: 0.2817 - val_accuracy: 0.9182 - val_loss: 0.2856\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9229 - loss: 0.2757 - val_accuracy: 0.9178 - val_loss: 0.2850\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9195 - loss: 0.2809 - val_accuracy: 0.9180 - val_loss: 0.2847\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9213 - loss: 0.2825 - val_accuracy: 0.9193 - val_loss: 0.2838\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9216 - loss: 0.2822 - val_accuracy: 0.9197 - val_loss: 0.2832\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9232 - loss: 0.2757 - val_accuracy: 0.9202 - val_loss: 0.2823\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9207 - loss: 0.2836 - val_accuracy: 0.9197 - val_loss: 0.2822\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9220 - loss: 0.2791 - val_accuracy: 0.9192 - val_loss: 0.2823\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9215 - loss: 0.2777 - val_accuracy: 0.9173 - val_loss: 0.2824\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9238 - loss: 0.2752 - val_accuracy: 0.9180 - val_loss: 0.2809\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9250 - loss: 0.2707 - val_accuracy: 0.9200 - val_loss: 0.2809\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9228 - loss: 0.2783 - val_accuracy: 0.9188 - val_loss: 0.2807\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9251 - loss: 0.2679 - val_accuracy: 0.9198 - val_loss: 0.2806\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9235 - loss: 0.2774 - val_accuracy: 0.9188 - val_loss: 0.2797\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9225 - loss: 0.2772 - val_accuracy: 0.9198 - val_loss: 0.2791\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9240 - loss: 0.2749 - val_accuracy: 0.9193 - val_loss: 0.2791\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9265 - loss: 0.2666 - val_accuracy: 0.9197 - val_loss: 0.2786\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9246 - loss: 0.2747 - val_accuracy: 0.9198 - val_loss: 0.2786\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9239 - loss: 0.2721 - val_accuracy: 0.9193 - val_loss: 0.2783\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9224 - loss: 0.2779 - val_accuracy: 0.9200 - val_loss: 0.2787\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9233 - loss: 0.2755 - val_accuracy: 0.9203 - val_loss: 0.2778\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9247 - loss: 0.2684 - val_accuracy: 0.9182 - val_loss: 0.2778\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history = model_1.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "id": "UJ5yuJBrZsjT", + "outputId": "02557983-a862-4ac4-baef-8a4e0e35942c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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vr6+yl133WWz/4cffqgAyuLFi5VNmzYpGo1GefbZZ222ycnJKRbjxo0bFUD5/PPPi8X42GOPKU2aNLGWZ2dnK35+fkq/fv1K/AzC9aSrXDhVZmZmsVZISUJDQwGstxHVq1ePVq1a8eWXX1q3SU1N5ffff+fxxx8v1nWamZnJuXPnbJarycvLo1evXpw9e5YVK1ZQtWrVsny0Ep04cYL33nuPKVOm4OPjUyxGoEznW758OQCxsbE25ePGjQPgt99+K0u416QoCpMmTeLBBx+kVatWJW4TGxuLRqOxvu/fvz+hoaElxrNlyxYeeeQRHnzwQWbNmlXuc5fVH3/8QUFBAc8++yxq9aX/AocOHYqfn99167LofvWiJTQ0lO7du/P9999jNpvtisVkMrFq1Sr69OlD7dq1reXh4eH069ePf/75x+bWuqeffppu3brxv//9j/79+1OnTh1effVVm2N6enpaXxuNRs6fP090dDQBAQFs3769WAz9+/dn//791i7x77//Hn9/fzp16mTXZxE3jiRu4VTVqlXj0KFD193u4MGDADajkwcMGMD69es5duwYAN9++y1Go5H+/fsX23/IkCEEBwfbLEXX/K40ePBg/vnnHzIzM63XtR1l2rRpVKtWzXoN/nL169cnMDCQt956i/Xr13P27FnOnTuH0Wi87nGPHTuGWq0mOjrapjwsLIyAgABrHTnSl19+yd69e4slBsD6xalBgwY25RqNhrp16xa7nnrixAl69OhBdnY258+fv+4162udu7yK6qp+/fo25Xq9ntq1a1+3LpOSkor9rf3444+kp6df8wtjSc6ePUtOTk6xWAAaNmyI2WwmOTnZpnzBggXk5ORw4MABFi1aZJOoAXJzc5k6dSoREREYDAaCgoIIDg4mLS2N9PT0YucJDg6mR48eLFy4EICFCxcycOBAmy81omKR34xwqvvuu4/U1FQWLFhw1W1SUlL47LPPCA4O5o477rCWP/roo+h0Omure/HixbRo0aLE/+SmTp1KXFyczeLh4VHi+bZv387PP/9McHAwTz/9dDk/4SUJCQksWrSIl19+ucRrpD4+PixdupTs7GzatWtHSEgIwcHBbNiwodTnKM0gLUcoKChgypQpPPnkk9SrV6/Y+iuTxfUcPHiQmjVr8sUXX/DHH3/w2WeflfncrhYWFlbsb+2xxx67Yedfu3atdUDi7t27i63/3//+xyuvvMIjjzzCN998w6pVq4iLi6Nq1apX7REYMmQIX331FQkJCfz11182gzpFxSOD04RTTZ48mZ9++onhw4ezf/9++vXrh8lkAiwtl9WrVzN16lQuXLjAkiVLbAY0ValShR49evDll1/y+OOPs379eubMmVPieZo0aULnzp1tyi7vwr3cJ598Qq9evdBoNNx3330sWLCAJ598styfddKkScTExNC3b9+rbtOlSxfeeOMNHn/8cebPn0/t2rUZN26ctU6uJjIyErPZzIEDB2jYsKG1PCUlhbS0NCIjI8sd/+U++OADzpw5U2z0c5GiAVeJiYk2XbxFMV55X354eDjLly8nNDSUn3/+mXHjxtG9e3eCg4PtPnd5FdXVlbEXFBRY73q4Fg8Pj2LbvPvuu/j5+REUFGRXLMHBwXh5eZGYmFhs3f79+1Gr1URERFjLTp06xf/+9z+6du2KXq9n/PjxdOvWzeb3/9133zFw4EDeeusta1leXt41R8zfe++9eHh48Oijj9KuXTvq1KnD33//bddnETeOtLiFU4WFhbFx40buvfde3nrrLW677TYWL15MdnY2kZGRDBkyBE9PT5YtW1Ziq6V///7s27eP5557Do1Gw6OPPlrumO68804AevTowaOPPspzzz1X7HYee23cuJGff/6Z11577Zqt4uTkZEaMGMHo0aN5+umn6dy5M4GBgdc9fvfu3QGKfXGZPXs2YPksjpKZmckrr7zC2LFjCQsLK3GbTp06YTAYePfdd21acV9++SUpKSnFbkerV6+edRzDe++9h9lsZsyYMWU6d3l17twZvV7Pu+++i3LZNBYLFiwgPT39mnVZUot1x44d/P777/Tp08fu7mWNRkPXrl35+eefbS4vpKSksGTJEtq1a4efn5+1fOjQoZjNZhYsWMBHH32EVqvlySeftPkcGo3G5j1Y6vxaXw61Wi0DBgxg165dDBkyxK7PIG48aXELp4uIiODnn3/m1KlTrF+/nlmzZhEfH8/8+fOJiYkhJibmqsmuR48eVK1alW+//ZZ77723VAPd7PHOO+/QsGFD/ve///HNN9/YrNu4caPNNcuiQUIHDx5ky5YttGzZ0rquaCKSa7XWzGYz/fv3p0aNGrz22mt2xdmsWTPrJDVpaWm0b9+eLVu28Nlnn9GnTx86dOhgs33R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nu04OjoalUpFQkIC999/f7H1CQkJBAYGEhwcTGBg4FWPc/lscU8++SQDBgzg/fff59NPP6Vv377WAapVqlRh9uzZjB07lhdeeAGNRkN+fj49evSw7t+zZ08iIyP5+OOPqVatGmazmcaNGxcb8Ld06VISEhKsDY5rxWSv8ePHExcXx5tvvkl0dDSenp489NBDNjG8/fbbPP744wQFBeHl5eXyJ3rNmjWL+vXr07NnT5vEXdrfG1h+37///jsPPPAAffv2pVu3S188Bw4cyPnz53nnnXeIjIzEYDDQunVrtxqIaS+Xz5w2atQojh07Rn5+Pps3b6ZVq1bWdWvXrmXRokXW91qtlmnTpnHw4EHrt8y5c+cSEBBw4wMHPHRFLW5J3EI4UtWqVenSpQsffPBBse7r06dP8+WXX9K3b19UKhV16tRBq9Wyfv166zZms5kNGzbYtHi7d++Ot7c38+fPZ8WKFdZu8iIjR44kPT2dPXv2EB8fT69evazrzp8/T2JiIpMnT6ZTp07WrvqSRERE0K5dO9LS0my60ZOTk0lOTraJyV7r169n0KBB3H///TRp0oSwsDCOHj1qs029evUYNGgQUVFRbN68mU8++eSax2zYsCE7d+4kOzvb5jxqtZr69euXOVaAU6dO8dZbb/HWW28VW+fv709YWJjN7w3gn3/+KVZHX3zxBffccw8vvfQSQ4cOtRl1vn79ekaPHk337t255ZZbMBgMnDt3rlxxV3QuT9zuzEN7scUt17iFcLj333+f/Px8unXrxl9//UVycjIrVqygS5cuVK9e3drT5uPjw9ChQ3nuuedYvnw5CQkJjBgxgpMnTzJixAjr8TQaDY899hj/93//R926dUscS+Pp6UmdOnWIjo62GdgUGBhI1apV+eijjzh48CB//vnnVbvUwdJd3qpVKwYMGMCWLVvYvn07jz/+ODExMXTs2NG6naIo5OXlkZeXZ51voqCgwFpmMpkwm83We3zr1q3LDz/8QHx8PDt37qRfv37F7nfetGkT//d//8d3333HLbfcQvXq1a9Zz48//jgeHh4MHDiQPXv2sGbNGv73v//Rv39/m9t1zWazNa6i1mx+fr61rKT7rufOncv999/PrbfeWuK5x44dy+uvv87XX3/Nf//9x/Tp01mzZg3jx4+32a6oe3zs2LFERETY1H3dunX54osvSEhIYPPmzTz++OM3/cN0JHGXg7S4hXCeunXr8u+//1K7dm0eeeQR6tSpw9NPP02HDh3YuHGjzbXON998kz59+jBw4EBiYmLYuXMnK1euJDw83OaY/fv3p6CgwDqOprTUajVff/0127Zto3HjxowdO5ZZs2Zdc5/vv/+eiIgIOnXqRPv27QkKCuKnn36y6QbetWsXnp6eeHp6Wu+m6datm7Vs8eLFLFu2jKFDhwKW2SYDAwNp06YNPXv2pFu3btx2223W4509e5aHH36Y2bNn25Rfi5eXFytXriQ1NZXbb7+dhx56iE6dOvH+++/bbPfrr79a4yrqGW3QoIG17O+//y52bLPZfM1LmePGjWP06NGMGzeOxo0b88MPP/DDDz/QrFmzErdXq9V8+umnLFmyhFWrVgGwYMECLly4wG233Ub//v0ZPXo0ISEhpfrs7kqluGI4tgtlZGTg7+9Peno6fn5+5TrWyj0neWbxDppU92PZ/+50UISVg9FoZPny5XTv3l1uB7NDWeotLy+PI0eOUKtWrXI9StDdmc1mVqxYQZ8+fUhOTi42+VNF9dNPP/HTTz/ZXDa8kcxmMxkZGfj5+cljPe10Zd1d69+iPbmpYo9QqeAujSqXFrcQFVl+fj4pKSm8/vrrPPTQQ26TtMHSxS9fbsXl5OtTOXhYR5XLNW4hKrKvvvqKWrVqkZ6ezuuvv+7qcOzSs2dPPv74Y1eHISoQSdzlYLjY4pYJWISo2AYNGoTRaGTt2rXXHawlREUnibscPOQ+biGEEDeYJO5ysI4qlxa3EEKIG0QSdzkUDU4rKDRjNleqwflCCCFcRBJ3ORgum3dZrnMLIYS4ESRxl0NRixvkOrcQQogbQxJ3OWg1ajQqSxd5XqEkbiGEcGdFU8tWdJK4y+ni+DS5l1sIIdzMjz/+SI8ePYiKisLHx4c773SPGTAlcZfTpcQtLW4hHGnQoEGoVCrrUrVqVe655x527drl6tDETWDmzJkMHTqU++67j99++434+HiWL1/u6rBKRaY8LSdJ3EI4zz333MOnn34KWB7nOXnyZO677z6SkpJcHJlwZ4cPH+bVV19l06ZN3HLLLa4Ox27S4i6nosSdK4lbuAtFgYJs1yx2PtPIYDAQFhZGWFgYMTExTJw4keTkZM6ePWvdZsKECdSrVw8vLy9q167NlClTil2rPHr0KBqNhsDAQDQajbUVn5aWBsD06dOJiYmxbl9QUEB0dLTNNkWioqJsegJUKhU//fSTdf2KFSto164dAQEBVK1alfvuu49Dhw7ZxKJSqYiPjy923Dlz5ljf33333Tz77LPW94mJieh0Ops4zWYzL774IjVq1MBgMBATE8OKFSvsPteVn6Gk83/xxRe0aNECX19fwsLC6NevH2fOnLHZ59dff6VZs2Z4enpa66ZPnz5cy7x586hTpw56vZ769evzxRdf2Ky/MrZnn32Wu++++6qfce3atcV+b/3797c5zsqVK6lTpw6vvPIKwcHB+Pr68sADD3D8+HHrPlf+TWzfvp2AgACb55vPnj2bJk2a4O3tTUREBCNGjCArK+uan9cRpMVdTkWJO1+ucQt3YcyBV6u55tz/dxL03mXaNSsri8WLFxMdHU3VqlWt5b6+vixatIhq1aqxe/duhg4diq+vL88//7x1m6KHIP7000/cfvvtbNq0iQcffPCq53r//fdJSUm56voXX3zR+qjNKx8dmp2dTWxsLE2bNiUrK4upU6dy//33Ex8fX66naz333HPFnij1zjvv8NZbb/Hhhx9y6623snDhQnr16sXevXupW7dumc9VEqPRyEsvvUT9+vU5c+YMsbGxDBo0yNq9nJaWRt++fXnqqaf46aef8PT0ZMyYMdbnjJfkxx9/ZMyYMcyZM4fOnTvz66+/MnjwYGrUqEGHDh0cEve2bdv45ZdfbMrOnj3Lzp078fX15ffffwdgzJgx9OnTh61bt9o8ehVg//79dOvWjcmTJ/PUU09Zy9VqNe+++y61atXi8OHDjBgxgueff54PPvjAIbFfjSTucpKuciGc59dff8XHxwewJMTw8HB+/fVXmwQ4efJk6+uoqCjGjx/P119/bZO4i1rgISEhhIWF2TzL+0qpqam8/PLLTJgwgSlTphRbn5+fT5UqVazPz77SlV8IFi5cSHBwMPv27aNx48al+NTFrVmzhg0bNvDUU0+xZs0aa/mbb77JhAkTePTRRwF4/fXXWbNmDXPmzGHu3LllOtfVDBkyxFrvtWvX5t133+X2228nKysLHx8f/vvvP3JycpgwYQLVqlm+GHp6el4zcb/55psMGjSIESNGABAbG8umTZt48803HZa4Y2Njee6552x+l2azGY1Gw5IlS4iIiABgyZIl1KlTh9WrV9O5c2frtseOHaNLly48/fTTjB8/3ubYl/dIREVF8fLLLzNs2DBJ3BWdTq0AKrkdTLgPnZel5euqc9uhQ4cOzJs3D4ALFy7wwQcfcO+997JlyxYiIyMBWLp0Ke+++y6HDh0iKyuLwsLCYs8zzsjIAMDb+/qt/RdffJEOHTrQrl27EtenpqZe83nJBw4cYOrUqWzevJlz585hNlt645KSksqUuBVFYdy4cUybNo3z589byzMyMjh58iRt27a12b5t27bs3LnTpqxNmzY2X3ZycnKKneexxx5Do7k0qVRubq5NV/G2bdt48cUX2blzJxcuXLD5XI0aNSIiIgKtVstXX33F2LFjS9W7kJCQwNNPP10s/nfeeee6+5bGTz/9xOHDhxk3blyxL2ERERHWpA0QGRlJjRo12LdvnzVxp6Wl0blzZ44fP063bt2KHf+PP/5g5syZ7N+/n4yMDAoLC8nLyyMnJwcvL/v+1u0h17jLSS+3gwl3o1JZuqtdsVzRBXk93t7eREdHEx0dze23384nn3xCdna29TGXGzdu5PHHH6d79+78+uuv7NixgxdeeIGCggKb45w8eRK1Wk1ISMg1z3fgwAE++eSTqz768/jx4xQUFFCrVq2rHqNnz56kpqby8ccfs3nzZjZv3gxQLKbS+vzzz8nOzmbYsGFl2h8sX27i4+OtS1GL+HJvv/22zTYtWrSwrsvOzubee+/Fz8+PL7/8kq1bt/Ljjz8Clz5XeHg48+bN49VXX8XDwwMfHx++/PLLMsdcXkajkeeff55XXnkFT09Pm3WBgYFX3e/ybvJjx47RqlUrpk+fzpAhQ2y+8Bw9epT77ruPpk2b8v3337Nt2zZrL0dZf9elJYm7nKSrXIgbR6VSoVaryc3NBWDDhg1ERkbywgsv0KJFC+rWrcuxY8eK7bd161YaNGhQ7BrxlSZMmMBTTz1FdHR0ievXrVuHp6enTVK73Pnz50lMTGTy5Ml06tSJhg0bcuHCBTs/5SU5OTm88MILvP766+h0Opt1fn5+VKtWjfXr19uUr1+/nkaNGtmURUREWL8ARUdHo9UW72wNCwuz2ebyZHfgwAHOnz/Pa6+9xp133kmDBg2KDUwDGDhwIA0aNODpp58mPj6eXr16XfPzNWzYsFTxl8W8efPw8fGhf//+xdY1aNCA5ORkkpOTrWXHjh3j+PHjNueuXbs2ixYt4oUXXsDPz49JkyZZ123btg2z2cxbb73FHXfcQb169Th58sb0ZElXeTnJBCxCOE9+fj6nT58GLF3l77//PllZWfTs2ROAunXrkpSUxNdff83tt9/Ob7/9Zm0JgqXls3TpUmbPns306dOvea6DBw+SlJTEwYMHS1x/6NAhXnvtNXr37l1spHlaWhoFBQUEBgZStWpVPvroI8LDw0lKSmLixIklHq+goIC8vDzre0VRKCwsxGQyWbuslyxZQvPmza86Mvu5555j2rRp1KlTh5iYGD799FPi4+Md3tKtUaMGer2e9957j2HDhrFnzx5eeumlYtuNGzcOlUrF22+/jU6nw9fXt1hdXRn/I488wq233krnzp1ZtmwZP/zwA3/88YfNdkaj0VpXJpMJs9lsfX+1a+hvvPEGy5YtKzbQDKBLly40bNiQfv368fbbbwOWwWkxMTF07NjRup2vr6/1S86iRYto2bIlDz30EHfeeSfR0dEYjUbee+89evbsyfr165k/f/41atGBlEomPT1dAZT09PRyH6ugoEDpN/sXJXLCr8rsVYkOiK7yKCgoUH766SeloKDA1aG4lbLUW25urrJv3z4lNzfXiZE53sCBAxXAuvj6+iq333678t1339ls99xzzylVq1ZVfHx8lL59+ypvv/224u/vryiKovz7779K7dq1lZkzZypGo1G5cOGCYjKZlDVr1iiAcuHCBUVRFGXatGkKoLz55pvW4165TWRkpE08Vy5r1qxRFEVR4uLilIYNGyoGg0Fp2rSpsnbtWgVQfvzxR0VRFOXIkSPXPM6nn36qKIqitG/fXlGpVMrWrVutMU2bNk1p1qyZ9b3JZFKmT5+uVK9eXdHpdEqzZs2U33//3bq+6Fw7duywqbPIyEjl7bfftr6/PL4i7du3V8aMGaOYTCblwoULyuLFi5WoqCjFYDAorVu3Vn755RebYy9ZskQJDQ1VTpw4YfM77N27d8m/4Is++OADpXbt2opOp1Pq1aunfP755zbrr1VXly9FcRT93u67775ix7n8Mx46dEjp0aOH4uXlpfj4+Cj333+/cvz48avWtaIoyosvvqhER0cr2dnZiqIoyuzZs5Xw8HDF09NT6datm/L555/b/M0U1Z3JZFIU5dr/Fu3JTaqLH6jSyMjIwN/fn/T09GsOMCkNo9HI0A9WsPaUmmfa12bSvQ0dFOXN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65ZbbuHYsWM2ZUajEY1GY30fEBBAWFiY9b1er7e+PnDgAL/88gvr16+nTZs2AHz55ZdERETw008/8fDDD+Pj48PixYtp3749vr6+zJkzhzVr1uDn51diTC+88AJ9+/bljz/+cORHFeKmJIlbiEpm+fLl1pZxkTfeeIPFixeXav+EhAS0Wi2tWrWyllWtWpX69euTkJBgLWvdujXjx4/npZdeYsKECbRr167E423fvp0ff/yRxMRESdxClIIkbiEqmcjIyGJlhw4dol69eg49j9lsZv369Wg0Gg4ePHjV7caNG8f48eMJDw936PmFuFnJNW4hKonU1FQyMzOLlf/777+sWbOGfv36leo4DRs2pLCwkM2bN1vLzp8/T2JiIo0aNbKWzZo1i/3797Nu3TpWrFjBp59+WuxYv/zyC//99x/jx48vwycSonKSxC1EJZGUlERMTAwLFizg4MGDHD58mC+++ILevXtz55132owav5a6devSu3dvhg4dyj///MPOnTt54oknqF69Or179wZgx44dTJ06lU8++YS2bdsye/ZsxowZw+HDh22O9cYbb/Dyyy/j5eXl6I8rxE1LErcQlUTjxo2ZNm0aixYt4o477uCWW27hjTfeYNSoUaxatcpmANr1fPrppzRv3pz77ruP1q1boygKy5cvR6fTkZeXxxNPPMGgQYPo2bMnAE8//TQdOnSgf//+mEwm63Gio6MZOHCgwz+rEDczmYBFCCGEcCPS4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHciCRuIYQQwo1I4hZCCCHcyP8DtRbt5d9QrrAAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RSH6UjI3aLvH", + "outputId": "176cf10e-718a-4416-98f5-6e7fa32c6aee" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9206 - loss: 0.2956\n", + "Lossontestdata: 0.2900226414203644\n", + "Accuracyontestdata: 0.9222000241279602\n" + ] + } + ], + "source": [ + "scores=model_1.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores[0])\n", + "print('Accuracyontestdata:',scores[1])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "oHKekiY0aYy2" + }, + "outputs": [], + "source": [ + "#Пункт 8\n", + "model_2l_100 = Sequential()\n", + "model_2l_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))\n", + "model_2l_100.add(Dense(units=num_classes, activation='softmax'))\n", + "# 2. компилируем модель\n", + "model_2l_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 213 + }, + "id": "jOQ74vuTab8l", + "outputId": "3ebe13db-8d47-4256-a8fd-49ee40801aab" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_1\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_1\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_1 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m78,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_1 (Dense)                 │ (None, 100)            │        78,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_2 (Dense)                 │ (None, 10)             │         1,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n" + ], + "text/html": [ + "
 Total params: 79,510 (310.59 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n" + ], + "text/html": [ + "
 Trainable params: 79,510 (310.59 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_2l_100.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rblSqgG8aoSl", + "outputId": "0eb3fa3d-50a7-4b77-fdf6-7b834228ce17" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.5185 - loss: 1.9076 - val_accuracy: 0.8188 - val_loss: 0.9700\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8349 - loss: 0.8532 - val_accuracy: 0.8565 - val_loss: 0.6222\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8649 - loss: 0.5911 - val_accuracy: 0.8718 - val_loss: 0.4999\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8795 - loss: 0.4889 - val_accuracy: 0.8837 - val_loss: 0.4374\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8879 - loss: 0.4305 - val_accuracy: 0.8913 - val_loss: 0.4000\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8955 - loss: 0.3942 - val_accuracy: 0.8972 - val_loss: 0.3744\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8999 - loss: 0.3707 - val_accuracy: 0.9007 - val_loss: 0.3557\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9011 - loss: 0.3581 - val_accuracy: 0.9047 - val_loss: 0.3405\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9034 - loss: 0.3444 - val_accuracy: 0.9067 - val_loss: 0.3298\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9057 - loss: 0.3285 - val_accuracy: 0.9110 - val_loss: 0.3196\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9096 - loss: 0.3217 - val_accuracy: 0.9142 - val_loss: 0.3112\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9111 - loss: 0.3150 - val_accuracy: 0.9152 - val_loss: 0.3043\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9138 - loss: 0.3049 - val_accuracy: 0.9148 - val_loss: 0.2976\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9160 - loss: 0.2993 - val_accuracy: 0.9172 - val_loss: 0.2920\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9176 - loss: 0.2897 - val_accuracy: 0.9162 - val_loss: 0.2876\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9175 - loss: 0.2886 - val_accuracy: 0.9197 - val_loss: 0.2811\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9203 - loss: 0.2774 - val_accuracy: 0.9208 - val_loss: 0.2774\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9189 - loss: 0.2852 - val_accuracy: 0.9228 - val_loss: 0.2725\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9194 - loss: 0.2757 - val_accuracy: 0.9225 - val_loss: 0.2685\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9221 - loss: 0.2701 - val_accuracy: 0.9242 - val_loss: 0.2651\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9230 - loss: 0.2631 - val_accuracy: 0.9257 - val_loss: 0.2615\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9260 - loss: 0.2609 - val_accuracy: 0.9270 - val_loss: 0.2578\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9261 - loss: 0.2607 - val_accuracy: 0.9275 - val_loss: 0.2545\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9262 - loss: 0.2595 - val_accuracy: 0.9288 - val_loss: 0.2509\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9269 - loss: 0.2580 - val_accuracy: 0.9292 - val_loss: 0.2482\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9303 - loss: 0.2420 - val_accuracy: 0.9298 - val_loss: 0.2447\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9322 - loss: 0.2410 - val_accuracy: 0.9303 - val_loss: 0.2412\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9324 - loss: 0.2404 - val_accuracy: 0.9313 - val_loss: 0.2386\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9341 - loss: 0.2307 - val_accuracy: 0.9308 - val_loss: 0.2359\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9303 - loss: 0.2417 - val_accuracy: 0.9323 - val_loss: 0.2333\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9342 - loss: 0.2315 - val_accuracy: 0.9330 - val_loss: 0.2305\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9342 - loss: 0.2296 - val_accuracy: 0.9333 - val_loss: 0.2279\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9357 - loss: 0.2289 - val_accuracy: 0.9340 - val_loss: 0.2257\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9378 - loss: 0.2179 - val_accuracy: 0.9347 - val_loss: 0.2230\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9379 - loss: 0.2208 - val_accuracy: 0.9358 - val_loss: 0.2216\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9375 - loss: 0.2193 - val_accuracy: 0.9365 - val_loss: 0.2182\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9362 - loss: 0.2210 - val_accuracy: 0.9373 - val_loss: 0.2165\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9401 - loss: 0.2116 - val_accuracy: 0.9375 - val_loss: 0.2143\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9411 - loss: 0.2100 - val_accuracy: 0.9385 - val_loss: 0.2121\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9402 - loss: 0.2093 - val_accuracy: 0.9385 - val_loss: 0.2098\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9417 - loss: 0.2065 - val_accuracy: 0.9405 - val_loss: 0.2083\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9413 - loss: 0.2075 - val_accuracy: 0.9398 - val_loss: 0.2063\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9426 - loss: 0.2033 - val_accuracy: 0.9407 - val_loss: 0.2047\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9448 - loss: 0.2010 - val_accuracy: 0.9418 - val_loss: 0.2028\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9448 - loss: 0.1964 - val_accuracy: 0.9412 - val_loss: 0.2012\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9443 - loss: 0.1986 - val_accuracy: 0.9417 - val_loss: 0.1992\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9445 - loss: 0.1920 - val_accuracy: 0.9418 - val_loss: 0.1972\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9451 - loss: 0.1891 - val_accuracy: 0.9428 - val_loss: 0.1954\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9463 - loss: 0.1912 - val_accuracy: 0.9433 - val_loss: 0.1941\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9456 - loss: 0.1900 - val_accuracy: 0.9433 - val_loss: 0.1923\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_2l_100 = model_2l_100.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "id": "3xxN78gZbbQG", + "outputId": "987b070c-a1e5-402d-bf9b-65a81c742bd7" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAHWCAYAAACxPmqWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAgUVJREFUeJzt3Xd8U9X7wPHPbZqke28oLVA2MkRFhl9ACggK4kRRpuAXga/IUOAn04WKIA4UB0MFxI2iiBRkKLKlDBmyZ1taSvdKk/v7I20gtECTpqSlz/v1yqvJuTf3PjktPDnnnnuOoqqqihBCCCGqBBdnByCEEEKIspPELYQQQlQhkriFEEKIKkQStxBCCFGFSOIWQgghqhBJ3EIIIUQVIolbCCGEqEIkcQshhBBViCRuIYRDmEwmUlJSOHbsmLNDEeKmJolbCGG3xMREnnvuOaKiotDpdAQHB9O4cWMyMjKcHZoQNy1XZwcgqp+BAwfy7bffkpWV5exQRDkcOXKETp06YTAYePbZZ7n11ltxdXXF3d0dT09PZ4cnxE1LEre4IS5cuMCSJUv4448/2LhxI7m5udxzzz20bNmSRx99lJYtWzo7RGGj//73v+h0OrZs2UKNGjWcHY4Q1YYii4yIirZs2TKGDh1KVlYW0dHRGAwGEhMTadmyJbt378ZgMDBgwAA+/vhjdDqds8MVZbBz505uu+02Vq9eTZcuXZwdjhDVilzjFhVq06ZNPPnkk4SFhbFp0yaOHz9ObGwsbm5ubN++nXPnzvH444/z2WefMXr0aABUVSU6Opr777+/xPHy8vLw9fXlv//9LwDr169HURS+/fbbEvt6eXkxcOBAy+tFixahKAonTpywlP3zzz/4+/tz3333UVhYaLXfjh07rI6XkpKCoihMmzbNqry0spkzZ6IoCh07drQqP3bsGI888ggRERG4uLigKAqKotC0adNrVSMAhYWFvPzyy9StWxe9Xk90dDT/93//R35+vtV+0dHR3HfffVZlI0eORFEUq7I1a9agKAo///yzpaxjx44lYt6+fbslzmJbtmzBzc2No0eP0qRJE/R6PWFhYfz3v/8lNTXV6v2lHfPVV1/FxcWFpUuX2nzuq+nYsaNl39Iel//eAT744ANL7BEREYwYMYK0tLRrniMzM5MhQ4YQFRWFXq+nZs2aDBs2jKSkJKv9iv+Grva48u9l165ddO/eHR8fH7y8vOjcuTNbtmyxbFdVlU6dOhEcHMz58+ct5QUFBdxyyy3UrVuX7OxsAE6ePMnw4cNp0KAB7u7uBAYG8sgjj5T4/MUx6nQ6kpOTrbZt3rzZEuuV/w6E80lXuahQr7/+OiaTiWXLltGqVasS24OCgvj888/Zv38/H330EVOnTiUkJIQnn3ySN998k9TUVAICAiz7r1ixgoyMDJ588slyx3b69GnuueceGjZsyNdff42rq2P+OaSlpTFjxowS5UajkV69enHy5Emee+456tevj6IovPrqq2U67pAhQ/jss894+OGHGTt2LFu3bmXGjBkcOHCAH374wSGxl2b8+PElyi5cuEBeXh7PPPMMd999N8OGDePo0aPMnTuXrVu3snXrVvR6fanHW7hwIZMmTWLWrFn07dvX5nNfS82aNUvU/cqVK/nyyy+tyqZNm8b06dOJjY3lmWee4dChQ3z44Yds376dTZs2odVqSz1+amoqe/bsYciQIYSFhXHkyBHmzZvHqlWr2LZtGyEhIVb7v/TSS9SuXdvyOisri2eeecZqn3/++Ye77roLHx8fXnjhBbRaLR999BEdO3Zkw4YNtG7dGkVRWLBgAc2aNWPYsGF8//33AEydOpV//vmH9evXW8YVbN++nb/++ovHHnuMmjVrcuLECT788EM6duzI/v378fDwsDq/RqNh8eLFli/OYP4dubm5kZeXV5ZqFzeaKkQFCggIUKOioqzKBgwYoHp6elqVTZ48WQXUFStWqKqqqocOHVIB9cMPP7Tar1evXmp0dLRqMplUVVXVdevWqYD6zTfflDi3p6enOmDAAMvrhQsXqoB6/PhxNTU1VW3cuLHaoEEDNSUlxep9xftt377dqjw5OVkF1KlTp1qVX1n2wgsvqCEhIWqrVq3UDh06WMqLP9OMGTOs3t+hQwe1SZMmJeK/XHx8vAqoQ4YMsSofN26cCqi///67pSwqKkq99957rfYbMWKEeuU/97i4OKs6L47l8phXrlypAuo999xj9f6pU6eqgNq5c2e1sLDQUl5cd++9916px/zll19UV1dXdezYsSU+Y1nPfTVXq8eZM2dafu+qqqrnz59XdTqd2rVrV9VoNFr2e//991VAXbBgwXXPdbl9+/aper1eHTx4sKXMlr+h3r17qzqdTj169Kil7Ny5c6q3t7f6n//8x+r9H330kQqoixcvVrds2aJqNBr1ueees9onJyenRIybN29WAfXzzz8vEePjjz+u3nLLLZby7Oxs1cfHR+3bt2+pn0E4n3SViwqVmZlZohVSmtDQUADLbUT169endevWLFmyxLJPamoqv/76K0888USJrtPMzExSUlKsHleTl5dHr169SE5OZtWqVQQGBtrz0Up19uxZ3nvvPSZPnoyXl1eJGAG7zrdy5UoAxowZY1U+duxYAH755Rd7wr0mVVWZOHEiDz30EK1bty51nzFjxqDRaCyv+/XrR2hoaKnxbNu2jUcffZSHHnqImTNnlvvc9lqzZg0FBQU899xzuLhc+i9w6NCh+Pj4XLcui+9XL36EhobSo0cPvvvuO0wmk02xGI1GVq9eTe/evalTp46lPDw8nL59+/Lnn39a3Vr39NNP061bN/73v//Rr18/6taty2uvvWZ1THd3d8tzg8HAhQsXiImJwc/Pj7///rtEDP369ePgwYOWLvHvvvsOX19fOnfubNNnETeOJG5RoSIiIjh69Oh19zty5AiA1ejk/v37s2nTJk6ePAnAN998g8FgoF+/fiXeP3jwYIKDg60exdf8rjRo0CD+/PNPMjMzLde1HWXq1KlERERYrsFfrkGDBvj7+zNr1iw2bdpEcnIyKSkpGAyG6x735MmTuLi4EBMTY1UeFhaGn5+fpY4cacmSJfzzzz8lEgNg+eLUsGFDq3KNRkO9evVKXE89e/Ys9957L9nZ2Vy4cOG616yvde7yKq6rBg0aWJXrdDrq1Klz3bo8depUib+1H374gfT09Gt+YSxNcnIyOTk5JWIBaNSoESaTidOnT1uVz58/n5ycHA4fPsyiRYusEjVAbm4uU6ZMITIyEr1eT1BQEMHBwaSlpZGenl7iPMHBwdx7770sWLAAgAULFjBgwACrLzWicpHfjKhQ9913H6mpqcyfP/+q+yQlJfHZZ58RHBzMnXfeaSl/7LHH0Gq1llb34sWLue2220r9T27KlCnExcVZPdzc3Eo9399//82PP/5IcHAwTz/9dDk/4SUHDhxg0aJFvPLKK6VeI/Xy8uKrr74iOzub9u3bExISQnBwMH/99VeZz1GWQVqOUFBQwOTJk3nqqaeoX79+ie1XJovrOXLkCLVq1eKLL75gzZo1fPbZZ3af29nCwsJK/K09/vjjN+z8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vEj//v3x9/fHw8OD7t27c/jwYcv2wYMH06xZM/Lz8wEoKCigZcuW9O/fH4ATJ06gKArx8fGW90yePBlFUSxxCCFKJ4lbiGrC1dW11PLg4GAefPBBlixZYilbuHAhCQkJlseVawcPHDiQHTt28NNPP7F582ZUVaVHjx4YDAYA3n33XbKzs5kwYQIAL774Imlpabz//vulxnDmzBnmzJmDu7u7Iz6qEDe10v8lCyFuWk2aNOHkyZNWZQaDAY1GY3nt5+dHWFiY5bVOp7M8P3z4MD/99BObNm2ibdu2ACxZsoTIyEiWL1/OI488gpeXF4sXL6ZDhw54e3szZ84c1q1bh4+PT6kxvfjii/Tp04c1a9Y48qMKcVOSxC1ENbNy5UpLy7jYm2++yeLFi8v0/gMHDuDq6krr1q0tZYGBgTRo0IADBw5Yytq0acO4ceN4+eWXGT9+PO3bty/1eH///Tc//PADhw4dksQtRBlI4haimomKiipRdvToUerXr+/Q85hMJjZt2oRGo+HIkSNX3W/s2LGMGzeO8PBwh55fiJuVXOMWoppITU0lMzOzRPmOHTtYt24dffv2LdNxGjVqRGFhIVu3brWUXbhwgUOHDtG4cWNL2cyZMzl48CAbNmxg1apVLFy4sMSxfvrpJ/7991/GjRtnxycSonqSxC1ENXHq1ClatGjB/PnzOXLkCMeOHeOLL77g/vvv56677rIaNX4t9erV4/7772fo0KH8+eef7N69myeffJIaNWpw//33A7Br1y6mTJnCp59+Srt27Zg9ezajRo3i2LFjVsd68803eeWVV/Dw8HD0xxXipiWJW4hqomnTpkydOpVFixZx55130qRJE958801GjhzJ6tWrrQagXc/ChQtp1aoV9913H23atEFVVVauXIlWqyUvL48nn3ySgQMH0rNnTwCefvppOnXqRL9+/TAajZbjxMTEMGDAAId/ViFuZjIBixBCCFGFSItbCCGEqEIkcQshhBBViCRuIYQQogqRxC2EEEJUIZK4hRBCiCpEErcQQghRhUjiFkIIIaoQSdxCCCFEFSKJWwghhKhCJHELIYQQVYgkbiGEEKIK+X8UjWlFv06cagAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_2l_100.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_2l_100.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zPAyv-kzb5s6", + "outputId": "7bf8991c-f122-408d-b657-a62c21c28652" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9436 - loss: 0.2091\n", + "Lossontestdata: 0.20427274703979492\n", + "Accuracyontestdata: 0.9438999891281128\n" + ] + } + ], + "source": [ + "scores_2l_100=model_2l_100.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_2l_100[0])\n", + "print('Accuracyontestdata:',scores_2l_100[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "YA-uMXpAb9Lm" + }, + "outputs": [], + "source": [ + "#Пункт 8\n", + "model_2l_300 = Sequential()\n", + "model_2l_300.add(Dense(units=300,input_dim=num_pixels, activation='sigmoid'))\n", + "model_2l_300.add(Dense(units=num_classes, activation='softmax'))\n", + "# 2. компилируем модель\n", + "model_2l_300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 213 + }, + "id": "XuNfGZBtcB9y", + "outputId": "a7f1866c-6a08-4c5c-dd3c-631aa53926cc" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_3\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_3\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_5 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m300\u001b[0m) │ \u001b[38;5;34m235,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_6 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m3,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_5 (Dense)                 │ (None, 300)            │       235,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_6 (Dense)                 │ (None, 10)             │         3,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n" + ], + "text/html": [ + "
 Total params: 238,510 (931.68 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n" + ], + "text/html": [ + "
 Trainable params: 238,510 (931.68 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_2l_300.summary()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9Xitmk0EcDXW", + "outputId": "71ff6e9a-7026-41e7-a488-a70188d483f2" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.5528 - loss: 1.7901 - val_accuracy: 0.8203 - val_loss: 0.8592\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8386 - loss: 0.7584 - val_accuracy: 0.8618 - val_loss: 0.5684\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8667 - loss: 0.5470 - val_accuracy: 0.8748 - val_loss: 0.4692\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8820 - loss: 0.4562 - val_accuracy: 0.8857 - val_loss: 0.4180\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8882 - loss: 0.4171 - val_accuracy: 0.8907 - val_loss: 0.3849\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8947 - loss: 0.3853 - val_accuracy: 0.8945 - val_loss: 0.3657\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8986 - loss: 0.3605 - val_accuracy: 0.9007 - val_loss: 0.3484\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9029 - loss: 0.3491 - val_accuracy: 0.9048 - val_loss: 0.3384\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9011 - loss: 0.3418 - val_accuracy: 0.9040 - val_loss: 0.3294\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9073 - loss: 0.3307 - val_accuracy: 0.9077 - val_loss: 0.3223\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9055 - loss: 0.3271 - val_accuracy: 0.9077 - val_loss: 0.3149\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9073 - loss: 0.3190 - val_accuracy: 0.9125 - val_loss: 0.3084\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9110 - loss: 0.3118 - val_accuracy: 0.9113 - val_loss: 0.3046\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9113 - loss: 0.3054 - val_accuracy: 0.9127 - val_loss: 0.2996\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9119 - loss: 0.3018 - val_accuracy: 0.9138 - val_loss: 0.2966\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9160 - loss: 0.2951 - val_accuracy: 0.9143 - val_loss: 0.2926\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9143 - loss: 0.2991 - val_accuracy: 0.9162 - val_loss: 0.2902\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9160 - loss: 0.2885 - val_accuracy: 0.9165 - val_loss: 0.2859\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9159 - loss: 0.2888 - val_accuracy: 0.9160 - val_loss: 0.2831\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9192 - loss: 0.2835 - val_accuracy: 0.9158 - val_loss: 0.2805\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9190 - loss: 0.2817 - val_accuracy: 0.9178 - val_loss: 0.2783\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9207 - loss: 0.2744 - val_accuracy: 0.9182 - val_loss: 0.2753\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9218 - loss: 0.2724 - val_accuracy: 0.9188 - val_loss: 0.2742\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9221 - loss: 0.2702 - val_accuracy: 0.9198 - val_loss: 0.2709\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9216 - loss: 0.2714 - val_accuracy: 0.9182 - val_loss: 0.2692\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9245 - loss: 0.2650 - val_accuracy: 0.9217 - val_loss: 0.2665\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9237 - loss: 0.2650 - val_accuracy: 0.9228 - val_loss: 0.2638\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9258 - loss: 0.2602 - val_accuracy: 0.9228 - val_loss: 0.2619\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9253 - loss: 0.2593 - val_accuracy: 0.9222 - val_loss: 0.2608\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9264 - loss: 0.2600 - val_accuracy: 0.9240 - val_loss: 0.2580\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9278 - loss: 0.2537 - val_accuracy: 0.9230 - val_loss: 0.2575\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9284 - loss: 0.2526 - val_accuracy: 0.9247 - val_loss: 0.2552\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9283 - loss: 0.2503 - val_accuracy: 0.9252 - val_loss: 0.2511\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9291 - loss: 0.2496 - val_accuracy: 0.9250 - val_loss: 0.2509\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9318 - loss: 0.2444 - val_accuracy: 0.9260 - val_loss: 0.2484\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9291 - loss: 0.2486 - val_accuracy: 0.9273 - val_loss: 0.2452\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9304 - loss: 0.2447 - val_accuracy: 0.9287 - val_loss: 0.2437\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9321 - loss: 0.2355 - val_accuracy: 0.9260 - val_loss: 0.2446\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9335 - loss: 0.2358 - val_accuracy: 0.9287 - val_loss: 0.2413\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9337 - loss: 0.2346 - val_accuracy: 0.9288 - val_loss: 0.2369\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9326 - loss: 0.2387 - val_accuracy: 0.9283 - val_loss: 0.2371\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9327 - loss: 0.2357 - val_accuracy: 0.9285 - val_loss: 0.2347\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9345 - loss: 0.2281 - val_accuracy: 0.9290 - val_loss: 0.2327\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9366 - loss: 0.2256 - val_accuracy: 0.9308 - val_loss: 0.2319\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9359 - loss: 0.2239 - val_accuracy: 0.9307 - val_loss: 0.2287\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9377 - loss: 0.2224 - val_accuracy: 0.9320 - val_loss: 0.2273\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9373 - loss: 0.2172 - val_accuracy: 0.9335 - val_loss: 0.2260\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9371 - loss: 0.2191 - val_accuracy: 0.9335 - val_loss: 0.2238\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9378 - loss: 0.2159 - val_accuracy: 0.9342 - val_loss: 0.2205\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9395 - loss: 0.2136 - val_accuracy: 0.9347 - val_loss: 0.2197\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_2l_300 = model_2l_300.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1LkgLfwmdEZJ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "outputId": "72d41f55-dd67-4fd4-c915-63157e2bb252" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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/2Xb/5o1a2wDEnfu3Flu+f/93//x3HPPce+99/LFF1+wcuVKEhMTCQ4OvuARgeHDh/PZZ5+xZ88e1q1bZzeoU9Q+MjhN1Kjp06fz3Xff8eijj7J3714GDhyI2WwGrD2XVatW8dRTT5GVlcXSpUvtBjQFBQVx66238umnn/LAAw+wfv16FixYUOF+rrrqKhISEuzazj2Ee6733nuP22+/HbVazW233cb777/PQw89VO3POm3aNOLj4xkwYMAF1+nRowcvvvgiDzzwAIsWLaJRo0ZMmjTJlpMLiYmJwWKxsH//flq0aGFrT0tLIzs7m5iYmGrHf64333yTU6dOlRv9XKZswNW+ffvsDvGWxXj+dfmRkZEsX76c8PBwvv/+eyZNmkSfPn0IDQ11eN/VVZar82M3Go22qx4uxmAwlFvntddew8/Pj5CQEIdiCQ0NxcvLi3379pVbtnfvXjw8PIiOjra1paam8n//93/07NkTnU7H5MmT6dWrl93v/6uvvmLIkCHMmzfP1lZcXHzREfO9e/fGYDBw33330aVLFxo3bswff/zh0GcRl4/0uEWNioiIYMOGDfTu3Zt58+Zx9dVXs2TJEgoKCoiJiWH48OF4enry448/VthrGTRoELt37+bxxx9HrVZz3333VTumG264AYBbb72V++67j8cff7zc5TyO2rBhA99//z1z5869aK/46NGjjB49mscee4yRI0eSkJBAYGDgJbffp08fgHJfXObPnw9YP4uz5OXl8dxzzzFhwgQiIiIqXOfmm29Gr9fz2muv2fXiPv30U9LS0spdjta0aVPbOIbXX38di8XCuHHjqrTv6kpISECn0/Haa6+hnDONxfvvv09OTs5Fc1lRj3Xbtm388ssv9O/f3+HDy2q1mp49e/L999/bnV5IS0tj6dKldOnSBT8/P1v7iBEjsFgsvP/++7zzzjtoNBoeeughu8+hVqvtXoM15xf7cqjRaBg8eDA7duxg+PDhDn0GcflJj1vUuOjoaL7//ntSU1NZv349L730EklJSSxatIj4+Hji4+MvWOxuvfVWgoOD+fLLL+ndu3elBro54tVXX6VFixb83//9H1988YXdsg0bNtidsywbJJScnMymTZvo2LGjbVnZRCQX661ZLBYGDRpE/fr1mTt3rkNxtm3b1jZJTXZ2Nl27dmXTpk189NFH9O/fn+7d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mJgY9Ho9nTt3tsuJq5R9GTv386hUqgr//Try/6DbXA6Wl5fHP//8w9ixY9FoNGg0Gp5++mm2b9+ORqPh999/v+wxGbTW//yKTHKrOyGcKTg4mB49evDmm29SVFRkt+zkyZN8+umnDBgwAJVKRePGjdFoNKxfv962jsVi4a+//qJly5a2tj59+uDt7c2iRYtYsWIFw4cPt9vumDFjyMnJYdeuXSQlJXH77bfblmVkZLBv3z6mT5/OzTffTIsWLcjKyqow9ujoaLp06UJ2dja7d++2tR89epSjR4/axeSo9evXM3ToUO644w6uuuoqIiIi7AaIgfVLz9ChQ4mNjWXjxo289957F91mixYt2L59u+3wd9l+PDw8bIfbqyo1NZV58+aVGxgI4O/vT0REhN3vDeDPP/8sl6NPPvnEdm5/xIgRdr3T9evX89hjj9GnTx9atWqFXq/n9OnT1Yq7tnObwu3n58fOnTtJSkqyPUaNGkWzZs1ISkqiU6dOlz2mssJdXCqFWwhne+ONNygpKaFXr16sW7eOo0ePsmLFCnr06EG9evV47rnnAOvh2hEjRvD444+zfPly9uzZw+jRozlx4gSjR4+2bU+tVnP//ffzv//9jyZNmtC5c+dy+/T09KRx48bExcXZDWwKDAwkODiYd955h+TkZH7//Xe7U3Dnu+666+jUqRODBw9m06ZNbN26lQceeID4+Hhuuukm23qKolBcXExxcbFtEK3RaLS1mc1m28AsgCZNmvDNN9+QlJTE9u3bGThwYLkBZ3///Tf/+9//+Oqrr2jVqtUlL4t74IEHMBgMDBkyhF27drF69Wr+7//+j0GDBhEeHm5br+ycdXFxMUajEbAO/i1rq2jg28KFC7njjjto165dhfueMGECL7zwAp9//jn//fcfs2bNYvXq1UyePNluvaCgINv60dHRdrlv0qQJn3zyCXv27GHjxo088MADV/zNdFx6qDw/P5/k5GTb64MHD5KUlERQUBANGjRg2rRpHD9+nI8//hgPDw9at25t9/6wsDAMBkO59svFoLF+7yk2lf+DFUJUT5MmTfjnn3+YOXMm9957L5mZmURERNC/f39mzpxp+88c4OWXX0alUjFkyBByc3O5+uqr+fXXX+3O2wIMGjSI+fPnM2zYMIdi8fDw4PPPP+exxx6jdevWNGvWjNdee41u3bpd8D1f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tdc4cOAA+fn5lJaW4ufnZ7ed3NxcALy9L93bf/rpp+nevTtdunSpcHlmZma57Z9r//79PPXUU2zcuJHTp09jsVj/bzhy5EiVCreiKEyaNImZM2eSkZFha8/NzeXEiRNcf/31dutff/31bN++3a7tuuuus/uyU1hYWG4/999/P2r12UmlioqK7A4Vb9myhaeffprt27eTlZVl97latmxJdHQ0Go2Gzz77jAkTJlTq6MKePXsYOXJkufhfffXVS763Mr777jtSUlKYNGlSuS9h0dHRtqINEBMTQ/369dm9e7etcGdnZ5OQkMCxY8fo1atXue3/9ttvzJkzh71795Kbm0tpaSnFxcUUFhbi5eXY37oj5Bx3NZUVbulxC7ehUlkPV7vicd4hyEvx9vYmLi6OuLg4rrnmGt577z0KCgpst7ncsGEDDzzwAH369OGnn35i27ZtPPnkkxiNRrvtnDhxAg8PD8LCwi66v/379/Pee+9d8Nafx44dw2g00rBhwwtuo2/fvmRmZvLuu++yceNGNm7cCFAupsr6+OOPKSgoYNSoUVV6P1i/3CQlJdkeZT3ic73yyit263To0MG2rKCggN69e+Pn58enn37K5s2b+fbbb4GznysyMpK33nqL559/HoPBgI+PD59++mmVY64uk8nEE088wXPPPYenp6fdssDAwAu+79zD5IcPH6ZTp07MmjWL4cOH233hOXToELfddhtt2rTh66+/ZsuWLbajHFX9XVeWFO5qknPcQlw+KpUKDw8PioqKAPjrr7+IiYnhySefpEOHDjRp0oTDhw+Xe9/mzZtp3rx5uXPE55syZQoPP/wwcXFxFS5fu3Ytnp6edkXtXBkZGezbt4/p06dz880306JFC7Kyshz8lGcVFhby5JNP8sILL6DVau2W+fn5ERUVxfr16+3a169fT8uWLe3aoqOjbV+A4uLi0GjKH2yNiIiwW+fcYrd//34yMjKYO3cuN9xwA82bNy83MA1gyJAhNG/enJEjR5KUlMTtt99+0c/XokWLSsVfFW+99RY+Pj4MGjSo3LLmzZtz9OhRjh49ams7fPgwx44ds9t3o0aNWLx4MU8++SR+fn5MmzbNtmzLli1YLBbmzZvHtddeS9OmTTlx4vIcyZJD5dWkO3NkSQq3EM5XUlLCyZMnAeuh8jfeeIP8/Hz69u0LQJMmTThy5Aiff/4511xzDT///LOtJwjWns+yZcuYP38+s2bNuui+kpOTOXLkCMnJyRUuP3DgAHPnzqVfv37lRppnZ2djNBoJDAwkODiYd955h8jISI4cOcLUqVMr3J7RaKS4uNj2WlEUSktLMZvNtkPWS5cupX379hccmf34448zc+ZMGjduTHx8PB9++CFJSUlO7+nWr18fnU7H66+/zqhRo9i1axfPPPNMufUmTZqESqXilVdeQavV4uvrWy5X58d/77330q5dOxISEvjxxx/55ptv+O233+zWM5lMtlyZzWYsFovt9YXOob/44ov8+OOP5QaaAfTo0YMWLVowcOBAXnnlFcA6OC0+Pp6bbrrJtp6vr6/tS87ixYvp2LEjd999NzfccANxcXGYTCZef/11+vbty/r161m0aNFFsuhESh2Tk5OjAEpOTk61t2U0GpVhr/6gxEz5SXn2p3+dEF3dYTQale+++04xGo2uDsWtVCVvRUVFyu7du5WioqIajMz5hgwZogC2h6+vr3LNNdcoX331ld16jz/+uBIcHKz4+PgoAwYMUF555RXF399fURRF+eeff5RGjRopc+bMUUwmk5KVlaWYzWZl9erVCqBkZWUpiqIoM2fOVADl5Zdftm33/HViYmLs4jn/sXr1akVRFCUxMVFp0aKFotfrlTZt2ihr1qxRAOXbb79VFEVRDh48eNHtfPjhh4qiKErXrl0VlUqlbN682RbTzJkzlbZt29pem81mZdasWUq9evUUrVartG3bVvnll19sy8v2tW3bNrucxcTEKK+88ort9bnxlenatasybtw4xWw2K1lZWcqSJUuU2NhYRa/XK507d1Z++OEHu20vXbpUCQ8PV44fP273O+zXr1/Fv+Az3nzzTaVRo0aKVqtVmjZtqnz88cd2yy+Wq3MfZXGU/d5uu+22cts59zMeOHBAufXWWxUvLy/Fx8dHueOOO5Rjx45dMNeKoihPP/20EhcXpxQUFCiKoijz589XIiMjFU9PT6VXr17Kxx9/bPc3U5Y7s9msKMrF/y06UptUZz5QnZGbm4u/vz85OTkXHWBSGSaTif97ewUrjnnw4LUNeLb/VU6K8spnMplYvnw5ffr0KXcIUFxYVfJWXFzMwYMHadiw4SUPFV/JLBYLubm5+Pn5VemyrNjYWNasWUNsbGy5Zf379y93fXFVjB8/nvj4eIYO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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_2l_300.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_2l_300.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AJQ9PCjDdIWx", + "outputId": "0465f6cc-a514-447c-a6fb-5d42a75a146f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9365 - loss: 0.2352\n", + "Lossontestdata: 0.23040874302387238\n", + "Accuracyontestdata: 0.9372000098228455\n" + ] + } + ], + "source": [ + "scores_2l_300=model_2l_300.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_2l_300[0])\n", + "print('Accuracyontestdata:',scores_2l_300[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lMwKttpGdRBF" + }, + "outputs": [], + "source": [ + "#Пункт 8\n", + "model_2l_500 = Sequential()\n", + "model_2l_500.add(Dense(units=500,input_dim=num_pixels, activation='sigmoid'))\n", + "model_2l_500.add(Dense(units=num_classes, activation='softmax'))\n", + "# 2. компилируем модель\n", + "model_2l_500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 213 + }, + "id": "kp_GuJGtdTt7", + "outputId": "cf1cc121-c59a-4d1a-d095-2373226b04b4" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_4\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_4\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_7 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m500\u001b[0m) │ \u001b[38;5;34m392,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_8 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m5,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_7 (Dense)                 │ (None, 500)            │       392,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_8 (Dense)                 │ (None, 10)             │         5,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n" + ], + "text/html": [ + "
 Total params: 397,510 (1.52 MB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n" + ], + "text/html": [ + "
 Trainable params: 397,510 (1.52 MB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_2l_500.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YdDl5OBkdXYf", + "outputId": "345e610e-0037-424b-e537-e13a3c867f9d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.5493 - loss: 1.7652 - val_accuracy: 0.8298 - val_loss: 0.8146\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8435 - loss: 0.7186 - val_accuracy: 0.8608 - val_loss: 0.5514\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8698 - loss: 0.5216 - val_accuracy: 0.8768 - val_loss: 0.4572\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8831 - loss: 0.4475 - val_accuracy: 0.8865 - val_loss: 0.4084\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8879 - loss: 0.4108 - val_accuracy: 0.8918 - val_loss: 0.3823\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8930 - loss: 0.3828 - val_accuracy: 0.8972 - val_loss: 0.3626\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8983 - loss: 0.3595 - val_accuracy: 0.9015 - val_loss: 0.3486\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9001 - loss: 0.3542 - val_accuracy: 0.9023 - val_loss: 0.3385\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9007 - loss: 0.3479 - val_accuracy: 0.9048 - val_loss: 0.3280\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9042 - loss: 0.3333 - val_accuracy: 0.9060 - val_loss: 0.3242\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9067 - loss: 0.3251 - val_accuracy: 0.9077 - val_loss: 0.3177\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9089 - loss: 0.3189 - val_accuracy: 0.9093 - val_loss: 0.3119\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9082 - loss: 0.3227 - val_accuracy: 0.9117 - val_loss: 0.3078\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9119 - loss: 0.3072 - val_accuracy: 0.9123 - val_loss: 0.3037\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9122 - loss: 0.3064 - val_accuracy: 0.9107 - val_loss: 0.3013\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9133 - loss: 0.3014 - val_accuracy: 0.9138 - val_loss: 0.2988\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9133 - loss: 0.3027 - val_accuracy: 0.9152 - val_loss: 0.2962\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9147 - loss: 0.2972 - val_accuracy: 0.9170 - val_loss: 0.2914\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9154 - loss: 0.2965 - val_accuracy: 0.9145 - val_loss: 0.2898\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9179 - loss: 0.2874 - val_accuracy: 0.9163 - val_loss: 0.2878\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9170 - loss: 0.2921 - val_accuracy: 0.9165 - val_loss: 0.2874\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9187 - loss: 0.2833 - val_accuracy: 0.9163 - val_loss: 0.2845\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9192 - loss: 0.2845 - val_accuracy: 0.9167 - val_loss: 0.2810\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9198 - loss: 0.2798 - val_accuracy: 0.9158 - val_loss: 0.2819\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9196 - loss: 0.2829 - val_accuracy: 0.9180 - val_loss: 0.2782\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9215 - loss: 0.2812 - val_accuracy: 0.9168 - val_loss: 0.2774\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9220 - loss: 0.2716 - val_accuracy: 0.9175 - val_loss: 0.2754\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9220 - loss: 0.2714 - val_accuracy: 0.9198 - val_loss: 0.2750\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9221 - loss: 0.2716 - val_accuracy: 0.9190 - val_loss: 0.2739\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9246 - loss: 0.2690 - val_accuracy: 0.9197 - val_loss: 0.2717\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9223 - loss: 0.2720 - val_accuracy: 0.9217 - val_loss: 0.2701\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9244 - loss: 0.2632 - val_accuracy: 0.9203 - val_loss: 0.2682\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9252 - loss: 0.2610 - val_accuracy: 0.9222 - val_loss: 0.2680\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9247 - loss: 0.2616 - val_accuracy: 0.9205 - val_loss: 0.2654\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9262 - loss: 0.2621 - val_accuracy: 0.9215 - val_loss: 0.2641\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9266 - loss: 0.2599 - val_accuracy: 0.9217 - val_loss: 0.2626\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9273 - loss: 0.2577 - val_accuracy: 0.9230 - val_loss: 0.2596\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9268 - loss: 0.2608 - val_accuracy: 0.9223 - val_loss: 0.2588\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9266 - loss: 0.2571 - val_accuracy: 0.9230 - val_loss: 0.2577\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9263 - loss: 0.2576 - val_accuracy: 0.9247 - val_loss: 0.2567\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9295 - loss: 0.2481 - val_accuracy: 0.9270 - val_loss: 0.2543\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9297 - loss: 0.2504 - val_accuracy: 0.9253 - val_loss: 0.2534\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9313 - loss: 0.2430 - val_accuracy: 0.9253 - val_loss: 0.2528\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9288 - loss: 0.2501 - val_accuracy: 0.9250 - val_loss: 0.2502\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9312 - loss: 0.2430 - val_accuracy: 0.9275 - val_loss: 0.2470\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9310 - loss: 0.2461 - val_accuracy: 0.9250 - val_loss: 0.2479\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9311 - loss: 0.2470 - val_accuracy: 0.9272 - val_loss: 0.2445\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9308 - loss: 0.2468 - val_accuracy: 0.9280 - val_loss: 0.2432\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9310 - loss: 0.2396 - val_accuracy: 0.9277 - val_loss: 0.2417\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9335 - loss: 0.2354 - val_accuracy: 0.9285 - val_loss: 0.2419\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_2l_500 = model_2l_500.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "id": "P1jA4OiUecrl", + "outputId": "83e6a06e-7438-4fb9-a0d7-6d13ebe73993" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAHWCAYAAACxPmqWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAfhVJREFUeJzt3Xd4U2X7wPFvdvfeUFqgTJEhKoL4AlJAUBQniiLjBWX4ylThJ9OFiiIOFCeogOACRREpyFBkQxkypOxRyuieSZPz+yM0EFqgSVPS0PtzXbmanHNyzp27hTvPc57zHJWiKApCCCGE8AhqdwcghBBCiPKTwi2EEEJ4ECncQgghhAeRwi2EEEJ4ECncQgghhAeRwi2EEEJ4ECncQgghhAeRwi2EEEJ4ECncQgiXsFgsnD17loMHD7o7FCGua1K4hRBOO3XqFMOHDycuLg69Xk94eDiNGzcmOzvb3aEJcd3SujsAUf307duX77//ntzcXHeHIiogJSWFDh06YDKZePbZZ7npppvQarV4e3vj6+vr7vCEuG5J4RbXxLlz55g7dy5//vkna9asoaCggLvuuosWLVrwyCOP0KJFC3eHKBz09NNPo9frWb9+PTVq1HB3OEJUGyq5yYiobPPnz2fgwIHk5uYSHx+PyWTi1KlTtGjRgu3bt2MymejTpw+ffPIJer3e3eGKctiyZQs333wzy5Yto1OnTu4OR4hqRc5xi0q1du1annjiCaKioli7di2HDh0iMTERLy8vNm3axMmTJ3nsscf48ssvGTFiBACKohAfH899991Xan+FhYUEBgby9NNPA7Bq1SpUKhXff/99qW39/Pzo27ev7fXs2bNRqVQcPnzYtuyff/4hODiYe+65h+LiYrvtNm/ebLe/s2fPolKpmDRpkt3yspZNnToVlUpF+/bt7ZYfPHiQhx9+mJiYGNRqNSqVCpVKRZMmTa6URgCKi4t5+eWXqVu3LgaDgfj4eP7v//6PoqIiu+3i4+O555577JY988wzqFQqu2XLly9HpVLxyy+/2Ja1b9++VMybNm2yxVli/fr1eHl5ceDAAW644QYMBgNRUVE8/fTTpKen272/rH2++uqrqNVq5s2b5/CxL6d9+/a2bct6XPx7B/jwww9tscfExDB06FAyMzOveIycnBwGDBhAXFwcBoOBmjVrMmjQINLS0uy2K/kbutzj0r+Xbdu20bVrVwICAvDz86Njx46sX7/etl5RFDp06EB4eDinT5+2LTcajdx4443UrVuXvLw8AI4cOcKQIUNo0KAB3t7ehIaG8vDDD5f6/CUx6vV6zpw5Y7du3bp1tlgv/Xcg3E+6ykWlev3117FYLMyfP5+WLVuWWh8WFsZXX33F7t27+fjjj5k4cSIRERE88cQTvPnmm6SnpxMSEmLbfvHixWRnZ/PEE09UOLZjx45x11130bBhQ7799lu0Wtf8c8jMzGTKlCmllpvNZu69916OHDnC8OHDqV+/PiqVildffbVc+x0wYABffvklDz30EKNGjWLDhg1MmTKFPXv2sHDhQpfEXpYXXnih1LJz585RWFjI4MGDufPOOxk0aBAHDhxgxowZbNiwgQ0bNmAwGMrc36xZsxg3bhxvv/02vXr1cvjYV1KzZs1SuV+yZAnffPON3bJJkyYxefJkEhMTGTx4MPv27eOjjz5i06ZNrF27Fp1OV+b+09PT2bFjBwMGDCAqKoqUlBRmzpzJ0qVL2bhxIxEREXbbv/TSS9SuXdv2Ojc3l8GDB9tt888//3DHHXcQEBDA888/j06n4+OPP6Z9+/asXr2aVq1aoVKp+OKLL2jatCmDBg3ixx9/BGDixIn8888/rFq1yjauYNOmTfz99988+uij1KxZk8OHD/PRRx/Rvn17du/ejY+Pj93xNRoNc+bMsX1xBuvvyMvLi8LCwvKkXVxrihCVKCQkRImLi7Nb1qdPH8XX19du2fjx4xVAWbx4saIoirJv3z4FUD766CO77e69914lPj5esVgsiqIoysqVKxVA+e6770od29fXV+nTp4/t9axZsxRAOXTokJKenq40btxYadCggXL27Fm795Vst2nTJrvlZ86cUQBl4sSJdssvXfb8888rERERSsuWLZV27drZlpd8pilTpti9v127dsoNN9xQKv6LJScnK4AyYMAAu+WjR49WAOWPP/6wLYuLi1Puvvtuu+2GDh2qXPrPPSkpyS7nJbFcHPOSJUsUQLnrrrvs3j9x4kQFUDp27KgUFxfblpfk7v333y9zn7/++qui1WqVUaNGlfqM5T325Vwuj1OnTrX93hVFUU6fPq3o9Xqlc+fOitlstm33wQcfKIDyxRdfXPVYF9u1a5diMBiU/v3725Y58jfUo0cPRa/XKwcOHLAtO3nypOLv76/85z//sXv/xx9/rADKnDlzlPXr1ysajUYZPny43Tb5+fmlYly3bp0CKF999VWpGB977DHlxhtvtC3Py8tTAgIClF69epX5GYT7SVe5qFQ5OTmlWiFliYyMBLBdRlS/fn1atWrF3Llzbdukp6fz22+/8fjjj5fqOs3JyeHs2bN2j8spLCzk3nvv5cyZMyxdupTQ0FBnPlqZTpw4wfvvv8/48ePx8/MrFSPg1PGWLFkCwMiRI+2Wjxo1CoBff/3VmXCvSFEUxo4dy4MPPkirVq3K3GbkyJFoNBrb6969exMZGVlmPBs3buSRRx7hwQcfZOrUqRU+trOWL1+O0Whk+PDhqNUX/gscOHAgAQEBV81lyfXqJY/IyEi6devGDz/8gMVicSgWs9nMsmXL6NGjB3Xq1LEtj46OplevXvz11192l9Y99dRTdOnShf/973/07t2bunXr8tprr9nt09vb2/bcZDJx7tw5EhISCAoKYuvWraVi6N27N3v37rV1if/www8EBgbSsWNHhz6LuHakcItKFRMTw4EDB666XUpKCoDd6OQnn3yStWvXcuTIEQC+++47TCYTvXv3LvX+/v37Ex4ebvcoOed3qX79+vHXX3+Rk5NjO6/tKhMnTiQmJsZ2Dv5iDRo0IDg4mLfffpu1a9dy5swZzp49i8lkuup+jxw5glqtJiEhwW55VFQUQUFBthy50ty5c/nnn39KFQbA9sWpYcOGdss1Gg316tUrdT71xIkT3H333eTl5XHu3LmrnrO+0rErqiRXDRo0sFuu1+upU6fOVXN59OjRUn9rCxcuJCsr64pfGMty5swZ8vPzS8UC0KhRIywWC8eOHbNb/vnnn5Ofn8/+/fuZPXu2XaEGKCgoYMKECcTGxmIwGAgLCyM8PJzMzEyysrJKHSc8PJy7776bL774AoAvvviCPn362H2pEVWL/GZEpbrnnntIT0/n888/v+w2aWlpfPnll4SHh3PbbbfZlj/66KPodDpbq3vOnDncfPPNZf4nN2HCBJKSkuweXl5eZR5v69at/PTTT4SHh/PUU09V8BNesGfPHmbPns0rr7xS5jlSPz8/FixYQF5eHm3btiUiIoLw8HD+/vvvch+jPIO0XMFoNDJ+/Hj++9//Ur9+/VLrLy0WV5OSkkKtWrX4+uuvWb58OV9++aXTx3a3qKioUn9rjz322DU7/qpVq2wDEnfu3Flq/f/+9z9effVVHnnkEb799luWLVtGUlISoaGhl+0R6N+/P9988w179uxhzZo1doM6RdUjg9NEpRo3bhyLFi1i8ODB7N27l169emE2mwFry2XFihVMmDCBjIwM5s2bZzegKSQkhLvvvpu5c+fy+OOPs3btWqZPn17mcW688UYSExPtll3chXuxzz77jHvvvReNRsM999zD559/zn//+98Kf9axY8fSvHlzevbsedltOnXqxJtvvsnjjz/OzJkzqVOnDqNGjbLl5HLi4uKwWCzs37+fRo0a2ZanpaWRmZlJXFxcheO/2Icffsjp06dLjX4uUTLgat++fXZdvCUxXnpdfnR0NEuWLCEyMpKffvqJUaNG0a1bN8LDwx0+dkWV5OrS2I1Go+2qhyvx8vIqtc17771HQEAAYWFhDsUSHh6Oj48P+/btK7Vu7969qNVqYmNjbctSU1P53//+R+fOndHr9YwePZouXbrY/f6///57+vTpw9tvv21bVlhYeMUR8127dsXLy4tHH32Utm3bUrduXf7880+HPou4dqTFLSpVVFQU69ato2vXrrz99tvcdNNNzJkzh7y8POLi4ujfvz/e3t4sXry4zFZL79692b17N8899xwajYZHH320wjHdcccdANx99908+uijPPfcc6Uu53HUunXr+Omnn3j99dev2Co+duwYQ4YM4dlnn+Wpp54iMTGR4ODgq+6/W7duAKW+uEybNg2wfhZXycnJ4dVXX2XEiBFERUWVuU3Hjh0xGAy89957dq24uXPnkpaWVupytPr169vGMbz//vtYLBaGDRvm1LErKjExEb1ez3vvvYdy0TQWn3/+OVlZWVfMZVkt1m3btvHbb7/Ro0cPh7uXNRoNnTt35qeffrI7vZCWlsa8efNo27YtAQEBtuUDBw7EYrHw+eef88knn6DVavnvf/9r9zk0Go3da7Dm/EpfDrVaLU8++SQ7duygf//+Dn0Gce1Ji1tUutjYWH766SdSU1NZu3YtU6dOJTk5mZkzZ9K8eXOaN29+2WJ39913ExoaynfffUfXrl3LNdDNEe+++y6NGjXif//7H99++63dunXr1tmdsywZJJSSksLGjRu59dZbbetKJiK5UmvNYrHQu3dvatasyeuvv+5QnM2aNbNNUpOZmUm7du3YuHEjX375JT169KBD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3WELBzzzzDMMHTq0XNNXiwukxV0Bn/51iNeTNcxed8TdoQhRboqikG8sdsvDkQlghg4dil6vZ9myZbRr145atWrRtWtXli9fzokTJ3jxxRcB2Lt3L0eOHCElJYW4uDi8vLy47bbb+Ouvv2yfNyEhgbfffttu/8nJyahUKlJSUli1ahUqlYrMzEzb+r59+9rdZnjp0qW0bduWoKAgQkNDueeeezhw4IBt/eHDh1GpVLbbDJ84cYKHH36YiIgI/P39uf/++zl+/Lht+0mTJtG8eXPb68zMTFQqFatWrbpsDAcOHOC+++4jMjISPz8/brnlFpYvX273uVJTU3nggQcIDQ1FpVLZHhd/tkvt3LmTO++8E29vb0JDQ3nqqafIzc21rR8yZAj3339/qdwdPnzYtqx9+/YMHz7c9jo+Pp7p06fbXq9YsQKVSmX7PHl5eaxcuRKj0Ui9evXw8vLixhtv5KeffrpsTouKikhMTCQxMdF2D4pNmzbRqVMnwsLCCAwMpF27dmzduvWyn/V6IC3uCjiXayS1QMWprEJ3hyJEuRWYzDSe8Ltbjr37pS746K/+3056ejq///47r776aqlrz6Oionj88cdZsGABH374IWfOnMFkMvH111/z6aefUrt2bd59913uuusu9u/fT3R0NP3792f27NkMHDjQtp9Zs2bxn//8h4SEBLuCejl5eXmMHDmSpk2bkpuby4QJE7j//vtJTk4udZmPyWSiW7du6HQ6Fi9ejE6nY9iwYfTo0YNNmzY5fWlebm4u3bp149VXX8VgMPDVV1/RvXt39u3bR61atQAYNWoU//77L0uXLiU2Npa///6bBx988Iqfq0uXLrRu3ZpNmzZx+vRpBgwYwDPPPHPVK3vKy2KxMGrUKPz8/GzLzp07h6IofPzxx8ycOZOWLVsyb948HnjgAbZs2WL3pQasEwk9+uij5Obmsnz5ctuMmDk5OfTp04f3338fRVF4++236datG/v37y/Xva09kbS4K8BLpwGgqNji5kiEuL7s378fRVFo1KhRmesbNWpERkYGZ86cwWKx/vubOnUq3bp1o1GjRnz44YfExMQwY8YMwNpy3bdvH1u2bAGshXXevHn0798fwPbloKCg4LIxPfjggzzwwAMkJCTQvHlzvvjiC3bu3Mnu3btLbbt8+XJ27NjBV199RatWrbjpppuYO3cuycnJrFixwum8NGvWjKeffpomTZpQr149Xn75ZerWrcvPP/9s2yY5OZlevXpxyy23EBUVRUhIyBX3OW/ePAoLC/nqq69o0qQJd955Jx988AFff/01aWlpTsd6sS+//JKioiLuu+8+27KS39sLL7zAY489Rv369Zk0aRIdOnTgrbfesnu/oij069ePlJQUlixZYvcF4M477+SJJ56gYcOGNGrUiE8++YT8/HxWr17tktirImlxV4CX1vq9p8BkdnMkQpSft07D7pe6uO3YjnCka/3222+3PVer1bRp08ZWVGNiYujWrRtz5syhQ4cOLF68mKKiIh5++GEA6tWrh16v55tvvrG7KdHF9u/fz4QJE9iwYQNnz561FZ6jR4/azd7Ypk0bzGYzQUFBNG7c2La8Vq1axMbGsnv3bhITE8ufhIvk5uYyadIkfv31V1JTUykuLqagoMBuoqratWuzZMkSBg0adNWiDdYBYs2aNcPX19e27Pbbb8disbBv3z7Cw8OdirVEfn4+48aNY+bMmfzwww+l1l/8ewNo27at3RcRgOeee44VK1bQr1+/Up8pLS2NcePGsWrVKk6fPo3ZbCY/P/+6nrxLWtwVYDj/n1ChSVrcwnOoVCp89Fq3PMrbRZyQkIBKpWLPnj1lrt+zZw/BwcGEh4cTHBx8xc9a4r///S8//vgjBQUFzJo1i549e9pu7RsSEsK0adMYM2YM3t7e+Pn5MXfuXLt9de/enfT0dD799FM2bNjAhg0bADAajXbbLViwgJdffrlcMTlq9OjRLFy4kNdee40///yT5ORkbrzxRrsY3nnnHYqKiggLC8PPz4+uXbs6fTxXmDp1Kg0aNKB79+52y8v7ewPr7/u3335j/vz5/P67/WmePn36kJyczLvvvsvff/9NcnIyoaGhpX4v1xMp3BXgpbOmr0ha3EK4VGhoKJ06deLDDz8s1X196tQp5s6dS8+ePVGpVNStWxetVsvatWtt21gsFv7++2+7Fm+3bt3w9fVl5syZLF261NZNXmLo0KFkZWWxa9cukpOTuffee23rzp07x759+xg3bhwdO3a0ddWXJTY2lrZt25KZmWnXjX7s2DGOHTtmF5Oj1q5dS9++fbn//vu58cYbiYqKshsgBlC/fn369u1LfHw8GzZs4LPPPrviPhs1asT27dvJy8uzO45araZBgwZOxwrWgXJvv/12qYGBAIGBgURFRdn93gD++uuvUjn6+uuvueuuu3j55ZcZOHCg3S0w165dy7PPPku3bt244YYbMBgMnD17tkJxV3VSuCvAS3u+xS3nuIVwuQ8++ICioiK6dOnCmjVrOHbsGEuXLqVTp07UqFGDV199FQA/Pz8GDhzIc889x5IlS9izZw9Dhgzh5MmTDBkyxLY/jUbDY489xv/93/9Rr149WrduXeqY3t7e1K1bl4SEBLuBTcHBwYSGhvLJJ5+QkpLCH3/8cdkudbB2l7dq1Yonn3ySjRs3snXrVh5//HGaN29ud/thRVEoLCyksLDQNkraaDTalpnNZiwWi202sXr16vHjjz+SnJzM9u3b6dWrl63LvsT69ev5v//7P77//ntuuOEGatSoccU8P/7443h5edGnTx927drFypUr+d///kfv3r2JjIy0bWexWGxxlbRmi4qKbMsujQNgxowZ3H///bRo0aLMY48YMYI33niD+fPn8++//zJp0iRWrlzJ6NGj7bYr6R4fMWIEsbGxdrmvV68eX3/9NXv27GHDhg08/vjj1/3NdKRwV0BJi7tQWtxCuFy9evXYvHkzderU4ZFHHqFu3bo89dRTdOjQgXXr1tmd63zrrbfo0aMHffr0oXnz5mzfvp3ff/+d6Ohou3327t0bo9FIv379HIpFrVYzf/58tmzZQpMmTRgxYgRTp0694nt++OEHYmNj6dixI+3atSMsLIxFixbZdQPv2LEDb29vvL29iYqKAqBLly62ZXPmzGHx4sW20fDTpk0jODiYNm3a0L17d7p06cJNN91k29+ZM2d4+OGHmTZtmt3yK/Hx8eH3338nPT2dW265hYceeoiOHTvywQcf2G33yy+/2OJq1aoVAA0bNrQt+/PPP0vt22Kx2L5glWXUqFE8++yzjBo1iiZNmvDjjz/y448/0qxZszK3V6vVzJo1i3nz5rFs2TIAPv/8czIyMrjpppvo3bs3zz77LBEREeX67J5KpTgy+uM6kJ2dTWBgIFlZWQQEBFRoX8t2neSpOdu4sUYAi/93h4sirB5MJhNLliyxXTIjyseZvBUWFnLo0CFq165doVsJejqLxcLSpUvp0aMHx44ds2tNVmWLFi1i0aJFLrs0y1EWi4Xs7GwCAgLktp4OujR3V/q36EhtklHlFSAtbiE8Q1FREWlpabzxxhs89NBDHlO0wdrFL19uxcXk61MFlJzjLpBR5UJUaSVTpmZlZfHGG2+4OxyHdO/enU8//dTdYYgqRAp3BRhkVLkQHqFv376YTCZWrVp11cFaQlR1UrgrQEaVCyGEuNakcFeAnOMWQghxrUnhroCSucpNZgWzpVoNzhdCCOEmUrgroKTFDVBULK1uIYQQlU8KdwWUnOMGma9cCCHEtSGFuwLUahUalbWLXO4QJoQQnq1katmqTgp3BenPZ1AGqAkhhGdZuHAhd999N/Hx8fj5+XHHHZ4xA6YU7grSSeEWolL07dsXlUple4SGhnLXXXexY8cOd4cmrgNTpkxh4MCB3HPPPfz6668kJyezZMkSd4dVLjLlaQVdKNxyjlsIV7vrrruYNWsWYL2d57hx47jnnns4evSomyMTnuzgwYO89tprrF+/nhtuuMHd4ThMWtwVVFK4ZfY04TEUBYx57nk4eE8jg8FAVFQUUVFRNG/enDFjxnDs2DHOnDlj2+aFF16gfv36+Pj4UKdOHcaPH1/qXOXhw4fRaDQEBwej0WhsrfjMzEwAJk2aRPPmzW3bG41GEhIS7LYpER8fb9cToFKpWLRokW390qVLadu2LUFBQYSGhnLPPfdw4MABu1hUKhXJycml9jt9+nTb6/bt2zN8+HDb63379qHT6ezitFgsvPTSS9SsWRODwUDz5s1ZunSpw8e69DOUdfyvv/6am2++GX9/f6KioujVqxenT5+2e88vv/xCs2bN8Pb2tuWmR48eXMlHH31E3bp10ev1NGjQgK+//tpu/aWxDR8+nPbt21/2M65atarU76137952+/n999+pW7cur776KuHh4fj7+/PAAw9w/Phx23su/ZvYunUrQUFBdvc3nzZtGjfeeCO+vr7ExsYyZMgQcnNzr/h5XUFa3BVka3HL5WDCU5jy4bUY9xz7/06C3tept+bm5jJnzhwSEhIIDQ21Lff392f27NnExMSwc+dOBg4ciL+/P88//7xtm5KbIC5atIhbbrmF9evX8+CDD172WB988AFpaWmXXf/SSy/ZbrV56a1D8/LyGDlyJE2bNiU3N5cJEyZw//33k5ycXKG7az333HOl7ij17rvv8vbbb/Pxxx/TokULvvjiC+69917++ecf6tWr5/SxymIymXj55Zdp0KABp0+fZuTIkfTt29fWvZyZmUnPnj0ZMGAAixYtwtvbm2HDhtnuM16WhQsXMmzYMKZPn05iYiK//PIL/fr1o2bNmnTo0MElcW/ZsoWff/7ZbtmZM2fYvn07/v7+/PbbbwAMGzaMHj16sGnTJrtbrwLs3buXLl26MG7cOAYMGGBbrlaree+996hduzYHDx5kyJAhPP/883z44Ycuif1ypHBXkF66yoWoNL/88gt+fn6AtSBGR0fzyy+/2BXAcePG2Z7Hx8czevRo5s+fb1e4S1rgERERREVF2d3L+1Lp6em88sorvPDCC4wfP77U+qKiIkJCQmz3z77UpV8IvvjiC8LDw9m9ezdNmjQpx6cubeXKlfz9998MGDCAlStX2pa/9dZbvPDCCzz66KMAvPHGG6xcuZLp06czY8YMp451Of3797flvU6dOrz33nvccsst5Obm4ufnx7///kt+fj4vvPACMTHWL4be3t5XLNxvvfUWffv2ZciQIQCMHDmS9evX89Zbb7mscI8cOZLnnnvO7ndpsVjQaDTMmzeP2NhYAObNm0fdunVZsWIFiYmJtm2PHDlCp06deOqppxg9erTdvi/ukYiPj+eVV15h0KBBUrirOp1aAVQyOE14Dp2PteXrrmM7oEOHDnz00UcAZGRk8OGHH9K1a1c2btxIXFwcAAsWLOC9997jwIED5ObmUlxcXOp+xtnZ2QD4+l69tf/SSy/RoUMH2rZtW+b69PT0K94vef/+/UyYMIENGzZw9uxZLBbrl/qjR486VbgVRWHUqFFMnDiRc+fO2ZZnZ2dz8uRJbr/9drvtb7/9drZv3263rE2bNnZfdvLz80sd57HHHkOjuTA3RUFBgV1X8ZYtW3jppZfYvn07GRkZdp+rcePGxMbGotVq+eabbxgxYkS5ehf27NnDU089VSr+d99996rvLY9FixZx8OBBRo0aVepLWGxsrK1oA8TFxVGzZk12795tK9yZmZkkJiZy/PhxunTpUmr/y5cvZ8qUKezdu5fs7GyKi4spLCwkPz8fHx/H/tYdIee4K6ikq1yu4xYeQ6Wydle743FJF+TV+Pr6kpCQQEJCArfccgufffYZeXl5tttcrlu3jscff5xu3brxyy+/sG3bNl588UWMRqPdfk6ePIlarSYiIuKKx9u/fz+fffbZZW/9efz4cYxGI7Vr177sPrp37056ejqffvopGzZsYMOGDQClYiqvr776iry8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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_2l_500.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_2l_500.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "s2IdipB3eh3Z", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "df6151d8-b1fc-4e69-8dda-076b2c836468" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9290 - loss: 0.2572\n", + "Lossontestdata: 0.25275251269340515\n", + "Accuracyontestdata: 0.9301000237464905\n" + ] + } + ], + "source": [ + "scores_2l_500=model_2l_500.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_2l_500[0])\n", + "print('Accuracyontestdata:',scores_2l_500[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sPmUCF2q-yKD" + }, + "source": [ + "Лучшая метрика - Accuracyontestdata : 0.9438999891281128, при архитектуре со 100 нейронами." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qB_TMC8KfLxV" + }, + "outputs": [], + "source": [ + "#9 пункт\n", + "model_3l_100_50 = Sequential()\n", + "model_3l_100_50.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n", + "model_3l_100_50.add(Dense(units=50, activation='sigmoid'))\n", + "model_3l_100_50.add(Dense(units=num_classes, activation='softmax'))\n", + "\n", + "model_3l_100_50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BeZb9kX_fSjT", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 246 + }, + "outputId": "02d33699-95a4-4ceb-e2b2-a849a5b3c16a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_5\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_5\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_9 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m78,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_10 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m50\u001b[0m) │ \u001b[38;5;34m5,050\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_11 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m510\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_9 (Dense)                 │ (None, 100)            │        78,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_10 (Dense)                │ (None, 50)             │         5,050 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_11 (Dense)                │ (None, 10)             │           510 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n" + ], + "text/html": [ + "
 Total params: 84,060 (328.36 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n" + ], + "text/html": [ + "
 Trainable params: 84,060 (328.36 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_3l_100_50.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "M6fHvyBifb76", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "abf93d28-a4b9-4814-96a4-9d4d4c531f29" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 3ms/step - accuracy: 0.2184 - loss: 2.2653 - val_accuracy: 0.4402 - val_loss: 2.0564\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.5373 - loss: 1.9305 - val_accuracy: 0.6475 - val_loss: 1.4814\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.6621 - loss: 1.3505 - val_accuracy: 0.7543 - val_loss: 1.0269\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.7630 - loss: 0.9652 - val_accuracy: 0.8047 - val_loss: 0.7883\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8158 - loss: 0.7571 - val_accuracy: 0.8412 - val_loss: 0.6438\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8455 - loss: 0.6224 - val_accuracy: 0.8575 - val_loss: 0.5530\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8636 - loss: 0.5428 - val_accuracy: 0.8652 - val_loss: 0.4939\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8749 - loss: 0.4841 - val_accuracy: 0.8773 - val_loss: 0.4487\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8809 - loss: 0.4496 - val_accuracy: 0.8850 - val_loss: 0.4174\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8883 - loss: 0.4151 - val_accuracy: 0.8903 - val_loss: 0.3935\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8935 - loss: 0.3920 - val_accuracy: 0.8973 - val_loss: 0.3757\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8959 - loss: 0.3821 - val_accuracy: 0.9000 - val_loss: 0.3597\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9008 - loss: 0.3563 - val_accuracy: 0.9027 - val_loss: 0.3473\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9018 - loss: 0.3480 - val_accuracy: 0.9038 - val_loss: 0.3370\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9057 - loss: 0.3381 - val_accuracy: 0.9048 - val_loss: 0.3282\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9060 - loss: 0.3279 - val_accuracy: 0.9077 - val_loss: 0.3197\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9070 - loss: 0.3260 - val_accuracy: 0.9090 - val_loss: 0.3124\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9082 - loss: 0.3208 - val_accuracy: 0.9093 - val_loss: 0.3056\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9121 - loss: 0.3049 - val_accuracy: 0.9112 - val_loss: 0.2994\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9136 - loss: 0.2994 - val_accuracy: 0.9128 - val_loss: 0.2937\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9125 - loss: 0.3029 - val_accuracy: 0.9128 - val_loss: 0.2895\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9147 - loss: 0.2911 - val_accuracy: 0.9163 - val_loss: 0.2839\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9146 - loss: 0.2905 - val_accuracy: 0.9162 - val_loss: 0.2788\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9174 - loss: 0.2865 - val_accuracy: 0.9182 - val_loss: 0.2746\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9193 - loss: 0.2795 - val_accuracy: 0.9190 - val_loss: 0.2707\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9231 - loss: 0.2650 - val_accuracy: 0.9202 - val_loss: 0.2665\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9221 - loss: 0.2665 - val_accuracy: 0.9212 - val_loss: 0.2618\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9243 - loss: 0.2587 - val_accuracy: 0.9222 - val_loss: 0.2583\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9246 - loss: 0.2599 - val_accuracy: 0.9228 - val_loss: 0.2543\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9278 - loss: 0.2529 - val_accuracy: 0.9238 - val_loss: 0.2506\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9254 - loss: 0.2524 - val_accuracy: 0.9253 - val_loss: 0.2472\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9307 - loss: 0.2428 - val_accuracy: 0.9267 - val_loss: 0.2427\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9284 - loss: 0.2449 - val_accuracy: 0.9285 - val_loss: 0.2403\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9316 - loss: 0.2332 - val_accuracy: 0.9298 - val_loss: 0.2365\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9322 - loss: 0.2345 - val_accuracy: 0.9307 - val_loss: 0.2325\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9315 - loss: 0.2356 - val_accuracy: 0.9303 - val_loss: 0.2297\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9338 - loss: 0.2272 - val_accuracy: 0.9327 - val_loss: 0.2273\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9361 - loss: 0.2201 - val_accuracy: 0.9342 - val_loss: 0.2240\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9352 - loss: 0.2239 - val_accuracy: 0.9348 - val_loss: 0.2209\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9384 - loss: 0.2145 - val_accuracy: 0.9357 - val_loss: 0.2181\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9375 - loss: 0.2188 - val_accuracy: 0.9373 - val_loss: 0.2145\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9379 - loss: 0.2157 - val_accuracy: 0.9380 - val_loss: 0.2121\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9416 - loss: 0.2053 - val_accuracy: 0.9380 - val_loss: 0.2091\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9418 - loss: 0.2027 - val_accuracy: 0.9397 - val_loss: 0.2068\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9413 - loss: 0.2037 - val_accuracy: 0.9403 - val_loss: 0.2036\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9443 - loss: 0.1954 - val_accuracy: 0.9395 - val_loss: 0.2011\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9449 - loss: 0.1941 - val_accuracy: 0.9410 - val_loss: 0.1992\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9431 - loss: 0.1947 - val_accuracy: 0.9415 - val_loss: 0.1964\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9444 - loss: 0.1934 - val_accuracy: 0.9417 - val_loss: 0.1940\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9475 - loss: 0.1858 - val_accuracy: 0.9422 - val_loss: 0.1914\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_3l_100_50 = model_3l_100_50.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hkDzHYXkgPbY", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "outputId": "ce3685f3-2bdb-406c-cc09-e210e2282c3c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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6TC5Z8+eUtufeOIJXn/9de69916+//57/vzzT2JjY/H39y+3RWH06NF89913HDhwgPXr11t1OhU1i3SeEw43depUli9fzuOPP87BgwcZPnw4RqMRMNd81q5dy7Rp08jIyGDJkiVWHa78/Py4/fbb+fbbb7n//vvZuHEj8+bNK/M6rVu3JiYmxmrdpU3El/r8888ZNGgQGo2GO+64gy+++IKHH374qt/rlClTaNeuHffdd1+5+/Tu3ZvZs2dz//33s2DBAho2bMjkyZMtZVKeiIgITCYThw8fpnnz5pb1ycnJZGZmEhERcdXxX+rjjz/m/PnzpXpvlyjpEHbo0CGrJuSSGC8flyA0NJSVK1cSHBzMr7/+yuTJkxkwYACBgYE2X/tqlZTV5bEXFRVZntqoiIuLS6l93n//fby8vAgICLAplsDAQNzc3Dh06FCpbQcPHkStVhMeHm5Zl5iYyBNPPEGfPn1wdnbmmWeeoW/fvlY//x9//JGRI0cyZ84cy7qCgoIKe/z3798fFxcXhg4dSrdu3WjUqBH//POPTe9FXBtSYxcOFxISwubNm+nfvz9z5szhxhtv5JtvviE3N5eIiAhGjx6Nq6srK1asKLPW8+CDD7J//36effZZNBoNQ4cOveqYbrnlFgBuv/12hg4dyrPPPlvqcSVbbd68mV9//ZU333yzwlr16dOnGTduHE8++SSPPPIIMTEx+Pr6XvH8AwYMACj1wWbu3LmA+b1UlZycHF5//XWefvppQkJCytzntttuQ6fT8f7771vVAr/99luSk5NLPW7XpEkTSz+KDz74AJPJxFNPPWXXta9WTEwMzs7OvP/++yiXDPXxxRdfkJWVVWFZllXj3blzJ3/88QeDBw+2uflao9HQp08ffv31V6vbF8nJySxZsoRu3brh5eVlWT927FhMJhNffPEFn376KU5OTjz88MNW70Oj0Vi9BnOZV/Th0cnJiREjRrB7925Gjx5t03sQ15bU2EWNEB4ezq+//kpiYiIbN27k7bffJiEhgQULFtCuXTvatWtXbjK8/fbb8ff354cffqB///6V6ohni/fee4/mzZvzxBNP8P3331tt27x5s9U905JOTEeOHGHr1q106tTJsq1koJaKansmk4kHH3yQ+vXr8+abb9oUZ9u2bS2D+GRmZtK9e3e2bt3KV199xeDBg+nZs6fV/iUdA0ucOnUKwGpdQkJCmdfasWMHAQEBPPfcc+XG4+fnx9SpU3n55Zfp27cvd955J8eOHePDDz+kbdu2jBkzptxjQ0JCePvttxkzZgwPPPCA5UNLZa99tQIDA5kyZQozZ86kX79+DBo0iEOHDvHxxx/TsWPHCh+lPHXqFLfffjv33HMP9erVY+/evXz22WcEBATY3R/gtddeIzY2lm7dujFu3DicnJz45JNPKCwsZPbs2Zb9vvzyS37//XcWLVpE/fr1AXPCfuCBB5g/fz7jxo0DzLe/vv76a7y9vWnRogWbN29mzZo1V+y0+eqrr/Lss89W6oOmcCCH9skXohxlPe5WkXHjximAsmTJklLb7H3c7VJfffWVAij/93//Z7VfRculj2UBikqlUrZv32513ssf33rjjTcUnU6n7Nq1q9R+V3rcTVEUxWAwKDNnzlSioqIUrVarhIeHK1OmTFEKCgqs9ouIiLhi/Jculz/uBijvvvuu1TlLHm+73EcffaQ0a9ZM0Wq1SnBwsPLoo48qaWlpFZZDiV69eikNGjRQcnJy7Lr25Sr7uFuJDz/80Cr2xx9/XMnIyKjwGjk5OcrYsWOViIgIxdnZWQkMDFQefPBB5eTJk1b72frI5I4dO5S+ffsqHh4eipubm9KzZ09l06ZNlu2nT59WvL29lYEDB5aKaciQIYq7u7ty7NgxRVEUJSMjQ3nooYeUgIAAxcPDQ+nbt69y8OBBJSIiosy/h/IeZ7vSduEYMqSsqBWefvppvvjiC5KSkkoNruEIM2bMIC4ujri4OEeHIoSoY+Qeu7juFRQU8M0333D33XfXiKQuhBCOJPfYxXXr/PnzrFmzhh9//JG0tLQyO1o5SnR0NHl5eY4OQwhRB0lTvLhuxcXF0bNnT4KCgnj55ZeZMGGCo0MSQgiHk8QuhBBC1CJyj10IIYSoRSSxCyGEELWIdJ4rg8lk4ty5c3h6el6zcbeFEEKIiiiKQk5ODmFhYRWOYCiJvQznzp2zGntZCCGEqClOnz5tGVmwLJLYy+Dp6QmYC+/SMZjtYTAY+PPPP+nTp0+Zs3mJ8knZ2UfKzX5SdvaRcrOPreWWnZ1NeHi4JUeVRxJ7GUqa3728vKoksbu5ueHl5SW/8DaSsrOPlJv9pOzsI+VmH3vL7Uq3iKXznBBCCFGLSGIXQgghahGHJvZZs2bRsWNHPD09CQoKYvDgwRw6dKjCYz777DNuueUWfH198fX1JSYmhq1bt1rtM2rUKFQqldXSr1+/6nwrQgghRI3g0Hvs69atY/z48XTs2JHi4mJefPFF+vTpw/79+3F3dy/zmLi4OIYNG0bXrl1xcXHhrbfeok+fPuzbt4969epZ9uvXrx9ffvml5bVOp6v29yPE9UxRFIqLizEajY4OxWEMBgNOTk4UFBTU6XKwlZSbfS4vN41Gg5OT01U/Zu3QxL5q1Sqr14sWLSIoKIjt27dz6623lnnMt99+a/X6888/56effmLt2rWMGDHCsl6n0xESElL1QQtRCxUVFZGYmFjnJ65RFIWQkBBOnz4tY1jYQMrNPmWVm5ubG6GhoTg7O9t93hrVKz4rKwsAPz+/Sh+Tl5eHwWAodUxcXBxBQUH4+vrSq1cvXnvtNfz9/cs8R2FhIYWFhZbX2dnZgPnTlMFgsPVtWCk5/mrPUxdJ2dnH1nIzmUwcP34cjUZDaGgoWq22zv5zVhSF3Nxc3N3d62wZ2EPKzT6XlhuY/2ZTUlI4duwYUVFRpQahqezfdI2ZBMZkMjFo0CAyMzPZsGFDpY8bN24cq1evZt++fbi4uACwdOlS3NzciIqK4ujRo7z44ot4eHiwefNmNBpNqXPMmDGDmTNnllq/ZMkSmd9b1HpOTk6EhIRQv359uWUlhIMVFhZy5swZEhMTS93WyMvLY/jw4WRlZVX4KHaNSeyPP/44f/zxBxs2bKhwRJ1Lvfnmm8yePZu4uDjatGlT7n7Hjh2jUaNGrFmzhttuu63U9rJq7OHh4aSmplbJc+yxsbH07t1bnu+0kZSdfWwtt4KCAk6fPk1kZKTlw3FdVTJkpwwnbRspN/uUVW4FBQWcOHGC8PDwUn+P2dnZBAQEXDGx14im+AkTJvDbb7+xfv36Sif1d955hzfffJM1a9ZUmNQBGjZsSEBAAEeOHCkzset0ujJrKlqttsoSSlWeq66RsrNPZcvNaDSiUqlQq9UVjj9dF5hMJgBLeYjKkXKzT1nlplarUalUZf79Vvb/oEN/AoqiMGHCBH755Rf++usvoqKiKnXc7NmzefXVV1m1ahUdOnS44v5nzpwhLS2N0NDQqw1ZCFGLSP+N65P83Crm0MQ+fvx4vvnmG5YsWYKnpydJSUkkJSWRn59v2WfEiBFMmTLF8vqtt97i5ZdfZuHChURGRlqO0ev1AOj1ep599lm2bNnCiRMnWLt2LXfeeSfR0dH07dv3mr9HIUTNkZCQwMiRI2nSpAm+vr54eXlZOu2KmuvYsWM8/vjjtGjRAn9/f1xdXTl48KCjw6qxHJrY58+fT1ZWFj169CA0NNSyLFu2zLLPqVOnSExMtDqmqKiI//3vf1bHvPPOOwBoNBp2797NoEGDaNKkCQ8//DDt27fnn3/+kY5BQtRCp0+fZvTo0YSFheHs7ExERARPPfUUaWlpVvvFxcXRrVs3QkJCWLp0Kdu2bePIkSN4e3s7KHJRGQcOHKB9+/YUFxezcOFC4uPjOXr0KM2aNXN0aDWWQ++xV6bfXlxcnNXrEydOVLi/q6srq1evvoqohBDXi2PHjtGlSxeaNGnCd999R1RUFPv27ePZZ5/ljz/+YMuWLfj5+aEoCmPHjmXevHmMGTPG0WELG0yYMIHx48fz2muvOTqU64b0cqhmE5ft5tWdGvaezXZ0KEJUmqIo5BUVO2Sx5UGd8ePH4+zszJ9//kn37t1p0KAB/fv3Z82aNZw9e5aXXnoJgIMHD3Ly5EmOHDlCREQELi4u3HTTTZZHaxVFITo6mjlz5lidPyEhAZVKxZEjR4iLi0OlUpGZmWnZPmrUKAYPHmx5vWrVKrp164aPjw/+/v7ccccdHD161LL9xIkTqFQqEhISADh79iz33HMPQUFBeHp6MmTIEM6cOWPZf8aMGbRr187yOjMzE5VKZVXhuTyGo0ePcueddxIcHIyHhwcdO3ZkzZo1Vu8rMTGRu+66C39/f6uhty99b5fbs2cPvXr1wtXVFX9/fx555BHLLVAwP3o8ZMiQUmV3aWWsR48eTJw40fI6MjKSefPmWV6vXbsWlUpleT+5ubn8/fffFBUV0bhxY1xcXGjdujW//vpruWVaWFhITEwMMTExlqedtm3bRu/evQkICMDb25vu3buzY8eOct/r9a5G9Iqvzc5m5ZNaoOJcVj43ODoYISop32CkxTTHtHztf6Uvbs5X/teUnp7O6tWref3113F1dbXaFhISwv3338+yZcv4+OOPSUlJwWAw8PXXX/PZZ58RFRXFe++9R79+/Th8+DChoaGMHj2aRYsWMXbsWMt5vvzyS2699Vaio6OtEm55cnNzmTRpEm3atEGv1zNt2jSGDBlCQkJCmYONDBgwAK1Wy4oVK9BqtTz11FMMHjyYbdu22f3YmF6vZ8CAAbz++uvodDoWL17MwIEDOXToEA0aNABg8uTJ/Pfff6xatYrw8HA2bdrE3XffXeH76tu3L126dGHbtm2cP3+eMWPGMGHCBBYtWmRXnJczmUxMnjwZDw8Py7q0tDQUReGTTz5hwYIFtG/fniVLlnDXXXexfft2qw89YH7CY+jQoej1etasWWO5/ZqTk8PIkSP54IMPUBSFOXPmMGDAAA4fPnzFuc2vR1Jjr2YhXubnEJOyC6+wpxDCFocPH0ZRFJo3b17m9ubNm5ORkUFKSorlsaK3336bAQMG0Lx5cz7++GPCwsL46KOPAHPN99ChQ2zfvh0wJ94lS5YwevRoAMuHh0s7917u7rvv5q677iI6Opp27dqxcOFC9uzZw/79+0vtu2bNGnbv3s3ixYvp3LkzN954I99++y0JCQmsXbvW7nJp27Ytjz76KK1ataJx48a8+uqrNGrUiP/7v/+z7JOQkMDw4cPp2LEjISEhVxztc8mSJRQUFLB48WJatWpFr169+PDDD/n6669JTk62O9ZLffXVVxQWFnLnnXda1pX83J5//nmGDRtGkyZNmDFjBj179rT0qyqhKAoPPfQQR44cYeXKlVYfEHr16sUDDzxAs2bNaN68OZ9++il5eXmsW7euSmKvaaTGXs1CvMyfGJOyChwciRCV56rVsP8VxzxF4qotPTpkRWxpur/55pst36vVarp27WpJumFhYQwYMIBvvvmGnj17smLFCgoLC7nnnnsAaNy4Mc7Oznz33XdMmjSpzPMfPnyYadOmER8fT2pqqiUxnTp1ilatWln269q1K0ajER8fH1q0aGFZ36BBA8LDw9m/fz8xMTGVL4RL6PV6ZsyYwe+//05iYiLFxcXk5+dz6tQpyz5RUVGsXLmSxx57rFJDeB84cIC2bdtaTc518803YzKZOHToEIGBgXbFWiIvL4+pU6eyYMECfvrpp1LbL/25AXTr1s3qgwrAs88+y9q1a3nooYdKvafk5GSmTp1KXFwc58+fx2g0kpeXZ1UmtYnU2KtZsKXGLoldXD9UKhVuzk4OWSrbBB0dHY1KpeLAgQNlbj9w4AC+vr4EBgbi6+tb4Xst8fDDD/Pzzz+Tn5/Pl19+yX333WcZVtrPz4+5c+fywgsv4OrqioeHR6lJqQYOHEh6ejqfffYZ8fHxxMfHA+ZJdi61bNkyXn311UrFZKtnnnmGX375hTfeeIN//vmHhIQEWrdubRXDu+++S2FhIQEBAXh4eNC/f3+7r1cV3n77bZo2bcrAgQOt1lf25wbmn/cff/zB0qVLS3WgHjlyJAkJCbz33nts2rSJhIQE/P39S/1cagtJ7NXMUmOXpnghqpS/vz+9e/fm448/LtU8npSUxLfffst9992HSqWiUaNGODk5sXHjRss+JpOJTZs2WdWYBwwYgLu7OwsWLGDVqlWWZvgS48ePJysri71795KQkMCgQYMs29LS0jh06BBTp07ltttus9wKKEt4eDjdunUjMzPTqpn+9OnTnD592iomW23cuJFRo0YxZMgQWrduTUhISKmniZo0acKoUaOIjIwkPj6ezz//vMJzNm/enF27dpGbm2t1HbVaTdOmTe2OFcwd+ebMmVOq4yKAt7c3ISEhVj83gA0bNpQqo6+//pp+/frx6quvMnbsWMtkXiWxPvnkkwwYMICWLVui0+lITU29qrhrMkns1SzE+0KNXZrihahyH374IYWFhfTt25f169dz+vRpVq1aRe/evalXrx6vv/46AB4eHowdO5Znn32WlStXcuDAAcaNG8e5c+cYN26c5XwajYZhw4bx4osv0rhxY7p06VLqmq6urjRq1Ijo6Girjle+vr74+/vz6aefcuTIEf76669ym+zB3BzfuXNnRowYwdatW9mxYwf3338/7dq1o1evXpb9FEWhoKCAgoICSy/voqIiyzqj0YjJZLKMxta4cWN+/vlnEhIS2LVrF8OHD7fcEiixZcsWXnzxRX788UdatmxJvXr1Kizn+++/HxcXF0aOHMnevXv5+++/eeKJJ3jwwQcJDg627GcymSxxldSGCwsLLesujwPgo48+YsiQIdxwQ9ndi59++mneeustli5dyn///ceMGTP4+++/eeaZZ6z2K2l+f/rppwkPD7cq+8aNG/P1119z4MAB4uPjuf/++0t1uKxVFFFKVlaWAihZWVlXfa5jyVlKxPO/KY1fWqmYTKYqiK7uKCoqUpYvX64UFRU5OpTriq3llp+fr+zfv1/Jz8+v5siqx4kTJ5SRI0cqwcHBilarVcLDw5UnnnhCSU1NtdovNzdXGTdunBIQEKA4OzsrN910k7JhwwarfYxGo7Jz504FUGbPnn3Fa48cOVK58847La9j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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_3l_100_50.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_3l_100_50.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VdJfu6Djgik1", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2e7b1bd4-e509-4981-fc3e-4974a4908d13" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9423 - loss: 0.2074\n", + "Lossontestdata: 0.20320768654346466\n", + "Accuracyontestdata: 0.9427000284194946\n" + ] + } + ], + "source": [ + "scores_3l_100_50=model_3l_100_50.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_3l_100_50[0])\n", + "print('Accuracyontestdata:',scores_3l_100_50[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EkTKyuyMgviX" + }, + "outputs": [], + "source": [ + "#9 пункт\n", + "model_3l_100_100 = Sequential()\n", + "model_3l_100_100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n", + "model_3l_100_100.add(Dense(units=100, activation='sigmoid'))\n", + "model_3l_100_100.add(Dense(units=num_classes, activation='softmax'))\n", + "\n", + "model_3l_100_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fVv9bbckg1df", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 246 + }, + "outputId": "45c82f28-3212-4241-ce0b-098a23b2bd2f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Архитектура нейронной сети:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_6\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_6\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "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", + "│ dense_12 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m78,500\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_13 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m10,100\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_14 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,010\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ dense_12 (Dense)                │ (None, 100)            │        78,500 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_13 (Dense)                │ (None, 100)            │        10,100 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_14 (Dense)                │ (None, 10)             │         1,010 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n" + ], + "text/html": [ + "
 Total params: 89,610 (350.04 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n" + ], + "text/html": [ + "
 Trainable params: 89,610 (350.04 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Архитектура нейронной сети:\")\n", + "model_3l_100_100.summary()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DBmXBpkEg482", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "59470c59-cc9d-436a-ad18-d2c31dc3755f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.2217 - loss: 2.2757 - val_accuracy: 0.4550 - val_loss: 2.0754\n", + "Epoch 2/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.5328 - loss: 1.9426 - val_accuracy: 0.6695 - val_loss: 1.4533\n", + "Epoch 3/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.6905 - loss: 1.3098 - val_accuracy: 0.7663 - val_loss: 0.9693\n", + "Epoch 4/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.7778 - loss: 0.9031 - val_accuracy: 0.8193 - val_loss: 0.7365\n", + "Epoch 5/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8182 - loss: 0.7111 - val_accuracy: 0.8360 - val_loss: 0.6098\n", + "Epoch 6/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8400 - loss: 0.5970 - val_accuracy: 0.8538 - val_loss: 0.5323\n", + "Epoch 7/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8530 - loss: 0.5334 - val_accuracy: 0.8658 - val_loss: 0.4795\n", + "Epoch 8/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8729 - loss: 0.4714 - val_accuracy: 0.8770 - val_loss: 0.4420\n", + "Epoch 9/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8781 - loss: 0.4415 - val_accuracy: 0.8828 - val_loss: 0.4129\n", + "Epoch 10/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8848 - loss: 0.4121 - val_accuracy: 0.8882 - val_loss: 0.3905\n", + "Epoch 11/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8926 - loss: 0.3878 - val_accuracy: 0.8930 - val_loss: 0.3729\n", + "Epoch 12/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.8940 - loss: 0.3762 - val_accuracy: 0.8970 - val_loss: 0.3591\n", + "Epoch 13/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.8983 - loss: 0.3611 - val_accuracy: 0.8998 - val_loss: 0.3470\n", + "Epoch 14/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9010 - loss: 0.3482 - val_accuracy: 0.9030 - val_loss: 0.3364\n", + "Epoch 15/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9049 - loss: 0.3351 - val_accuracy: 0.9047 - val_loss: 0.3295\n", + "Epoch 16/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9049 - loss: 0.3361 - val_accuracy: 0.9077 - val_loss: 0.3200\n", + "Epoch 17/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9069 - loss: 0.3236 - val_accuracy: 0.9097 - val_loss: 0.3141\n", + "Epoch 18/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9081 - loss: 0.3148 - val_accuracy: 0.9110 - val_loss: 0.3077\n", + "Epoch 19/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9100 - loss: 0.3122 - val_accuracy: 0.9128 - val_loss: 0.3004\n", + "Epoch 20/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9108 - loss: 0.3060 - val_accuracy: 0.9145 - val_loss: 0.2951\n", + "Epoch 21/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9121 - loss: 0.3015 - val_accuracy: 0.9167 - val_loss: 0.2893\n", + "Epoch 22/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9166 - loss: 0.2886 - val_accuracy: 0.9168 - val_loss: 0.2845\n", + "Epoch 23/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9152 - loss: 0.2864 - val_accuracy: 0.9177 - val_loss: 0.2807\n", + "Epoch 24/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9170 - loss: 0.2838 - val_accuracy: 0.9202 - val_loss: 0.2750\n", + "Epoch 25/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9199 - loss: 0.2770 - val_accuracy: 0.9218 - val_loss: 0.2712\n", + "Epoch 26/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9224 - loss: 0.2716 - val_accuracy: 0.9233 - val_loss: 0.2663\n", + "Epoch 27/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9244 - loss: 0.2639 - val_accuracy: 0.9235 - val_loss: 0.2633\n", + "Epoch 28/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9234 - loss: 0.2602 - val_accuracy: 0.9243 - val_loss: 0.2584\n", + "Epoch 29/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9256 - loss: 0.2614 - val_accuracy: 0.9252 - val_loss: 0.2556\n", + "Epoch 30/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9269 - loss: 0.2521 - val_accuracy: 0.9268 - val_loss: 0.2511\n", + "Epoch 31/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9278 - loss: 0.2485 - val_accuracy: 0.9275 - val_loss: 0.2472\n", + "Epoch 32/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9284 - loss: 0.2445 - val_accuracy: 0.9272 - val_loss: 0.2434\n", + "Epoch 33/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9307 - loss: 0.2422 - val_accuracy: 0.9280 - val_loss: 0.2407\n", + "Epoch 34/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9298 - loss: 0.2395 - val_accuracy: 0.9293 - val_loss: 0.2367\n", + "Epoch 35/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9311 - loss: 0.2357 - val_accuracy: 0.9303 - val_loss: 0.2339\n", + "Epoch 36/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9332 - loss: 0.2273 - val_accuracy: 0.9323 - val_loss: 0.2307\n", + "Epoch 37/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9333 - loss: 0.2269 - val_accuracy: 0.9330 - val_loss: 0.2283\n", + "Epoch 38/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9365 - loss: 0.2195 - val_accuracy: 0.9327 - val_loss: 0.2249\n", + "Epoch 39/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9369 - loss: 0.2157 - val_accuracy: 0.9327 - val_loss: 0.2215\n", + "Epoch 40/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9364 - loss: 0.2184 - val_accuracy: 0.9360 - val_loss: 0.2180\n", + "Epoch 41/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9384 - loss: 0.2135 - val_accuracy: 0.9353 - val_loss: 0.2158\n", + "Epoch 42/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9388 - loss: 0.2112 - val_accuracy: 0.9370 - val_loss: 0.2128\n", + "Epoch 43/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9413 - loss: 0.2068 - val_accuracy: 0.9357 - val_loss: 0.2107\n", + "Epoch 44/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9414 - loss: 0.2046 - val_accuracy: 0.9362 - val_loss: 0.2078\n", + "Epoch 45/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9424 - loss: 0.2021 - val_accuracy: 0.9372 - val_loss: 0.2053\n", + "Epoch 46/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9429 - loss: 0.1996 - val_accuracy: 0.9368 - val_loss: 0.2030\n", + "Epoch 47/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9463 - loss: 0.1907 - val_accuracy: 0.9387 - val_loss: 0.2007\n", + "Epoch 48/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.9450 - loss: 0.1945 - val_accuracy: 0.9393 - val_loss: 0.1983\n", + "Epoch 49/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9472 - loss: 0.1869 - val_accuracy: 0.9407 - val_loss: 0.1958\n", + "Epoch 50/50\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9460 - loss: 0.1903 - val_accuracy: 0.9403 - val_loss: 0.1929\n" + ] + } + ], + "source": [ + "# Обучаем модель\n", + "history_3l_100_100 = model_3l_100_100.fit(\n", + " X_train, y_train,\n", + " validation_split=0.1,\n", + " epochs=50\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bRUvSIR0hv9g", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 487 + }, + "outputId": "6413487c-9cd1-4e20-a493-3d267049ed43" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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qcPkwYMHy2z/v//7P15//XUeeughvv32W37//XeioqLw8/OrsEVhzJgxfPPNNxw9epStW7eadToVNxbpPCfsbsaMGaxdu5ZnnnmGY8eOMWLECPR6PWCs+WzevJmZM2eSlpbGqlWrzDpc+fr6MnDgQL7++mseeeQRtm/fzqJFi8q9TuvWrenVq5fZupJNxCV99tlnDB48GLVazT333MPnn3/OE088Ue3POn36dNq1a8fDDz9c4T69e/fmrbfe4pFHHmHp0qU0atSIqVOnmsqkIuHh4RgMBk6cOEGLFi1M65OSkkhPTyc8PLza8Zf00UcfcenSpTK9t4sVdwg7fvy4WRNycYylxyUICQlh/fr1BAUF8fPPPzN16lQGDBhAQECAxdeuruKyKh17YWGh6amNyjg7O5fZ5/3338fT0xN/f3+LYgkICMDV1ZXjx4+X2Xbs2DEcHBwICwszrUtISOD//u//6NOnD05OTjz//PP07dvX7Of//fffM2rUKBYsWGBal5+fX2mP//79++Ps7MywYcPo2rUrjRs35q+//rLos4jrQ2rswu6Cg4PZuXMn/fv3Z8GCBdx222189dVX5OTkEB4ezpgxY3BxcWHdunXl1noee+wxjhw5wgsvvIBarWbYsGHVjumuu+4CYODAgQwbNowXXnihzONKltq5cyc///wz8+fPr7RWfe7cOcaPH8+zzz7Lk08+Sa9evfDx8bnm+QcMGABQ5ovNwoULAeNnsZWsrCxef/11Jk+eTHBwcLn73H333Wi1Wt5//32zWuDXX39NUlJSmcftmjZtaupH8cEHH2AwGHjuueesunZ19erVCycnJ95//32UEkN9fP7552RkZFRaluXVeP/55x9+++03hgwZYnHztVqtpk+fPvz8889mty+SkpJYtWoVXbt2xdPT07R+3LhxGAwGPv/8cz755BMcHR154oknzD6HWq02ew/GMq/sy6OjoyMjR47kwIEDjBkzxqLPIK4vqbGLG0JYWBg///wzCQkJbN++nbfffpvY2FiWLl1Ku3btaNeuXYXJcODAgfj5+fHdd9/Rv3//KnXEs8R7771HixYt+L//+z++/fZbs207d+40u2da3IkpLi6O3bt307FjR9O24oFaKqvtGQwGHnvsMerXr8/8+fMtirNt27amQXzS09Pp1q0bu3fv5osvvmDIkCH06NHDbP/i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sRf56fQhXLwDGDCgfbWuVduULjtRNVJu1pOys46Um3UsLbfi1uRruSkTu6IoLFu2jMceewwnJ6dK9/X29qZp06bExcVVuI9Wq0Wr1ZZZr9FobPZLajqXmx8A6oIM1BoN/h7GYWXT83TyB1EBW/4c6hIpN+tJ2VlHys06VS23qpbtTfkc+5YtW4iLi6uwBl5SdnY28fHxhISEXIfIqqBUr3gft+LH3eTelBBCiOqza2LPzs4mNjaW2NhYAE6dOkVsbCxnz54FjE3kI0eOLHPc559/TqdOnbjlllvKbHv++efZsmULp0+fZseOHQwdOhS1Ws3w4cNr9LNUWanx4n2u9IpPk+fYhRBC2IBdm+L//vtvevToYXpffJ971KhRrFixgoSEBFOSL5aRkcEPP/zAe++9V+45z58/z/Dhw0lJSSEgIICuXbuya9cuAgICau6DWKLUePHeVwaoyS3Uk6/T46xR2ysyIYQQtYBdE3v37t2prFP+ihUryqzz8vIiNze3wmNWr15ti9BqTqmmeE9nR9QOKvQGhfRcHcFektiFEEJY76a8x35TK9UUr1KppDleCCGEzUhiv96Km+Lz0sFgnIPd21WGlRVCCGEbFif2kydP1kQcdUdxYkeB/AygZAc66RkvhBCieixO7JGRkfTo0YOvvvqK/Pz8moipdnN0AqcrI+CZesZfqbFLU7wQQohqsjix79u3jzZt2jBlyhSCg4N56qmn2L17d03EVnuV6hkvU7cKIYSwFYsTe7t27Xjvvfe4ePEiy5YtIyEhga5du3LLLbewcOFCkpOTayLO2sW1+D77lUfe3K7M8JYjTfFCCCGqx+rOc46Ojtx333189913vPnmm8TFxfH8888TFhbGyJEjSUhIsGWctUupnvG+UmMXQghhI1Yn9r///pvx48cTEhLCwoULef7554mPjycqKoqLFy9y77332jLO2qWCpni5xy6EEKK6LB6gZuHChSxfvpzjx48zYMAAVq5cyYABA3BwMH5HaNiwIStWrCAiIsLWsdYepQap8b7SKz5VesULIYSoJosT+5IlSxgzZgyjR4+ucGKVwMBAPv/882oHV2uVbop3k6Z4IYQQtmFxYj9x4sQ193FycmLUqFFWBVQnVDBevAxQI4QQorqsGis+LS2Nzz//nKNHjwLQokULxowZg6+vr02Dq7VKT916pSk+M7+I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\n" + }, + "metadata": {} + } + ], + "source": [ + "# Выводим график функции ошибки\n", + "plt.figure(figsize=(12, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(history_3l_100_100.history['loss'], label='Обучающая ошибка')\n", + "plt.plot(history_3l_100_100.history['val_loss'], label='Валидационная ошибка')\n", + "plt.title('Функция ошибки по эпохам')\n", + "plt.xlabel('Эпохи')\n", + "plt.ylabel('Categorical Crossentropy')\n", + "plt.legend()\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "M9nWMqSXiErG", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "92accb15-9c22-46d8-a60a-f5f64488809f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9435 - loss: 0.2058\n", + "Lossontestdata: 0.2007063776254654\n", + "Accuracyontestdata: 0.9431999921798706\n" + ] + } + ], + "source": [ + "scores_3l_100_100=model_3l_100_100.evaluate(X_test,y_test)\n", + "print('Lossontestdata:',scores_3l_100_100[0])\n", + "print('Accuracyontestdata:',scores_3l_100_100[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "s7xnJPAsiJ4-", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "outputId": "418ceaef-1937-4c15-f327-940560f8866b" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Слои Нейроны 1 Нейроны 2 Метрика\n", + "0 1 100 - 0.9439\n", + "1 1 300 - 0.9372\n", + "2 1 500 - 0.9301\n", + "3 2 100 50 0.9427\n", + "4 2 100 100 0.9432" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
СлоиНейроны 1Нейроны 2Метрика
01100-0.9439
11300-0.9372
21500-0.9301
32100500.9427
421001000.9432
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "df", + "summary": "{\n \"name\": \"df\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"\\u0421\\u043b\\u043e\\u0438\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 1,\n \"max\": 2,\n \"num_unique_values\": 2,\n \"samples\": [\n 2,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041d\\u0435\\u0439\\u0440\\u043e\\u043d\\u044b 1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 178,\n \"min\": 100,\n \"max\": 500,\n \"num_unique_values\": 3,\n \"samples\": [\n 100,\n 300\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041d\\u0435\\u0439\\u0440\\u043e\\u043d\\u044b 2\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"-\",\n 50\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041c\\u0435\\u0442\\u0440\\u0438\\u043a\\u0430\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.005850374852367438,\n \"min\": 0.9301000237464905,\n \"max\": 0.9438999891281128,\n \"num_unique_values\": 5,\n \"samples\": [\n 0.9372000098228455,\n 0.9431999921798706\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 47 + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "data = {\n", + " 'Слои': [ 1, 1, 1, 2, 2],\n", + " 'Нейроны 1': [ 100, 300, 500, 100, 100],\n", + " 'Нейроны 2': [ '-', '-', '-', 50, 100],\n", + " 'Метрика': [ 0.9438999891281128, 0.9372000098228455, 0.9301000237464905, 0.9427000284194946, 0.9431999921798706]\n", + "}\n", + "\n", + "df = pd.DataFrame(data)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "55eu09I9kA93" + }, + "outputs": [], + "source": [ + "model_2l_100.save(filepath='best_model.keras')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mvjk1vAK8Qaa", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 534 + }, + "outputId": "a8cf252d-4e39-49e1-e4c9-c3b71aa0d7d1" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 266ms/step\n", + "NN output: [[3.86779779e-04 3.69515050e-08 2.03053992e-06 1.15266894e-05\n", + " 1.57332561e-05 4.79512411e-04 7.92529917e-08 9.95542467e-01\n", + " 1.50878295e-05 3.54681048e-03]]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAG05JREFUeJzt3X9sVfX9x/FXC/SK2N6ulvb2SoGCP9gEOsekNCrD0QDdQkRI5q8/wDCIenGDzulqVMSZdLJMCQuDmGwwM0FlEYguYcFqS3Qthl8hbLOjXRWQtigL90KRwujn+wfZ/XqlBc/l3r57L89HchJ67/n0vj2765PTnh4ynHNOAAD0sUzrAQAAVyYCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATAy0HuCruru7deTIEWVnZysjI8N6HACAR845nThxQsFgUJmZvZ/n9LsAHTlyRMXFxdZjAAAu06FDhzRs2LBen+9334LLzs62HgEAkACX+nqetACtWrVKI0eO1FVXXaWysjJ9+OGHX2sd33YDgPRwqa/nSQnQ66+/rqqqKi1dulS7d+9WaWmppk+frqNHjybj5QAAqcglwcSJE10oFIp+fO7cORcMBl1NTc0l14bDYSeJjY2NjS3Ft3A4fNGv9wk/Azpz5ox27dqlioqK6GOZmZmqqKhQQ0PDBft3dXUpEonEbACA9JfwAH3++ec6d+6cCgsLYx4vLCxUe3v7BfvX1NTI7/dHN66AA4Arg/lVcNXV1QqHw9Ht0KFD1iMBAPpAwn8PKD8/XwMGDFBHR0fM4x0dHQoEAhfs7/P55PP5Ej0GAKCfS/gZUFZWliZMmKDa2troY93d3aqtrVV5eXmiXw4AkKKScieEqqoqzZ07V9/97nc1ceJErVixQp2dnXrwwQeT8XIAgBSUlADdc889+uyzz/TMM8+ovb1d3/72t7V169YLLkwAAFy5MpxzznqIL4tEIvL7/dZjAAAuUzgcVk5OTq/Pm18FBwC4MhEgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMJD9Czzz6rjIyMmG3MmDGJfhkAQIobmIxPevPNN+udd975/xcZmJSXAQCksKSUYeDAgQoEAsn41ACANJGUnwEdOHBAwWBQo0aN0gMPPKCDBw/2um9XV5cikUjMBgBIfwkPUFlZmdatW6etW7dq9erVam1t1R133KETJ070uH9NTY38fn90Ky4uTvRIAIB+KMM555L5AsePH9eIESP04osvav78+Rc839XVpa6urujHkUiECAFAGgiHw8rJyen1+aRfHZCbm6sbb7xRzc3NPT7v8/nk8/mSPQYAoJ9J+u8BnTx5Ui0tLSoqKkr2SwEAUkjCA/TYY4+pvr5eH3/8sf72t7/p7rvv1oABA3Tfffcl+qUAACks4d+CO3z4sO677z4dO3ZMQ4cO1e23367GxkYNHTo00S8FAEhhSb8IwatIJCK/3289BgDgMl3qIgTuBQcAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmEj6P0gHfFl1dbXnNc8995znNdu3b/e8RpJ27tzpec2nn37qec2f/vQnz2v6u4vddLI3t9xyi+c1kyZN8rymL73wwgue1/znP/9JwiT9H2dAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMJHhnHPWQ3xZJBKR3++3HuOKMmTIkLjWPfnkk57X/OQnP/G8Jt75AAvx3A07nrvEp4JwOHzRu6RzBgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmBhoPQDs/ehHP4prXbreQBG4HFu2bLEeIWVwBgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmOBmpGmmsrLS85rf/OY3SZjE1kcffRTXuk8++STBk/SsubnZ85o333wzCZPYqqio8LymL2+Ce/jwYc9r/v73vydhkvTEGRAA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iBF64403NH/+fMPJ0B/ce++90T+PGzdO48eP1+jRo1VXV6epU6caTpYcoVBI+/fvvyJ+DnoxvR2HhQsXRv88btw4FRUVaerUqWppadHo0aP7eswe9ftvweXn52vAgAEXXMXS0dGhQCBgNFX/kJubqxtvvFHNzc3Wo5j533uA98eFRo0apfz8/LR8fyxatEhvv/223nvvvZh/viUQCOjMmTM6fvx4zP7p+n7o7Tj0pKysTJL61fuh3wcoKytLEyZMUG1tbfSx7u5u1dbWqry83HAyeydPnlRLS4uKioqsRzFTUlKiQCAQ8/6IRCLasWPHFf/+OHz4sI4dO5ZW7w/nnBYtWqRNmzbp3XffVUlJSczzEyZM0KBBg2LeD01NTTp48GBavR8udRx6snfvXknqX+8H66sgvo7XXnvN+Xw+t27dOvePf/zDLVy40OXm5rr29nbr0frUz372M1dXV+daW1vdBx984CoqKlx+fr47evSo9WhJdeLECbdnzx63Z88eJ8m9+OKLbs+ePe6TTz5xzjn3q1/9yuXm5rotW7a4ffv2ubvuusuVlJS4L774wnjyxLrYcThx4oR77LHHXENDg2ttbXXvvPOO+853vuNuuOEGd/r0aevRE+bhhx92fr/f1dXVuba2tuh26tSp6D4PPfSQGz58uHv33Xfdzp07XXl5uSsvLzecOvEudRyam5vdc88953bu3OlaW1vdli1b3KhRo9zkyZONJ4+VEgFyzrnf/va3bvjw4S4rK8tNnDjRNTY2Wo/U5+655x5XVFTksrKy3HXXXefuuece19zcbD1W0r333ntO0gXb3LlznXPnL8V++umnXWFhofP5fG7q1KmuqanJdugkuNhxOHXqlJs2bZobOnSoGzRokBsxYoRbsGBB2v0lraf/fklu7dq10X2++OIL98gjj7hvfOMb7uqrr3Z33323a2trsxs6CS51HA4ePOgmT57s8vLynM/nc9dff737+c9/7sLhsO3gX8E/xwAAMNHvfwYEAEhPBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJ/wPpxromZauT4QAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Real mark: 7\n", + "NN answer: 7\n" + ] + } + ], + "source": [ + "# вывод тестового изображения и результата распознавания\n", + "n = 150\n", + "result = model_2l_100.predict(X_test[n:n+1])\n", + "print('NN output:', result)\n", + "\n", + "plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))\n", + "plt.show()\n", + "print('Real mark: ', str(np.argmax(y_test[n])))\n", + "print('NN answer: ', str(np.argmax(result)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Mc1vi6w59TOw", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 517 + }, + "outputId": "28932b4f-4d56-40c5-d253-59c985f1230e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 28ms/step\n", + "NN output: [[8.1927046e-06 9.8501807e-01 4.7102575e-03 1.5754283e-03 5.3024664e-06\n", + " 2.3075400e-03 6.3471968e-04 7.6599965e-05 5.5682263e-03 9.5791329e-05]]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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D3c6D905ceKEJPWv54P1uyA+id27dzuPx+PKysrc3/72N7d69WqXkpLimpqarEfrU08//bSrrKx0DQ0N7p133nH5+fkuLS3NXbx40Xq0mGptbXXHjx93x48fd5LcSy+95I4fP+7ef/9955xzP/7xj11KSorbv3+/O3nypJs/f77Lzs52165dM548um53HlpbW92mTZtcTU2Na2hocIcOHXKf+9zn3IMPPuja29utR4+atWvXOq/X6yorK92FCxdC6+rVq6Fj1qxZ48aNG+cOHz7sjh496nJzc11ubq7h1NF3p/NQX1/vfvCDH7ijR4+6hoYGt3//fjd+/HiXl5dnPHm4AREg55z7+c9/7saNG+cSExPdrFmzXG1trfVIfW7JkiUuMzPTJSYmutGjR7slS5a4+vp667Fi7q233nKSblnLly93zt18K/bzzz/vMjIynMfjcXPmzHF1dXW2Q8fA7c7D1atX3dy5c92oUaPc0KFDXVZWllu1alXc/Z+07v7zS3I7duwIHXPt2jX37W9/233qU59y9913n1u4cKG7cOGC3dAxcKfzcPbsWZeXl+dSU1Odx+NxEydOdM8884wLBAK2g38M/xwDAMBEv38NCAAQnwgQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE/8H341JvPmYkeEAAAAASUVORK5CYII=\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Real mark: 1\n", + "NN answer: 1\n" + ] + } + ], + "source": [ + "# вывод тестового изображения и результата распознавания\n", + "n = 810\n", + "result = model_2l_100.predict(X_test[n:n+1])\n", + "print('NN output:', result)\n", + "\n", + "plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))\n", + "plt.show()\n", + "print('Real mark: ', str(np.argmax(y_test[n])))\n", + "print('NN answer: ', str(np.argmax(result)))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KB4fgTJ0_EIL" + }, + "outputs": [], + "source": [ + "#загрузка собственного изображения\n", + "from PIL import Image\n", + "file_1_data = Image.open('ИИЛР1_6.png')\n", + "file_1_data = file_1_data.convert('L') #перевод в градации серого\n", + "test_1_img = np.array(file_1_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "no8ogZL3_t57", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "7640781d-fdca-4355-a086-6ab27b2f9f8a" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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uD5CoZDOnDkz4q+PS5cu6erVqyl1fTjntGnTJh06dEgnT55UQUFBxP3z58/X2LFjI66HpqYmtbW1pdT18KDzMJDGxkZJSq7rwfpdEA/j/fffd16v1+3bt8/94x//cK+88orLyMhwnZ2d1qMNqR/+8Ieuurratba2ur/97W+utLTUZWVluStXrliPllDXr193DQ0NrqGhwUlyb7/9tmtoaHD/+c9/nHPO/eIXv3AZGRnuyJEj7ty5c+7FF190BQUF7tNPPzWePL7udx6uX7/uXnvtNVdbW+taW1vdiRMn3Je//GX39NNPu97eXuvR42bjxo3O7/e76upq19HREV43b94MP2bDhg1u8uTJ7uTJk+7s2bOuuLjYFRcXG04dfw86D83Nze6nP/2pO3v2rGttbXVHjhxx06ZNcyUlJcaTRxoWAXLOud/85jdu8uTJLi0tzS1cuNDV1dVZjzTkVq9e7XJzc11aWpp76qmn3OrVq11zc7P1WAl36tQpJ+metWbNGufc3bdib9++3eXk5Div1+sWL17smpqabIdOgPudh5s3b7olS5a4iRMnurFjx7opU6a49evXp9z/pA3055fk9u7dG37Mp59+6r7//e+78ePHu8cff9ytWLHCdXR02A2dAA86D21tba6kpMRlZmY6r9frZsyY4V5//XUXDAZtB/8Cfh0DAMBE0n8PCACQmggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAE/8HYMK6RNiPcj0AAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "#вывод собственного изображения\n", + "plt.imshow(test_1_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mpkMp0r0_z_N" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_1_img = test_1_img / 255\n", + "test_1_img = test_1_img.reshape(1, num_pixels)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "brZ2LVVK_640", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "69d1d18e-6241-43b4-9610-bcf1685594d3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 45ms/step\n", + "I think it's 6\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_1 = model_2l_100.predict(test_1_img)\n", + "print('I think it\\'s', np.argmax(result_1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "le5KqCc1wMwT" + }, + "outputs": [], + "source": [ + "#загрузка собственного изображения\n", + "from PIL import Image\n", + "file_2_data = Image.open('ИИЛР1_1.png')\n", + "file_2_data = file_2_data.convert('L') #перевод в градации серого\n", + "test_2_img = np.array(file_2_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "YVYE-Vkq5wR7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "0c932382-ef82-4388-8197-3419fd063826" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGLRJREFUeJzt3X9MVff9x/HXVeFWW+5FRLjcihS11aRWmjllxNU1kShuMfXHH67rH9oYG+21mbp2i0vUdlnCZpNm6WLW/aVZVm1nMjT1DxNFwWxDm1qNMeuIMDYwcnE141xEQQOf7x+u99tbQbx6L28uPB/JJ5F7zr33zemRZy/3CD7nnBMAAMNsnPUAAICxiQABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATE6wH+Kb+/n5dvXpVOTk58vl81uMAAJLknFNXV5fC4bDGjRv8dc6IC9DVq1dVXFxsPQYA4BG1tbVp2rRpg24fcd+Cy8nJsR4BAJACQ309T1uA9u7dq6eeekqPPfaYysvL9emnnz7Q/fi2GwCMDkN9PU9LgD7++GNt375du3fv1ueff66ysjItW7ZM165dS8fTAQAykUuDhQsXukgkEv+4r6/PhcNhV11dPeR9Pc9zklgsFouV4cvzvPt+vU/5K6Dbt2/r3LlzqqysjN82btw4VVZWqqGh4Z79e3t7FYvFEhYAYPRLeYC+/PJL9fX1qbCwMOH2wsJCRaPRe/avrq5WMBiML66AA4CxwfwquB07dsjzvPhqa2uzHgkAMAxS/u+A8vPzNX78eHV0dCTc3tHRoVAodM/+fr9ffr8/1WMAAEa4lL8Cys7O1vz581VbWxu/rb+/X7W1taqoqEj10wEAMlRafhLC9u3btW7dOn3729/WwoUL9Zvf/Ebd3d169dVX0/F0AIAMlJYArV27Vv/5z3+0a9cuRaNRPf/88zp27Ng9FyYAAMYun3POWQ/xdbFYTMFg0HoMAMAj8jxPgUBg0O3mV8EBAMYmAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYGKC9QBAptu3b9+wPM+rr746LM8DDBdeAQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJnzOOWc9xNfFYjEFg0HrMTBGPcwPFl2/fn3qBxmAz+cblucBUsXzPAUCgUG38woIAGCCAAEATKQ8QG+//bZ8Pl/CmjNnTqqfBgCQ4dLyC+meffZZnThx4v+fZAK/9w4AkCgtZZgwYYJCoVA6HhoAMEqk5T2gy5cvKxwOa8aMGXrllVfU2to66L69vb2KxWIJCwAw+qU8QOXl5dq/f7+OHTum3/3ud2ppadELL7ygrq6uAfevrq5WMBiMr+Li4lSPBAAYgdL+74A6OztVUlKi9957Txs2bLhne29vr3p7e+Mfx2IxIgQz/DsgIHWG+ndAab86IDc3V88884yampoG3O73++X3+9M9BgBghEn7vwO6ceOGmpubVVRUlO6nAgBkkJQH6M0331R9fb3+9a9/6W9/+5tWrVql8ePH6+WXX071UwEAMljKvwV35coVvfzyy7p+/bqmTp2q7373uzpz5oymTp2a6qcCAGQwfhgp8DUj7K9DAi5CQKbhh5ECAEYkAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMDHBegBgJOns7Ez6Prm5uUnfp6+vL+n7AKMNr4AAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABP8MFLgayZPnpz0fZxzSd9n/PjxSd8HGG14BQQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMJB2g06dPa8WKFQqHw/L5fDp8+HDCduecdu3apaKiIk2cOFGVlZW6fPlyquYFAIwSSQeou7tbZWVl2rt374Db9+zZo/fff18ffPCBzp49q8cff1zLli1TT0/PIw8LABhF3COQ5GpqauIf9/f3u1Ao5N599934bZ2dnc7v97uDBw8+0GN6nucksVgZs4aL9efJYiW7PM+77zmd0veAWlpaFI1GVVlZGb8tGAyqvLxcDQ0NA96nt7dXsVgsYQEARr+UBigajUqSCgsLE24vLCyMb/um6upqBYPB+CouLk7lSACAEcr8KrgdO3bI87z4amtrsx4JADAMUhqgUCgkSero6Ei4vaOjI77tm/x+vwKBQMICAIx+KQ1QaWmpQqGQamtr47fFYjGdPXtWFRUVqXwqAECGm5DsHW7cuKGmpqb4xy0tLbpw4YLy8vI0ffp0bd26Vb/85S/19NNPq7S0VDt37lQ4HNbKlStTOTcAINMleynoqVOnBrzcbt26dc65u5di79y50xUWFjq/3++WLFniGhsbH/jxuQyblWlruFh/nixWsmuoy7B9/zuxR4xYLKZgMGg9BvDAhuuvkM/nG5bnAVLF87z7vq9vfhUcAGBsIkAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYmWA8AjCTnz5+3HgEYM3gFBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCY4IeRAl/z/PPPW48AjBm8AgIAmCBAAAATSQfo9OnTWrFihcLhsHw+nw4fPpywff369fL5fAmrqqoqVfMCAEaJpAPU3d2tsrIy7d27d9B9qqqq1N7eHl8HDx58pCEBAKNP0hchLF++XMuXL7/vPn6/X6FQ6KGHAgCMfml5D6iurk4FBQWaPXu2Nm/erOvXrw+6b29vr2KxWMICAIx+KQ9QVVWV/vCHP6i2tla//vWvVV9fr+XLl6uvr2/A/aurqxUMBuOruLg41SMBAEYgn3POPfSdfT7V1NRo5cqVg+7zz3/+UzNnztSJEye0ZMmSe7b39vaqt7c3/nEsFiNCMPMIfx3SzufzWY8AJMXzPAUCgUG3p/0y7BkzZig/P19NTU0Dbvf7/QoEAgkLADD6pT1AV65c0fXr11VUVJTupwIAZJCkr4K7ceNGwquZlpYWXbhwQXl5ecrLy9M777yjNWvWKBQKqbm5WT/96U81a9YsLVu2LKWDAwAynEvSqVOnnKR71rp169zNmzfd0qVL3dSpU11WVpYrKSlxGzdudNFo9IEf3/O8AR+fxRqONZJZHxsWK9nled59z+lHugghHWKxmILBoPUYGKP++9//Jn2f3Nzc1A8yAC5CQKYxvwgBAICBECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwETSvw8IGM0mT56c9H1G2A+UBzIGr4AAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJpIKUHV1tRYsWKCcnBwVFBRo5cqVamxsTNinp6dHkUhEU6ZM0RNPPKE1a9aoo6MjpUMDADJfUgGqr69XJBLRmTNndPz4cd25c0dLly5Vd3d3fJ9t27bpk08+0aFDh1RfX6+rV69q9erVKR8cAJDh3CO4du2ak+Tq6+udc851dna6rKwsd+jQofg+X3zxhZPkGhoaHugxPc9zklisjFnDxfrzZLGSXZ7n3fecfqT3gDzPkyTl5eVJks6dO6c7d+6osrIyvs+cOXM0ffp0NTQ0DPgYvb29isViCQsAMPo9dID6+/u1detWLVq0SHPnzpUkRaNRZWdnKzc3N2HfwsJCRaPRAR+nurpawWAwvoqLix92JABABnnoAEUiEV26dEkfffTRIw2wY8cOeZ4XX21tbY/0eACAzDDhYe60ZcsWHT16VKdPn9a0adPit4dCId2+fVudnZ0Jr4I6OjoUCoUGfCy/3y+/3/8wYwAAMlhSr4Ccc9qyZYtqamp08uRJlZaWJmyfP3++srKyVFtbG7+tsbFRra2tqqioSM3EAIBRIalXQJFIRAcOHNCRI0eUk5MTf18nGAxq4sSJCgaD2rBhg7Zv3668vDwFAgG98cYbqqio0He+8520fAIAgAyVistA9+3bF9/n1q1b7vXXX3eTJ092kyZNcqtWrXLt7e0P/Bxchs3KtDVcrD9PFivZNdRl2L7/ndgjRiwWUzAYtB4DeGDD9VfI5/MNy/MAqeJ5ngKBwKDb+VlwAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYGKC9QBApuvs7Ez6PoFAIPWDABmGV0AAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAl+GCnwiCZPnmw9ApCReAUEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATCQVoOrqai1YsEA5OTkqKCjQypUr1djYmLDPiy++KJ/Pl7A2bdqU0qEBAJkvqQDV19crEonozJkzOn78uO7cuaOlS5equ7s7Yb+NGzeqvb09vvbs2ZPSoQEAmS+p34h67NixhI/379+vgoICnTt3TosXL47fPmnSJIVCodRMCAAYlR7pPSDP8yRJeXl5Cbd/+OGHys/P19y5c7Vjxw7dvHlz0Mfo7e1VLBZLWACAMcA9pL6+PveDH/zALVq0KOH23//+9+7YsWPu4sWL7o9//KN78skn3apVqwZ9nN27dztJLBaLxRply/O8+3bkoQO0adMmV1JS4tra2u67X21trZPkmpqaBtze09PjPM+Lr7a2NvODxmKxWKxHX0MFKKn3gL6yZcsWHT16VKdPn9a0adPuu295ebkkqampSTNnzrxnu9/vl9/vf5gxAAAZLKkAOef0xhtvqKamRnV1dSotLR3yPhcuXJAkFRUVPdSAAIDRKakARSIRHThwQEeOHFFOTo6i0agkKRgMauLEiWpubtaBAwf0/e9/X1OmTNHFixe1bds2LV68WPPmzUvLJwAAyFDJvO+jQb7Pt2/fPuecc62trW7x4sUuLy/P+f1+N2vWLPfWW28N+X3Ar/M8z/z7liwWi8V69DXU137f/8IyYsRiMQWDQesxAACPyPM8BQKBQbfzs+AAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACZGXICcc9YjAABSYKiv5yMuQF1dXdYjAABSYKiv5z43wl5y9Pf36+rVq8rJyZHP50vYFovFVFxcrLa2NgUCAaMJ7XEc7uI43MVxuIvjcNdIOA7OOXV1dSkcDmvcuMFf50wYxpkeyLhx4zRt2rT77hMIBMb0CfYVjsNdHIe7OA53cRzusj4OwWBwyH1G3LfgAABjAwECAJjIqAD5/X7t3r1bfr/fehRTHIe7OA53cRzu4jjclUnHYcRdhAAAGBsy6hUQAGD0IEAAABMECABgggABAExkTID27t2rp556So899pjKy8v16aefWo807N5++235fL6ENWfOHOux0u706dNasWKFwuGwfD6fDh8+nLDdOaddu3apqKhIEydOVGVlpS5fvmwzbBoNdRzWr19/z/lRVVVlM2yaVFdXa8GCBcrJyVFBQYFWrlypxsbGhH16enoUiUQ0ZcoUPfHEE1qzZo06OjqMJk6PBzkOL7744j3nw6ZNm4wmHlhGBOjjjz/W9u3btXv3bn3++ecqKyvTsmXLdO3aNevRht2zzz6r9vb2+PrLX/5iPVLadXd3q6ysTHv37h1w+549e/T+++/rgw8+0NmzZ/X4449r2bJl6unpGeZJ02uo4yBJVVVVCefHwYMHh3HC9Kuvr1ckEtGZM2d0/Phx3blzR0uXLlV3d3d8n23btumTTz7RoUOHVF9fr6tXr2r16tWGU6fegxwHSdq4cWPC+bBnzx6jiQfhMsDChQtdJBKJf9zX1+fC4bCrrq42nGr47d6925WVlVmPYUqSq6mpiX/c39/vQqGQe/fdd+O3dXZ2Or/f7w4ePGgw4fD45nFwzrl169a5l156yWQeK9euXXOSXH19vXPu7n/7rKwsd+jQofg+X3zxhZPkGhoarMZMu28eB+ec+973vud+/OMf2w31AEb8K6Dbt2/r3LlzqqysjN82btw4VVZWqqGhwXAyG5cvX1Y4HNaMGTP0yiuvqLW11XokUy0tLYpGownnRzAYVHl5+Zg8P+rq6lRQUKDZs2dr8+bNun79uvVIaeV5niQpLy9PknTu3DnduXMn4XyYM2eOpk+fPqrPh28eh698+OGHys/P19y5c7Vjxw7dvHnTYrxBjbgfRvpNX375pfr6+lRYWJhwe2Fhof7xj38YTWWjvLxc+/fv1+zZs9Xe3q533nlHL7zwgi5duqScnBzr8UxEo1FJGvD8+GrbWFFVVaXVq1ertLRUzc3N+vnPf67ly5eroaFB48ePtx4v5fr7+7V161YtWrRIc+fOlXT3fMjOzlZubm7CvqP5fBjoOEjSj370I5WUlCgcDuvixYv62c9+psbGRv35z382nDbRiA8Q/t/y5cvjf543b57Ky8tVUlKiP/3pT9qwYYPhZBgJfvjDH8b//Nxzz2nevHmaOXOm6urqtGTJEsPJ0iMSiejSpUtj4n3Q+xnsOLz22mvxPz/33HMqKirSkiVL1NzcrJkzZw73mAMa8d+Cy8/P1/jx4++5iqWjo0OhUMhoqpEhNzdXzzzzjJqamqxHMfPVOcD5ca8ZM2YoPz9/VJ4fW7Zs0dGjR3Xq1KmEX98SCoV0+/ZtdXZ2Juw/Ws+HwY7DQMrLyyVpRJ0PIz5A2dnZmj9/vmpra+O39ff3q7a2VhUVFYaT2btx44aam5tVVFRkPYqZ0tJShUKhhPMjFovp7NmzY/78uHLliq5fvz6qzg/nnLZs2aKamhqdPHlSpaWlCdvnz5+vrKyshPOhsbFRra2to+p8GOo4DOTChQuSNLLOB+urIB7ERx995Px+v9u/f7/7+9//7l577TWXm5vrotGo9WjD6ic/+Ymrq6tzLS0t7q9//aurrKx0+fn57tq1a9ajpVVXV5c7f/68O3/+vJPk3nvvPXf+/Hn373//2znn3K9+9SuXm5vrjhw54i5evOheeuklV1pa6m7dumU8eWrd7zh0dXW5N9980zU0NLiWlhZ34sQJ961vfcs9/fTTrqenx3r0lNm8ebMLBoOurq7Otbe3x9fNmzfj+2zatMlNnz7dnTx50n322WeuoqLCVVRUGE6dekMdh6amJveLX/zCffbZZ66lpcUdOXLEzZgxwy1evNh48kQZESDnnPvtb3/rpk+f7rKzs93ChQvdmTNnrEcadmvXrnVFRUUuOzvbPfnkk27t2rWuqanJeqy0O3XqlJN0z1q3bp1z7u6l2Dt37nSFhYXO7/e7JUuWuMbGRtuh0+B+x+HmzZtu6dKlburUqS4rK8uVlJS4jRs3jrr/SRvo85fk9u3bF9/n1q1b7vXXX3eTJ092kyZNcqtWrXLt7e12Q6fBUMehtbXVLV682OXl5Tm/3+9mzZrl3nrrLed5nu3g38CvYwAAmBjx7wEBAEYnAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMDE/wHey6QFMggR7wAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ], + "source": [ + "#вывод собственного изображения\n", + "plt.imshow(test_2_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iabh56bf52Cx" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_2_img = test_2_img / 255\n", + "test_2_img = test_2_img.reshape(1, num_pixels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "184Hvdg26hoh", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "53455b67-6eac-4625-cd82-2eb64ba5ec27" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 30ms/step\n", + "I think it's 1\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_2 = model_2l_100.predict(test_2_img)\n", + "print('I think it\\'s', np.argmax(result_2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ELjlb0b28h8d" + }, + "outputs": [], + "source": [ + "from PIL import Image\n", + "file_190_data = Image.open('ИИЛР1_690.png')\n", + "file_190_data = file_190_data.convert('L') #перевод в градации серого\n", + "test_190_img = np.array(file_190_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "nDvEgbbU8wcC", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "7356832f-7b05-4876-c0f2-8996dea2ac2c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGltJREFUeJzt3X9MVff9x/HX9dfVtnARES63oqK2utSKzikjtqxGIrLF+GuJ7fqHLkajw2bq2i4uq7bbEjaXdE0XZ/eXrlnVzmRq6h8mioLZhjZaiTFbiTicGAVbI/cqFjTy+f7ht7e9FdR7ufe+L5fnIzlJuecc7tvjkWcv93DwOOecAABIsgHWAwAA+icCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATAyyHuCburq6dPnyZWVkZMjj8ViPAwCIknNON27cUCAQ0IABPb/OSbkAXb58WQUFBdZjAAB6qbm5WaNGjepxfcp9Cy4jI8N6BABAHDzs63nCArR161aNHTtWQ4cOVXFxsT7++ONH2o9vuwFAenjY1/OEBOjDDz/Uhg0btHnzZn3yyScqKipSeXm5rl69moinAwD0RS4BZs6c6SorK8Mf37171wUCAVdVVfXQfYPBoJPEwsLCwtLHl2Aw+MCv93F/BXT79m2dOnVKZWVl4ccGDBigsrIy1dXV3bd9Z2enQqFQxAIASH9xD9Dnn3+uu3fvKi8vL+LxvLw8tbS03Ld9VVWVfD5feOEKOADoH8yvgtu4caOCwWB4aW5uth4JAJAEcf85oJycHA0cOFCtra0Rj7e2tsrv99+3vdfrldfrjfcYAIAUF/dXQEOGDNH06dNVXV0dfqyrq0vV1dUqKSmJ99MBAPqohNwJYcOGDVq2bJm+853vaObMmXrnnXfU3t6uH//4x4l4OgBAH5SQAC1dulSfffaZNm3apJaWFk2dOlUHDx6878IEAED/5XHOOeshvi4UCsnn81mPAQDopWAwqMzMzB7Xm18FBwDonwgQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJQdYDAP3R0aNHo95n9uzZCZgEsMMrIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABDcjTWGnT5+Oep+xY8dGvc/w4cOj3gdfSdbfUyzPM3Xq1Kj3SXVtbW1R78M5npp4BQQAMEGAAAAm4h6gN998Ux6PJ2KZNGlSvJ8GANDHJeQ9oGeeeUaHDx/+6kkG8VYTACBSQsowaNAg+f3+RHxqAECaSMh7QOfOnVMgENC4ceP08ssv6+LFiz1u29nZqVAoFLEAANJf3ANUXFysHTt26ODBg9q2bZuampr0/PPP68aNG91uX1VVJZ/PF14KCgriPRIAIAV5nHMukU/Q1tamMWPG6O2339aKFSvuW9/Z2anOzs7wx6FQiAj9P34OqG9I1t/ThQsXot6HnwO6h3PcRjAYVGZmZo/rE351QFZWlp5++mk1NjZ2u97r9crr9SZ6DABAikn4zwHdvHlT58+fV35+fqKfCgDQh8Q9QK+++qpqa2t14cIF/etf/9KiRYs0cOBAvfTSS/F+KgBAHxb3b8FdunRJL730kq5du6aRI0fqueee0/HjxzVy5Mh4PxUAoA+Le4B2794d70+ZFpJ1I8lY3qDFV1L5hp+xXLjg8XjiP0gPUvlijOvXr0e9j8TFC4nGveAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMJ/42o0QqFQvL5fNZjxF0sh5nf/Jh8KfbPIUIybyyaLMm6gWlWVlbU+0j8G+yth/1GVF4BAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwMQg6wH6olju4BuL+vr6pDxPOkrW3xF6Z9q0aVHvE8udrZuamqLeJ9bnwqPjFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYMLjnHPWQ3xdKBSSz+ezHuOBknXI2traot5n+PDh8R+kD4r17yiWY56sG1Z6PJ6kPE86SuaXOf6evhIMBpWZmdnjel4BAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmBlkPgJ5xY9Hku3DhQtT7TJ06Nep9YrnpKZKvvr4+6n2uX78e9T799d86r4AAACYIEADARNQBOnbsmObPn69AICCPx6N9+/ZFrHfOadOmTcrPz9ewYcNUVlamc+fOxWteAECaiDpA7e3tKioq0tatW7tdv2XLFr377rt67733dOLECT3++OMqLy9XR0dHr4cFAKSPqC9CqKioUEVFRbfrnHN655139Mtf/lILFiyQJL3//vvKy8vTvn379OKLL/ZuWgBA2ojre0BNTU1qaWlRWVlZ+DGfz6fi4mLV1dV1u09nZ6dCoVDEAgBIf3ENUEtLiyQpLy8v4vG8vLzwum+qqqqSz+cLLwUFBfEcCQCQosyvgtu4caOCwWB4aW5uth4JAJAEcQ2Q3++XJLW2tkY83traGl73TV6vV5mZmRELACD9xTVAhYWF8vv9qq6uDj8WCoV04sQJlZSUxPOpAAB9XNRXwd28eVONjY3hj5uamlRfX6/s7GyNHj1a69at029+8xs99dRTKiws1BtvvKFAIKCFCxfGc24AQB8XdYBOnjyp2bNnhz/esGGDJGnZsmXasWOHXn/9dbW3t2vVqlVqa2vTc889p4MHD2ro0KHxmxoA0Od5nHPOeoivC4VC8vl8SXmu06dPx7RfLDefjIXH40nK86SjFDut78PfbXLFej7EcjPSWL4+pOv5EAwGH/i+vvlVcACA/okAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAm+vXdsFPsj36fdL1DbjJwp3N8Hf/WbXA3bABASiJAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATAyyHsBSfX19TPsl64aViN20adNi2i/Vb1qJ5Gpra4t6n6ysrLjPka54BQQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmOjXNyPlhpWIh1huanv9+vWo9xk+fHjU+6B3Lly4EPU+3Kz40fEKCABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAw0a9vRprquGFl8sVyY9GxY8dGvU9WVlbU+yD5YrmxaFtbW9znSFe8AgIAmCBAAAATUQfo2LFjmj9/vgKBgDwej/bt2xexfvny5fJ4PBHLvHnz4jUvACBNRB2g9vZ2FRUVaevWrT1uM2/ePF25ciW87Nq1q1dDAgDST9QXIVRUVKiiouKB23i9Xvn9/piHAgCkv4S8B1RTU6Pc3FxNnDhRa9as0bVr13rctrOzU6FQKGIBAKS/uAdo3rx5ev/991VdXa3f/e53qq2tVUVFhe7evdvt9lVVVfL5fOGloKAg3iMBAFKQxznnYt7Z49HevXu1cOHCHrf573//q/Hjx+vw4cOaM2fOfes7OzvV2dkZ/jgUCqV8hHpxyKISy88T8HNAvXP69Omo90nWzwF5PJ6o98E9yfo3K/Hv9uuCwaAyMzN7XJ/wy7DHjRunnJwcNTY2drve6/UqMzMzYgEApL+EB+jSpUu6du2a8vPzE/1UAIA+JOqr4G7evBnxaqapqUn19fXKzs5Wdna23nrrLS1ZskR+v1/nz5/X66+/rgkTJqi8vDyugwMA+raoA3Ty5EnNnj07/PGGDRskScuWLdO2bdt05swZ/eUvf1FbW5sCgYDmzp2rX//61/J6vfGbGgDQ5/XqIoRECIVC8vl81mM8UIodsgi8UZ18sVy4kKybXKbjm9vJulBE4mKR3jK/CAEAgO4QIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADARNS/jgFSfX191PvEcvfjWFy/fj3qfdLxjsmxStadrWMRy52ZU/nO7X1BLHcgx6PjFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYMLjUuxuhaFQSD6fz3qMuEvlm1wC8RDLjTtjucFqLGK9qSg36u2dYDCozMzMHtfzCggAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMMHNSNMMNz1FuovlxqLcVNQGNyMFAKQkAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMDEIOsBEF/Tpk2zHuGBknWz1FhuWClx00ogmXgFBAAwQYAAACaiClBVVZVmzJihjIwM5ebmauHChWpoaIjYpqOjQ5WVlRoxYoSeeOIJLVmyRK2trXEdGgDQ90UVoNraWlVWVur48eM6dOiQ7ty5o7lz56q9vT28zfr16/XRRx9pz549qq2t1eXLl7V48eK4Dw4A6Nt69RtRP/vsM+Xm5qq2tlalpaUKBoMaOXKkdu7cqR/+8IeSpE8//VTf+ta3VFdXp+9+97sP/Zz8RtT0xkUIQP+R0N+IGgwGJUnZ2dmSpFOnTunOnTsqKysLbzNp0iSNHj1adXV13X6Ozs5OhUKhiAUAkP5iDlBXV5fWrVunWbNmafLkyZKklpYWDRkyRFlZWRHb5uXlqaWlpdvPU1VVJZ/PF14KCgpiHQkA0IfEHKDKykqdPXtWu3fv7tUAGzduVDAYDC/Nzc29+nwAgL4hph9EXbt2rQ4cOKBjx45p1KhR4cf9fr9u376ttra2iFdBra2t8vv93X4ur9crr9cbyxgAgD4sqldAzjmtXbtWe/fu1ZEjR1RYWBixfvr06Ro8eLCqq6vDjzU0NOjixYsqKSmJz8QAgLQQ1SugyspK7dy5U/v371dGRkb4fR2fz6dhw4bJ5/NpxYoV2rBhg7Kzs5WZmalXXnlFJSUlj3QFHACg/4gqQNu2bZMkvfDCCxGPb9++XcuXL5ck/eEPf9CAAQO0ZMkSdXZ2qry8XH/605/iMiwAIH306ueAEoGfAwKA9JDQnwMCACBWBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADARFQBqqqq0owZM5SRkaHc3FwtXLhQDQ0NEdu88MIL8ng8Ecvq1avjOjQAoO+LKkC1tbWqrKzU8ePHdejQId25c0dz585Ve3t7xHYrV67UlStXwsuWLVviOjQAoO8bFM3GBw8ejPh4x44dys3N1alTp1RaWhp+/LHHHpPf74/PhACAtNSr94CCwaAkKTs7O+LxDz74QDk5OZo8ebI2btyoW7du9fg5Ojs7FQqFIhYAQD/gYnT37l33gx/8wM2aNSvi8T//+c/u4MGD7syZM+6vf/2re/LJJ92iRYt6/DybN292klhYWFhY0mwJBoMP7EjMAVq9erUbM2aMa25ufuB21dXVTpJrbGzsdn1HR4cLBoPhpbm52fygsbCwsLD0fnlYgKJ6D+hLa9eu1YEDB3Ts2DGNGjXqgdsWFxdLkhobGzV+/Pj71nu9Xnm93ljGAAD0YVEFyDmnV155RXv37lVNTY0KCwsfuk99fb0kKT8/P6YBAQDpKaoAVVZWaufOndq/f78yMjLU0tIiSfL5fBo2bJjOnz+vnTt36vvf/75GjBihM2fOaP369SotLdWUKVMS8gcAAPRR0bzvox6+z7d9+3bnnHMXL150paWlLjs723m9XjdhwgT32muvPfT7gF8XDAbNv2/JwsLCwtL75WFf+z3/H5aUEQqF5PP5rMcAAPRSMBhUZmZmj+u5FxwAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwETKBcg5Zz0CACAOHvb1POUCdOPGDesRAABx8LCv5x6XYi85urq6dPnyZWVkZMjj8USsC4VCKigoUHNzszIzM40mtMdxuIfjcA/H4R6Owz2pcBycc7px44YCgYAGDOj5dc6gJM70SAYMGKBRo0Y9cJvMzMx+fYJ9ieNwD8fhHo7DPRyHe6yPg8/ne+g2KfctOABA/0CAAAAm+lSAvF6vNm/eLK/Xaz2KKY7DPRyHezgO93Ac7ulLxyHlLkIAAPQPfeoVEAAgfRAgAIAJAgQAMEGAAAAm+kyAtm7dqrFjx2ro0KEqLi7Wxx9/bD1S0r355pvyeDwRy6RJk6zHSrhjx45p/vz5CgQC8ng82rdvX8R655w2bdqk/Px8DRs2TGVlZTp37pzNsAn0sOOwfPny+86PefPm2QybIFVVVZoxY4YyMjKUm5urhQsXqqGhIWKbjo4OVVZWasSIEXriiSe0ZMkStba2Gk2cGI9yHF544YX7zofVq1cbTdy9PhGgDz/8UBs2bNDmzZv1ySefqKioSOXl5bp69ar1aEn3zDPP6MqVK+HlH//4h/VICdfe3q6ioiJt3bq12/VbtmzRu+++q/fee08nTpzQ448/rvLycnV0dCR50sR62HGQpHnz5kWcH7t27UrihIlXW1uryspKHT9+XIcOHdKdO3c0d+5ctbe3h7dZv369PvroI+3Zs0e1tbW6fPmyFi9ebDh1/D3KcZCklStXRpwPW7ZsMZq4B64PmDlzpqusrAx/fPfuXRcIBFxVVZXhVMm3efNmV1RUZD2GKUlu79694Y+7urqc3+93v//978OPtbW1Oa/X63bt2mUwYXJ88zg459yyZcvcggULTOaxcvXqVSfJ1dbWOufu/d0PHjzY7dmzJ7zNf/7zHyfJ1dXVWY2ZcN88Ds45973vfc/99Kc/tRvqEaT8K6Dbt2/r1KlTKisrCz82YMAAlZWVqa6uznAyG+fOnVMgENC4ceP08ssv6+LFi9YjmWpqalJLS0vE+eHz+VRcXNwvz4+amhrl5uZq4sSJWrNmja5du2Y9UkIFg0FJUnZ2tiTp1KlTunPnTsT5MGnSJI0ePTqtz4dvHocvffDBB8rJydHkyZO1ceNG3bp1y2K8HqXczUi/6fPPP9fdu3eVl5cX8XheXp4+/fRTo6lsFBcXa8eOHZo4caKuXLmit956S88//7zOnj2rjIwM6/FMtLS0SFK358eX6/qLefPmafHixSosLNT58+f1i1/8QhUVFaqrq9PAgQOtx4u7rq4urVu3TrNmzdLkyZMl3TsfhgwZoqysrIht0/l86O44SNKPfvQjjRkzRoFAQGfOnNHPf/5zNTQ06O9//7vhtJFSPkD4SkVFRfi/p0yZouLiYo0ZM0Z/+9vftGLFCsPJkApefPHF8H8/++yzmjJlisaPH6+amhrNmTPHcLLEqKys1NmzZ/vF+6AP0tNxWLVqVfi/n332WeXn52vOnDk6f/68xo8fn+wxu5Xy34LLycnRwIED77uKpbW1VX6/32iq1JCVlaWnn35ajY2N1qOY+fIc4Py437hx45STk5OW58fatWt14MABHT16NOLXt/j9ft2+fVttbW0R26fr+dDTcehOcXGxJKXU+ZDyARoyZIimT5+u6urq8GNdXV2qrq5WSUmJ4WT2bt68qfPnzys/P996FDOFhYXy+/0R50coFNKJEyf6/flx6dIlXbt2La3OD+ec1q5dq7179+rIkSMqLCyMWD99+nQNHjw44nxoaGjQxYsX0+p8eNhx6E59fb0kpdb5YH0VxKPYvXu383q9bseOHe7f//63W7VqlcvKynItLS3WoyXVz372M1dTU+OamprcP//5T1dWVuZycnLc1atXrUdLqBs3brjTp0+706dPO0nu7bffdqdPn3b/+9//nHPO/fa3v3VZWVlu//797syZM27BggWusLDQffHFF8aTx9eDjsONGzfcq6++6urq6lxTU5M7fPiw+/a3v+2eeuop19HRYT163KxZs8b5fD5XU1Pjrly5El5u3boV3mb16tVu9OjR7siRI+7kyZOupKTElZSUGE4dfw87Do2Nje5Xv/qVO3nypGtqanL79+9348aNc6WlpcaTR+oTAXLOuT/+8Y9u9OjRbsiQIW7mzJnu+PHj1iMl3dKlS11+fr4bMmSIe/LJJ93SpUtdY2Oj9VgJd/ToUSfpvmXZsmXOuXuXYr/xxhsuLy/Peb1eN2fOHNfQ0GA7dAI86DjcunXLzZ07140cOdINHjzYjRkzxq1cuTLt/ietuz+/JLd9+/bwNl988YX7yU9+4oYPH+4ee+wxt2jRInflyhW7oRPgYcfh4sWLrrS01GVnZzuv1+smTJjgXnvtNRcMBm0H/wZ+HQMAwETKvwcEAEhPBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJ/wPlZdvhH8Q1XQAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ], + "source": [ + "plt.imshow(test_190_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "V954Q-Us82lQ" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_190_img = test_190_img / 255\n", + "test_190_img = test_190_img.reshape(1, num_pixels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5uEzkB1N89-i", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "e38b9678-2ed7-4d0c-d3ac-76a8769abda1" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 27ms/step\n", + "I think it's 2\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_190 = model_2l_100.predict(test_190_img)\n", + "print('I think it\\'s', np.argmax(result_190))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Cp-Y7YSb9IKI" + }, + "outputs": [], + "source": [ + "from PIL import Image\n", + "file_290_data = Image.open('ИИЛР1_190.png')\n", + "file_290_data = file_290_data.convert('L') #перевод в градации серого\n", + "test_290_img = np.array(file_290_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fHfFgIu49QqP", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "44ece705-518a-4b12-e7e0-c1e1144ce02b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGDBJREFUeJzt3X9MVff9x/HX9Qen2sJFRLjciha11aQqzZwy4uq6SBS3mPrjD9v1D22MjfbaTFm7hSVquy1hs0mzdDHt/tItq7YzmZr6h4lFwWxDG63GmHVECBsY+bGacC6ioIHP9w/X+92tICL38ubC85F8Eu8959779njKs5d7xIBzzgkAgGE2znoAAMDYRIAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJCdYDfFNvb6+uX7+u9PR0BQIB63EAAIPknFNHR4fC4bDGjev/fc6IC9D169eVn59vPQYAYIiampo0ffr0frePuG/BpaenW48AAEiAgb6eJy1A+/bt01NPPaXHHntMRUVF+vzzzx/qcXzbDQBGh4G+niclQJ988onKysq0Z88effHFFyosLNTKlSvV1taWjJcDAKQilwRLlixxkUgkdrunp8eFw2FXUVEx4GN933eSWCwWi5Xiy/f9B369T/g7oDt37ujChQsqKSmJ3Tdu3DiVlJSopqbmvv27u7sVjUbjFgBg9Et4gL766iv19PQoNzc37v7c3Fy1tLTct39FRYWCwWBscQUcAIwN5lfBlZeXy/f92GpqarIeCQAwDBL+94Cys7M1fvx4tba2xt3f2tqqUCh03/6e58nzvESPAQAY4RL+DigtLU2LFi1SZWVl7L7e3l5VVlaquLg40S8HAEhRSflJCGVlZdq4caO+/e1va8mSJfrtb3+rzs5Ovfrqq8l4OQBACkpKgDZs2KD//Oc/2r17t1paWvTcc8/pxIkT912YAAAYuwLOOWc9xP+KRqMKBoPWYwAAhsj3fWVkZPS73fwqOADA2ESAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwkPEBvv/22AoFA3Jo3b16iXwYAkOImJONJn332WX322Wf//yITkvIyAIAUlpQyTJgwQaFQKBlPDQAYJZLyGdDVq1cVDoc1a9YsvfLKK2psbOx33+7ubkWj0bgFABj9Eh6goqIiHThwQCdOnNAHH3yghoYGPf/88+ro6Ohz/4qKCgWDwdjKz89P9EgAgBEo4JxzyXyB9vZ2zZw5U++99542b9583/bu7m51d3fHbkejUSIEAKOA7/vKyMjod3vSrw7IzMzUM888o7q6uj63e54nz/OSPQYAYIRJ+t8Dunnzpurr65WXl5fslwIApJCEB+jNN99UdXW1/vWvf+nvf/+71q5dq/Hjx+vll19O9EsBAFJYwr8Fd+3aNb388su6ceOGpk2bpu9+97s6e/aspk2bluiXAgCksKRfhDBY0WhUwWDQegwAwBANdBECPwsOAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYGHSAzpw5o9WrVyscDisQCOjo0aNx251z2r17t/Ly8jRp0iSVlJTo6tWriZoXADBKDDpAnZ2dKiws1L59+/rcvnfvXr3//vv68MMPde7cOT3++ONauXKlurq6hjwsAGAUcUMgyR05ciR2u7e314VCIffuu+/G7mtvb3ee57lDhw491HP6vu8ksVgsFivFl+/7D/x6n9DPgBoaGtTS0qKSkpLYfcFgUEVFRaqpqenzMd3d3YpGo3ELADD6JTRALS0tkqTc3Ny4+3Nzc2Pbvqmi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\n" + }, + "metadata": {} + } + ], + "source": [ + "plt.imshow(test_290_img, cmap=plt.get_cmap('gray'))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VigLQgvN9Vtz" + }, + "outputs": [], + "source": [ + "#предобработка\n", + "test_290_img = test_290_img / 255\n", + "test_290_img = test_290_img.reshape(1, num_pixels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "OT4Gyq3w9cKm", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "7f87b9cb-2d20-4f07-df92-8fdfb155f614" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 29ms/step\n", + "I think it's 4\n" + ] + } + ], + "source": [ + "#распознавание\n", + "result_290 = model_2l_100.predict(test_290_img)\n", + "print('I think it\\'s', np.argmax(result_290))" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/labworks/LW1/images/1.png b/labworks/LW1/images/1.png new file mode 100644 index 0000000..6219658 Binary files /dev/null and b/labworks/LW1/images/1.png differ diff --git a/labworks/LW1/images/10.png b/labworks/LW1/images/10.png new file mode 100644 index 0000000..0260a2c Binary files /dev/null and b/labworks/LW1/images/10.png differ diff --git a/labworks/LW1/images/11.png b/labworks/LW1/images/11.png new file mode 100644 index 0000000..a5ea844 Binary files /dev/null and b/labworks/LW1/images/11.png differ diff --git a/labworks/LW1/images/190 (2).png b/labworks/LW1/images/190 (2).png new file mode 100644 index 0000000..26cd6c2 Binary files /dev/null and b/labworks/LW1/images/190 (2).png differ diff --git a/labworks/LW1/images/190.png b/labworks/LW1/images/190.png new file mode 100644 index 0000000..0e0fc25 Binary files /dev/null and b/labworks/LW1/images/190.png differ diff --git a/labworks/LW1/images/2.png b/labworks/LW1/images/2.png new file mode 100644 index 0000000..8bd3360 Binary files /dev/null and b/labworks/LW1/images/2.png differ diff --git a/labworks/LW1/images/3.png b/labworks/LW1/images/3.png new file mode 100644 index 0000000..bc9b7d2 Binary files /dev/null and b/labworks/LW1/images/3.png differ diff --git a/labworks/LW1/images/4.png b/labworks/LW1/images/4.png new file mode 100644 index 0000000..2f94f2f Binary files /dev/null and b/labworks/LW1/images/4.png differ diff --git a/labworks/LW1/images/5.png b/labworks/LW1/images/5.png new file mode 100644 index 0000000..fad0136 Binary files /dev/null and b/labworks/LW1/images/5.png differ diff --git a/labworks/LW1/images/6.png b/labworks/LW1/images/6.png new file mode 100644 index 0000000..c0cb170 Binary files /dev/null and b/labworks/LW1/images/6.png differ diff --git a/labworks/LW1/images/690 (1).png b/labworks/LW1/images/690 (1).png new file mode 100644 index 0000000..4668195 Binary files /dev/null and b/labworks/LW1/images/690 (1).png differ diff --git a/labworks/LW1/images/690.png b/labworks/LW1/images/690.png new file mode 100644 index 0000000..1e085c0 Binary files /dev/null and b/labworks/LW1/images/690.png differ diff --git a/labworks/LW1/images/7.png b/labworks/LW1/images/7.png new file mode 100644 index 0000000..6e76cb6 Binary files /dev/null and b/labworks/LW1/images/7.png differ diff --git a/labworks/LW1/images/8.png b/labworks/LW1/images/8.png new file mode 100644 index 0000000..6a0663b Binary files /dev/null and b/labworks/LW1/images/8.png differ diff --git a/labworks/LW1/images/9.png b/labworks/LW1/images/9.png new file mode 100644 index 0000000..e9e8aef Binary files /dev/null and b/labworks/LW1/images/9.png differ diff --git a/labworks/LW1/report.md b/labworks/LW1/report.md new file mode 100644 index 0000000..b6f1949 --- /dev/null +++ b/labworks/LW1/report.md @@ -0,0 +1,610 @@ +# Отчет по лабораторной работе №1 +Касимов Азамат, Немыкин Никита, А-01-22 + +## 1. В среде GoogleColab создали блокнот(notebook.ipynb). +``` +import os +os.chdir('/content/drive/MyDrive/Colab Notebooks') +``` + +* импорт модулей +``` +from tensorflow import keras +import matplotlib.pyplot as plt +import numpy as np +import sklearn +``` + +## 2. Загрузка датасета MNIST +``` +from keras.datasets import mnist +(X_train, y_train), (X_test, y_test) = mnist.load_data() +``` + +## 3. Разбиение набора данных на обучающие и тестовые +``` +from sklearn.model_selection import train_test_split +``` +* объединяем в один набор +``` +X = np.concatenate((X_train, X_test)) +y = np.concatenate((y_train, y_test)) +``` +* разбиваем по вариантам +``` +X_train, X_test, y_train, y_test = train_test_split(X, y,test_size = 10000,train_size = 60000, random_state = 27) +``` + +* Вывод размерностей +``` +print('Shape of X train:', X_train.shape) +print('Shape of y train:', y_train.shape) +``` + +> Shape of X train: (60000, 28, 28) +> Shape of y train: (60000,) + +## 4. Вывод элементов обучающих данных +* Создаем subplot для 4 изображений +``` +fig, axes = plt.subplots(1, 4, figsize=(10, 3)) + +for i in range(4): + axes[i].imshow(X_train[i], cmap=plt.get_cmap('gray')) + axes[i].set_title(f'Label: {y_train[i]}') + +# Добавляем метку как заголовок + +plt.show() +``` + +![отображение элементов](1.png) + +## 5. Предобработка данных +* развернем каждое изображение 28*28 в вектор 784 +``` +num_pixels = X_train.shape[1] * X_train.shape[2] +X_train = X_train.reshape(X_train.shape[0], num_pixels) / 255 +X_test = X_test.reshape(X_test.shape[0], num_pixels) / 255 +print('Shape of transformed X train:', X_train.shape) +``` + +> Shape of transformed X train: (60000, 784) + +* переведем метки в one-hot +``` +from keras.utils import to_categorical +y_train = to_categorical(y_train) +y_test = to_categorical(y_test) +print('Shape of transformed y train:', y_train.shape) +num_classes = y_train.shape[1] +``` + +> Shape of transformed y train: (60000, 10) + +## 6. Реализация и обучение однослойной нейронной сети +``` +from keras.models import Sequential +from keras.layers import Dense +``` + +* 6.1. создаем модель - объявляем ее объектом класса Sequential +``` +model_1 = Sequential() +model_1.add(Dense(units=num_classes,input_dim=num_pixels, activation='softmax')) +``` +* 6.2. компилируем модель +``` +model_1.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) + +print("Архитектура нейронной сети:") +model_1.summary() +``` + +> Архитектура нейронной сети: +> Model: "sequential" +> ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ +> ┃ Layer (type) ┃ Output Shape ┃ Param # ┃ +> ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ +> │ dense (Dense) │ (None, 10) │ 7,850 │ +> └─────────────────────────────────┴────────────────────────┴───────────────┘ +> Total params: 7,850 (30.66 KB) +> Trainable params: 7,850 (30.66 KB) +> Non-trainable params: 0 (0.00 B) ' + +* Обучаем модель +``` +history = model_1.fit( + X_train, y_train, + validation_split=0.1, + epochs=50 +) +``` + +* Выводим график функции ошибки +``` +plt.figure(figsize=(12, 5)) + +plt.subplot(1, 2, 1) +plt.plot(history.history['loss'], label='Обучающая ошибка') +plt.plot(history.history['val_loss'], label='Валидационная ошибка') +plt.title('Функция ошибки по эпохам') +plt.xlabel('Эпохи') +plt.ylabel('Categorical Crossentropy') +plt.legend() +plt.grid(True) +``` + +![график функции ошибки](2.png) + +## 7. Применение модели к тестовым данным +``` +scores=model_1.evaluate(X_test,y_test) +print('Lossontestdata:',scores[0]) +print('Accuracyontestdata:',scores[1]) +``` + +> - accuracy: 0.9206 - loss: 0.2956 +>Lossontestdata: 0.2900226414203644 +>Accuracyontestdata: 0.9222000241279602 + +## 8. Добавили один скрытый слой и повторили п. 6-7 +* при 100 нейронах в скрытом слое +``` +model_2l_100 = Sequential() +model_2l_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid')) +model_2l_100.add(Dense(units=num_classes, activation='softmax')) + +model_2l_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) + +print("Архитектура нейронной сети:") +model_2l_100.summary() +``` + +> Архитектура нейронной сети: +>Model: "sequential_9" +>┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ +>┃ Layer (type) ┃ Output Shape ┃ Param # ┃ +>┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ +>│ dense_1 (Dense) │ (None, 100) │ 78,500 │ +>├─────────────────────────────────┼────────────────────────┼───────────────┤ +>│ dense_2 (Dense) │ (None, 10) │ 1,010 │ +>└─────────────────────────────────┴────────────────────────┴───────────────┘ +> Total params: 79,510 (310.59 KB) +> Trainable params: 79,510 (310.59 KB) +> Non-trainable params: 0 (0.00 B) + +* Обучаем модель +``` +history_2l_100 = model_2l_100.fit( + X_train, y_train, + validation_split=0.1, + epochs=50 +) +``` + +* Выводим график функции ошибки +``` +plt.figure(figsize=(12, 5)) + +plt.subplot(1, 2, 1) +plt.plot(history_2l_100.history['loss'], label='Обучающая ошибка') +plt.plot(history_2l_100.history['val_loss'], label='Валидационная ошибка') +plt.title('Функция ошибки по эпохам') +plt.xlabel('Эпохи') +plt.ylabel('Categorical Crossentropy') +plt.legend() +plt.grid(True) +``` + +![график функции ошибки](3.png) + +``` +scores_2l_100=model_2l_100.evaluate(X_test,y_test) +print('Lossontestdata:',scores_2l_100[0]) #значение функции ошибки +print('Accuracyontestdata:',scores_2l_100[1]) #значение метрики качества +``` + +> - accuracy: 0.9436 - loss: 0.2091 +>Lossontestdata: 0.20427274703979492 +>Accuracyontestdata: 0.9438999891281128 ' + +* при 300 нейронах в скрытом слое +``` +model_2l_300 = Sequential() +model_2l_300.add(Dense(units=300,input_dim=num_pixels, activation='sigmoid')) +model_2l_300.add(Dense(units=num_classes, activation='softmax')) + +model_2l_300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) + +print("Архитектура нейронной сети:") +model_2l_300.summary() +``` + +> Архитектура нейронной сети: +>Model: "sequential_3" +>┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ +>┃ Layer (type) ┃ Output Shape ┃ Param # ┃ +>┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ +>│ dense_5 (Dense) │ (None, 300) │ 235,500 │ +>├─────────────────────────────────┼────────────────────────┼───────────────┤ +>│ dense_6 (Dense) │ (None, 10) │ 3,010 │ +>└─────────────────────────────────┴────────────────────────┴───────────────┘ +> Total params: 238,510 (931.68 KB) +> Trainable params: 238,510 (931.68 KB) +> Non-trainable params: 0 (0.00 B) + +* Обучаем модель +``` +history_2l_300 = model_2l_300.fit( + X_train, y_train, + validation_split=0.1, + epochs=50 +) +``` + +* Выводим график функции ошибки +``` +plt.figure(figsize=(12, 5)) + +plt.subplot(1, 2, 1) +plt.plot(history_2l_300.history['loss'], label='Обучающая ошибка') +plt.plot(history_2l_300.history['val_loss'], label='Валидационная ошибка') +plt.title('Функция ошибки по эпохам') +plt.xlabel('Эпохи') +plt.ylabel('Categorical Crossentropy') +plt.legend() +plt.grid(True) +``` + +![график функции ошибки](4.png) + +``` +scores_2l_300=model_2l_300.evaluate(X_test,y_test) +print('Lossontestdata:',scores_2l_300[0]) #значение функции ошибки +print('Accuracyontestdata:',scores_2l_300[1]) #значение метрики качества +``` + +> - accuracy: 0.9365 - loss: 0.2352 +>Lossontestdata: 0.23040874302387238 +>Accuracyontestdata: 0.9372000098228455 + +* при 500 нейронах в скрытом слое +``` +model_2l_500 = Sequential() +model_2l_500.add(Dense(units=500,input_dim=num_pixels, activation='sigmoid')) +model_2l_500.add(Dense(units=num_classes, activation='softmax')) + +model_2l_500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) + +print("Архитектура нейронной сети:") +model_2l_500.summary() +``` + +> Архитектура нейронной сети: +>Model: "sequential_4" +>┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ +>┃ Layer (type) ┃ Output Shape ┃ Param # ┃ +>┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ +>│ dense_7 (Dense) │ (None, 500) │ 392,500 │ +>├─────────────────────────────────┼────────────────────────┼───────────────┤ +>│ dense_8 (Dense) │ (None, 10) │ 5,010 │ +>└─────────────────────────────────┴────────────────────────┴───────────────┘ +> Total params: 397,510 (1.52 MB) +> Trainable params: 397,510 (1.52 MB) +> Non-trainable params: 0 (0.00 B) + +* Обучаем модель +``` +history_2l_500 = model_2l_500.fit( + X_train, y_train, + validation_split=0.1, + epochs=50 +) +``` + +* Выводим график функции ошибки +``` +plt.figure(figsize=(12, 5)) + +plt.subplot(1, 2, 1) +plt.plot(history_2l_500.history['loss'], label='Обучающая ошибка') +plt.plot(history_2l_500.history['val_loss'], label='Валидационная ошибка') +plt.title('Функция ошибки по эпохам') +plt.xlabel('Эпохи') +plt.ylabel('Categorical Crossentropy') +plt.legend() +plt.grid(True) +``` + +![график функции ошибки](5.png) + +``` +scores_2l_500=model_2l_500.evaluate(X_test,y_test) +print('Lossontestdata:',scores_2l_500[0]) #значение функции ошибки +print('Accuracyontestdata:',scores_2l_500[1]) #значение метрики качества +``` + +> - accuracy: 0.9290 - loss: 0.2572 +>Lossontestdata: 0.25275251269340515 +>Accuracyontestdata: 0.9301000237464905 + +Как мы видим, лучшая метрика получилась равной 0.9438999891281128 при архитектуре со 100 нейронами в скрытом слое, поэтому для дальнейших пунктов используем ее. + +## 9. Добавили второй скрытый слой +* при 50 нейронах во втором скрытом слое +``` +model_3l_100_50 = Sequential() +model_3l_100_50.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid')) +model_3l_100_50.add(Dense(units=50, activation='sigmoid')) +model_3l_100_50.add(Dense(units=num_classes, activation='softmax')) + +model_3l_100_50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) + +print("Архитектура нейронной сети:") +model_3l_100_50.summary() +``` + +> Архитектура нейронной сети: +>Model: "sequential_5" +>┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ +>┃ Layer (type) ┃ Output Shape ┃ Param # ┃ +>┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ +>│ dense_9 (Dense) │ (None, 100) │ 78,500 │ +>├─────────────────────────────────┼────────────────────────┼───────────────┤ +>│ dense_10 (Dense) │ (None, 50) │ 5,050 │ +>├─────────────────────────────────┼────────────────────────┼───────────────┤ +>│ dense_11 (Dense) │ (None, 10) │ 510 │ +>└─────────────────────────────────┴────────────────────────┴───────────────┘ +> Total params: 84,060 (328.36 KB) +> Trainable params: 84,060 (328.36 KB) +> Non-trainable params: 0 (0.00 B) + +* Обучаем модель +``` +history_3l_100_50 = model_3l_100_50.fit( + X_train, y_train, + validation_split=0.1, + epochs=50 +) +``` + +* Выводим график функции ошибки +``` +plt.figure(figsize=(12, 5)) + +plt.subplot(1, 2, 1) +plt.plot(history_3l_100_50.history['loss'], label='Обучающая ошибка') +plt.plot(history_3l_100_50.history['val_loss'], label='Валидационная ошибка') +plt.title('Функция ошибки по эпохам') +plt.xlabel('Эпохи') +plt.ylabel('Categorical Crossentropy') +plt.legend() +plt.grid(True) +``` + +![график функции ошибки](6.png) + +``` +scores_3l_100_50=model_3l_100_50.evaluate(X_test,y_test) +print('Lossontestdata:',scores_3l_100_50[0]) +print('Accuracyontestdata:',scores_3l_100_50[1]) +``` + +> - accuracy: 0.9423 - loss: 0.2074 +>Lossontestdata: 0.20320768654346466 +>Accuracyontestdata: 0.9427000284194946 + +* при 100 нейронах во втором скрытом слое +``` +model_3l_100_100 = Sequential() +model_3l_100_100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid')) +model_3l_100_100.add(Dense(units=100, activation='sigmoid')) +model_3l_100_100.add(Dense(units=num_classes, activation='softmax')) + +model_3l_100_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) + +print("Архитектура нейронной сети:") +model_3l_100_100.summary() +``` + +> Архитектура нейронной сети: +>Model: "sequential_6" +>┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ +>┃ Layer (type) ┃ Output Shape ┃ Param # ┃ +>┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ +>│ dense_12 (Dense) │ (None, 100) │ 78,500 │ +>├─────────────────────────────────┼────────────────────────┼───────────────┤ +>│ dense_13 (Dense) │ (None, 100) │ 10,100 │ +>├─────────────────────────────────┼────────────────────────┼───────────────┤ +>│ dense_14 (Dense) │ (None, 10) │ 1,010 │ +>└─────────────────────────────────┴────────────────────────┴───────────────┘ +> Total params: 89,610 (350.04 KB) +> Trainable params: 89,610 (350.04 KB) +> Non-trainable params: 0 (0.00 B) ' + +* Обучаем модель +``` +history_3l_100_100 = model_3l_100_100.fit( + X_train, y_train, + validation_split=0.1, + epochs=50 +) +``` + +* Выводим график функции ошибки +``` +plt.figure(figsize=(12, 5)) + +plt.subplot(1, 2, 1) +plt.plot(history_3l_100_100.history['loss'], label='Обучающая ошибка') +plt.plot(history_3l_100_100.history['val_loss'], label='Валидационная ошибка') +plt.title('Функция ошибки по эпохам') +plt.xlabel('Эпохи') +plt.ylabel('Categorical Crossentropy') +plt.legend() +plt.grid(True) +``` + +![график функции ошибки](7.png) + +``` +scores_3l_100_100=model_3l_100_100.evaluate(X_test,y_test) +print('Lossontestdata:',scores_3l_100_100[0]) +print('Accuracyontestdata:',scores_3l_100_100[1]) +``` + +> - accuracy: 0.9435 - loss: 0.2058 +>Lossontestdata: 0.2007063776254654 +>Accuracyontestdata: 0.9431999921798706 + +Количество Количество нейронов в Количество нейронов во Значение метрики +скрытых слоев первом скрытом слое втором скрытом слое качества классификации +0 - - 0.9222000241279602 +1 100 - 0.9438999891281128 +1 300 - 0.9372000098228455 +1 500 - 0.9301000237464905 +2 100 50 0.9427000284194946 +2 100 100 0.9431999921798706 + +Наилучшую точность (0.9467999935150146) показала модель содержащая 100 нейронов в скрытом слое. + +## 11. Сохранение наилучшей модели на диск +``` +model_2l_100.save(filepath='best_model.keras') +``` + +## 12. Вывод тестовых изображений и результатов распознаваний +``` +n = 150 +result = model_2l_100.predict(X_test[n:n+1]) +print('NN output:', result) + +plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray')) +plt.show() +print('Real mark: ', str(np.argmax(y_test[n]))) +print('NN answer: ', str(np.argmax(result))) +``` + +> NN output: [[3.86779779e-04 3.69515050e-08 2.03053992e-06 1.15266894e-05 +> 1.57332561e-05 4.79512411e-04 7.92529917e-08 9.95542467e-01 +> 1.50878295e-05 3.54681048e-03]] +![alt text](8.png) +>Real mark: 7 +>NN answer: 7 + +``` +n = 810 +result = model_2l_100.predict(X_test[n:n+1]) +print('NN output:', result) + +plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray')) +plt.show() +print('Real mark: ', str(np.argmax(y_test[n]))) +print('NN answer: ', str(np.argmax(result))) +``` + +> NN output: [[8.1927046e-06 9.8501807e-01 4.7102575e-03 1.5754283e-03 5.3024664e-06 +> 2.3075400e-03 6.3471968e-04 7.6599965e-05 5.5682263e-03 9.5791329e-05]] +![alt text](9.png) +>Real mark: 1 +>NN answer: 1 ' + +## 12. Тестирование на собственных изображениях +* загрузка 1 собственного изображения +``` +from PIL import Image +file_1_data = Image.open('ИИЛР1_6.png') +file_1_data = file_1_data.convert('L') #перевод в градации серого +test_1_img = np.array(file_1_data) +``` + +* вывод собственного изображения +``` +plt.imshow(test_1_img, cmap=plt.get_cmap('gray')) +plt.show() +``` + +![6 изображение](10.png) + +* предобработка +``` +test_1_img = test_1_img / 255 +test_1_img = test_1_img.reshape(1, num_pixels) +``` + +* распознавание +``` +result_1 = model_2l_100.predict(test_1_img) +print('I think it\'s', np.argmax(result_1)) +``` +> I think it's 6 + +* тест 2 изображения +``` +file_2_data = Image.open('ИИЛР1_1.png') +file_2_data = file_2_data.convert('L') #перевод в градации серого +test_2_img = np.array(file_2_data) + +plt.imshow(test_2_img, cmap=plt.get_cmap('gray')) +plt.show() +``` + +![1 изображение](11.png) + +``` +test_2_img = test_2_img / 255 +test_2_img = test_2_img.reshape(1, num_pixels) + +result_2 = model.predict(test_2_img) +print('I think it\'s', np.argmax(result_2)) +``` + +> I think it's 1 + +Сеть не ошиблась и корректно распознала обе цифры на изображениях + +## 14. Тестирование на собственных повернутых изображениях +``` +file_190_data = Image.open('ИИЛР1_690.png') +file_190_data = file_190_data.convert('L') #перевод в градации серого +test_190_img = np.array(file_190_data) + +plt.imshow(test_190_img, cmap=plt.get_cmap('gray')) +plt.show() +``` + +![alt text](690.png) + +``` +test_190_img = test_190_img / 255 +test_190_img = test_190_img.reshape(1, num_pixels) + +result_190 = model_2l_100.predict(test_190_img) +print('I think it\'s', np.argmax(result_190)) +``` + +> I think it's 2 + +``` +file_290_data = Image.open('ИИЛР1_190.png') +file_290_data = file_290_data.convert('L') #перевод в градации серого +test_290_img = np.array(file_290_data) + +plt.imshow(test_290_img, cmap=plt.get_cmap('gray')) +plt.show() +``` + +![alt text](190.png) + +``` +test_290_img = test_290_img / 255 +test_290_img = test_290_img.reshape(1, num_pixels) + +result_290 = model.predict(test_290_img) +print('I think it\'s', np.argmax(result_290)) +``` + +> I think it's 4 + +При повороте изображений сеть не распознала цифры правильно. Так как она не обучалась на повернутых изображениях. \ No newline at end of file