diff --git a/digit1.ipynb b/digit1.ipynb
new file mode 100644
index 00000000..509f203e
--- /dev/null
+++ b/digit1.ipynb
@@ -0,0 +1,877 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "hw1.ipynb",
+ "provenance": [],
+ "authorship_tag": "ABX9TyPs91cxb+RoFc2HJUpZ1eAw",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "accelerator": "GPU"
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "HIIxpMpEBknA",
+ "colab_type": "text"
+ },
+ "source": [
+ "**ДОМАШНЕЕ ЗАДАНИЕ №1 июльский курс - 2020 PRO**"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "f-abncETC1Ue",
+ "colab_type": "text"
+ },
+ "source": [
+ "#LIGHT"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "NDT7mIPdB-EW",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Импорт библиотек.**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "hBMkkgdRRgZd",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras.datasets import mnist #Библиотека с базой Mnist\n",
+ "from tensorflow.keras.models import Sequential # Подлючаем класс создания модели Sequential\n",
+ "from tensorflow.keras.layers import Dense # Подключаем класс Dense - полносвязный слой\n",
+ "from tensorflow.keras.optimizers import Adam # Подключаем оптимизатор Adam\n",
+ "from tensorflow.keras import utils #Утилиты для to_categorical\n",
+ "from tensorflow.keras.preprocessing import image #Для отрисовки изображения\n",
+ "import numpy as np # Подключаем библиотеку numpy\n",
+ "import pylab # Модуль для построения графиков\n",
+ "from mpl_toolkits.mplot3d import Axes3D # Модуль для трехмерной графики\n",
+ "from google.colab import files #Для загрузки своей картинки\n",
+ "import matplotlib.pyplot as plt #Отрисовка изображений\n",
+ "from PIL import Image #Отрисовка изображений\n",
+ "#Отрисовывать изображения в ноутбуке, а не в консоль или файл\n",
+ "%matplotlib inline "
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "F5Vp3O2eCXnO",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Загрузка базы mnist.**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "tz9qMk1kCZw4",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 51
+ },
+ "outputId": "1a4706aa-19f4-40cc-deb0-0deb916a5aca"
+ },
+ "source": [
+ "(x_train_org, y_train_org), (x_test_org, y_test_org) = mnist.load_data() #Загрузка данных Mnist"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
+ "11493376/11490434 [==============================] - 0s 0us/step\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "kzXhTMKsCa7O",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Создание нейронной сети.**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "LELYqXAlCkW2",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "model = Sequential() # Создаём сеть прямого распространения\n",
+ "model.add(Dense(400, input_dim=784, activation=\"relu\")) # Добавляем полносвязный слой на 800 нейронов с relu-активацией\n",
+ "model.add(Dense(800, activation=\"relu\")) # Добавляем полносвязный слой на 400 нейронов с relu-активацией\n",
+ "model.add(Dense(10, activation=\"softmax\")) # Добавляем полносвязный слой на 10 нейронов с softmax-активацией"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "LB94ohjmG3Pn",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 272
+ },
+ "outputId": "aadded7b-fa52-4b8c-e92a-04f9c0e3b2c2"
+ },
+ "source": [
+ "model.compile(loss=\"categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]) # Компилируем модель\n",
+ "print(model.summary()) #Вывод структуры модели"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Model: \"sequential\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "dense (Dense) (None, 400) 314000 \n",
+ "_________________________________________________________________\n",
+ "dense_1 (Dense) (None, 800) 320800 \n",
+ "_________________________________________________________________\n",
+ "dense_2 (Dense) (None, 10) 8010 \n",
+ "=================================================================\n",
+ "Total params: 642,810\n",
+ "Trainable params: 642,810\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n",
+ "None\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "-kIjIZJrCkv2",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Обучение нейронной сети.**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "ZFjjiRaCD693",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 51
+ },
+ "outputId": "5666dc76-a666-403f-926c-f76e9b02d4be"
+ },
+ "source": [
+ "#Меняем формат входных картинок с 28х28 на 784х1\n",
+ "x_train = x_train_org.reshape(60000, 784)\n",
+ "x_test = x_test_org.reshape(10000, 784)\n",
+ "print(x_train_org.shape)\n",
+ "print(x_train.shape)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "(60000, 28, 28)\n",
+ "(60000, 784)\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "WslIHytTEAYG",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "#Нормализуем входные картинки\n",
+ "x_train = x_train.astype('float32') # преобразовываем x_train в тип float (цифры с плавающей точкой)\n",
+ "x_train = x_train / 255 # делим на 255, чтобы диапазон был от 0 до 1\n",
+ "x_test = x_test.astype('float32') # преобразовываем x_test в тип float (цифры с плавающей точкой)\n",
+ "x_test = x_test / 255 # делим на 255, чтобы диапазон был от 0 до 1"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "B3FYoGj8HLgP",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "# Преобразуем ответы в формат one_hot_encoding\n",
+ "y_train = utils.to_categorical(y_train_org, 10)\n",
+ "y_test = utils.to_categorical(y_test_org, 10)"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "5RdDmCk1DDt2",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 544
+ },
+ "outputId": "b73c796c-bb71-43ee-9017-031cee402442"
+ },
+ "source": [
+ "#fit - функция обучения нейронки\n",
+ "#x_train, y_train - обучающая выборка, входные и выходные данные\n",
+ "#batch_size - размер батча, количество примеров, которое обрабатывает нейронка перед одним изменением весов\n",
+ "#epochs - количество эпох, когда нейронка обучается на всех примерах выборки\n",
+ "#verbose - 0 - не визуализировать ход обучения, 1 - визуализировать\n",
+ "model.fit(x_train, y_train, batch_size=128, epochs=15, verbose=1, validation_split=0.2)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0146 - accuracy: 0.9952 - val_loss: 0.1261 - val_accuracy: 0.9758\n",
+ "Epoch 2/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0089 - accuracy: 0.9975 - val_loss: 0.1142 - val_accuracy: 0.9793\n",
+ "Epoch 3/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0055 - accuracy: 0.9983 - val_loss: 0.1018 - val_accuracy: 0.9821\n",
+ "Epoch 4/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0081 - accuracy: 0.9975 - val_loss: 0.1245 - val_accuracy: 0.9783\n",
+ "Epoch 5/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0076 - accuracy: 0.9974 - val_loss: 0.1196 - val_accuracy: 0.9792\n",
+ "Epoch 6/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0096 - accuracy: 0.9969 - val_loss: 0.1196 - val_accuracy: 0.9797\n",
+ "Epoch 7/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0106 - accuracy: 0.9966 - val_loss: 0.1334 - val_accuracy: 0.9772\n",
+ "Epoch 8/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0078 - accuracy: 0.9975 - val_loss: 0.1448 - val_accuracy: 0.9753\n",
+ "Epoch 9/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0074 - accuracy: 0.9978 - val_loss: 0.1152 - val_accuracy: 0.9812\n",
+ "Epoch 10/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0062 - accuracy: 0.9983 - val_loss: 0.1515 - val_accuracy: 0.9758\n",
+ "Epoch 11/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0061 - accuracy: 0.9982 - val_loss: 0.1325 - val_accuracy: 0.9800\n",
+ "Epoch 12/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0048 - accuracy: 0.9987 - val_loss: 0.1375 - val_accuracy: 0.9792\n",
+ "Epoch 13/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0055 - accuracy: 0.9985 - val_loss: 0.1267 - val_accuracy: 0.9796\n",
+ "Epoch 14/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0073 - accuracy: 0.9980 - val_loss: 0.1678 - val_accuracy: 0.9761\n",
+ "Epoch 15/15\n",
+ "375/375 [==============================] - 2s 5ms/step - loss: 0.0086 - accuracy: 0.9973 - val_loss: 0.1423 - val_accuracy: 0.9797\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 143
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "AJr6Y-T6EsG2",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "model.save_weights('model.h5')\n",
+ "model.load_weights('model.h5')"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "EIhdU44nDtrB",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Проверка - Распознавание рукописных цифр.**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "YwxsgXD8D1F-",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 265
+ },
+ "outputId": "1ae7954a-756e-43a6-8727-12469ef0b720"
+ },
+ "source": [
+ "n_rec = 1 #Номер тестовой цифры, которую будем распознавать\n",
+ "plt.imshow(Image.fromarray(x_test_org[n_rec]).convert('RGBA')) # Нарисуем картинку из тестового набора под номером n_rec\n",
+ "plt.show()"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAANX0lEQVR4nO3df4hd9ZnH8c9n3QTEFskoHQYja436R1zUyiiLK4tLbXRFEwPSJOBiWWH6R4Uq/gpZIcKiyO5298/AlIZG7do0JKaxLpu6oeoKMThKjImx1UhiEyYZsgGbIFKTPPvHnFmmOvfcyTn33nOT5/2C4d57nnvPebj6yfl1z/k6IgTg3PdnTTcAoDcIO5AEYQeSIOxAEoQdSOLPe7kw2xz6B7osIjzT9Fprdtu32/6t7Y9sr6wzLwDd5arn2W2fJ+l3kr4j6aCktyStiIj3Sz7Dmh3osm6s2W+U9FFEfBwRf5T0c0lLaswPQBfVCfslkn4/7fXBYtqfsD1ie8z2WI1lAaip6wfoImJU0qjEZjzQpDpr9kOSLp32en4xDUAfqhP2tyRdafubtudKWi5pS2faAtBplTfjI+Kk7QckbZV0nqS1EbGnY50B6KjKp94qLYx9dqDruvKjGgBnD8IOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Lo6a2kUc0jjzxSWj///PNb1q655prSz95zzz2VepqyZs2a0vr27dtb1p577rlay8aZYc0OJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0lwd9k+sH79+tJ63XPhTdq3b1/L2q233lr62U8++aTT7aTA3WWB5Ag7kARhB5Ig7EAShB1IgrADSRB2IAmuZ++BJs+jf/DBB6X1rVu3ltYvv/zy0vpdd91VWl+wYEHL2r333lv62aeffrq0jjNTK+y290s6LumUpJMRMdyJpgB0XifW7H8bEUc7MB8AXcQ+O5BE3bCHpF/bftv2yExvsD1ie8z2WM1lAaih7mb8zRFxyPY3JL1i+4OIeH36GyJiVNKoxIUwQJNqrdkj4lDxOCHpRUk3dqIpAJ1XOey2L7D99annkhZJ2t2pxgB0Vp3N+EFJL9qems9/RMR/daSrs8zwcPkZx6VLl9aa/549e0rrixcvblk7erT8RMmJEydK63Pnzi2tv/nmm6X1a6+9tmVtYGCg9LPorMphj4iPJbX+Lwmgr3DqDUiCsANJEHYgCcIOJEHYgSS4xLUDhoaGSuvF6cmW2p1au+2220rr4+PjpfU62g0XvXDhwsrzfvnllyt/FmeONTuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJMF59g546aWXSutXXHFFaf348eOl9WPHjp1xT52ybNmy0vqcOXN61AnqYs0OJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0lwnr0HDhw40HQLLT366KOl9auuuqrW/Hfs2FGphs5jzQ4kQdiBJAg7kARhB5Ig7EAShB1IgrADSTgiercwu3cLgyTpzjvvLK1v2LChtN5uyOaJiYnS+vLly1vWXnvttdLPopqImHGggrZrdttrbU/Y3j1t2oDtV2x/WDzO62SzADpvNpvxP5V0+5emrZS0LSKulLSteA2gj7UNe0S8LunL90VaImld8XydpLs73BeADqv62/jBiJgaYOywpMFWb7Q9Immk4nIAdEjtC2EiIsoOvEXEqKRRiQN0QJOqnno7YntIkorH8kOyABpXNexbJN1XPL9P0i870w6Abmm7GW/7BUm3SLrY9kFJqyU9I+kXtu+XdEDSd7vZJKobHh4urbc7j97O+vXrS+ucS+8fbcMeEStalL7d4V4AdBE/lwWSIOxAEoQdSIKwA0kQdiAJbiV9Dti8eXPL2qJFi2rN+9lnny2tP/HEE7Xmj95hzQ4kQdiBJAg7kARhB5Ig7EAShB1IgrADSXAr6bPA0NBQaf3dd99tWbvoootKP3v06NHS+k033VRa37dvX2kdvVf5VtIAzg2EHUiCsANJEHYgCcIOJEHYgSQIO5AE17OfBTZu3Fhab3cuvczzzz9fWuc8+rmDNTuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJMF59j6wePHi0vr1119fed6vvvpqaX316tWV542zS9s1u+21tids75427Unbh2zvLP7u6G6bAOqazWb8TyXdPsP0f4+I64q//+xsWwA6rW3YI+J1Scd60AuALqpzgO4B27uKzfx5rd5ke8T2mO2xGssCUFPVsK+RtEDSdZLGJf2o1RsjYjQihiNiuOKyAHRApbBHxJGIOBURpyX9WNKNnW0LQKdVCrvt6fc2Xippd6v3AugPbc+z235B0i2SLrZ9UNJqSbfYvk5SSNov6ftd7PGs1+5681WrVpXW58yZU3nZO3fuLK2fOHGi8rxxdmkb9ohYMcPkn3ShFwBdxM9lgSQIO5AEYQeSIOxAEoQdSIJLXHvg4YcfLq3fcMMNtea/efPmljUuYcUU1uxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kIQjoncLs3u3sD7y+eefl9brXMIqSfPnz29ZGx8frzVvnH0iwjNNZ80OJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0lwPfs5YGBgoGXtiy++6GEnX/Xpp5+2rLXrrd3vDy688MJKPUnSvHktRyyTJD300EOV5z0bp06dall7/PHHSz/72WefVVoma3YgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSILz7OeAXbt2Nd1CSxs2bGhZa3et/eDgYGl92bJllXrqd4cPHy6tP/XUU5Xm23bNbvtS27+x/b7tPbZ/WEwfsP2K7Q+Lx/JfKQBo1Gw2409KejgiFkr6K0k/sL1Q0kpJ2yLiSknbitcA+lTbsEfEeES8Uzw/LmmvpEskLZG0rnjbOkl3d6tJAPWd0T677cskfUvSDkmDETG103VY0ow7WLZHJI1UbxFAJ8z6aLztr0naKOnBiPjD9FpM3rVyxptJRsRoRAxHxHCtTgHUMquw256jyaD/LCI2FZOP2B4q6kOSJrrTIoBOaHsradvW5D75sYh4cNr0f5H0vxHxjO2VkgYi4rE280p5K+lNmzaV1pcsWdKjTnI5efJky9rp06drzXvLli2l9bGxscrzfuONN0rr27dvL623upX0bPbZ/1rS30t6z/bOYtoqSc9I+oXt+yUdkPTdWcwLQEPahj0i3pA0478Ukr7d2XYAdAs/lwWSIOxAEoQdSIKwA0kQdiAJhmzuA489VvrzhNpDOpe5+uqrS+vdvIx07dq1pfX9+/fXmn/Z7xv27t1ba979jCGbgeQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJzrMD5xjOswPJEXYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EASbcNu+1Lbv7H9vu09tn9YTH/S9iHbO4u/O7rfLoCq2t68wvaQpKGIeMf21yW9LeluTY7HfiIi/nXWC+PmFUDXtbp5xWzGZx+XNF48P257r6RLOtsegG47o31225dJ+pakHcWkB2zvsr3W9rwWnxmxPWZ7rFanAGqZ9T3obH9N0muSnoqITbYHJR2VFJL+SZOb+v/QZh5sxgNd1mozflZhtz1H0q8kbY2If5uhfpmkX0XEX7aZD2EHuqzyDSdtW9JPJO2dHvTiwN2UpZJ2120SQPfM5mj8zZL+R9J7kk4Xk1dJWiHpOk1uxu+X9P3iYF7ZvFizA11WazO+Uwg70H3cNx5IjrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5BE2xtOdthRSQemvb64mNaP+rW3fu1LoreqOtnbX7Qq9PR69q8s3B6LiOHGGijRr731a18SvVXVq97YjAeSIOxAEk2HfbTh5Zfp1976tS+J3qrqSW+N7rMD6J2m1+wAeoSwA0k0Enbbt9v+re2PbK9soodWbO+3/V4xDHWj49MVY+hN2N49bdqA7Vdsf1g8zjjGXkO99cUw3iXDjDf63TU9/HnP99ltnyfpd5K+I+mgpLckrYiI93vaSAu290sajojGf4Bh+28knZD07NTQWrb/WdKxiHim+IdyXkQ83ie9PakzHMa7S721Gmb8e2rwu+vk8OdVNLFmv1HSRxHxcUT8UdLPJS1poI++FxGvSzr2pclLJK0rnq/T5P8sPdeit74QEeMR8U7x/LikqWHGG/3uSvrqiSbCfomk3097fVD9Nd57SPq17bdtjzTdzAwGpw2zdVjSYJPNzKDtMN699KVhxvvmu6sy/HldHKD7qpsj4npJfyfpB8Xmal+KyX2wfjp3ukbSAk2OATgu6UdNNlMMM75R0oMR8YfptSa/uxn66sn31kTYD0m6dNrr+cW0vhARh4rHCUkvanK3o58cmRpBt3icaLif/xcRRyLiVESclvRjNfjdFcOMb5T0s4jYVExu/Lubqa9efW9NhP0tSVfa/qbtuZKWS9rSQB9fYfuC4sCJbF8gaZH6byjqLZLuK57fJ+mXDfbyJ/plGO9Ww4yr4e+u8eHPI6Lnf5Lu0OQR+X2S/rGJHlr0dbmkd4u/PU33JukFTW7WfaHJYxv3S7pI0jZJH0r6b0kDfdTbc5oc2nuXJoM11FBvN2tyE32XpJ3F3x1Nf3clffXke+PnskASHKADkiDsQBKEHUiCsANJEHYgCcIOJEHYgST+D+qZNxvRyLzbAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": [],
+ "needs_background": "light"
+ }
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "P3ZheTsdEDYO",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "15fa9d08-a92e-4200-85c1-a4a6301c52d8"
+ },
+ "source": [
+ "#Выбираем нужную картинку из тестовой выборки\n",
+ "x = x_test[n_rec]\n",
+ "print(x.shape)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "(784,)\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "SuLLtSBHFMrw",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "e8e7a2ff-b510-4c76-eb9f-11cb19dbc417"
+ },
+ "source": [
+ "#Добавляем одну размерность в конце, чтобы нейронка могла распознать пример\n",
+ "#Потому что нейронка принимает именно массив примеров для распознавания\n",
+ "#Мы делаем массив из одного примера\n",
+ "x = np.expand_dims(x, axis=0)\n",
+ "print(x.shape)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "(1, 784)\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "yHK58OE_FWkH",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "31c0c078-5e8f-417d-faac-e41520f92bce"
+ },
+ "source": [
+ "prediction = model.predict(x) #Распознаём наш пример\n",
+ "prediction = np.argmax(prediction) # Получаем индекс самого большого элемента (это итоговая цифра, которую распознала сеть)\n",
+ "print(prediction)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "2\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "hOPtvo9GFg_Q",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "b4968dd9-752c-47f3-f61e-034c75efe544"
+ },
+ "source": [
+ "print(y_test_org[n_rec]) #выводим правильный ответ, для сравнения"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "2\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "CcwxTLo_BxHm",
+ "colab_type": "text"
+ },
+ "source": [
+ "#PRO"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "fL_NSsVz9DUO",
+ "colab_type": "text"
+ },
+ "source": [
+ "##Распознование цифры сделанной в paint"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "gSv6lS1fB4H-",
+ "colab_type": "text"
+ },
+ "source": [
+ "**загрузка файла сделанного в paint изображения цифры**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "r4uezeaRSckM",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "f2ef8443-af0f-4645-e1d5-3c6d6531e7c7"
+ },
+ "source": [
+ "try:\n",
+ " f = open('8.jpg')\n",
+ " f.close()\n",
+ " print('Файл уже загружен')\n",
+ "except IOError: \n",
+ " !wget 'http://rus-books.ru/9.jpg' #загружаем картинку в колаб\n"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Файл уже загружен\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "l_PSkjmpv83w",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Подготовка цифры для распознания**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Chk2LfWtB5I-",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 282
+ },
+ "outputId": "06d626b9-7dba-4575-ce92-1e4f4a02fc8d"
+ },
+ "source": [
+ "img_load = image.load_img('8.jpg', color_mode='grayscale', target_size=(28,28)) #загружаем картинку в переменную.\n",
+ "plt.imshow(img_load, cmap='Greys') #Отрисовка картинки\n",
+ "plt.show() # Вывод картинки\n",
+ "img_arr = image.img_to_array(img_load) #преобразуем изображение в numpy-массив.\n",
+ "img = img_arr.reshape(1,784) #Меняем формат входных картинок с 28х28 на 784х1\n",
+ "img = img.astype('float32') #преобразовываем img в тип float (цифры с плавающей точкой)\n",
+ "img = img / 255 #делим на 255, чтобы диапазон был от 0 до 1\n",
+ "img = 1 - img #инвертируем\n",
+ "print(img.shape)\n",
+ "\n"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": [],
+ "needs_background": "light"
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "(1, 784)\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "tmBtCf6GwcNC",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Распознание цифры**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "CHTZd8aswmym",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 68
+ },
+ "outputId": "89cba6e4-34e8-499a-9a1e-f9b17cd96566"
+ },
+ "source": [
+ "prediction = model.predict(img) #Распознаём наш пример\n",
+ "print(prediction)\n",
+ "prediction = np.argmax(prediction) # Получаем индекс самого большого элемента (это итоговая цифра, которую распознала сеть)\n",
+ "print(prediction)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "[[6.0475139e-11 4.4096535e-11 5.6035683e-06 6.0358128e-05 3.6230723e-14\n",
+ " 3.1714101e-10 1.4482648e-11 3.6355523e-11 9.9993408e-01 6.9718701e-12]]\n",
+ "8\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "eRvZn_s89Xnt",
+ "colab_type": "text"
+ },
+ "source": [
+ "##Распознание цифры написанной на листе от руки"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "k1M_1A1n-hsC",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Загрузка фото цифры сделанной от руки в колаб**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "J9cxw7C_-imL",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "564b639c-f05b-46b5-e981-9300e2cb9565"
+ },
+ "source": [
+ "try:\n",
+ " f = open('4.jpg')\n",
+ " f.close()\n",
+ " print('Файл уже загружен')\n",
+ "except IOError: \n",
+ " !wget 'http://rus-books.ru/4.jpg' #загружаем картинку в колаб"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Файл уже загружен\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "e9ismuBz_Rsj",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Подготовка цифры для распознания**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "yRvmq9eVJgcM",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 265
+ },
+ "outputId": "b830281e-a3a9-499b-c803-396a37360da8"
+ },
+ "source": [
+ "img_load = image.load_img('4.jpg', color_mode='grayscale', target_size=(28,28)) #загружаем картинку в переменную.\n",
+ "\n",
+ "plt.imshow(img_load, cmap='Greys') #Отрисовка картинки\n",
+ "plt.show() # Вывод картинки"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": [],
+ "needs_background": "light"
+ }
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "4HQUyOjd-TWN",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Дополнительная обработка изображения**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "RYICRMxhri1D",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 265
+ },
+ "outputId": "24548299-3f3e-42f4-cd63-bac9c4c70b0a"
+ },
+ "source": [
+ "def bright(source_name, result_name, brightness):\n",
+ " source = Image.open(source_name)\n",
+ " result = Image.new('RGB', source.size)\n",
+ " for x in range(source.size[0]):\n",
+ " for y in range(source.size[1]):\n",
+ " r, g, b = source.getpixel((x, y))\n",
+ "\n",
+ " red = int(r * brightness)\n",
+ " red = min(255, max(0, red))\n",
+ "\n",
+ " green = int(g * brightness)\n",
+ " green = min(255, max(0, green))\n",
+ "\n",
+ " blue = int(b * brightness)\n",
+ " blue = min(255, max(0, blue))\n",
+ "\n",
+ " result.putpixel((x, y), (red, green, blue))\n",
+ " result.save(result_name, \"JPEG\") \n",
+ "bright('4.jpg', '4-1.jpg', 5)\n",
+ "\n",
+ "img_load1 = image.load_img('4-1.jpg', color_mode='grayscale', target_size=(28,28)) #загружаем картинку в переменную.\n",
+ "plt.imshow(img_load1, cmap='Greys') #Отрисовка картинки\n",
+ "plt.show() # Вывод картинки"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": [],
+ "needs_background": "light"
+ }
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "HtsZkxoa_ljr",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "3c7b2617-e619-4cae-b83d-922374cf3154"
+ },
+ "source": [
+ "img_load = image.load_img('4-1.jpg', color_mode='grayscale', target_size=(28,28)) #загружаем картинку в переменную.\n",
+ "img_arr = image.img_to_array(img_load) #преобразуем изображение в numpy-массив.\n",
+ "img = img_arr.reshape(1,784) #Меняем формат входных картинок с 28х28 на 784х1\n",
+ "img = img.astype('float32') #преобразовываем img в тип float (цифры с плавающей точкой)\n",
+ "img = img / 255 #делим на 255, чтобы диапазон был от 0 до 1\n",
+ "img = 1 - img #инвертируем\n",
+ "print(img.shape)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "(1, 784)\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "j1L_RWZtBXWL",
+ "colab_type": "text"
+ },
+ "source": [
+ "**Распознание цифры**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "GfR72hSIBiwK",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "d3bf32c3-4ef7-49cc-a2ca-9e55d332af52"
+ },
+ "source": [
+ "prediction = model.predict(img) #Распознаём наш пример\n",
+ "prediction = np.argmax(prediction) # Получаем индекс самого большого элемента (это итоговая цифра, которую распознала сеть)\n",
+ "print(prediction)"
+ ],
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "4\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file