{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Отчет по лабораторной работе 1\n", "## Ледовской Михаил, Железнов Артем, Щипков Матвей\n", "## Группа А-02-22\n", "### Пункт 1\n", "\n", "В среде GoogleColab создали новый блокнот(notebook).Импортировали необходимые для работы библиотеки и модули." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-DCgEGsYsoYC", "outputId": "20a3d23b-9c7b-48ed-879c-94566f941abf" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mounted at /content/drive\n" ] } ], "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "d_PBQzt4tJZR" }, "outputs": [], "source": [ "import os\n", "os.chdir('/content/drive/MyDrive/Colab Notebooks')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "3CXe-VyvtL58" }, "outputs": [], "source": [ "from tensorflow import keras\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import sklearn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 2\n", "Загрузили набор данных MNIST, содержащий размеченные изображения рукописных цифр." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "8JN-5gWat1jO" }, "outputs": [], "source": [ "from keras.datasets import mnist" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 3\n", "Разбили набор данных на обучающие и тестовые данные в соотношении 60000:10000 элементов. При разбиении параметр random_state выбрали 27.\n", "Вывели размерности полученных обучающих и тестовых массивов данных." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_U6Rq7kUupd0", "outputId": "f90848d4-7947-4c2d-cce1-09270347b6f6" }, "outputs": [ { "name": "stdout", "output_type": "stream", "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[1m1s\u001b[0m 0us/step\n", "Shape of X train: (60000, 28, 28)\n", "Shape of y train: (60000,)\n" ] } ], "source": [ "(X_train,y_train),(X_test,y_test)=mnist.load_data()\n", "from sklearn.model_selection import train_test_split\n", "#объединяем в один набор\n", "X=np.concatenate((X_train,X_test))\n", "y=np.concatenate((y_train,y_test))\n", "#разбиваем по вариантам\n", "X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=10000,train_size=60000,random_state=27)\n", "#вывод размерностей\n", "print('Shape of X train:',X_train.shape)\n", "print('Shape of y train:',y_train.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 4\n", "Вывели первые 4 элемента обучающих данных" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "BwqjrGdmu5l4", "outputId": "64d3532d-ed21-4299-8174-058d485b0a59" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] }, { "data": { "image/png": "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QYAAACYIEADABAECAJggQAAAE7wZKTBEjB8/PuI9q1ev7tfXOnjwYL/2AZHgCggAYIIAAQBMRBygkydPaunSpfL7/UpISNCRI0fC7nfOaefOncrKytKoUaNUUFCgCxcuRGteAECciDhAnZ2dmj17tkpLS3u9f/fu3XrjjTf05ptv6tSpUxo9erQWL16srq6uAQ8LAIgfEb8IobCwUIWFhb3e55zTnj179KMf/UjLli2TJL311lvKzMzUkSNHtGbNmoFNCwCIG1F9DqipqUltbW0qKCgI3eb1epWbm6vq6upe93R3dysYDIYtAED8i2qA2traJEmZmZlht2dmZobu+6ySkhJ5vd7Qys7OjuZIAIBByvxVcMXFxQoEAqHV0tJiPRIA4D6IaoB8Pp8kqb29Pez29vb20H2f5fF4lJKSErYAAPEvqgHKycmRz+dTRUVF6LZgMKhTp04pLy8vml8KADDERfwquGvXrqmhoSH0cVNTk+rq6pSWlqYJEyZo69at+ulPf6qpU6cqJydHL7/8svx+v5YvXx7NuQEAQ1zEATpz5oyefvrp0Mfbt2+XJK1du1ZlZWXasWOHOjs7tXHjRnV0dOjJJ59UeXm5Ro4cGb2pAQBDXoJzzlkP8b+CwaC8Xq/1GHhA9efNO99+++2I9yQm3p/X//z973/v177HH388ypPgQRQIBO76vL75q+AAAA8mAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmODdsIEBam1tjXhPRkZGDCa5E++GDUu8GzYAYFAiQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJgYbj0AgNiZMmVKv/bNnz8/4j2nT5/u19fCg4srIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABG9GCsSx0aNH92tfampqdAcBesEVEADABAECAJiIOEAnT57U0qVL5ff7lZCQoCNHjoTdv27dOiUkJIStJUuWRGteAECciDhAnZ2dmj17tkpLS/s8ZsmSJWptbQ2tAwcODGhIAED8ifhFCIWFhSosLLzrMR6PRz6fr99DAQDiX0yeA6qsrFRGRoamTZumzZs368qVK30e293drWAwGLYAAPEv6gFasmSJ3nrrLVVUVOi1115TVVWVCgsLdevWrV6PLykpkdfrDa3s7OxojwQAGISi/veA1qxZE/rzzJkzNWvWLE2ePFmVlZVauHDhHccXFxdr+/btoY+DwSARAoAHQMxfhj1p0iSlp6eroaGh1/s9Ho9SUlLCFgAg/sU8QBcvXtSVK1eUlZUV6y8FABhCIv4R3LVr18KuZpqamlRXV6e0tDSlpaXp1Vdf1apVq+Tz+dTY2KgdO3ZoypQpWrx4cVQHBwAMbREH6MyZM3r66adDH3/6/M3atWu1d+9enTt3Tr/73e/U0dEhv9+vRYsW6Sc/+Yk8Hk/0pgYADHkRB2jBggVyzvV5/x//+McBDQQAeDDwXnAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADAxHDrAYCh7vLlyxHvycjIiMEkwNDCFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYII3IwUGqKysLOI9v/jFL6I/CDDEcAUEADBBgAAAJiIKUElJiebNm6fk5GRlZGRo+fLlqq+vDzumq6tLRUVFGjNmjB5++GGtWrVK7e3tUR0aADD0RRSgqqoqFRUVqaamRsePH9fNmze1aNEidXZ2ho7Ztm2b3nvvPR06dEhVVVW6dOmSVq5cGfXBAQBDW0QvQigvLw/7uKysTBkZGaqtrVV+fr4CgYB++9vfav/+/XrmmWckSfv27dMXv/hF1dTU6Ctf+Ur0JgcADGkDeg4oEAhIktLS0iRJtbW1unnzpgoKCkLHTJ8+XRMmTFB1dXWvn6O7u1vBYDBsAQDiX78D1NPTo61bt+qJJ57QjBkzJEltbW1KSkpSampq2LGZmZlqa2vr9fOUlJTI6/WGVnZ2dn9HAgAMIf0OUFFRkc6fP6933313QAMUFxcrEAiEVktLy4A+HwBgaOjXX0TdsmWLjh07ppMnT2r8+PGh230+n27cuKGOjo6wq6D29nb5fL5eP5fH45HH4+nPGACAISyiKyDnnLZs2aLDhw/rxIkTysnJCbt/7ty5GjFihCoqKkK31dfXq7m5WXl5edGZGAAQFyK6AioqKtL+/ft19OhRJScnh57X8Xq9GjVqlLxer9avX6/t27crLS1NKSkpeuGFF5SXl8cr4AAAYSIK0N69eyVJCxYsCLt93759WrdunSTpl7/8pRITE7Vq1Sp1d3dr8eLF+vWvfx2VYQEA8SOiADnn7nnMyJEjVVpaqtLS0n4PBQCIf7wXHADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEz06zeiAohvGzdujHjPn/70pxhMgnjGFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYII3IwUG6G9/+1vEe3p6eiLek5h4//5/cenSpRHvmTNnTsR76urqIt6D+MEVEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgIsE556yH+F/BYFBer9d6DADAAAUCAaWkpPR5P1dAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwEREASopKdG8efOUnJysjIwMLV++XPX19WHHLFiwQAkJCWFr06ZNUR0aADD0RRSgqqoqFRUVqaamRsePH9fNmze1aNEidXZ2hh23YcMGtba2htbu3bujOjQAYOgbHsnB5eXlYR+XlZUpIyNDtbW1ys/PD93+0EMPyefzRWdCAEBcGtBzQIFAQJKUlpYWdvs777yj9PR0zZgxQ8XFxbp+/Xqfn6O7u1vBYDBsAQAeAK6fbt265b7+9a+7J554Iuz23/zmN668vNydO3fOvf32227cuHFuxYoVfX6eXbt2OUksFovFirMVCATu2pF+B2jTpk1u4sSJrqWl5a7HVVRUOEmuoaGh1/u7urpcIBAIrZaWFvOTxmKxWKyBr3sFKKLngD61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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAG4VJREFUeJzt3X9sVfX9x/HXLdLLr/Z2tbS3lR8WUHDyYxmTrkEYhoa2MwaQbeKMg81AYIWpTFxqpuhc0o39chqm+0t0E1CTAdMsZFhsiVogIIQxpaNNGXWlRdh6LxRaSPv5/kG8X6+UH+dyb9/t7fORfJLec877nrcfD3313HvuuT7nnBMAAD0sxboBAED/RAABAEwQQAAAEwQQAMAEAQQAMEEAAQBMEEAAABMEEADAxA3WDXxRV1eXmpqalJaWJp/PZ90OAMAj55xOnz6tvLw8paRc/jyn1wVQU1OTRo4cad0GAOA6NTY2asSIEZdd3+tegktLS7NuAQAQB1f7fZ6wAFq3bp1uvvlmDRo0SAUFBdqzZ8811fGyGwAkh6v9Pk9IAL3++utatWqV1qxZow8//FBTpkxRcXGxTpw4kYjdAQD6IpcA06ZNc2VlZZHHnZ2dLi8vz1VUVFy1NhQKOUkMBoPB6OMjFApd8fd93M+Azp8/r3379qmoqCiyLCUlRUVFRaqpqblk+46ODoXD4agBAEh+cQ+gkydPqrOzUzk5OVHLc3Jy1NzcfMn2FRUVCgQCkcEVcADQP5hfBVdeXq5QKBQZjY2N1i0BAHpA3D8HlJWVpQEDBqilpSVqeUtLi4LB4CXb+/1++f3+eLcBAOjl4n4GlJqaqqlTp6qysjKyrKurS5WVlSosLIz37gAAfVRC7oSwatUqLVq0SF/72tc0bdo0Pffcc2pra9P3v//9ROwOANAHJSSA7rvvPn366ad66qmn1NzcrK985Svatm3bJRcmAAD6L59zzlk38XnhcFiBQMC6DQDAdQqFQkpPT7/sevOr4AAA/RMBBAAwQQABAEwQQAAAEwQQAMAEAQQAMEEAAQBMEEAAABMEEADABAEEADBBAAEATBBAAAATBBAAwAQBBAAwQQABAEwQQAAAEwQQAMAEAQQAMEEAAQBMEEAAABMEEADABAEEADBBAAEATBBAAAATBBAAwAQBBAAwQQABAEwQQAAAEwQQAMAEAQQAMEEAAQBMEEAAABMEEADABAEEADBBAAEATBBAAAATBBAAwAQBBAAwQQABAEwQQAAAEwQQAMAEAQQAMEEAAQBMEEAAABMEEADABAEEADBBAAEATBBAAAATBBAAwAQBBAAwQQABAEwQQAAAEzdYNwB7ubm5MdU9++yznmuKioo818yaNctzzdGjRz3X9KTU1FTPNX6/33NNV1eX5xpJamtri6kO8IIzIACACQIIAGAi7gH09NNPy+fzRY0JEybEezcAgD4uIe8B3X777XrnnXf+fyc38FYTACBaQpLhhhtuUDAYTMRTAwCSRELeAzpy5Ijy8vI0ZswYPfDAAzp27Nhlt+3o6FA4HI4aAIDkF/cAKigo0Pr167Vt2za9+OKLamho0IwZM3T69Olut6+oqFAgEIiMkSNHxrslAEAvFPcAKi0t1be//W1NnjxZxcXF+tvf/qbW1la98cYb3W5fXl6uUCgUGY2NjfFuCQDQCyX86oCMjAzdeuutqqur63a93++P6QN2AIC+LeGfAzpz5ozq6+tj/rQ9ACA5xT2AHnvsMVVXV+vo0aP64IMPNH/+fA0YMED3339/vHcFAOjD4v4S3CeffKL7779fp06d0vDhw3XnnXdq165dGj58eLx3BQDow+IeQJs2bYr3U8KD9PR0zzV///vfY9rXbbfd5rnm/Pnznmuys7M91/T2m5E++eSTnmueeOIJzzVNTU2eayRxNSp6BPeCAwCYIIAAACYIIACACQIIAGCCAAIAmCCAAAAmCCAAgAkCCABgggACAJgggAAAJgggAIAJAggAYCLhX0iHnvWd73zHc00sNxWN1Zo1azzX7NmzJwGd2PrRj37UI/tpbW3tkf0AseAMCABgggACAJgggAAAJgggAIAJAggAYIIAAgCYIIAAACYIIACACQIIAGCCAAIAmCCAAAAmCCAAgAkCCABggrthJ5n6+nrrFq7oH//4h3ULvcLmzZs91zz44IOea1paWjzXAD2FMyAAgAkCCABgggACAJgggAAAJgggAIAJAggAYIIAAgCYIIAAACYIIACACQIIAGCCAAIAmCCAAAAmuBlpkpk8ebJ1C7gGtbW1PbKf8ePH98h+gFhwBgQAMEEAAQBMEEAAABMEEADABAEEADBBAAEATBBAAAATBBAAwAQBBAAwQQABAEwQQAAAEwQQAMAENyNNMmPGjLFu4Yry8/OtWwDQS3AGBAAwQQABAEx4DqCdO3fqnnvuUV5ennw+n7Zs2RK13jmnp556Srm5uRo8eLCKiop05MiRePULAEgSngOora1NU6ZM0bp167pdv3btWj3//PN66aWXtHv3bg0dOlTFxcVqb2+/7mYBAMnD80UIpaWlKi0t7Xadc07PPfecfvrTn2ru3LmSpFdffVU5OTnasmWLFi5ceH3dAgCSRlzfA2poaFBzc7OKiooiywKBgAoKClRTU9NtTUdHh8LhcNQAACS/uAZQc3OzJCknJydqeU5OTmTdF1VUVCgQCETGyJEj49kSAKCXMr8Krry8XKFQKDIaGxutWwIA9IC4BlAwGJQktbS0RC1vaWmJrPsiv9+v9PT0qAEASH5xDaD8/HwFg0FVVlZGloXDYe3evVuFhYXx3BUAoI/zfBXcmTNnVFdXF3nc0NCgAwcOKDMzU6NGjdIjjzyin//857rllluUn5+vJ598Unl5eZo3b148+wYA9HGeA2jv3r266667Io9XrVolSVq0aJHWr1+vxx9/XG1tbVq6dKlaW1t15513atu2bRo0aFD8ugYA9Hk+55yzbuLzwuGwAoGAdRt91vLlyz3XvPDCCwnopHsff/yx55rP/8FzrU6ePOm5pif99a9/9Vxz9913e65pamryXCOJq1ERF6FQ6Irv65tfBQcA6J8IIACACQIIAGCCAAIAmCCAAAAmCCAAgAkCCABgggACAJgggAAAJgggAIAJAggAYIIAAgCYIIAAACY8fx0DercNGzZ4rnn44Ydj2te4ceM819x2222eayZMmOC55r333vNc05Nqamo818RyN2ygN+MMCABgggACAJgggAAAJgggAIAJAggAYIIAAgCYIIAAACYIIACACQIIAGCCAAIAmCCAAAAmCCAAgAluRppkQqGQ55qFCxfGtK+9e/fGVOfVypUrPdf09puR9pShQ4fGVPflL3/Zc81HH33kuWbu3Lmea0aNGuW55gc/+IHnGkmaP3++55qjR4/GtK/+iDMgAIAJAggAYIIAAgCYIIAAACYIIACACQIIAGCCAAIAmCCAAAAmCCAAgAkCCABgggACAJgggAAAJnzOOWfdxOeFw2EFAgHrNvqVcePGxVR3+PDhOHfSvX/961+ea+66666Y9tXS0hJTnVepqamea86dO+e5JtZ/3qtXr/ZcM2jQIM81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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "4\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGs9JREFUeJzt3X9s1PUdx/FXi/T4YXtYS3u9UbCgyJAfZgxqI6KGrrRLiAjb+DUDC5Pgihl2/lgXBd2WdMPMEReG/8FMRBQViCRjkWpL3AoGhDE2qbSrA1JakKR3pUBh9LM/iDdPCvg97vpur89H8k3o3ffTe/v1wpNv++23Kc45JwAAulmq9QAAgL6JAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABM3WQ/wVZ2dnWpqalJ6erpSUlKsxwEAeOScU1tbm4LBoFJTr36e0+MC1NTUpLy8POsxAAA36NixYxo2bNhVn+9xX4JLT0+3HgEAEAfX+/s8YQFau3atbrvtNg0YMEAFBQX66KOPvtY6vuwGAMnhen+fJyRAb7zxhsrLy7Vq1Sp9/PHHmjhxombMmKGTJ08m4uUAAL2RS4ApU6a4srKyyMeXLl1ywWDQVVZWXndtKBRyktjY2NjYevkWCoWu+fd93M+ALly4oH379qmoqCjyWGpqqoqKilRbW3vF/h0dHQqHw1EbACD5xT1An3/+uS5duqScnJyox3NyctTc3HzF/pWVlfL7/ZGNK+AAoG8wvwquoqJCoVAosh07dsx6JABAN4j7zwFlZWWpX79+amlpiXq8paVFgUDgiv19Pp98Pl+8xwAA9HBxPwNKS0vTpEmTVFVVFXmss7NTVVVVKiwsjPfLAQB6qYTcCaG8vFyLFi3St7/9bU2ZMkVr1qxRe3u7fvSjHyXi5QAAvVBCAjR37lydOnVKK1euVHNzs+6++27t2LHjigsTAAB9V4pzzlkP8WXhcFh+v996DADADQqFQsrIyLjq8+ZXwQEA+iYCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGAi7gF6/vnnlZKSErWNGTMm3i8DAOjlbkrEJ73rrru0c+fO/7/ITQl5GQBAL5aQMtx0000KBAKJ+NQAgCSRkO8BHTlyRMFgUCNHjtTChQt19OjRq+7b0dGhcDgctQEAkl/cA1RQUKANGzZox44dWrdunRobG3Xfffepra2ty/0rKyvl9/sjW15eXrxHAgD0QCnOOZfIF2htbdWIESP00ksvacmSJVc839HRoY6OjsjH4XCYCAFAEgiFQsrIyLjq8wm/OmDIkCEaPXq06uvru3ze5/PJ5/MlegwAQA+T8J8DOnPmjBoaGpSbm5volwIA9CJxD9CTTz6pmpoaffbZZ/rb3/6mhx9+WP369dP8+fPj/VIAgF4s7l+CO378uObPn6/Tp09r6NChmjp1qnbv3q2hQ4fG+6UAAL1Ywi9C8CocDsvv91uPAQC4Qde7CIF7wQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJhL+C+kAC7fccktM62bPnu15zXe+8x3Pa0pKSjyvieUmvbHea/itt97yvOYHP/hBTK+FvoszIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJhIcbHeLjdBwuFwTHf9RfLKzMz0vObPf/5zTK81efJkz2sOHz7sec2nn37qeU0sRo0aFdO6sWPHel4zf/58z2vefPNNz2vQe4RCIWVkZFz1ec6AAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATN1kPgL6lu24sOnr0aM9rJGnhwoWe12zevNnzmv/+97+e18Titttui2ndv//9b89rpk6d6nkNNyPt2zgDAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMcDNSdKuxY8d6XjN58mTPa4qLiz2vkaSdO3fGtK6nOnfuXEzrQqGQ5zU5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A7w/rjRy5EhlZWUl5ftj+fLl2r59uz744IOoX98SCAR04cIFtba2Ru2frO+Hqx2HrhQUFEhSj3o/9PgApaWladKkSaqqqoo81tnZqaqqKhUWFhpOZu/MmTNqaGhQbm6u9Shm8vPzFQgEot4f4XBYe/bs6fPvj+PHj+v06dNJ9f5wzmn58uXasmWL3n//feXn50c9P2nSJPXv3z/q/VBXV6ejR48m1fvhesehKwcOHJCknvV+sL4K4uvYtGmT8/l8bsOGDe5f//qXW7p0qRsyZIhrbm62Hq1b/exnP3PV1dWusbHR/fWvf3VFRUUuKyvLnTx50nq0hGpra3P79+93+/fvd5LcSy+95Pbv3+/+85//OOec+81vfuOGDBnitm3b5g4ePOgeeughl5+f786dO2c8eXxd6zi0tbW5J5980tXW1rrGxka3c+dO961vfcvdcccd7vz589ajx81jjz3m/H6/q66udidOnIhsZ8+ejeyzbNkyN3z4cPf++++7vXv3usLCQldYWGg4dfxd7zjU19e7X/7yl27v3r2usbHRbdu2zY0cOdJNmzbNePJovSJAzjn3hz/8wQ0fPtylpaW5KVOmuN27d1uP1O3mzp3rcnNzXVpamvvGN77h5s6d6+rr663HSrgPPvjASbpiW7RokXPu8qXYzz33nMvJyXE+n89Nnz7d1dXV2Q6dANc6DmfPnnXFxcVu6NChrn///m7EiBHu0UcfTbp/pHX13y/JrV+/PrLPuXPn3E9+8hN3yy23uEGDBrmHH37YnThxwm7oBLjecTh69KibNm2ay8zMdD6fz91+++3uqaeecqFQyHbwr+DXMQAATPT47wEBAJITAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGDif0cJiBAHcBeQAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "9\n" ] } ], "source": [ "#вывод изображения\n", "plt.imshow(X_train[1],cmap=plt.get_cmap('gray'))\n", "plt.show()\n", "print(y_train[1])\n", "\n", "plt.imshow(X_train[2],cmap=plt.get_cmap('gray'))\n", "plt.show()\n", "print(y_train[2])\n", "\n", "plt.imshow(X_train[3],cmap=plt.get_cmap('gray'))\n", "plt.show()\n", "print(y_train[3])\n", "\n", "plt.imshow(X_train[4],cmap=plt.get_cmap('gray'))\n", "plt.show()\n", "print(y_train[4])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 5\n", "Провели предобработку данных: привели обучающие и тестовые данные к формату, пригодному для обучения нейронной сети.\n", "Входные данные должны принимать значения от 0 до 1, метки цифрдолжны быть закодированы по принципу «one-hotencoding».Вывели размерности предобработанных обучающих и тестовых массивов данных." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Sz36waQWvhMQ", "outputId": "a1907b4e-1a6f-48cf-8200-02c46fa202c9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "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": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "fcw5RmMLwHM7", "outputId": "b59347dd-c2f6-470c-ff14-e714be2e145f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape of transformed y train: (60000, 10)\n" ] } ], "source": [ "#переведем метки в one-hot\n", "import keras.utils\n", "y_train=keras.utils.to_categorical(y_train)\n", "y_test=keras.utils.to_categorical(y_test)\n", "print('Shape of transformed y train:',y_train.shape)\n", "num_classes=y_train.shape[1]\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 6\n", "Реализовали модель однослойной нейронной сети и обучили ее на обучающих данных с выделением части обучающих данных в качестве валидационных. Вывели информацию об архитектуре нейронной сети. Вывели график функции ошибки на обучающих и валидационных данных по эпохам." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ML_x518TxArP", "outputId": "58f581f5-4b5e-4256-ce9e-9b1f073558dc" }, "outputs": [ { "name": "stderr", "output_type": "stream", "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": [ "from keras.models import Sequential\n", "from keras.layers import Dense\n", "\n", "model_1 = Sequential()\n", "model_1.add(Dense(units=num_classes, input_dim=num_pixels, activation='softmax'))\n", "model_1.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 187 }, "id": "61n2juVFxFov", "outputId": "e238c496-f73a-48be-dc33-c09af56437e1" }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential\"\n",
              "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense (Dense)                   │ (None, 10)             │         7,850 │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ 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" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 7,850 (30.66 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 7,850 (30.66 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "print(model_1.summary())" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "tH3zXiCCz6Jz", "outputId": "21eb71d2-2790-4196-f0f5-eeed85f6e2d1" }, "outputs": [ { "name": "stdout", "output_type": "stream", "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.6997 - loss: 1.1841 - val_accuracy: 0.8700 - val_loss: 0.5217\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.8749 - loss: 0.4929 - val_accuracy: 0.8850 - val_loss: 0.4360\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.8909 - loss: 0.4140 - val_accuracy: 0.8893 - val_loss: 0.4007\n", "Epoch 4/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8952 - loss: 0.3887 - val_accuracy: 0.8932 - val_loss: 0.3809\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.9001 - loss: 0.3671 - val_accuracy: 0.8973 - val_loss: 0.3675\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.9057 - loss: 0.3505 - val_accuracy: 0.9012 - val_loss: 0.3575\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.9059 - loss: 0.3443 - val_accuracy: 0.9007 - val_loss: 0.3528\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.9101 - loss: 0.3316 - val_accuracy: 0.9017 - val_loss: 0.3450\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.9105 - loss: 0.3246 - val_accuracy: 0.9042 - val_loss: 0.3406\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.9101 - loss: 0.3215 - val_accuracy: 0.9052 - val_loss: 0.3360\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.9143 - loss: 0.3177 - val_accuracy: 0.9058 - val_loss: 0.3321\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.9118 - loss: 0.3145 - val_accuracy: 0.9075 - val_loss: 0.3299\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.9154 - loss: 0.3083 - val_accuracy: 0.9092 - val_loss: 0.3260\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.9138 - loss: 0.3097 - val_accuracy: 0.9090 - val_loss: 0.3246\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.9138 - loss: 0.3087 - val_accuracy: 0.9112 - val_loss: 0.3225\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.9181 - loss: 0.2983 - val_accuracy: 0.9117 - val_loss: 0.3203\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.9181 - loss: 0.2956 - val_accuracy: 0.9118 - val_loss: 0.3197\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.9197 - loss: 0.2950 - val_accuracy: 0.9115 - val_loss: 0.3175\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.9187 - loss: 0.2939 - val_accuracy: 0.9142 - val_loss: 0.3168\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.9181 - loss: 0.2940 - val_accuracy: 0.9142 - val_loss: 0.3142\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.9184 - loss: 0.2963 - val_accuracy: 0.9157 - val_loss: 0.3131\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.9193 - loss: 0.2908 - val_accuracy: 0.9147 - val_loss: 0.3126\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.9186 - loss: 0.2892 - val_accuracy: 0.9137 - val_loss: 0.3116\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.9180 - loss: 0.2937 - val_accuracy: 0.9142 - val_loss: 0.3109\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.9185 - loss: 0.2873 - val_accuracy: 0.9162 - val_loss: 0.3094\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.9178 - loss: 0.2903 - val_accuracy: 0.9153 - val_loss: 0.3089\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.9217 - loss: 0.2856 - val_accuracy: 0.9147 - val_loss: 0.3085\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.9224 - loss: 0.2817 - val_accuracy: 0.9143 - val_loss: 0.3081\n", "Epoch 29/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9223 - loss: 0.2778 - val_accuracy: 0.9153 - val_loss: 0.3068\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.9214 - loss: 0.2830 - val_accuracy: 0.9162 - val_loss: 0.3065\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.9213 - loss: 0.2863 - val_accuracy: 0.9160 - val_loss: 0.3055\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.9223 - loss: 0.2842 - val_accuracy: 0.9172 - val_loss: 0.3048\n", "Epoch 33/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9219 - loss: 0.2815 - val_accuracy: 0.9152 - val_loss: 0.3052\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.9213 - loss: 0.2806 - val_accuracy: 0.9167 - val_loss: 0.3040\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.9226 - loss: 0.2752 - val_accuracy: 0.9172 - val_loss: 0.3033\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.9212 - loss: 0.2772 - val_accuracy: 0.9157 - val_loss: 0.3030\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.9233 - loss: 0.2755 - val_accuracy: 0.9165 - val_loss: 0.3020\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.9232 - loss: 0.2731 - val_accuracy: 0.9173 - val_loss: 0.3018\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.9238 - loss: 0.2715 - val_accuracy: 0.9167 - val_loss: 0.3020\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.9208 - loss: 0.2788 - val_accuracy: 0.9160 - val_loss: 0.3013\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.9240 - loss: 0.2747 - val_accuracy: 0.9177 - val_loss: 0.3007\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.9227 - loss: 0.2743 - val_accuracy: 0.9177 - val_loss: 0.3016\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.9253 - loss: 0.2735 - val_accuracy: 0.9160 - val_loss: 0.3014\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.9243 - loss: 0.2725 - val_accuracy: 0.9168 - val_loss: 0.3009\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.9220 - loss: 0.2814 - val_accuracy: 0.9177 - val_loss: 0.2994\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.9232 - loss: 0.2769 - val_accuracy: 0.9173 - val_loss: 0.2995\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.9238 - loss: 0.2764 - val_accuracy: 0.9170 - val_loss: 0.2992\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.9258 - loss: 0.2670 - val_accuracy: 0.9177 - val_loss: 0.2993\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.9237 - loss: 0.2779 - val_accuracy: 0.9173 - val_loss: 0.2989\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.9254 - loss: 0.2661 - val_accuracy: 0.9172 - val_loss: 0.2989\n" ] } ], "source": [ "# Обучаем модель\n", "H = model_1.fit(X_train, y_train, validation_split=0.1, epochs=50)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "r1loIi8R1Zgj", "outputId": "666afae1-b55b-4f6c-fafb-2c5e720d3133" }, "outputs": [ { "data": { "image/png": "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vwyz2YyOHTvik08+QWpqKrKysrBt2za8++67KCkpQZs2bfDqq69izJgxtda32WyG0WjEgAEDavw86zMAWbFwo9PpkJKSgnXr1mH06NEApOS5bt26C47+rqioqBFg3M1WF2oG1Ov10OtrNqNotVqf/wfDpNOgzOKA1SnwP0Yy8sfPki6M9S0v1vfFORwOCIIAlUrVqLEy7q4R97Xk0KVLlxpjTO+9994ax7Vr1w7r16/32nb+38ljx455va/tb2Jdp1O4/vrra5x/++234/bbb6/1+AEDBmDDhg217uvevTt++KHmnWsXqm+VSgVBEGr9va/PvwNFu6XS09MxadIk9OnTB3379sWCBQtQXl6OKVOmAADuuecexMfHY+7cuQCAUaNGYf78+ejdu7enW2rmzJkYNWpUjb45JbgHklXaeD84ERGRUhQNN+PGjUNBQQGeffZZ5ObmolevXli9erVnkHFOTo5XonvmmWcgCAKeeeYZnDx5EtHR0Rg1ahReeOEFpb6CF/ezbir5sBsiIrpMPfDAA1i6dGmt++6++24sWrRI5hL5nuIDiqdPn37Bbqjzm7k0Gg1mzZqFWbNmyVCy+nPfDl7BcENERJep5557Dk888USt+3w9FlUpioebQMJuKSIiutzFxMTUOgtAIOHDWHyILTdERETKY7jxIbbcEBERKY/hxoeMbLkhIiJSHMOND5l4txQREZHiGG58iN1SREREymO48SEOKCYiIrkkJSVhwYIFdTpWEAR88803fi3P5YThxof4ED8iIiLlMdz4kLtbqoLdUkRERIphuPEhDigmIqK6eO+999CqVSvPBJJut9xyC+69914cPnwYt9xyC2JjYxEcHIyrrroKa9eu9dnn7927F9dffz2MRiMiIyMxdepUlJWVefZv2LABffv2RVBQEMLDw9G/f38cP34cALBnzx4MGjTIM2t4SkoKduzY4bOy+QLDjQ95uqXYckNEpBxRBKzl9V9sFQ07r/pSy2zctbn99ttx5swZ/Pjjj55tRUVFWL16NSZMmICysjKMHDkS69atw65duzBixAiMGjUKOTk5ja6e8vJyDB8+HC1atMD27dvxxRdfYO3atZ6pkOx2O0aPHo3rrrsOv/32G7Zs2YKpU6dCEAQAwIQJE5CQkIDt27cjMzMTTz311GU3cz2nX/Ahk5YtN0REirNVAC+2qtcpKgDhvvjsf54CdEGXPKxFixa44YYb8Omnn2Lw4MEAgC+//BJRUVEYNGgQVCoVkpOTPcf/61//wvLly/Hdd99dcD7Guvr0009hNpvxf//3fwgKksr61ltvYdSoUXj55Zeh1Wpx7tw53HTTTWjfvj0AoGvXrp7zc3Jy8OSTT6JLly4AgI4dOzaqPP7AlhsfMmil6mTLDRERXcqECRPw1VdfwWKxAAA++eQT3HnnnVCpVCgrK8MTTzyBrl27Ijw8HMHBwcjKyvJJy01WVhaSk5M9wQYA+vfvD6fTiezsbERERGDy5MkYPnw4Ro0ahddffx2nT5/2HJueno777rsPQ4YMwUsvvYTDhw83uky+xpYbH+Kt4ERElwGtSWpBqQen04mS0lKEhoRApWrE//drTXU+dNSoURBFEStWrMBVV12Fn3/+Ga+99hoA4IknnkBGRgZeffVVdOjQAUajEbfddhusVmvDy1YPH374IR555BGsXr0ay5YtwzPPPIOMjAxcffXVmD17NsaPH48VK1Zg1apVmDVrFj7//HPceuutspStLhhufIhjboiILgOCUKeuIS9OJ6B1SOc1JtzUg8FgwJgxY/DJJ5/g0KFD6Ny5M6688koAwObNmzF58mRPYCgrK8OxY8d88rldu3bFRx99hPLyck/rzebNm6FSqdC5c2fPcb1790bv3r0xY8YMpKWl4dNPP8XVV18NAOjUqRM6deqExx9/HHfddRc+/PDDyyrcsFvKh9xjbsw2J5zOug0qIyKi5mvChAlYsWIFlixZggkTJni2d+zYEV9//TV2796NPXv2YPz48TXurGrMZxoMBkyaNAn79u3Djz/+iIcffhgTJ05EbGwsjh49ihkzZmDLli04fvw41qxZg4MHD6Jr166orKzE9OnTsWHDBhw/fhybN2/G9u3bvcbkXA7YcuND7pYbQGq9CdKzeomI6MKuv/56REREIDs7G+PHj/dsnz9/Pu69917069cPUVFR+Mc//oGSkhKffKbJZMIPP/yARx99FFdddRVMJhPGjh2L+fPne/bv378fH3/8Mc6cOYOWLVti2rRp+Otf/wq73Y4zZ87gnnvuQV5eHqKiojBmzBjMmTPHJ2XzFf719SGDpircVFgZboiI6OJUKhVOnao5PigpKQnr16/32jZt2jSv9/XpphLPu0W9R48eNa7vFhsbi+XLl9e6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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# вывод графика ошибки по эпохам\n", "plt.plot(H.history['loss'])\n", "plt.plot(H.history['val_loss'])\n", "plt.grid()\n", "plt.xlabel('Epochs')\n", "plt.ylabel('loss')\n", "plt.legend(['train_loss', 'val_loss'])\n", "plt.title('Loss by epochs')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 7\n", "Применили обученную модель к тестовым данным. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nTl_0Yr71f0D", "outputId": "cc6deacc-d947-41c7-f25a-ed36489e5aef" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9199 - loss: 0.2956\n", "Loss on test data: 0.2802773714065552\n", "Accuracy on test data: 0.9199000000953674\n" ] } ], "source": [ "# Оценка качества работы модели на тестовых данных\n", "scores = model_1.evaluate(X_test, y_test)\n", "print('Loss on test data:', scores[0])\n", "print('Accuracy on test data:', scores[1])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 8\n", "Добавили в модель один скрытый и провели обучение и тестирование при 100, 300, 500 нейронах в скрытом слое. По метрике качества классификации на тестовых данных выбрали наилучшее количество нейронов в скрытом слое. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "При 100 нейронах" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 221 }, "id": "-FaBZhIg2Bki", "outputId": "315a746c-3a2a-4568-c89d-ec4d8fba40e5" }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential_1\"\n",
              "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential_1\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "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" ], "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" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 79,510 (310.59 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 79,510 (310.59 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "# создаем модель\n", "model_1h100 = Sequential()\n", "model_1h100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n", "model_1h100.add(Dense(units=num_classes, activation='softmax'))\n", "# компилируем модель\n", "model_1h100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", "\n", "# вывод информации об архитектуре модели\n", "print(model_1h100.summary())\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9GyB4ADg2FQX", "outputId": "a88cf999-3e2c-4011-ed3b-9f8fbcd8acf7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "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.5186 - loss: 1.8903 - val_accuracy: 0.8175 - val_loss: 0.9782\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.8339 - loss: 0.8547 - val_accuracy: 0.8592 - val_loss: 0.6317\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.8692 - loss: 0.5860 - val_accuracy: 0.8738 - val_loss: 0.5115\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.8823 - loss: 0.4847 - val_accuracy: 0.8818 - val_loss: 0.4504\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.8907 - loss: 0.4308 - val_accuracy: 0.8892 - val_loss: 0.4150\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.8948 - loss: 0.3960 - val_accuracy: 0.8913 - val_loss: 0.3912\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.8978 - loss: 0.3748 - val_accuracy: 0.8945 - val_loss: 0.3739\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.9010 - loss: 0.3571 - val_accuracy: 0.8983 - val_loss: 0.3602\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.9028 - loss: 0.3477 - val_accuracy: 0.8993 - val_loss: 0.3502\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.9091 - loss: 0.3322 - val_accuracy: 0.9018 - val_loss: 0.3407\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.9087 - loss: 0.3268 - val_accuracy: 0.9050 - val_loss: 0.3326\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.9085 - loss: 0.3194 - val_accuracy: 0.9057 - val_loss: 0.3265\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.9109 - loss: 0.3084 - val_accuracy: 0.9078 - val_loss: 0.3207\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.9157 - loss: 0.2978 - val_accuracy: 0.9103 - val_loss: 0.3158\n", "Epoch 15/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9160 - loss: 0.2927 - val_accuracy: 0.9108 - val_loss: 0.3105\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.9172 - loss: 0.2932 - val_accuracy: 0.9105 - val_loss: 0.3060\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.9169 - loss: 0.2889 - val_accuracy: 0.9145 - val_loss: 0.3008\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.9190 - loss: 0.2850 - val_accuracy: 0.9133 - val_loss: 0.2973\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.9211 - loss: 0.2770 - val_accuracy: 0.9170 - val_loss: 0.2930\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.9223 - loss: 0.2749 - val_accuracy: 0.9172 - val_loss: 0.2900\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.9237 - loss: 0.2708 - val_accuracy: 0.9173 - val_loss: 0.2866\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.9251 - loss: 0.2617 - val_accuracy: 0.9188 - val_loss: 0.2831\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.9234 - loss: 0.2692 - val_accuracy: 0.9190 - val_loss: 0.2800\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.9250 - loss: 0.2635 - val_accuracy: 0.9207 - val_loss: 0.2763\n", "Epoch 25/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9271 - loss: 0.2546 - val_accuracy: 0.9217 - val_loss: 0.2734\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.9268 - loss: 0.2570 - val_accuracy: 0.9212 - val_loss: 0.2707\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.9283 - loss: 0.2493 - val_accuracy: 0.9228 - val_loss: 0.2673\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.9280 - loss: 0.2467 - val_accuracy: 0.9240 - val_loss: 0.2648\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.9292 - loss: 0.2445 - val_accuracy: 0.9238 - val_loss: 0.2625\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.9321 - loss: 0.2365 - val_accuracy: 0.9248 - val_loss: 0.2589\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.9322 - loss: 0.2420 - val_accuracy: 0.9258 - val_loss: 0.2565\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.9332 - loss: 0.2368 - val_accuracy: 0.9267 - val_loss: 0.2535\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.9356 - loss: 0.2292 - val_accuracy: 0.9280 - val_loss: 0.2511\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.9343 - loss: 0.2272 - val_accuracy: 0.9277 - val_loss: 0.2491\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.9373 - loss: 0.2226 - val_accuracy: 0.9288 - val_loss: 0.2456\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.9376 - loss: 0.2225 - val_accuracy: 0.9287 - val_loss: 0.2441\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.9357 - loss: 0.2244 - val_accuracy: 0.9293 - val_loss: 0.2412\n", "Epoch 38/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9374 - loss: 0.2196 - val_accuracy: 0.9293 - val_loss: 0.2392\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.9374 - loss: 0.2159 - val_accuracy: 0.9305 - val_loss: 0.2371\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.9391 - loss: 0.2159 - val_accuracy: 0.9307 - val_loss: 0.2345\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.9405 - loss: 0.2067 - val_accuracy: 0.9328 - val_loss: 0.2326\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.9409 - loss: 0.2083 - val_accuracy: 0.9323 - val_loss: 0.2301\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.9405 - loss: 0.2056 - val_accuracy: 0.9337 - val_loss: 0.2286\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.9405 - loss: 0.2078 - val_accuracy: 0.9343 - val_loss: 0.2261\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.9420 - loss: 0.2037 - val_accuracy: 0.9338 - val_loss: 0.2243\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.9412 - loss: 0.2013 - val_accuracy: 0.9365 - val_loss: 0.2215\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.9445 - loss: 0.1960 - val_accuracy: 0.9370 - val_loss: 0.2200\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.9441 - loss: 0.1965 - val_accuracy: 0.9375 - val_loss: 0.2178\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.9464 - loss: 0.1902 - val_accuracy: 0.9380 - val_loss: 0.2161\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.9462 - loss: 0.1875 - val_accuracy: 0.9377 - val_loss: 0.2142\n" ] } ], "source": [ "# Обучаем модель\n", "H_1h100 = model_1h100.fit(X_train, y_train, validation_split=0.1, epochs=50)\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "8oULkhXk3fR3", "outputId": "07e9ce38-564e-4532-c115-dd5d64ff1250" }, "outputs": [ { "data": { "image/png": "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TaAoFEB4ovj04nDja7lhtxQREVHQMdwEkODtmqraciOGGy6cSUREFHwMN4HkDTcXt9wYdOyWIiIikgvDTQBVtNzk+O1ntxQREZF8GG4CqYaWG6lbindLERERBR3DTQDVNObG4Ltbii03REREQcdwE0g1tdzo2HJDREQkF4abAJJabqw5gMcj7TfqKlpuLjUjMxERETUcw00gGeMhQAGFpxwoLajY7R1z4xEAu8tT09lEREQUAAw3gaTSwKE2i88t2dLuMI1Kes5xN0RERMHFcBNgdk2U+KTSuBulUlExqJhz3RAREQUVw02AlWm94aZSyw1Qaa4bDiomIiIKKoabAKuu5QaoWDyzlN1SREREQcVwE2B2TbT4xHLxXDe+WYrZckNERBRMDDcBVia13Ph3S5mkbim23BAREQUTw02ASd1SF7fccPFMIiIiWTDcBJi9hpYbaX0pdksREREFVb3Czb///W+sWbNGev3kk08iMjIS/fv3x+nTpwNWuKZIulvKXgw4S6X9vlvBrWy5ISIiCqp6hZvnn38eYWFhAIDt27djyZIlWLBgAWJjY/Hoo48GtIBNTbkyDILGKL6odMeUtL4U75YiIiIKKnV9Tjpz5gzat28PAFi9ejXGjh2LqVOnYsCAARg0aFAgy9f0KBRAeCJQeFyc6yamHYBK60txnhsiIqKgqlfLjclkwvnz5wEAGzZswLBhwwAAer0eZWVlgStdEyUtoFmp5cagZcsNERGRHOrVcjNs2DDcd9996N27N44cOYJRo0YBAA4ePIjU1NRAlq9p8oWbSrMUmzhDMRERkSzq1XKzZMkSpKenIz8/H59//jliYmIAALt378a9994b0AI2RdW33Hi7pdhyQ0REFFT1armJjIzEG2+8UWX/vHnzGlygZqGalhtpQDFbboiIiIKqXi0369evxw8//CC9XrJkCXr16oVx48bhwoULAStcU3WplhveCk5ERBRc9Qo3TzzxBCwWCwDgwIEDeOyxxzBq1CicPHkSM2fODGgBmySp5aYi3Jh4KzgREZEs6tUtdfLkSXTt2hUA8Pnnn+OWW27B888/jz179kiDi69kUsuNNQfweAClkgtnEhERyaReLTdarRalpeLsuxs3bsTw4cMBANHR0VKLzhXNFA8olICnHLDlA6iY56aU3VJERERBVa+Wm+uuuw4zZ87EgAED8PPP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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# вывод графика ошибки по эпохам\n", "plt.plot(H_1h100.history['loss'])\n", "plt.plot(H_1h100.history['val_loss'])\n", "plt.grid()\n", "plt.xlabel('Epochs')\n", "plt.ylabel('loss')\n", "plt.legend(['train_loss', 'val_loss'])\n", "plt.title('Loss by epochs')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "fEcM3T2h3he2", "outputId": "d2bd3042-6ea7-45fc-a1ec-2648abb297e0" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9421 - loss: 0.2016\n", "Loss on test data: 0.1981867104768753\n", "Accuracy on test data: 0.9398000240325928\n" ] } ], "source": [ "# Оценка качества работы модели на тестовых данных\n", "scores = model_1h100.evaluate(X_test, y_test)\n", "print('Loss on test data:', scores[0])\n", "print('Accuracy on test data:', scores[1])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "При 300 нейронах" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 221 }, "id": "YgxMajfO3ji-", "outputId": "91398625-e7e2-4d45-c11e-f5a1e4395344" }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential_2\"\n",
              "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential_2\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense_3 (Dense)                 │ (None, 300)            │       235,500 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_4 (Dense)                 │ (None, 10)             │         3,010 │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ dense_3 (\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_4 (\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" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 238,510 (931.68 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 238,510 (931.68 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "# создаем модель\n", "model_1h300 = Sequential()\n", "model_1h300.add(Dense(units=300, input_dim=num_pixels, activation='sigmoid'))\n", "model_1h300.add(Dense(units=num_classes, activation='softmax'))\n", "# компилируем модель\n", "model_1h300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", "\n", "# вывод информации об архитектуре модели\n", "print(model_1h300.summary())\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9GllPG5s3mkC", "outputId": "30a62efe-78d2-47b5-ced3-d5583704fbc2" }, "outputs": [ { "name": "stdout", "output_type": "stream", "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.5636 - loss: 1.7772 - val_accuracy: 0.8303 - val_loss: 0.8547\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.8468 - loss: 0.7468 - val_accuracy: 0.8572 - val_loss: 0.5789\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.8721 - loss: 0.5363 - val_accuracy: 0.8743 - val_loss: 0.4822\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.8854 - loss: 0.4512 - val_accuracy: 0.8823 - val_loss: 0.4301\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.8898 - loss: 0.4107 - val_accuracy: 0.8900 - val_loss: 0.4021\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.8963 - loss: 0.3807 - val_accuracy: 0.8920 - val_loss: 0.3837\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.8991 - loss: 0.3648 - val_accuracy: 0.8938 - val_loss: 0.3716\n", "Epoch 8/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8989 - loss: 0.3554 - val_accuracy: 0.8967 - val_loss: 0.3605\n", "Epoch 9/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9041 - loss: 0.3397 - val_accuracy: 0.8993 - val_loss: 0.3497\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.9039 - loss: 0.3346 - val_accuracy: 0.9015 - val_loss: 0.3422\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.9062 - loss: 0.3246 - val_accuracy: 0.9027 - val_loss: 0.3382\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.3134 - val_accuracy: 0.9048 - val_loss: 0.3316\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.9109 - loss: 0.3147 - val_accuracy: 0.9058 - val_loss: 0.3292\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.9113 - loss: 0.3095 - val_accuracy: 0.9077 - val_loss: 0.3243\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.9146 - loss: 0.2992 - val_accuracy: 0.9083 - val_loss: 0.3205\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.9159 - loss: 0.2993 - val_accuracy: 0.9093 - val_loss: 0.3168\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.9151 - loss: 0.2961 - val_accuracy: 0.9102 - val_loss: 0.3149\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.9163 - loss: 0.2920 - val_accuracy: 0.9112 - val_loss: 0.3116\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.9181 - loss: 0.2850 - val_accuracy: 0.9110 - val_loss: 0.3093\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.9175 - loss: 0.2893 - val_accuracy: 0.9142 - val_loss: 0.3068\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.9182 - loss: 0.2807 - val_accuracy: 0.9138 - val_loss: 0.3031\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.9193 - loss: 0.2796 - val_accuracy: 0.9145 - val_loss: 0.3029\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.9209 - loss: 0.2741 - val_accuracy: 0.9142 - val_loss: 0.3008\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.9190 - loss: 0.2798 - val_accuracy: 0.9157 - val_loss: 0.2976\n", "Epoch 25/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9211 - loss: 0.2761 - val_accuracy: 0.9145 - val_loss: 0.2952\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.9214 - loss: 0.2671 - val_accuracy: 0.9183 - val_loss: 0.2913\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.9233 - loss: 0.2689 - val_accuracy: 0.9173 - val_loss: 0.2903\n", "Epoch 28/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9235 - loss: 0.2623 - val_accuracy: 0.9180 - val_loss: 0.2880\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.9251 - loss: 0.2595 - val_accuracy: 0.9180 - val_loss: 0.2879\n", "Epoch 30/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.2605 - val_accuracy: 0.9202 - val_loss: 0.2840\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.9259 - loss: 0.2579 - val_accuracy: 0.9197 - val_loss: 0.2820\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.9249 - loss: 0.2601 - val_accuracy: 0.9205 - val_loss: 0.2811\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.9278 - loss: 0.2507 - val_accuracy: 0.9218 - val_loss: 0.2773\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.9284 - loss: 0.2483 - val_accuracy: 0.9207 - val_loss: 0.2768\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.9298 - loss: 0.2464 - val_accuracy: 0.9233 - val_loss: 0.2732\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.9295 - loss: 0.2421 - val_accuracy: 0.9232 - val_loss: 0.2714\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.9307 - loss: 0.2462 - val_accuracy: 0.9238 - val_loss: 0.2696\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.9293 - loss: 0.2424 - val_accuracy: 0.9245 - val_loss: 0.2667\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.9313 - loss: 0.2416 - val_accuracy: 0.9267 - val_loss: 0.2651\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.9312 - loss: 0.2367 - val_accuracy: 0.9263 - val_loss: 0.2637\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.9338 - loss: 0.2350 - val_accuracy: 0.9242 - val_loss: 0.2624\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.9351 - loss: 0.2279 - val_accuracy: 0.9260 - val_loss: 0.2596\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.9345 - loss: 0.2300 - val_accuracy: 0.9285 - val_loss: 0.2579\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.9335 - loss: 0.2295 - val_accuracy: 0.9293 - val_loss: 0.2555\n", "Epoch 45/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9361 - loss: 0.2267 - val_accuracy: 0.9297 - val_loss: 0.2528\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.9367 - loss: 0.2209 - val_accuracy: 0.9287 - val_loss: 0.2522\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.9360 - loss: 0.2243 - val_accuracy: 0.9285 - val_loss: 0.2510\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.9365 - loss: 0.2216 - val_accuracy: 0.9307 - val_loss: 0.2474\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.9383 - loss: 0.2167 - val_accuracy: 0.9308 - val_loss: 0.2458\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.9389 - loss: 0.2143 - val_accuracy: 0.9307 - val_loss: 0.2436\n" ] } ], "source": [ "# Обучаем модель\n", "H_1h300 = model_1h300.fit(X_train, y_train, validation_split=0.1, epochs=50)\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "FTPuEVnF4dJm", "outputId": "ed63b542-fe72-4e7b-a679-f22744a36945" }, "outputs": [ { "data": { "image/png": "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xsZi5MiReO6552ryYwSNMDeRNs8sOA006QWgfMsNww0REVEw1Sjc/PDDD37BBgAaNWqEF154Af369avWvaZNm3bJbqiNGzf6vVar1Zg1axZmzZpV7TLLypwkPZZb68ak8+4txW4pIiKiYKrRIn46nQ5Wq7XC+cLCQmi12loXqr7z7Q5ecMZ3jt1SRERE8qhRuLnlllswadIkbNmyBUIICCHw66+/YvLkybj11lsDXcb6x+wNN2VbMLBbioiISB41Cjevv/46WrVqhdTUVOj1euj1evTt2xetW7fGggULAlzE+keYpXV/yndLceNMIiIiedRozE1kZCS++uorHD161DcVvEOHDmjdunVAC1dflXVLlQ83nr2lnC643QJKpSIURSMiImrwqhxurrTb9/fff+97Pn/+/JqXqCHwdksV5QDOYkBj8A0oFgIoKXX5wg4REREFVpV/w+7atatK1ykUbJGAPgLQhgGOQmlQcUxr6NVl6/DY7Aw3REREwVLl37DlW2boChQKwNwYyDkkDSqOaQ2lUgGjVoUihwvFHFRMREQUNDUaUExV4B13Y6k4HdzGQcVERERBw3ATLJcZVMzp4ERERMHDcBMsEU2lR7+1bjgdnIiIKNgYboKl0pYbrlJMREQUbAw3wVJJuDHpvN1SbLkhIiIKFoabYCkfboQAABg03s0z2XJDREQULAw3wWJOAqAASkuAogsAylpuOBWciIgoeBhugkWtA8LipOeeQcWcCk5ERBR8DDfBdNG4G2+4YcsNERFR8DDcBFOFcCN1S7HlhoiIKHgYboLporVufFPBOaCYiIgoaBhugunilhsdVygmIiIKNoabYLo43Gg4oJiIiCjYGG6C6aLNM006DigmIiIKNoabYDJ7wo01Eyh1lBtQzHBDREQULAw3wWSKAVQ6AAKwnuXGmURERDJguAkmhcJv3I235YYDiomIiIKH4SbY/MKNdyo4W26IiIiCheEm2MqtdWP0DCgucrogPJtpEhERUWAx3ARbuZYbk6dbSgig2MmuKSIiomBguAk2X7g5A4NG5euaOptfHMJCERERNVwMN8EW0Vh6LPgDSqUCHRLNAIB9Zy0hLBQREVHDxXATbOX3lxICnZOkcLP3TEEIC0VERNRwMdwEm9nTcuMoBEoK0CkpAgCw9wxbboiIiIKB4SbYtEbA2Eh6XvAHOjX2dksV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UaPQt2/fGv2sRCQvhhsiCgmTyVShmyhQDAZDla7TaDR+rxUKBdxuNwBg+PDhOHXqFFavXo309HQMHDgQU6dOxcsvvxzw8hJRYHHMDRHVSb/++muF1x06dAAAdOjQAb/99htsNpvv/U2bNkGpVKJdu3YIDw9HcnIyNmzYUKsyxMbGYvz48fj444+xYMECvPPOO7W6HxHJgy03RBQSdrsdmZmZfufUarVv0O7nn3+OXr164brrrsMnn3yCrVu34v333wcAjB07FrNmzcL48eMxe/ZsnD9/Hg899BDuu+8+xMfHAwBmz56NyZMnIy4uDsOHD4fVasWmTZvw0EMPVal8M2fORM+ePdGpUyfY7XZ88803vnBFRHUbww0RhcTatWuRmJjod65du3Y4ePAgAGkm09KlSzFlyhQkJibis88+Q8eOHQEARqMR3377LaZPn45rrrkGRqMRo0ePxvz58333Gj9+PEpKSvDqq6/iscceQ0xMDO68884ql0+r1WLGjBk4efIkDAYDrr/+eixdujQAPzkRBZtCCCFCXQgiovIUCgVWrFiBUaNGhbooRFQPccwNERERNSgMN0RERNSgcMwNEdU57C0notpgyw0RERE1KAw3RERE1KAw3BAREVGDwnBDREREDQrDDRERETUoDDdERETUoDDcEBERUYPCcENEREQNCsMNERERNSj/D70ujfxfVCR+AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# вывод графика ошибки по эпохам\n", "plt.plot(H_1h300.history['loss'])\n", "plt.plot(H_1h300.history['val_loss'])\n", "plt.grid()\n", "plt.xlabel('Epochs')\n", "plt.ylabel('loss')\n", "plt.legend(['train_loss', 'val_loss'])\n", "plt.title('Loss by epochs')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5xQVZ9At4dzC", "outputId": "0e784c08-c9d2-4604-e484-992200cdc9a9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 4ms/step - accuracy: 0.9318 - loss: 0.2330\n", "Loss on test data: 0.22451213002204895\n", "Accuracy on test data: 0.9320999979972839\n" ] } ], "source": [ "# Оценка качества работы модели на тестовых данных\n", "scores = model_1h300.evaluate(X_test, y_test)\n", "print('Loss on test data:', scores[0])\n", "print('Accuracy on test data:', scores[1])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "При 500 нейронах" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 221 }, "id": "yGc6uKcW4nDm", "outputId": "6603b0bb-44d1-4340-e7c0-667c82eeb665" }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential_3\"\n",
              "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential_3\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense_5 (Dense)                 │ (None, 500)            │       392,500 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_6 (Dense)                 │ (None, 10)             │         5,010 │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ dense_5 (\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_6 (\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" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 397,510 (1.52 MB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 397,510 (1.52 MB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "# создаем модель\n", "model_1h500 = Sequential()\n", "model_1h500.add(Dense(units=500, input_dim=num_pixels, activation='sigmoid'))\n", "model_1h500.add(Dense(units=num_classes, activation='softmax'))\n", "# компилируем модель\n", "model_1h500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", "\n", "# вывод информации об архитектуре модели\n", "print(model_1h500.summary())\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "DsxEygwb4p1S", "outputId": "e1ac1ec7-19f0-4eaf-9f7f-1357fbc2dc20" }, "outputs": [ { "name": "stdout", "output_type": "stream", "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.5548 - loss: 1.7694 - val_accuracy: 0.8335 - val_loss: 0.8194\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.8446 - loss: 0.7199 - val_accuracy: 0.8643 - val_loss: 0.5553\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.8702 - loss: 0.5211 - val_accuracy: 0.8750 - val_loss: 0.4687\n", "Epoch 4/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.8846 - loss: 0.4429 - val_accuracy: 0.8832 - val_loss: 0.4242\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.8914 - loss: 0.4015 - val_accuracy: 0.8865 - val_loss: 0.3980\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.8965 - loss: 0.3772 - val_accuracy: 0.8915 - val_loss: 0.3807\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.8985 - loss: 0.3711 - val_accuracy: 0.8932 - val_loss: 0.3685\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.9011 - loss: 0.3468 - val_accuracy: 0.8975 - val_loss: 0.3569\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.9035 - loss: 0.3385 - val_accuracy: 0.8995 - val_loss: 0.3493\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.9058 - loss: 0.3338 - val_accuracy: 0.9022 - val_loss: 0.3423\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.9086 - loss: 0.3205 - val_accuracy: 0.8993 - val_loss: 0.3435\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.9102 - loss: 0.3148 - val_accuracy: 0.9025 - val_loss: 0.3348\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.9084 - loss: 0.3186 - val_accuracy: 0.9062 - val_loss: 0.3284\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.9115 - loss: 0.3143 - val_accuracy: 0.9068 - val_loss: 0.3258\n", "Epoch 15/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9125 - loss: 0.3048 - val_accuracy: 0.9060 - val_loss: 0.3249\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.9147 - loss: 0.2972 - val_accuracy: 0.9072 - val_loss: 0.3215\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.9136 - loss: 0.3003 - val_accuracy: 0.9085 - val_loss: 0.3176\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.9161 - loss: 0.2949 - val_accuracy: 0.9108 - val_loss: 0.3151\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.9132 - loss: 0.3025 - val_accuracy: 0.9110 - val_loss: 0.3123\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.9135 - loss: 0.2974 - val_accuracy: 0.9125 - val_loss: 0.3140\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.9147 - loss: 0.2911 - val_accuracy: 0.9097 - val_loss: 0.3141\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.9180 - loss: 0.2869 - val_accuracy: 0.9123 - val_loss: 0.3082\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.9166 - loss: 0.2879 - val_accuracy: 0.9143 - val_loss: 0.3047\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.9213 - loss: 0.2745 - val_accuracy: 0.9143 - val_loss: 0.3036\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.9207 - loss: 0.2769 - val_accuracy: 0.9140 - val_loss: 0.3019\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.9212 - loss: 0.2780 - val_accuracy: 0.9172 - val_loss: 0.2994\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.9210 - loss: 0.2775 - val_accuracy: 0.9183 - val_loss: 0.2980\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.9207 - loss: 0.2768 - val_accuracy: 0.9162 - val_loss: 0.2968\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.9233 - loss: 0.2662 - val_accuracy: 0.9178 - val_loss: 0.2940\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.9230 - loss: 0.2710 - val_accuracy: 0.9178 - val_loss: 0.2934\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.9216 - loss: 0.2703 - val_accuracy: 0.9155 - val_loss: 0.2933\n", "Epoch 32/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9237 - loss: 0.2627 - val_accuracy: 0.9155 - val_loss: 0.2933\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.9237 - loss: 0.2617 - val_accuracy: 0.9200 - val_loss: 0.2894\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.2685 - val_accuracy: 0.9170 - val_loss: 0.2893\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.9233 - loss: 0.2666 - val_accuracy: 0.9198 - val_loss: 0.2865\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.9273 - loss: 0.2571 - val_accuracy: 0.9213 - val_loss: 0.2851\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.9269 - loss: 0.2542 - val_accuracy: 0.9210 - val_loss: 0.2819\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.9276 - loss: 0.2531 - val_accuracy: 0.9185 - val_loss: 0.2842\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.9291 - loss: 0.2460 - val_accuracy: 0.9220 - val_loss: 0.2799\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.9288 - loss: 0.2531 - val_accuracy: 0.9222 - val_loss: 0.2782\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.9280 - loss: 0.2535 - val_accuracy: 0.9227 - val_loss: 0.2766\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.9277 - loss: 0.2539 - val_accuracy: 0.9237 - val_loss: 0.2748\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.9306 - loss: 0.2423 - val_accuracy: 0.9237 - val_loss: 0.2743\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.9292 - loss: 0.2490 - val_accuracy: 0.9233 - val_loss: 0.2716\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.9305 - loss: 0.2430 - val_accuracy: 0.9252 - val_loss: 0.2695\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.2418 - val_accuracy: 0.9247 - val_loss: 0.2685\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.9341 - loss: 0.2349 - val_accuracy: 0.9253 - val_loss: 0.2682\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.9349 - loss: 0.2345 - val_accuracy: 0.9258 - val_loss: 0.2652\n", "Epoch 49/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9341 - loss: 0.2325 - val_accuracy: 0.9275 - val_loss: 0.2627\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.9349 - loss: 0.2305 - val_accuracy: 0.9273 - val_loss: 0.2623\n" ] } ], "source": [ "# Обучаем модель\n", "H_1h500 = model_1h500.fit(X_train, y_train, validation_split=0.1, epochs=50)\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "006ROC0b5kd2", "outputId": "3ba6591f-e71d-4632-c3a2-f71cca3b17ed" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYeNJREFUeJzt3Xd4VFX+BvB3ekvvCQRC74QiYMACEkBQVhRXFJa2qywCirK4K6uU2FBUxILYFll/iqAo6EqRgAKKSAkgqHQCQSAJISSTTJLJlPv7485MMiSBlLl3Ut7P89xnZu7cuXNyAvJ6zveeqxAEQQARERFRI6H0dwOIiIiIfInhhoiIiBoVhhsiIiJqVBhuiIiIqFFhuCEiIqJGheGGiIiIGhWGGyIiImpUGG6IiIioUWG4ISIiokaF4YaI/GrSpEkICAjwdzP8TqFQYMaMGf5uBlGjwHBD1EitWLECCoUC+/bt83dTiIhkxXBDREREjQrDDRERETUqDDdETdyBAwcwfPhwBAUFISAgAIMHD8bPP//sdYzNZkNKSgratWsHvV6P8PBw3HTTTUhNTfUck5mZicmTJ6N58+bQ6XSIjY3FXXfdhTNnzlSrHadPn8awYcNgMpkQFxeHZ555BoIgAAAEQUBCQgLuuuuuCp8rKSlBcHAw/v73v1/3Oz7++GP07t0bBoMBYWFhuP/++3Hu3DmvYwYOHIiuXbsiLS0N/fv3h8FgQKtWrfDOO+9UOF92djb+9re/ITo6Gnq9HomJifjvf/9b4Tin04nXX38d3bp1g16vR2RkJG6//fZKpwzXrVuHrl27QqfToUuXLti0aZPX+wUFBXjssceQkJAAnU6HqKgoDBkyBPv377/uz0/UVDDcEDVhv/32G26++Wb88ssv+Oc//4m5c+ciPT0dAwcOxO7duz3HLViwACkpKRg0aBDeeustPPXUU2jRooXXP6ijR4/G2rVrMXnyZLz99tt49NFHUVBQgIyMjOu2w+Fw4Pbbb0d0dDQWLVqE3r17Y/78+Zg/fz4Asdj2L3/5CzZu3Ijc3Fyvz/7vf/+D2WzGX/7yl2t+x/PPP48JEyagXbt2WLx4MR577DFs3boVt9xyC/Ly8ryOvXLlCkaMGIHevXtj0aJFaN68OR5++GEsX77cc0xxcTEGDhyI//u//8O4cePw8ssvIzg4GJMmTcLrr7/udb6//e1veOyxxxAfH4+XXnoJTz75JPR6fYUQ+eOPP2LatGm4//77sWjRIpSUlGD06NG4fPmy55ipU6di2bJlGD16NN5++23Mnj0bBoMBR44cuW4/EzUZAhE1Sh9++KEAQNi7d2+Vx4waNUrQarXCqVOnPPsuXLggBAYGCrfccotnX2JionDHHXdUeZ4rV64IAISXX365xu2cOHGiAEB45JFHPPucTqdwxx13CFqtVrh06ZIgCIJw7NgxAYCwbNkyr8//6U9/EhISEgSn01nld5w5c0ZQqVTC888/77X/8OHDglqt9tp/6623CgCEV1991bPParUKPXr0EKKiooTS0lJBEARhyZIlAgDh448/9hxXWloqJCUlCQEBAYLZbBYEQRC+++47AYDw6KOPVmhX+TYDELRarXDy5EnPvl9++UUAILz55puefcHBwcL06dOr/FmJSBA4ckPURDkcDmzevBmjRo1C69atPftjY2MxduxY/PjjjzCbzQCAkJAQ/Pbbbzhx4kSl5zIYDNBqtdi2bRuuXLlSq/aUvwzafVl0aWkptmzZAgBo3749+vXrh08++cRzXG5uLjZu3Ihx48ZBoVBUee4vv/wSTqcT9913H3JycjxbTEwM2rVrh++//97reLVa7TXNpdVq8fe//x3Z2dlIS0sDAGzYsAExMTF44IEHPMdpNBo8+uijKCwsxPbt2wEAX3zxBRQKhWcUqryr25ycnIw2bdp4Xnfv3h1BQUE4ffq0Z19ISAh2796NCxcuVPnzEjV1DDdETdSlS5dQVFSEDh06VHivU6dOcDqdnnqUZ555Bnl5eWjfvj26deuGJ554AocOHfIcr9Pp8NJLL2Hjxo2Ijo7GLbfcgkWLFiEzM7NabVEqlV4BCxDDDACvmp0JEyZg586dOHv2LADg888/h81mw/jx4695/hMnTkAQBLRr1w6RkZFe25EjR5Cdne11fFxcHEwm0zXbc/bsWbRr1w5Kpfd/Rjt16uR5HwBOnTqFuLg4hIWFXa8b0KJFiwr7QkNDvQLjokWL8OuvvyI+Ph59+/bFggULvMIPETHcEFE13HLLLTh16hSWL1+Orl274oMPPkCvXr3wwQcfeI557LHHcPz4cSxcuBB6vR5z585Fp06dcODAAZ+14/7774dGo/GM3nz88ce44YYbKg1o5TmdTigUCmzatAmpqakVtnff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RESNCsMNERERNSoMN0RERNSoMNwQERFRo8Jw4yNLly5FQkIC9Ho9+vXrhz179vi7SY3Gjh07MHLkSMTFxUGhUGDdunVe7wuCgHnz5iE2NhYGgwHJyck4ceKEfxrbwC1cuBB9+vRBYGAgoqKiMGrUKBw7dszrmJKSEkyfPh3h4eEICAjA6NGjkZWV5acWN2zLli1D9+7dPQuZJSUlYePGjZ732dfSevHFF6FQKPDYY4959rHPfWfBggVQKBReW8eOHT3vS9nXDDc+sHr1asyaNQvz58/H/v37kZiYiGHDhiE7O9vfTWsULBYLEhMTsXTp0krfX7RoEd544w2888472L17N0wmE4YNG4aSkhKZW9rwbd++HdOnT8fPP/+M1NRU2Gw2DB06FBaLxXPM448/jv/973/4/PPPsX37dly4cAH33HOPH1vdcDVv3hwvvvgi0tLSsG/fPtx2222466678NtvvwFgX0tp7969ePfdd9G9e3ev/exz3+rSpQsuXrzo2X788UfPe5L2tUB11rdvX2H69Ome1w6HQ4iLixMWLlzox1Y1TgCEtWvXel47nU4hJiZGePnllz378vLyBJ1OJ3z66ad+aGHjkp2dLQAQtm/fLgiC2LcajUb4/PPPPcccOXJEACDs2rXLX81sVEJDQ4UPPviAfS2hgoICoV27dkJqaqpw6623CjNnzhQEgX++fW3+/PlCYmJipe9J3dccuamj0tJSpKWlITk52bNPqVQiOTkZu3bt8mPLmob09HRkZmZ69X9wcDD69evH/veB/Px8AEBYWBgAIC0tDTabzau/O3bsiBYtWrC/68jhcGDVqlWwWCxISkpiX0to+vTpuOOOO7z6FuCfbymcOHECcXFxaN26NcaNG4eMjAwA0vd1k7txpq/l5OTA4XAgOjraa390dDSOHj3qp1Y1HZmZmQBQaf+736PacTqdeOyxxzBgwAB07doVgNjfWq0WISEhXseyv2vv8OHDSEpKQklJCQICArB27Vp07twZBw8eZF9LYNWqVdi/fz/27t1b4T3++fatfv36YcWKFejQoQMuXryIlJQU3Hzzzfj1118l72uGGyKq1PTp0/Hrr796zZGT73Xo0AEHDx5Efn4+1qxZg4kTJ2L79u3+blajdO7cOcycOROpqanQ6/X+bk6jN3z4cM/z7t27o1+/fmjZsiU+++wzGAwG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# вывод графика ошибки по эпохам\n", "plt.plot(H_1h500.history['loss'])\n", "plt.plot(H_1h500.history['val_loss'])\n", "plt.grid()\n", "plt.xlabel('Epochs')\n", "plt.ylabel('loss')\n", "plt.legend(['train_loss', 'val_loss'])\n", "plt.title('Loss by epochs')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "od0yUK5r5mft", "outputId": "c4d8de9a-aec4-4610-8994-b0a9139a5d2e" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9289 - loss: 0.2530\n", "Loss on test data: 0.24226699769496918\n", "Accuracy on test data: 0.9291999936103821\n" ] } ], "source": [ "# Оценка качества работы модели на тестовых данных\n", "scores = model_1h500.evaluate(X_test, y_test)\n", "print('Loss on test data:', scores[0])\n", "print('Accuracy on test data:', scores[1])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Наилучшую метрику наблюдаем при архитектуре со 100 нейронами в скрытом слое." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 9\n", "Добавили в наилучшую архитектуру, определенную в п. 8, второй скрытый слой и провели обучение и тестирование при 50 и 100 нейронах во втором скрытом слое." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "При 50 нейронах" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 255 }, "id": "FgYtfRR87SdT", "outputId": "d1832849-1dc8-4fcb-f21f-25b3d2cd69af" }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential_4\"\n",
              "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential_4\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense_7 (Dense)                 │ (None, 100)            │        78,500 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_8 (Dense)                 │ (None, 50)             │         5,050 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_9 (Dense)                 │ (None, 10)             │           510 │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ dense_7 (\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_8 (\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_9 (\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" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 84,060 (328.36 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 84,060 (328.36 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "# создаем модель\n", "model_1h100_2h50 = Sequential()\n", "model_1h100_2h50.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n", "model_1h100_2h50.add(Dense(units=50, activation='sigmoid'))\n", "model_1h100_2h50.add(Dense(units=num_classes, activation='softmax'))\n", "# компилируем модель\n", "model_1h100_2h50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", "\n", "# вывод информации об архитектуре модели\n", "print(model_1h100_2h50.summary())\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "j6LgZW9n7VvS", "outputId": "33bbfa47-099d-41e0-80b3-3d00f581e94d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 4ms/step - accuracy: 0.2284 - loss: 2.2754 - val_accuracy: 0.5273 - val_loss: 2.0668\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.6059 - loss: 1.9391 - val_accuracy: 0.6995 - val_loss: 1.4788\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.7227 - loss: 1.3435 - val_accuracy: 0.7643 - val_loss: 1.0211\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.7838 - loss: 0.9510 - val_accuracy: 0.8127 - val_loss: 0.7872\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.8210 - loss: 0.7388 - val_accuracy: 0.8405 - val_loss: 0.6501\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.8455 - loss: 0.6185 - val_accuracy: 0.8610 - val_loss: 0.5603\n", "Epoch 7/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8620 - loss: 0.5408 - val_accuracy: 0.8712 - val_loss: 0.5009\n", "Epoch 8/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8731 - loss: 0.4861 - val_accuracy: 0.8797 - val_loss: 0.4592\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.8827 - loss: 0.4452 - val_accuracy: 0.8870 - val_loss: 0.4274\n", "Epoch 10/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8900 - loss: 0.4133 - val_accuracy: 0.8907 - val_loss: 0.4051\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.8939 - loss: 0.3910 - val_accuracy: 0.8948 - val_loss: 0.3872\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.8970 - loss: 0.3783 - val_accuracy: 0.8977 - val_loss: 0.3719\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.9017 - loss: 0.3553 - val_accuracy: 0.8997 - val_loss: 0.3604\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.9030 - loss: 0.3481 - val_accuracy: 0.9015 - val_loss: 0.3499\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.9066 - loss: 0.3317 - val_accuracy: 0.9030 - val_loss: 0.3426\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.9068 - loss: 0.3278 - val_accuracy: 0.9048 - val_loss: 0.3339\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.9085 - loss: 0.3193 - val_accuracy: 0.9063 - val_loss: 0.3279\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.9116 - loss: 0.3095 - val_accuracy: 0.9088 - val_loss: 0.3211\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.9141 - loss: 0.3022 - val_accuracy: 0.9100 - val_loss: 0.3154\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.9154 - loss: 0.2960 - val_accuracy: 0.9113 - val_loss: 0.3092\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.9167 - loss: 0.2889 - val_accuracy: 0.9125 - val_loss: 0.3049\n", "Epoch 22/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9172 - loss: 0.2871 - val_accuracy: 0.9145 - val_loss: 0.3009\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.9179 - loss: 0.2805 - val_accuracy: 0.9168 - val_loss: 0.2954\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.9213 - loss: 0.2759 - val_accuracy: 0.9150 - val_loss: 0.2920\n", "Epoch 25/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9208 - loss: 0.2696 - val_accuracy: 0.9178 - val_loss: 0.2882\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.2625 - val_accuracy: 0.9190 - val_loss: 0.2830\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.9233 - loss: 0.2652 - val_accuracy: 0.9198 - val_loss: 0.2806\n", "Epoch 28/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9258 - loss: 0.2612 - val_accuracy: 0.9207 - val_loss: 0.2760\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.9261 - loss: 0.2563 - val_accuracy: 0.9198 - val_loss: 0.2725\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.9272 - loss: 0.2491 - val_accuracy: 0.9237 - val_loss: 0.2693\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.9279 - loss: 0.2488 - val_accuracy: 0.9227 - val_loss: 0.2659\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.9287 - loss: 0.2469 - val_accuracy: 0.9233 - val_loss: 0.2626\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.9309 - loss: 0.2367 - val_accuracy: 0.9245 - val_loss: 0.2601\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.9295 - loss: 0.2388 - val_accuracy: 0.9260 - val_loss: 0.2558\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.9321 - loss: 0.2339 - val_accuracy: 0.9265 - val_loss: 0.2533\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.9351 - loss: 0.2247 - val_accuracy: 0.9287 - val_loss: 0.2496\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.9322 - loss: 0.2319 - val_accuracy: 0.9262 - val_loss: 0.2468\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.9353 - loss: 0.2250 - val_accuracy: 0.9280 - val_loss: 0.2457\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.9345 - loss: 0.2216 - val_accuracy: 0.9298 - 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 3ms/step - accuracy: 0.9375 - loss: 0.2152 - val_accuracy: 0.9312 - val_loss: 0.2391\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.9387 - loss: 0.2146 - val_accuracy: 0.9297 - val_loss: 0.2358\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.9399 - loss: 0.2093 - val_accuracy: 0.9328 - val_loss: 0.2326\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.9389 - loss: 0.2079 - val_accuracy: 0.9333 - val_loss: 0.2302\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.9403 - loss: 0.2059 - val_accuracy: 0.9353 - val_loss: 0.2274\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.9406 - loss: 0.2051 - val_accuracy: 0.9350 - val_loss: 0.2250\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.9415 - loss: 0.2007 - val_accuracy: 0.9367 - val_loss: 0.2224\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.9423 - loss: 0.1980 - val_accuracy: 0.9362 - val_loss: 0.2196\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.9442 - loss: 0.1905 - val_accuracy: 0.9365 - val_loss: 0.2172\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.1920 - val_accuracy: 0.9372 - val_loss: 0.2151\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.9431 - loss: 0.1941 - val_accuracy: 0.9392 - val_loss: 0.2123\n" ] } ], "source": [ "# Обучаем модель\n", "H_1h100_2h50 = model_1h100_2h50.fit(X_train, y_train, validation_split=0.1, epochs=50)\n" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "B8NBkVtq8UiW", "outputId": "a40240e0-de31-4f78-bb29-aba63ded94ed" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcUtJREFUeJzt3Xd8VFXC//HP9GTSe6FLBymKyoKugnRcFEXXwkp5LI8Kqy6r/sRnVWDdRbEXFDu6iljBXRUk4AYsgBRRUUBAqqRAIL1NZu7vj0kGQhJIQjITku/79bqvmXvnzJ0zJwG+nHPuuSbDMAxEREREWhBzoCsgIiIi4m8KQCIiItLiKACJiIhIi6MAJCIiIi2OApCIiIi0OApAIiIi0uIoAImIiEiLowAkIiIiLY4CkIiIiLQ4CkAi0uRNmjSJ0NDQQFcj4EwmE1OnTg10NUSaBQUgkRZs/vz5mEwm1q9fH+iqiIj4lQKQiIiItDgKQCIiItLiKACJyEl99913jBo1ivDwcEJDQxkyZAhr1qypVMblcjFz5kw6d+5MUFAQMTExXHDBBaSkpPjKpKenM3nyZFq3bo3D4SApKYnLLruM3bt316oev/76KyNGjCAkJITk5GRmzZqFYRgAGIZB+/btueyyy6q8r7i4mIiICP73f//3pJ/x1ltv0a9fP4KDg4mOjuaaa65h3759lcoMGjSIM888kw0bNjBw4ECCg4Pp0KED8+bNq3K+zMxMbrjhBhISEggKCqJPnz688cYbVcp5PB6efvppevXqRVBQEHFxcYwcObLa4cnFixdz5pln4nA46NmzJ0uXLq30el5eHnfeeSft27fH4XAQHx/PsGHD2Lhx40m/v0hLoQAkIif0008/8fvf/57vv/+ee+65h/vvv59du3YxaNAg1q5d6ys3Y8YMZs6cyeDBg3nuuef4v//7P9q2bVvpH91x48axaNEiJk+ezPPPP8/tt99OXl4ee/fuPWk93G43I0eOJCEhgTlz5tCvXz8efPBBHnzwQcA7QfhPf/oTS5Ys4fDhw5Xe+5///Ifc3Fz+9Kc/nfAz/vGPfzBhwgQ6d+7ME088wZ133smKFSu48MILyc7OrlT2yJEjjB49mn79+jFnzhxat27NrbfeymuvveYrU1RUxKBBg/jXv/7F+PHjefTRR4mIiGDSpEk8/fTTlc53ww03cOedd9KmTRseeeQR7r33XoKCgqoEza+++orbbruNa665hjlz5lBcXMy4cePIysrylbnlllt44YUXGDduHM8//zx33XUXwcHBbNmy5aTtLNJiGCLSYr3++usGYKxbt67GMmPHjjXsdruxc+dO37EDBw4YYWFhxoUXXug71qdPH+OSSy6p8TxHjhwxAOPRRx+tcz0nTpxoAMaf//xn3zGPx2Nccsklht1uNw4ePGgYhmFs27bNAIwXXnih0vsvvfRSo3379obH46nxM3bv3m1YLBbjH//4R6XjP/74o2G1Wisdv+iiiwzAePzxx33HSkpKjL59+xrx8fFGaWmpYRiG8dRTTxmA8dZbb/nKlZaWGgMGDDBCQ0ON3NxcwzAM44svvjAA4/bbb69Sr2PrDBh2u93YsWOH79j3339vAMazzz7rOxYREWFMmTKlxu8qIoahHiARqZHb7WbZsmWMHTuWM844w3c8KSmJ6667jq+++orc3FwAIiMj+emnn9i+fXu15woODsZut5OamsqRI0fqVZ9jLwGvuCS8tLSU5cuXA9ClSxf69+/P22+/7St3+PBhlixZwvjx4zGZTDWe+6OPPsLj8fDHP/6RQ4cO+bbExEQ6d+7Mf//730rlrVZrpSE1u93O//7v/5KZmcmGDRsA+Oyzz0hMTOTaa6/1lbPZbNx+++3k5+ezcuVKAD788ENMJpOvN+tYx9d56NChdOzY0bffu3dvwsPD+fXXX33HIiMjWbt2LQcOHKjx+4q0dApAIlKjgwcPUlhYSNeuXau81r17dzwej29+zKxZs8jOzqZLly706tWLu+++mx9++MFX3uFw8Mgjj7BkyRISEhK48MILmTNnDunp6bWqi9lsrhTCwBt4gEpziCZMmMDXX3/Nnj17AHj//fdxuVxcf/31Jzz/9u3bMQyDzp07ExcXV2nbsmULmZmZlconJycTEhJywvrs2bOHzp07YzZX/qu2e/fuvtcBdu7cSXJyMtHR0SdrBtq2bVvlWFRUVKVQOWfOHDZv3kybNm0477zzmDFjRqWAJCIKQCLSQC688EJ27tzJa6+9xplnnskrr7zC2WefzSuvvOIrc+edd/LLL78we/ZsgoKCuP/+++nevTvfffddg9XjmmuuwWaz+XqB3nrrLc4555xqQ9yxPB4PJpOJpUuXkpKSUmV78cUXG6yOp8JisVR73CifDA7wxz/+kV9//ZVnn32W5ORkHn30UXr27MmSJUv8VU2RJk8BSERqFBcXh9PpZNu2bVVe27p1K2azmTZt2viORUdHM3nyZN555x327dtH7969mTFjRqX3dezYkb/+9a8sW7aMzZs3U1payuOPP37Sung8niq9GL/88gsA7du3r1SHSy65hLfffps9e/bw9ddfn7T3p6JehmHQoUMHhg4dWmX73e9+V6n8gQMHKCgoOGF92rVrx/bt2/F4PJXKbd261fd6xWcfOHCgyuTtU5GUlMRtt93G4sWL2bVrFzExMfzjH/9osPOLnO4UgESkRhaLheHDh/Pxxx9XGmbKyMhgwYIFXHDBBYSHhwNUugoJIDQ0lE6dOlFSUgJAYWEhxcXFlcp07NiRsLAwX5mTee6553zPDcPgueeew2azMWTIkErlrr/+en7++WfuvvtuLBYL11xzzUnPfcUVV2CxWJg5c2al3pSKzzr++5WVlVXqFSotLeXFF18kLi6Ofv36ATB69GjS09N59913K73v2WefJTQ0lIsuugjwXh1nGAYzZ86sUq/j63IybrebnJycSsfi4+NJTk6udTuLtATWQFdARALvtddeq7KWDMAdd9zBQw89REpKChdccAG33XYbVquVF198kZKSEubMmeMr26NHDwYNGkS/fv2Ijo5m/fr1fPDBB76Jy7/88gtDhgzhj3/8Iz169MBqtbJo0SIyMjJqFVCCgoJYunQpEydOpH///ixZsoRPP/2U++67j7i4uEplL7nkEmJiYnj//fcZNWoU8fHxJz1/x44deeihh5g+fTq7d+9m7NixhIWFsWvXLhYtWsTNN9/MXXfd5SufnJzMI488wu7du+nSpQvvvvsumzZt4qWXXsJmswFw88038+KLLzJp0iQ2bNhA+/bt+eCDD/j666956qmnCAsLA2Dw4MFcf/31PPPMM2zfvp2RI0fi8Xj48ssvGTx4cJ3u/5WXl0fr1q258sor6dOnD6GhoSxfvpx169bVqqdNpMUI3AVoIhJoFZfB17Tt27fPMAzD2LhxozFixAgjNDTUcDqdxuDBg41vvvmm0rkeeugh47zzzjMiIyON4OBgo1u3bsY//vEP3yXhhw4dMqZMmWJ069bNCAkJMSIiIoz+/fsb77333knrOXHiRCMkJMTYuXOnMXz4cMPpdBoJCQnGgw8+aLjd7mrf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8corr3D55ZfjdDrp3Lkz//73v+td3w8//JCePXvicDho3749jz/+eKXXn3/+eTp37kxQUBAJCQlceeWVvtc++OADevXqRXBwMDExMQwdOpSCgoJ616U2msQk6JaibbQ3eWepB0hEJKAMw6DIVbfbWXg8HopK3VhLy+o9CTrYZqn1FWRPP/00v/zyC2eeeSazZs0C4KeffgLg3nvv5bHHHuOMM84gKiqKffv2MXr0aP7xj3/gcDh48803GTNmDNu2baNt27Y1fsbMmTOZM2cOjz76KM8++yzjx49nz549dVqPD2DDhg388Y9/ZMaMGVx99dV888033HbbbcTExDBp0iTWr1/P7bffzr/+9S8GDhzI4cOH+fLLLwFIS0vj2muvZc6cOVx++eXk5eXx5Zdf0tgXqSsA+ZEvABXr8kkRkUAqcrnp8cDnfv/cn2eNwGmv3T+9ERER2O12nE6n784GW7duBWDWrFkMGzbMVzY6Opo+ffr49v/+97+zaNEi/v3vfzN16tQaP2PSpElce+21APzzn//kmWee4dtvv2XkyJF1+l5PPPEEQ4YM4f777wegS5cu/Pzzzzz66KNMmjSJvXv3EhISwh/+8AfCwsJo164dZ511FuANQGVlZVxxxRW0a9cOgF69euHxeHwLEzcGjcX40dEARKMnWxERab6OvwI6Pz+fu+66i+7duxMZGUloaChbtmxh7969JzzPscvIhISEEB4e7rvVRF1s2bKF888/v9Kx888/n+3bt+N2uxk2bBjt2rXjjDPO4Prrr+ftt9+msLAQgD59+jBkyBB69erFVVddxcsvv8yRI0fqXIe6Ug+QHyVHBmM2gcswcTC/lFbR9kBXSUSkRQq2Wfh5Vt2uDPZ4POTl5hEWHnZKQ2AN4firue666y5SUlJ47LHH6NSpE8HBwVx55ZWUlpae8DzHr5tjMpl86+80pLCwMDZu3EhqairLli3jgQceYMaMGaxbt47IyEhSUlL45ptvWLZsGc8++yz/93//x+rVq2u8hVVDUA+QH9ksZpIjvKtW7jtcGODaiIi0XCaTCafdWuct2G6p1/sqtrquIG2323G7Tz5X6euvv2bSpElcfvnl9OrVi8TERHbv3l3P1qm77t278/XXX1epU5cuXXy3oLJarQwdOpQ5c+bwww8/sHv3br744gvA+/M4//zzmTlzJt999x12u53Fixc3ap3VA+RnbaKd7M8uZt+RIn4X6MqIiEiT1r59e9auXcvu3bsJDQ2tsXemc+fOfPTRR4wZMwaTycT999/fKD05NfnrX//Kueeey9///neuvvpqVq9ezXPPPcfzzz8PwCeffMKvv/7KhRdeSFRUFJ999hkej4euXbuydu1aVqxYwfDhw4mPj2ft2rUcPHiQbt26NWqd1QPkZ22ivAs87jtcFOCaiIhIU3fXXXdhsVjo0aMHcXFxNc7peeKJJ4iKimLgwIGMGTOGESNGcPbZZ/utnmeffTbvvfceCxcu5Mwzz+SBBx5g1qxZvmVtIiMj+eijj7j44ovp3r078+bN45133qFnz56Eh4ezatUqRo8eTZcuXfjb3/7G448/zqhRoxq1zuoB8jNfADqiITARETmxLl26sHr16krHjl0rr0L79u19w0kVpkyZUmn/+CGx6i7Gqe2tLQYNGlTl/ePGjWPcuHHVlr/gggtITU2t9rXu3buzdOnSKscbuwdLPUB+1qb8SrB9R9QDJCIiEigKQH6mITAREWnqbrnlFt89No/fbrnllkBXr0FoCMzP2kR7A1BGXgnFLjdBDXRJpIiISEOZNWsWd911V7WvhYeH+7k2jUMByM8ig20EWQyK3Sb2HymkU3xYoKskIiJSSXx8PPHx8YGuRqPSEJifmUwmYspvSr9XawGJiIgEhAJQAMQEeWfO781SABIREQkEBaAAiPX1AGkitIiISCAoAAWArwdIQ2AiIiIBoQAUADHe24HpfmAiIiIBogAUADGOoz1A1a3EKSIi0hDat2/PU089VauyJpOp0W9A2pQoAAVAtANMJihyuTmUXxro6oiIiLQ4CkABYDVDUrh3HEzzgERERPxPAShAKlaE1jwgERGpzksvvURycnKVm4Jedtll/M///A87d+7ksssuIyEhgdDQUM4991yWL1/eYJ//448/cvHFFxMcHExMTAw333wz+fn5vtdTU1M577zzCAkJITIykvPPP589e/YA8P333zN48GDCwsIIDw+nX79+rF+/vsHq1hAUgAKkTZT3pqjqARIRCQDDgNKCum+uwvq9r2Krw7zPq666iqysLP773//6jh0+fJilS5cyfvx48vPzGT16NCtWrOC7775j5MiRjBkzhr17955y8xQUFDBixAiioqJYt24d77//PsuXL2fq1KkAlJWVMXbsWC666CJ++OEHVq9ezc0334zJZAJg/PjxtG7dmnXr1rFhwwbuvfdebDbbKderIelWGP70/UIsG96gY1lbdneYBigAiYgEhKsQ/plcp7eYgchT/dz7DoA9pFZFo6KiGDVqFAsWLGDIkCEAfPDBB8TGxjJ48GDMZjN9+vTxlf/73//OokWL+Pe//+0LKvW1YMECiouLefPNNwkJ8db3ueeeY8yYMTzyyCPYbDZycnL4wx/+QMeOHQHo3r277/179+7l7rvvplu3bgB07tz5lOrTGNQD5E/5GZj3fkNE0V7fEJgCkIiI1GT8+PF8+OGHlJSUAPD2229zzTXXYDabyc/P56677qJ79+5ERkYSGhrKli1bGqQHaMuWLfTp08cXfgDOP/98PB4P27ZtIzo6mkmTJjFixAjGjBnD008/TVpamq/stGnTuPHGGxk6dCgPP/wwO3fuPOU6NTT1APlTaAIAjrIc2kRpDpCISMDYnN7emDrweDzk5uURHhaG2VzP/gObs07Fx4wZg2EYfPrpp5x77rl8+eWXPPnkkwDcddddpKSk8Nhjj9GpUyeCg4O58sorKS31z9XFr7/+OrfffjtLly7l3Xff5W9/+xspKSn87ne/Y8aMGVx33XV8+umnLFmyhAcffJCFCxdy+eWX+6VutaEA5E+h3jvrBrlyaBPt/UOQnltMsctNkM0SyJqJiLQsJlOth6J8PB6wub3vq28AqqOgoCCuuOIK3n77bXbs2EHXrl05++yzAfj666+ZNGmSL1Tk5+eze/fuBvnc7t27M3/+fAoKCny9QF9//TVms5muXbv6yp111lmcddZZTJ8+nQEDBrBgwQJ+97vfAdClSxe6dOnCX/7yF6699lpef/31JhWANATmT8f0AEU7bYTYLRgG/Jate4KJiEj1xo8fz6effsprr73G+PHjfcc7d+7MRx99xKZNm/j++++57rrrqlwxdiqfGRQUxMSJE9m8eTP//e9/+fOf/8z1119PQkICu3btYvr06axevZo9e/awbNkytm/fTvfu3SkqKmLq1KmkpqayZ88evv76a9atW1dpjlBToB4gf/IFoDxcnjLaRDvZmp7H3sOFdIwLDXDlRESkKbr44ouJjo5m27ZtXHfddb7jTzzxBP/zP//DwIEDiY2N5f/9v/9Hbm5ug3ym0+nk888/54477uDcc8/F6XQy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DmDNmr9du3aRnp5eqe0jIiLo37+/2r6B5OTkABAdHQ3Ahg0bcLlcldq8W7dutG3bVm1+itxuNwsXLqSgoIABAwaorRvRlClTuOSSSyq1Lej3uzFs376d5ORkzjjjDMaPH8/evXuBxm9r3QzVDw4dOoTb7SYhIaHS8YSEBLZu3RqgWrUM6enpANW2fcVrUn8ej4c777yT888/nzPPPBPwtrndbicyMrJSWbV5/f34448MGDCA4uJiQkNDWbRoET169GDTpk1q60awcOFCNm7cyLp166q8pt/vhtW/f3/mz59P165dSUtLY+bMmfz+979n8+bNjd7WCkAiUm9Tpkxh8+bNlcbspeF17dqVTZs2kZOTwwcffMDEiRNZuXJloKvVLO3bt4877riDlJQUgoKCAl2dZm/UqFG+571796Z///60a9eO9957j+Dg4Eb9bA2B+UFsbCwWi6XKzPWMjAwSExMDVKuWoaJ91fYNb+rUqXzyySf897//pXXr1r7jiYmJlJaWkp2dXam82rz+7HY7nTp1ol+/fsyePZs+ffrw9NNPq60bwYYNG8jMzOTss8/GarVitVpZuXIlzzzzDFarlYSEBLV5I4qMjKRLly7s2LGj0X+/FYD8wG63069fP1asWOE75vF4WLFiBQMGDAhgzZq/Dh06kJiYWKntc3NzWbt2rdq+ngzDYOrUqSxatIgvvviCDh06VHq9X79+2Gy2Sm2+bds29u7dqzZvIB6Ph5KSErV1IxgyZAg//vgjmzZt8m3nnHMO48eP9z1Xmzee/Px8du7cSVJSUuP/fp/yNGqplYULFxoOh8OYP3++8fPPPxs333yzERkZaaSnpwe6aqe9vLw847vvvjO+++47AzCeeOIJ47vvvjP27NljGIZhPPzww0ZkZKTx8ccfGz/88INx2WWXGR06dDCKiooCXPPT06233mpEREQYqampRlpamm8rLCz0lbnllluMtm3bGl988YWxfv16Y8CAAcaAAQMCWOvT17333musXLnS2LVrl/HDDz8Y9957r2EymYxly5YZhqG29odjrwIzDLV5Q/rrX/9qpKamGrt27TK+/vprY+jQoUZsbKyRmZlpGEbjtrUCkB89++yzRtu2bQ273W6cd955xpo1awJdpWbhv//9rwFU2SZOnGgYhvdS+Pvvv99ISEgwHA6HMWTIEGPbtm2BrfRprLq2BozXX3/dV6aoqMi47bbbjKioKMPpdBqXX365kZaWFrhKn8b+53/+x2jXrp1ht9uNuLg4Y8iQIb7wYxhqa384PgCpzRvO1VdfbSQlJRl2u91o1aqVcfXVVxs7duzwvd6YbW0yDMM49X4kERERkdOH5gCJiIhIi6MAJCIiIi2OApCIiIi0OApAIiIi0uIoAImIiEiLowAkIiIiLY4CkIiIiLQ4CkAiIjUwmUwsXrw40NUQkUagACQiTdKkSZMwmUxVtpEjRwa6aiLSDFgDXQERkZqMHDmS119/vdIxh8MRoNqISHOiHiARabIcDgeJiYmVtqioKMA7PPXCCy8watQogoODOeOMM/jggw8qvf/HH3/k4osvJjg4mJiYGG6++Wby8/MrlXnttdfo2bMnDoeDpKQkpk6dWun1Q4cOcfnll+N0OuncuTP//ve/fa8dOXKE8ePHExcXR3BwMJ07d64S2ESkaVIAEpHT1v3338+4ceP4/vvvGT9+PNdccw1btmwBoKCggBEjRhAVFcW6det4//33Wb58eaWA88ILLzBlyhRuvvlmfvzxR/7973/TqVOnSp8xc+ZM/vjHP/LDDz8wevRoxo8fz+HDh32f//PPP7NkyRK2bNnCCy+8QGxsrP8aQETqr0FuqSoi0sAmTpxoWCwWIyQkpNL2j3/8wzAM713pb7nllkrv6d+/v3HrrbcahmEYL730khEVFWXk5+f7Xv/0008Ns9lspKenG4ZhGMnJycb//d//1VgHwPjb3/7m28/PzzcAY8mSJYZhGMaYMWOMyZMnN8wXFhG/0hwgEWmyBg8ezAsvvFDpWHR0tO/5gAEDKr02YMAANm3aBMCWLVvo06cPISEhvtfPP/98PB4P27Ztw2QyceDAAYYMGXLCOvTu3dv3PCQkhPDwcDIzMwG49dZbGTduHBs3bmT48OGMHTuWgQMH1uu7ioh/KQCJSJMVEhJSZUiqoQQHB9eqnM1mq7RvMpnweDwAjBo1ij179vDZZ5+RkpLCkCFDmDJlCo899liD11dEGpbmAInIaWvNmjVV9rt37w5A9+7d+f777ykoKPC9/vXXX2M2m+natSthYWG0b9+eFStWnFId4uLimDhxIm+99RZPPfUUL7300imdT0T8Qz1AItJklZSUkJ6eXumY1Wr1TTR+//33Oeecc7jgggt4++23+fbbb3n11VcBGD9+PA8++CATJ05kxowZHDx4kD//+c9cf/31JCQkADBjxgxuueUW4uPjGTVqFHl5eXz99df8+c9/rlX9HnjgAfr160fPnj0pKSnhk08+8QUwEWnaFIBEpMlaunQpSUlJlY517dqVrVu3At4rtBYuXMhtt91GUlIS77zzDj169ADA6XTy+eefc8cdd3DuuefidDoZN24cTzzxhO9cEydOpLi4mCeffJK77rqL2NhYrrzyylrXz263M336dHbv3k1wcDC///3vWbhwYQN8cxFpbCbDMIxAV0JEpK5MJhOLFi1i7Nixga6KiJyGNAdIREREWhwFIBEREWlxNAdIRE5LGr0XkVOhHiARERFpcRSAREREpMVRABIREZEWRwFIREREWhwFIBEREWlxFIBERESkxVEAEhERkRZHAUhERERaHAUgERERaXH+P0henfrcqdPtAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# вывод графика ошибки по эпохам\n", "plt.plot(H_1h100_2h50.history['loss'])\n", "plt.plot(H_1h100_2h50.history['val_loss'])\n", "plt.grid()\n", "plt.xlabel('Epochs')\n", "plt.ylabel('loss')\n", "plt.legend(['train_loss', 'val_loss'])\n", "plt.title('Loss by epochs')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hyVt8AIf8WdF", "outputId": "d9606cc9-4120-4058-be01-44996f018657" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 4ms/step - accuracy: 0.9413 - loss: 0.2001\n", "Loss on test data: 0.19637857377529144\n", "Accuracy on test data: 0.9409000277519226\n" ] } ], "source": [ "# Оценка качества работы модели на тестовых данных\n", "scores = model_1h100_2h50.evaluate(X_test, y_test)\n", "print('Loss on test data:', scores[0])\n", "print('Accuracy on test data:', scores[1])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "При 100 нейронах" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 255 }, "id": "Jwa5_2La8YVK", "outputId": "b91dcfdd-c897-42f5-b86d-10e1cfbd39e6" }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential_5\"\n",
              "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential_5\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense_10 (Dense)                │ (None, 100)            │        78,500 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_11 (Dense)                │ (None, 100)            │        10,100 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_12 (Dense)                │ (None, 10)             │         1,010 │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ dense_10 (\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_11 (\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_12 (\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" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 89,610 (350.04 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 89,610 (350.04 KB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "# создаем модель\n", "model_1h100_2h100 = Sequential()\n", "model_1h100_2h100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n", "model_1h100_2h100.add(Dense(units=100, activation='sigmoid'))\n", "model_1h100_2h100.add(Dense(units=num_classes, activation='softmax'))\n", "# компилируем модель\n", "model_1h100_2h100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", "\n", "# вывод информации об архитектуре модели\n", "print(model_1h100_2h100.summary())\n" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "53xD1sJ68ajO", "outputId": "a9814b5c-4dc8-47de-e3a5-c734b429b534" }, "outputs": [ { "name": "stdout", "output_type": "stream", "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.1944 - loss: 2.2929 - val_accuracy: 0.6115 - val_loss: 2.1164\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.5457 - loss: 2.0001 - val_accuracy: 0.6318 - val_loss: 1.5437\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.6726 - loss: 1.3931 - val_accuracy: 0.7293 - val_loss: 1.0558\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.7587 - loss: 0.9758 - val_accuracy: 0.7947 - val_loss: 0.7999\n", "Epoch 5/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.8090 - loss: 0.7507 - val_accuracy: 0.8320 - val_loss: 0.6535\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.8389 - loss: 0.6182 - val_accuracy: 0.8545 - val_loss: 0.5586\n", "Epoch 7/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8608 - loss: 0.5351 - val_accuracy: 0.8667 - val_loss: 0.4988\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.8739 - loss: 0.4841 - val_accuracy: 0.8795 - val_loss: 0.4540\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.8840 - loss: 0.4400 - val_accuracy: 0.8870 - val_loss: 0.4242\n", "Epoch 10/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.8883 - loss: 0.4093 - val_accuracy: 0.8925 - val_loss: 0.4002\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.8930 - loss: 0.3890 - val_accuracy: 0.8972 - val_loss: 0.3819\n", "Epoch 12/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - accuracy: 0.9000 - loss: 0.3661 - val_accuracy: 0.8988 - val_loss: 0.3690\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.9026 - loss: 0.3532 - val_accuracy: 0.9015 - val_loss: 0.3564\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.9043 - loss: 0.3411 - val_accuracy: 0.9017 - val_loss: 0.3475\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.9055 - loss: 0.3358 - val_accuracy: 0.9058 - val_loss: 0.3394\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.9109 - loss: 0.3194 - val_accuracy: 0.9075 - val_loss: 0.3318\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.9103 - loss: 0.3186 - val_accuracy: 0.9080 - val_loss: 0.3267\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.9138 - loss: 0.3052 - val_accuracy: 0.9105 - val_loss: 0.3198\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.9142 - loss: 0.3061 - val_accuracy: 0.9128 - val_loss: 0.3145\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.9147 - loss: 0.3001 - val_accuracy: 0.9128 - val_loss: 0.3095\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.9166 - loss: 0.2913 - val_accuracy: 0.9142 - val_loss: 0.3045\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.9173 - loss: 0.2876 - val_accuracy: 0.9145 - val_loss: 0.3003\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.9193 - loss: 0.2844 - val_accuracy: 0.9165 - val_loss: 0.2951\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.9211 - loss: 0.2803 - val_accuracy: 0.9180 - val_loss: 0.2910\n", "Epoch 25/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9229 - loss: 0.2690 - val_accuracy: 0.9180 - val_loss: 0.2867\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.9246 - loss: 0.2602 - val_accuracy: 0.9185 - val_loss: 0.2839\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.9271 - loss: 0.2599 - val_accuracy: 0.9180 - val_loss: 0.2797\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.9270 - loss: 0.2543 - val_accuracy: 0.9203 - val_loss: 0.2769\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.9271 - loss: 0.2561 - val_accuracy: 0.9205 - val_loss: 0.2731\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.9275 - loss: 0.2486 - val_accuracy: 0.9215 - val_loss: 0.2698\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.9294 - loss: 0.2477 - val_accuracy: 0.9233 - val_loss: 0.2671\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.9312 - loss: 0.2327 - val_accuracy: 0.9240 - val_loss: 0.2626\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.9308 - loss: 0.2468 - val_accuracy: 0.9242 - val_loss: 0.2584\n", "Epoch 34/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9338 - loss: 0.2294 - val_accuracy: 0.9253 - val_loss: 0.2565\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.9343 - loss: 0.2303 - val_accuracy: 0.9270 - val_loss: 0.2528\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.9347 - loss: 0.2280 - val_accuracy: 0.9268 - val_loss: 0.2493\n", "Epoch 37/50\n", "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9360 - loss: 0.2212 - val_accuracy: 0.9283 - val_loss: 0.2461\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.9365 - loss: 0.2156 - val_accuracy: 0.9280 - val_loss: 0.2451\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.9358 - loss: 0.2198 - val_accuracy: 0.9298 - val_loss: 0.2416\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.9377 - loss: 0.2160 - val_accuracy: 0.9303 - val_loss: 0.2382\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.9387 - loss: 0.2135 - val_accuracy: 0.9320 - val_loss: 0.2348\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.9376 - loss: 0.2087 - val_accuracy: 0.9318 - val_loss: 0.2328\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.9415 - loss: 0.2067 - val_accuracy: 0.9322 - val_loss: 0.2317\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.9413 - loss: 0.2016 - val_accuracy: 0.9330 - val_loss: 0.2282\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.9420 - loss: 0.2022 - val_accuracy: 0.9335 - val_loss: 0.2260\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.9428 - loss: 0.1934 - val_accuracy: 0.9343 - val_loss: 0.2235\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.9415 - loss: 0.1984 - val_accuracy: 0.9340 - val_loss: 0.2208\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.9434 - loss: 0.1941 - val_accuracy: 0.9363 - val_loss: 0.2184\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.9455 - loss: 0.1875 - val_accuracy: 0.9352 - val_loss: 0.2152\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.9460 - loss: 0.1874 - val_accuracy: 0.9367 - val_loss: 0.2136\n" ] } ], "source": [ "# Обучаем модель\n", "H_1h100_2h100 = model_1h100_2h100.fit(X_train, y_train, validation_split=0.1, epochs=50)\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "TEuphppI9V3C", "outputId": "803d322c-6c66-4e9c-e952-5f63583b93c0" }, "outputs": [ { "data": { "image/png": "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ssngAFdeeSXbtm3j2WefJS0tjUcffZRu3brx2WefBaqaIvWeApCIHFdiYiIOh4NNmzZVem3jxo2YzWZatGjhOxYXF8eECRN466232L17Nz169GDatGkV3teuXTv+/ve/s2jRItatW0dJSQmPP/74Sevidrsr9WL89ttvALRu3bpCHS688ELefPNNdu7cybJly07a++Otl2EYtGnThkGDBlXa/vCHP1Qov3fvXvLz809Yn1atWrF582bcbneFchs3bvS97v3svXv3Vpq8fSpSU1O5+eabWbBgAdu3byc+Pp6HHnrIb+cXaegUgETkuCwWC0OGDOHDDz+sMMyUmZnJ3LlzOeecc4iKigKocBUSQEREBO3bt6e4uBiAgoICioqKKpRp164dkZGRvjIn89xzz/meG4bBc889h9VqZeDAgRXKXXfddfz666/ceeedWCwWrr766pOe+7LLLsNisTB9+vQKvSnezzr2+5WWllboFSopKeGFF14gMTGR3r17AzBixAgyMjJ4++23K7zv2WefJSIigvPOOw/wXB1nGAbTp0+vVK9j63IyLpeL7OzsCseSkpJIS0urdjuLNAUhwa6AiATfq6++WmktGYBbb72VBx98kPT0dM455xxuvvlmQkJCeOGFFyguLmbmzJm+sl27dmXAgAH07t2buLg4Vq5cyXvvveebuPzbb78xcOBArrzySrp27UpISAjz588nMzOzWgElNDSUhQsXMm7cOPr06cNnn33GJ598wj333ENiYmKFshdeeCHx8fG8++67DB8+nKSkpJOev127djz44INMmTKFHTt2MGrUKCIjI9m+fTvz58/nhhtu4I477vCVT0tL45FHHmHHjh107NiRt99+m7Vr1/Liiy9itVoBuOGGG3jhhRcYP348q1atonXr1rz33nssW7aMp556isjISADOP/98rrvuOp555hk2b97MsGHDcLvdfPPNN5x//vk1uv9Xbm4uzZs35/LLL6dnz55ERETwxRdf8OOPP1arp02kyQjeBWgiEmzey+CPt+3evdswDMNYvXq1MXToUCMiIsJwOBzG+eefb3z33XcVzvXggw8aZ599thETE2OEhYUZnTt3Nh566CHfJeEHDx40Jk6caHTu3NkIDw83oqOjjT59+hjvvPPOSes5btw4Izw83Ni6dasxZMgQw+FwGMnJycbUqVMNl8tV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RKTJMwyDQmfNbmfhdrspLHERUlJa63WAwqyWavcePf300/z222+cdtppPPDAAwCsX78egLvvvpvHHnuMtm3bEhsby+7duxkxYgQPPfQQdrudN954g5EjR7Jp0yZatmx53M+YPn06M2fO5NFHH+XZZ59lzJgx7Ny5s0ZzcQFWrVrFlVdeybRp07jqqqv47rvvuPnmm4mPj2f8+PGsXLmSW265hf/85z/069ePw4cP88033wCwb98+rrnmGmbOnMmll15Kbm4u33zzjW8OUF0JagCaOHEic+fO5cMPPyQyMpKMjAwAoqOjfYsdjR07lmbNmvnGPx955BHuv/9+5s6dS+vWrX3viYiIICIigry8PKZPn87o0aNJSUlh69at3HXXXbRv356hQ4cG54uWaZPgCUAHCnUppohIMBU6XXS9//OAf+6vDwzFYaven97o6GhsNhsOh8N3VfPGjRsBeOCBBxg8eLCvbFxcHD179vTt//Of/2T+/Pl89NFHTJo06bifMX78eK655hoA/vWvf/HMM8/www8/1HjtvCeeeIKBAwdy3333AdCxY0d+/fVXHn30UcaPH8+uXbsIDw/noosuIjIyklatWnH66acDngBUWlrKZZddRqtWrQDP9BW3212zIa0aCuo6QM8//zzZ2dkMGDCA1NRU3/b222/7yuzatYt9+/ZVeE9JSQmXX355hfc89thjAFgsFn7++WcuvvhiOnbsyF/+8hd69+7NN998g91uD/h3LK9tWQA6VAzFpQ3vCgIREakfjh39yMvL44477qBLly7ExMQQERHBhg0b2LVr1wnP06NHD9/z8PBwoqKifLeaqIkNGzbQv3//Csf69+/P5s2bcblcDB48mFatWtG2bVuuu+463nzzTQoKCgDo2bMnAwcOpHv37lxxxRW89NJLHDlypMZ1qKmgD4GdzJIlSyrs79ix44Tlw8LC+PzzwKf66kiMtBNut5Bf7GL34QK6NAtuIBMRaarCrBZ+faBmowJut5vcnFwioyJPaQjMH8LDwyvs33HHHaSnp/PYY4/Rvn17wsLCuPzyyykpKTnheY6dPG8ymerkEv/IyEhWr17NkiVLWLRoEffffz/Tpk3jxx9/JCYmhvT0dL777jsWLVrEs88+yz/+8Q+WL19+SrcuORndzCSATCYTbcrmAe04VBDk2oiINF0mkwmHLaTGW5jNUqv3ebeaXj1ms9lwuU4+V2nZsmWMHz+eSy+9lO7du5OSknLSDgN/6tKlC8uWLatUp44dO/qWnwkJCWHQoEHMnDmTn3/+mR07dvDll18Cnp9H//79mT59OmvWrMFms7FgwYI6rXO9uQy+qWgd72Dd3hy2Hzr+7T5EREQAWrduzYoVK9ixYwcRERHH7Z3p0KEDH3zwASNHjsRkMnHfffcFdLHGv//975x11ln885//5KqrrmL58uU899xz/Pvf/wbg448/Ztu2bZx77rnExsby6aef4na76dSpEytWrGDx4sUMGTKEpKQkVqxYwYEDB+jcuXOd1lk9QAHmnQe0/aB6gERE5MTuuOMOLBYLXbt2JTEx8bhzep544gliY2Pp168fI0eOZOjQoZxxxhkBq+cZZ5zBO++8w7x58zjttNO4//77eeCBBxg/fjwAMTExfPDBB1xwwQV06dKF2bNn89Zbb9GtWzeioqL4+uuvGTFiBB07duTee+/l8ccfZ/jw4XVaZ/UABVjrBM/iUdsPqgdIREROrGPHjixfvrzCMW+oKK9169a+4SSviRMnVtg/dkisqnm4WVlZ1arXgAEDKr1/9OjRjB49usry55xzTqU5vV5dunSpdG9QoM57sNQDFGCaAyQiIhJ8CkAB1ire0wN0MK+EnCLdwFBEROqfG2+80be+3rHbjTfeGOzq+YWGwAIsMjSEKKtBjtPE9gP59GwRE+wqiYiIVPDAAw9wxx13VPlaXd37K9AUgIIgKQxynJ55QApAIiJS3yQlJZGUlBTsatQpDYEFQWKoZ+LYNk2EFhERCQoFoCBICvMEIF0JJiIiEhwKQEGQFOp53HYgL7gVERERaaIUgIIgsVwPUHXuhyYiIiL+pQAUBPF2sJhNFJS42J9bHOzqiIiINDkKQEEQYjJoHhMGwLYDmgckIiJ1o3Xr1jz11FPVKmsymer8BqT1iQJQIH33LCGPt6fbnrm0KbslxraDmgckIiISaApAgWQyYyrKItSZRRvvTVHVAyQiIhJwCkCBFJEMQGhpFq3jdVNUERE5vhdffJG0tLRKNwW95JJL+POf/8zWrVu55JJLSE5OJiIigrPOOosvvvjCb5//yy+/cMEFFxAWFkZ8fDw33HADeXlHRy2WLFnC2WefTXh4ODExMfTv35+dO3cC8NNPP3H++ecTGRlJVFQUvXv3ZuXKlX6rmz8oAAVSZAoAoc4s2np7gBSAREQCzzCgJL/mm7Ogdu/zbjW48veKK67g0KFDfPXVV75jhw8fZuHChYwZM4a8vDxGjBjB4sWLWbNmDcOGDWPkyJHs2rXrlJsnPz+foUOHEhsby48//si7777LF198waRJkwAoLS1l1KhRnHfeefz8888sX76cG264AZPJBMCYMWNo3rw5P/74I6tWreLuu+/GarWecr38SbfCCKQIbwDKpnXZHKBdhwtwutxYLcqiIiIB4yyAf6XV6C1mIOZUP/eevWALr1bR2NhYhg8fzty5cxk4cCAA7733HgkJCZx//vmYzWZ69uzpK//Pf/6T+fPn89FHH/mCSm3NnTuXoqIi3njjDcLDPfV97rnnGDlyJI888ghWq5Xs7Gwuuugi2rVrB0CXLl1879+1axd33nknnTt3BqBDhw6nVJ+6oL+6gRTpGQILcReRbHcSZrVQ6jbYfbggyBUTEZH6aMyYMbz//vsUF3uWTHnzzTe5+uqrMZvN5OXlcccdd9ClSxdiYmKIiIhgw4YNfukB2rBhAz179vSFH4D+/fvjdrvZtGkTcXFxjB8/nqFDhzJy5Eiefvpp9u3b5ys7efJk/vrXvzJo0CAefvhhtm7desp18jf1AAWSPRLDGo7JmY8pfz9tEsL5dV8O2w/m0zYxIti1ExFpOqwOT29MDbjdbnJyc4mKjMRsrmX/gdVRo+IjR47EMAw++eQTzjrrLL755huefPJJAO644w7S09N57LHHaN++PWFhYVx++eWUlJTUrm419Nprr3HLLbewcOFC3n77be69917S09P5wx/+wLRp07j22mv55JNP+Oyzz5g6dSrz5s3j0ksvDUjdqkMBKNAikuDIdkx5mbRNjOTXfTlsO5DPwC4nf6uIiPiJyVTtoSgftxusLs/7ahuAaig0NJTLLruMN998ky1bttCpUyfOOOMMAJYtW8b48eN9oSIvL48dO3b45XO7dOnCnDlzyM/P9/UCLVu2DLPZTKdOnXzlTj/9dE4//XSmTJlC3759mTt3Ln/4wx8A6NixIx07duT222/nmmuu4bXXXqtXAUhDYAFmlF0JRl6mbyK07govIiLHM2bMGD755BNeffVVxowZ4zveoUMHPvjgA9auXctPP/3EtddeW+mKsVP5zNDQUMaNG8e6dev46quv+Nvf/sZ1111H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CkD13TFDYEneAJSnACQiIlJbCkD13bG3wygLQIfyinG5jWDVSkREpEFTAKrvvAEoxxOA4sPtmE3gNuBQvnqBREREakMBqL7zBaC94HZhMZuIj9A8IBERkVOhAFTfRaSAyQzuUsjbD+iu8CIiIqdKAai+s4RAZKrnua4EExER8QsFoIbANxHasxZQkgKQiIjIKVEAagi0GrSIiIhfKQA1BN7FEI+5FF4BSEREpHYUgBoC7+0wyi6FT4oMBRSAREREaksBqCE4zhDY/tyiYNVIRESkQQtqAPr6668ZOXIkaWlpmEwmFixYcMLyH3zwAYMHDyYxMZGoqCj69u3L559/XqHMtGnTMJlMFbbOnTvX4bcIgOOsBq0eIBERkdqpVQB6/fXX+eSTT3z7d911FzExMfTr14+dO3dW+zz5+fn07NmTWbNmVav8119/zeDBg/n0009ZtWoV559/PiNHjmTNmjUVynXr1o19+/b5tm+//bbadaqXvAEofz+UFpMc5QlA+SUusgpKglgxERGRhimkNm/617/+xfPPPw/A8uXLmTVrFk8++SQff/wxt99+Ox988EG1zjN8+HCGDx9e7c996qmnKtXjww8/5H//+x+nn36673hISAgpKSnVPm+954iHkFAoLYKcvTji2pAaHcq+7CK2HsindytbsGsoIiLSoNSqB2j37t20b98egAULFjB69GhuuOEGZsyYwTfffOPXCp6I2+0mNzeXuLi4Csc3b95MWloabdu2ZcyYMezatStgdaoTJlO5eUCeYbD2SREAbD2QF6xaiYiINFi16gGKiIjg0KFDtGzZkkWLFjF58mQAQkNDKSws9GsFT+Sxxx4jLy+PK6+80nesT58+zJkzh06dOrFv3z6mT5/OH//4R9atW0dkZGSV5ykuLqa4+Oh8mpycHACcTidOp9Ovdfaer6bntUSlYT68ldIjuzCaO2kd7+CbzbA5I8fvdWxMatveUjtq78BSeweW2juwatPeNSlbqwA0ePBg/vrXv3L66afz22+/MWLECADWr19P69ata3PKGps7dy7Tp0/nww8/JCkpyXe8/JBajx496NOnD61ateKdd97hL3/5S5XnmjFjBtOnT690fNGiRTgcDv9XHkhPT69R+dNzDFoCm3/8kt92R1CYaQIsLF+/jU9dW+qkjo1JTdtbTo3aO7DU3oGl9g6smrR3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DRs28Pzzz5OQkBC4BhCR2vPLLVVFRPxs3LhxhsViMcLDwytsDz30kGEYnrvS33jjjRXe06dPH+Omm24yDMMwXnzxRSM2NtbIy8vzvf7JJ58YZrPZyMjIMAzDMNLS0ox//OMfx60DYNx7772+/by8PAMwPvvsM8MwDGPkyJHGhAkT/POFRSSgNAdIROqt888/n+eff77Csbi4ON/zvn37Vnitb9++rF27FoANGzbQs2dPwsPDfa/3798ft9vNpk2bMJlM7N27l4EDB56wDj169PA9Dw8PJyoqiv379wNw0003MXr0aFavXs2QIUMYNWoU/fr1q9V3FZHAUgASkXorPDy80pCUv4SFhVWrnNVqrbBvMplwu90ADB8+nJ07d/Lpp5+Snp7OwIEDmThxIo899pjf6ysi/qU5QCLSYH3//feV9rt06QJAly5d+Omnn8jPz/e9vmzZMsxmM506dSIyMpLWrVuzePHiU6pDYmIi48aN47///S9PPfUUL7744imdT0QCQz1AIlJvFRcXk5GRUeFYSEiIb6Lxu+++y5lnnsk555zDm2++yQ8//MArr7wCwJgxY5g6dSrjxo1j2rRpHDhwgL/97W9cd911JCcnAzBt2jRuvPFGkpKSGD58OLm5uSxbtoy//e1v1arf/fffT+/evenWrRvFxcV8/PHHvgAmIvWbApCI1FsLFy4kNTW1wrFOnTqxceNGwHOF1rx587j55ptJTU3lrbfeomvXrgA4HA4+//xzbr31Vs466ywcDgejR4/miSee8J1r3LhxFBUV8eSTT3LHHXeQkJDA5ZdfXu362Ww2pkyZwo4dOwgLC+OPf/wj8+bN88M3F5G6ZjIMwwh2JUREaspkMjF//nxGjRoV7KqISAOkOUAiIiLS5CgAiYiISJOjOUAi0iBp9F5EToV6gERERKTJUQASERGRJkcBSERERJocBSARERFpchSAREREpMlRABIREZEmRwFIREREmhwFIBEREWlyFIBERESkyfn/3hPKnAnYh5oAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# вывод графика ошибки по эпохам\n", "plt.plot(H_1h100_2h100.history['loss'])\n", "plt.plot(H_1h100_2h100.history['val_loss'])\n", "plt.grid()\n", "plt.xlabel('Epochs')\n", "plt.ylabel('loss')\n", "plt.legend(['train_loss', 'val_loss'])\n", "plt.title('Loss by epochs')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2rX-QDO59Xfa", "outputId": "176d5b5b-1bb3-4036-c90c-e0c51bc715db" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 4ms/step - accuracy: 0.9426 - loss: 0.2008\n", "Loss on test data: 0.19593027234077454\n", "Accuracy on test data: 0.9416999816894531\n" ] } ], "source": [ "# Оценка качества работы модели на тестовых данных\n", "scores = model_1h100_2h100.evaluate(X_test, y_test)\n", "print('Loss on test data:', scores[0])\n", "print('Accuracy on test data:', scores[1])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 10\n", "Результаты исследования архитектуры нейронной сети занесли в таблицу" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Таблица с результатами тестирования нейросетевых моделей\n", "\n", "| Количество скрытых слоёв | Количество нейронов в первом скрытом слое | Количество нейронов во втором скрытом слое | Значение метрики качества классификации |\n", "|---------------------------|-------------------------------------------|--------------------------------------------|-----------------------------------------|\n", "| 0 | - | - | 0.9199000000953674 |\n", "| 1 | 100 | - | 0.9398000240325928 |\n", "| | 300 | - | 0.9320999979972839 |\n", "| | 500 | - | 0.9291999936103821 |\n", "| 2 | 100 | 50 | 0.9409000277519226 |\n", "| | 100 | 100 | 0.9416999816894531 |" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Исходя из нашего исследования, можно сделать вывод о том, что наилучшая архитектра - это архитектура с двумя скрытыми слоями (100 нейронов на первом скрытом слое и 100 на втором)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 11\n", "Сохранили наилучшую нейронную сеть на диск\n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "aajOrBxs9ze6" }, "outputs": [], "source": [ "model_1h100_2h100.save('best_model.keras')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 12\n", "Вывели результаты тестирования модели" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 517 }, "id": "Qr75oJVk-BAN", "outputId": "ac2864c3-4dc7-4fc2-f3ff-253a3debd979" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 298ms/step\n", "NN output: [[9.9311924e-01 5.2934556e-08 3.6617029e-03 1.9478831e-04 1.4328006e-05\n", " 2.6737533e-03 2.4743416e-04 3.6820653e-05 2.7412230e-05 2.4572681e-05]]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Real mark: 0\n", "NN answer: 0\n" ] } ], "source": [ "# вывод тестового изображения и результата распознавания 1\n", "n = 123\n", "result = model_1h100_2h100.predict(X_test[n:n+1])\n", "print('NN output:', result)\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": "markdown", "metadata": {}, "source": [ "### Пункт 13\n", "Создали собственные изображения чисел" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 430 }, "id": "bZ1NEkqRC4H9", "outputId": "fa2ea980-148b-4f03-a510-53ddbaea3b7b" }, "outputs": [ { "data": { "image/png": "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Y+3atdq7d68++eSTqH++xe/36/Llyzp37lzU+cP1+TDQdehPSUmJJKXU8yHlA5SRkaG5c+eqoaEhcltfX58aGhpUWlpqOJm9Cxcu6NixYyosLLQexUxxcbH8fn/U8yMcDuvAgQMj/vlx8uRJnT17dlg9P5xzWrt2rXbt2qV9+/apuLg46v65c+dq7NixUc+H1tZWnThxYlg9Hwa7Dv05fPiwJKXW88H6UxDfxs6dO53X63XBYND985//dM8++6zLyclxnZ2d1qMNqV/84heusbHRtbe3u7///e+urKzM5eXluTNnzliPllTnz593n3/+ufv888+dJPf73//eff755+4///mPc865119/3eXk5Lg9e/a4I0eOuMWLF7vi4mJ36dIl48kT62bX4fz58+6FF15wzc3Nrr293X388cfue9/7nrvnnntcT0+P9egJs2bNGufz+VxjY6M7ffp05Lh48WLknNWrV7tJkya5ffv2uYMHD7rS0lJXWlpqOHXiDXYd2tra3K9//Wt38OBB197e7vbs2eOmTp3qFixYYDx5tLQIkHPO/d///Z+bNGmSy8jIcPPmzXMtLS3WIw255cuXu8LCQpeRkeHuvvtut3z5ctfW1mY9VtJ98sknTtINx8qVK51z1z6K/corr7iCggLn9XrdwoULXWtrq+3QSXCz63Dx4kW3aNEid9ddd7mxY8e6yZMnu2eeeWbY/Z+0/v77JbmtW7dGzrl06ZL72c9+5saPH+9uu+02t3TpUnf69Gm7oZNgsOtw4sQJt2DBApebm+u8Xq+bPn26e/HFF10oFLId/Bv45xgAACZS/j0gAMDwRIAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCY+H9l7+twNWwTrQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# загрузка собственного изображения\n", "from PIL import Image\n", "file_data = Image.open('five_v3.png')\n", "file_data = file_data.convert('L') # перевод в градации серого\n", "test_img = np.array(file_data)\n", "\n", "# вывод собственного изображения\n", "plt.imshow(test_img, cmap=plt.get_cmap('gray'))\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "u5omQqGUC_lZ", "outputId": "4a277137-5021-4ba2-b63f-424054a55229" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 31ms/step\n", "I think it's 5\n" ] } ], "source": [ "# предобработка\n", "test_img = test_img / 255\n", "test_img = test_img.reshape(1, num_pixels)\n", "# распознавание\n", "result = model_1h100_2h100.predict(test_img)\n", "print('I think it\\'s ', np.argmax(result))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Пункт 14\n", "Создали копию нарисованных чисел и повернем их на 90 градусов. Протестируем работу нейронной сети." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 465 }, "id": "fqzt-nX7DhwF", "outputId": "69da2d32-936f-49a1-cf5c-51ccb271a668" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "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 2\n" ] } ], "source": [ "file_data = Image.open('three_v3_rotated.png')\n", "file_data = file_data.convert('L') # перевод в градации серого\n", "test_img = np.array(file_data)\n", "\n", "# вывод собственного изображения\n", "plt.imshow(test_img, cmap=plt.get_cmap('gray'))\n", "plt.show()\n", "# предобработка\n", "test_img = test_img / 255\n", "test_img = test_img.reshape(1, num_pixels)\n", "# распознавание\n", "result = model_1h100_2h100.predict(test_img)\n", "print('I think it\\'s ', np.argmax(result))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 465 }, "id": "RQuGz938DvW4", "outputId": "054d9ca8-70af-414f-a860-0e98ee8f38f6" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGuZJREFUeJzt3X9MVff9x/HX9dfVWrgMES7UH0Vtdak/mjllxNbpJCpbjL/+UNs/1BiNDJupa50uq9RtCZtL2qaL0/2xSJtV7UympiYjsVgw29BGqzFmGxEDE6Pg6sa9ioJGPt8//PbWq6C913t533t5PpKTyL3nw333cOTZy70cPc45JwAAelgf6wEAAL0TAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACb6WQ/woM7OTl2+fFlpaWnyeDzW4wAAIuSc0/Xr15WXl6c+fbp/npNwAbp8+bKGDx9uPQYA4Ak1NTVp2LBh3d6fcD+CS0tLsx4BABADj/t+HrcA7dixQ88++6wGDhyogoICffbZZ19rHT92A4DU8Ljv53EJ0EcffaSNGzeqrKxMn3/+uSZNmqQ5c+bo6tWr8Xg4AEAycnEwdepUV1paGvr47t27Li8vz5WXlz92bSAQcJLY2NjY2JJ8CwQCj/x+H/NnQLdv39apU6dUVFQUuq1Pnz4qKipSbW3tQ/t3dHQoGAyGbQCA1BfzAH3xxRe6e/eucnJywm7PyclRc3PzQ/uXl5fL5/OFNt4BBwC9g/m74LZs2aJAIBDampqarEcCAPSAmP8eUFZWlvr27auWlpaw21taWuT3+x/a3+v1yuv1xnoMAECCi/kzoAEDBmjy5MmqqqoK3dbZ2amqqioVFhbG+uEAAEkqLldC2Lhxo5YvX65vf/vbmjp1qt599121tbVp5cqV8Xg4AEASikuAlixZov/85z/aunWrmpub9eKLL6qysvKhNyYAAHovj3POWQ9xv2AwKJ/PZz0GAOAJBQIBpaend3u/+bvgAAC9EwECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMBHzAL311lvyeDxh27hx42L9MACAJNcvHp/0hRde0CeffPLVg/SLy8MAAJJYXMrQr18/+f3+eHxqAECKiMtrQOfPn1deXp5GjRqlV199VRcvXux2346ODgWDwbANAJD6Yh6ggoICVVRUqLKyUjt37lRDQ4NefvllXb9+vcv9y8vL5fP5Qtvw4cNjPRIAIAF5nHMung/Q2tqqkSNH6u2339aqVaseur+jo0MdHR2hj4PBIBECgBQQCASUnp7e7f1xf3dARkaGnn/+edXX13d5v9frldfrjfcYAIAEE/ffA7px44YuXLig3NzceD8UACCJxDxAr7/+umpqatTY2Ki///3vWrhwofr27atly5bF+qEAAEks5j+Cu3TpkpYtW6Zr165p6NCheumll3T8+HENHTo01g8FAEhicX8TQqSCwaB8Pp/1GL3K5s2bo1pXVlYW8ZrW1taI16xcuTLiNZWVlRGvARBbj3sTAteCAwCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMcDHSBBbNRUKjuUDowIEDI17Tk6qrqyNeM3PmzNgPEkPRfG03bdoU8ZrBgwdHvEaS/vvf/0a8Ztu2bRGv2bVrV8RrkDy4GCkAICERIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABFfD7iHRXP24vLw8DpPYam9vj3hNSUlJxGsqKioiXtOTEuyvXVJpbm6OeM3KlSujeqzKysqo1uEeroYNAEhIBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJLkbaQxLsMMcEFxaNXiqeD4mstbU1qnXLli2LeA0XMP0KFyMFACQkAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMBEP+sBktHmzZutR4iplStXRrUuFS8Sinv27dsX8ZqlS5fGYZLYyMjI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AMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgImIAlReXq4pU6YoLS1N2dnZWrBggerq6sL2mTFjhjweT9i2du3amA4NAEh+EQWopqZGpaWlOn78uI4cOaI7d+5o9uzZamtrC9tv9erVunLlSmjbvn17TIcGACS/fpHsXFlZGfZxRUWFsrOzderUKU2fPj10+1NPPSW/3x+bCQEAKemJXgMKBAKSpMzMzLDbP/zwQ2VlZWn8+PHasmWLbt682e3n6OjoUDAYDNsAAL2Ai9Ldu3fdD37wAzdt2rSw23//+9+7yspKd/bsWffHP/7RPfPMM27hwoXdfp6ysjIniY2NjY0txbZAIPDIjkQdoLVr17qRI0e6pqamR+5XVVXlJLn6+vou729vb3eBQCC0NTU1mR80NjY2NrYn3x4XoIheA/rSunXrdPjwYR07dkzDhg175L4FBQWSpPr6eo0ePfqh+71er7xebzRjAACSWEQBcs7ptdde04EDB1RdXa38/PzHrjlz5owkKTc3N6oBAQCpKaIAlZaWas+ePTp06JDS0tLU3NwsSfL5fBo0aJAuXLigPXv26Pvf/76GDBmis2fPasOGDZo+fbomTpwYl/8AAECSiuR1H3Xzc77du3c755y7ePGimz59usvMzHRer9eNGTPGvfHGG4/9OeD9AoGA+c8t2djY2NiefHvc937P/4clYQSDQfl8PusxAABPKBAIKD09vdv7uRYcAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMBEwgXIOWc9AgAgBh73/TzhAnT9+nXrEQAAMfC47+cel2BPOTo7O3X58mWlpaXJ4/GE3RcMBjV8+HA1NTUpPT3daEJ7HId7OA73cBzu4TjckwjHwTmn69evKy8vT336dP88p18PzvS19OnTR8OGDXvkPunp6b36BPsSx+EejsM9HId7OA73WB8Hn8/32H0S7kdwAIDegQABAEwkVYC8Xq/Kysrk9XqtRzHFcbiH43APx+EejsM9yXQcEu5NCACA3iGpngEBAFIHAQIAmCBAAAATBAgAYCJpArRjxw49++yzGjhwoAoKCvTZZ59Zj9Tj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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "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 2\n" ] } ], "source": [ "file_data = Image.open('five_v3_rotated.png')\n", "file_data = file_data.convert('L') # перевод в градации серого\n", "test_img = np.array(file_data)\n", "\n", "# вывод собственного изображения\n", "plt.imshow(test_img, cmap=plt.get_cmap('gray'))\n", "plt.show()\n", "# предобработка\n", "test_img = test_img / 255\n", "test_img = test_img.reshape(1, num_pixels)\n", "# распознавание\n", "result = model_1h100_2h100.predict(test_img)\n", "print('I think it\\'s ', np.argmax(result))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Нейросеть некорректно определила повернутые изображения." ] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "T4", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }