diff --git a/predict-letter-32x32rgb.ipynb b/predict-letter-32x32rgb.ipynb index 3c471bb9b..b82ed08ef 100644 --- a/predict-letter-32x32rgb.ipynb +++ b/predict-letter-32x32rgb.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 6, + "execution_count": 61, "metadata": {}, "outputs": [], "source": [ @@ -23,7 +23,10 @@ " 'testdata/э.png',\n", " 'testdata/з.png',\n", " 'testdata/о.png',\n", - " 'testdata/ъ.png'\n", + " 'testdata/ъ.png',\n", + " 'testdata/БУКВАП.jpg',\n", + " 'testdata/БУКВАИ.jpg',\n", + " 'testdata/БУКВАБ.jpg'\n", "]\n", "\n", "model_name = 'russian-cursive-32x32rgb.model.keras'" @@ -31,166 +34,67 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "testdata/a.png: Скорее всего это буква \"И\" с уверенностью 96 %\n", + "testdata/a.png: Скорее всего это буква \"а\" с уверенностью 100 %\n", "testdata/б.png: Скорее всего это буква \"б\" с уверенностью 98 %\n", - "testdata/Т.png: Скорее всего это буква \"ж\" с уверенностью 100 %\n", - "testdata/Ё.png: Скорее всего это буква \"Ё\" с уверенностью 100 %\n", + "testdata/Т.png: Скорее всего это буква \"т\" с уверенностью 43 %\n", + "testdata/Ё.png: Скорее всего это буква \"Ё\" с уверенностью 91 %\n", "testdata/Г.png: Скорее всего это буква \"Г\" с уверенностью 100 %\n", - "testdata/и.png: Скорее всего это буква \"ь\" с уверенностью 72 %\n", - "testdata/к.png: Скорее всего это буква \"к\" с уверенностью 75 %\n", - "testdata/л.png: Скорее всего это буква \"й\" с уверенностью 68 %\n", + "testdata/и.png: Скорее всего это буква \"и\" с уверенностью 99 %\n", + "testdata/к.png: Скорее всего это буква \"к\" с уверенностью 100 %\n", + "testdata/л.png: Скорее всего это буква \"л\" с уверенностью 100 %\n", "testdata/м.png: Скорее всего это буква \"м\" с уверенностью 100 %\n", - "testdata/н.png: Скорее всего это буква \"н\" с уверенностью 97 %\n", - "testdata/р.png: Скорее всего это буква \"т\" с уверенностью 99 %\n", - "testdata/Ц.png: Скорее всего это буква \"и\" с уверенностью 93 %\n", - "testdata/X.png: Скорее всего это буква \"Т\" с уверенностью 100 %\n", + "testdata/н.png: Скорее всего это буква \"н\" с уверенностью 100 %\n", + "testdata/р.png: Скорее всего это буква \"р\" с уверенностью 100 %\n", + "testdata/Ц.png: Скорее всего это буква \"Ц\" с уверенностью 100 %\n", + "testdata/X.png: Скорее всего это буква \"Т\" с уверенностью 91 %\n", "testdata/э.png: Скорее всего это буква \"Э\" с уверенностью 100 %\n", - "testdata/з.png: Скорее всего это буква \"ъ\" с уверенностью 100 %\n", - "testdata/о.png: Скорее всего это буква \"о\" с уверенностью 69 %\n", - "testdata/ъ.png: Скорее всего это буква \"ъ\" с уверенностью 100 %\n" - ] - }, - { - "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",
-       "│ rescaling_1 (Rescaling)         │ (None, 32, 32, 3)      │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_4 (Conv2D)               │ (None, 32, 32, 16)     │           448 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_4 (MaxPooling2D)  │ (None, 16, 16, 16)     │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_5 (Conv2D)               │ (None, 16, 16, 32)     │         4,640 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_5 (MaxPooling2D)  │ (None, 8, 8, 32)       │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_6 (Conv2D)               │ (None, 8, 8, 64)       │        18,496 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_6 (MaxPooling2D)  │ (None, 4, 4, 64)       │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_7 (Conv2D)               │ (None, 4, 4, 128)      │        73,856 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_7 (MaxPooling2D)  │ (None, 2, 2, 128)      │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ flatten_1 (Flatten)             │ (None, 512)            │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ dense_2 (Dense)                 │ (None, 256)            │       131,328 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ dense_3 (Dense)                 │ (None, 66)             │        16,962 │\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", - "│ rescaling_1 (\u001b[38;5;33mRescaling\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m3\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_4 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m16\u001b[0m) │ \u001b[38;5;34m448\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_4 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_5 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m4,640\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_5 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_6 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_6 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_7 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m73,856\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_7 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ flatten_1 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m131,328\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ dense_3 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m66\u001b[0m) │ \u001b[38;5;34m16,962\u001b[0m │\n", - "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
 Total params: 737,192 (2.81 MB)\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m737,192\u001b[0m (2.81 MB)\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
 Trainable params: 245,730 (959.88 KB)\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m245,730\u001b[0m (959.88 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" - }, - { - "data": { - "text/html": [ - "
 Optimizer params: 491,462 (1.87 MB)\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m Optimizer params: \u001b[0m\u001b[38;5;34m491,462\u001b[0m (1.87 MB)\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "testdata/з.png: Скорее всего это буква \"З\" с уверенностью 100 %\n", + "testdata/о.png: Скорее всего это буква \"о\" с уверенностью 100 %\n", + "testdata/ъ.png: Скорее всего это буква \"ъ\" с уверенностью 100 %\n", + "testdata/БУКВАП.jpg: Скорее всего это буква \"п\" с уверенностью 82 %\n", + "testdata/БУКВАИ.jpg: Скорее всего это буква \"и\" с уверенностью 33 %\n", + "testdata/БУКВАБ.jpg: Скорее всего это буква \"б\" с уверенностью 100 %\n", + "Model: \"sequential_14\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " rescaling_14 (Rescaling) (None, 32, 32, 3) 0 \n", + " \n", + " conv2d_57 (Conv2D) (None, 32, 32, 16) 448 \n", + " \n", + " max_pooling2d_57 (MaxPooli (None, 16, 16, 16) 0 \n", + " ng2D) \n", + " \n", + " conv2d_58 (Conv2D) (None, 16, 16, 32) 4640 \n", + " \n", + " max_pooling2d_58 (MaxPooli (None, 8, 8, 32) 0 \n", + " ng2D) \n", + " \n", + " conv2d_59 (Conv2D) (None, 8, 8, 64) 18496 \n", + " \n", + " max_pooling2d_59 (MaxPooli (None, 4, 4, 64) 0 \n", + " ng2D) \n", + " \n", + " dropout_12 (Dropout) (None, 4, 4, 64) 0 \n", + " \n", + " flatten_14 (Flatten) (None, 1024) 0 \n", + " \n", + " dense_28 (Dense) (None, 128) 131200 \n", + " \n", + " dense_29 (Dense) (None, 66) 8514 \n", + " \n", + "=================================================================\n", + "Total params: 163298 (637.88 KB)\n", + "Trainable params: 163298 (637.88 KB)\n", + "Non-trainable params: 0 (0.00 Byte)\n", + "_________________________________________________________________\n", "None\n" ] } diff --git a/russian-cursive-32x32rgb.ipynb b/russian-cursive-32x32rgb.ipynb index 9f9e88d4e..eff821b23 100644 --- a/russian-cursive-32x32rgb.ipynb +++ b/russian-cursive-32x32rgb.ipynb @@ -2,60 +2,62 @@ "cells": [ { "cell_type": "code", - "execution_count": 15, + "execution_count": 201, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: tensorflow in ./.conda/lib/python3.10/site-packages (2.16.1)\n", - "Requirement already satisfied: pillow in ./.conda/lib/python3.10/site-packages (10.2.0)\n", - "Requirement already satisfied: absl-py>=1.0.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (2.1.0)\n", - "Requirement already satisfied: astunparse>=1.6.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (1.6.3)\n", - "Requirement already satisfied: flatbuffers>=23.5.26 in ./.conda/lib/python3.10/site-packages (from tensorflow) (24.3.7)\n", - "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in ./.conda/lib/python3.10/site-packages (from tensorflow) (0.5.4)\n", - "Requirement already satisfied: google-pasta>=0.1.1 in ./.conda/lib/python3.10/site-packages (from tensorflow) (0.2.0)\n", - "Requirement already satisfied: h5py>=3.10.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (3.10.0)\n", - "Requirement already satisfied: libclang>=13.0.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (18.1.1)\n", - "Requirement already satisfied: ml-dtypes~=0.3.1 in ./.conda/lib/python3.10/site-packages (from tensorflow) (0.3.2)\n", - "Requirement already satisfied: opt-einsum>=2.3.2 in ./.conda/lib/python3.10/site-packages (from tensorflow) (3.3.0)\n", - "Requirement already satisfied: packaging in ./.conda/lib/python3.10/site-packages (from tensorflow) (24.0)\n", - "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in ./.conda/lib/python3.10/site-packages (from tensorflow) (4.25.3)\n", - "Requirement already satisfied: requests<3,>=2.21.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (2.31.0)\n", - "Requirement already satisfied: setuptools in ./.conda/lib/python3.10/site-packages (from tensorflow) (68.2.2)\n", - "Requirement already satisfied: six>=1.12.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (1.16.0)\n", - "Requirement already satisfied: termcolor>=1.1.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (2.4.0)\n", - "Requirement already satisfied: typing-extensions>=3.6.6 in ./.conda/lib/python3.10/site-packages (from tensorflow) (4.10.0)\n", - "Requirement already satisfied: wrapt>=1.11.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (1.16.0)\n", - "Requirement already satisfied: grpcio<2.0,>=1.24.3 in ./.conda/lib/python3.10/site-packages (from tensorflow) (1.62.1)\n", - "Requirement already satisfied: tensorboard<2.17,>=2.16 in ./.conda/lib/python3.10/site-packages (from tensorflow) (2.16.2)\n", - "Requirement already satisfied: keras>=3.0.0 in ./.conda/lib/python3.10/site-packages (from tensorflow) (3.1.1)\n", - "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in ./.conda/lib/python3.10/site-packages (from tensorflow) (0.36.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.23.5 in ./.conda/lib/python3.10/site-packages (from tensorflow) (1.26.4)\n", - "Requirement already satisfied: wheel<1.0,>=0.23.0 in ./.conda/lib/python3.10/site-packages (from astunparse>=1.6.0->tensorflow) (0.41.2)\n", - "Requirement already satisfied: rich in ./.conda/lib/python3.10/site-packages (from keras>=3.0.0->tensorflow) (13.7.1)\n", - "Requirement already satisfied: namex in ./.conda/lib/python3.10/site-packages (from keras>=3.0.0->tensorflow) (0.0.7)\n", - "Requirement already satisfied: optree in ./.conda/lib/python3.10/site-packages (from keras>=3.0.0->tensorflow) (0.10.0)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in ./.conda/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in ./.conda/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow) (3.6)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in ./.conda/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow) (2.2.1)\n", - "Requirement already satisfied: certifi>=2017.4.17 in ./.conda/lib/python3.10/site-packages (from requests<3,>=2.21.0->tensorflow) (2024.2.2)\n", - "Requirement already satisfied: markdown>=2.6.8 in ./.conda/lib/python3.10/site-packages (from tensorboard<2.17,>=2.16->tensorflow) (3.6)\n", - "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in ./.conda/lib/python3.10/site-packages (from tensorboard<2.17,>=2.16->tensorflow) (0.7.2)\n", - "Requirement already satisfied: werkzeug>=1.0.1 in ./.conda/lib/python3.10/site-packages (from tensorboard<2.17,>=2.16->tensorflow) (3.0.1)\n", - "Requirement already satisfied: MarkupSafe>=2.1.1 in ./.conda/lib/python3.10/site-packages (from werkzeug>=1.0.1->tensorboard<2.17,>=2.16->tensorflow) (2.1.5)\n", - "Requirement already satisfied: markdown-it-py>=2.2.0 in ./.conda/lib/python3.10/site-packages (from rich->keras>=3.0.0->tensorflow) (3.0.0)\n", - "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in ./.conda/lib/python3.10/site-packages (from rich->keras>=3.0.0->tensorflow) (2.17.2)\n", - "Requirement already satisfied: mdurl~=0.1 in ./.conda/lib/python3.10/site-packages (from markdown-it-py>=2.2.0->rich->keras>=3.0.0->tensorflow) (0.1.2)\n", + "Requirement already satisfied: tensorflow==2.15 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (2.15.0)\n", + "Requirement already satisfied: pillow in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (10.2.0)\n", + "Requirement already satisfied: tensorflow-intel==2.15.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow==2.15) (2.15.0)\n", + "Requirement already satisfied: absl-py>=1.0.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (2.1.0)\n", + "Requirement already satisfied: astunparse>=1.6.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (1.6.3)\n", + "Requirement already satisfied: flatbuffers>=23.5.26 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (24.3.7)\n", + "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (0.5.4)\n", + "Requirement already satisfied: google-pasta>=0.1.1 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (0.2.0)\n", + "Requirement already satisfied: h5py>=2.9.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (3.10.0)\n", + "Requirement already satisfied: libclang>=13.0.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (18.1.1)\n", + "Requirement already satisfied: ml-dtypes~=0.2.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (0.2.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.23.5 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (1.26.4)\n", + "Requirement already satisfied: opt-einsum>=2.3.2 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (3.3.0)\n", + "Requirement already satisfied: packaging in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (24.0)\n", + "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (4.25.3)\n", + "Requirement already satisfied: setuptools in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (68.2.2)\n", + "Requirement already satisfied: six>=1.12.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (1.16.0)\n", + "Requirement already satisfied: termcolor>=1.1.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (2.4.0)\n", + "Requirement already satisfied: typing-extensions>=3.6.6 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (4.10.0)\n", + "Requirement already satisfied: wrapt<1.15,>=1.11.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (1.14.1)\n", + "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (0.31.0)\n", + "Requirement already satisfied: grpcio<2.0,>=1.24.3 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (1.62.1)\n", + "Requirement already satisfied: tensorboard<2.16,>=2.15 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (2.15.2)\n", + "Requirement already satisfied: tensorflow-estimator<2.16,>=2.15.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (2.15.0)\n", + "Requirement already satisfied: keras<2.16,>=2.15.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorflow-intel==2.15.0->tensorflow==2.15) (2.15.0)\n", + "Requirement already satisfied: wheel<1.0,>=0.23.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.15.0->tensorflow==2.15) (0.41.2)\n", + "Requirement already satisfied: google-auth<3,>=1.6.3 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (2.28.2)\n", + "Requirement already satisfied: google-auth-oauthlib<2,>=0.5 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (1.2.0)\n", + "Requirement already satisfied: markdown>=2.6.8 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (3.6)\n", + "Requirement already satisfied: requests<3,>=2.21.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (2.31.0)\n", + "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (0.7.2)\n", + "Requirement already satisfied: werkzeug>=1.0.1 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (3.0.1)\n", + "Requirement already satisfied: cachetools<6.0,>=2.0.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (5.3.3)\n", + "Requirement already satisfied: pyasn1-modules>=0.2.1 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (0.3.0)\n", + "Requirement already satisfied: rsa<5,>=3.1.4 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (4.9)\n", + "Requirement already satisfied: requests-oauthlib>=0.7.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (1.4.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (2.2.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (2024.2.2)\n", + "Requirement already satisfied: MarkupSafe>=2.1.1 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (2.1.5)\n", + "Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (0.5.1)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in c:\\users\\argraur\\projects\\nn\\lab1\\.conda\\lib\\site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow-intel==2.15.0->tensorflow==2.15) (3.2.2)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ - "%pip install tensorflow pillow\n", - "# %pip install tensorflow-intel pillow # For Intel CPUs\n", - "# %pip install tensorflow tensorflow-metal pillow # For Apple GPUs" + "%pip install tensorflow==2.15 pillow" ] }, { @@ -67,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 202, "metadata": {}, "outputs": [], "source": [ @@ -92,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 203, "metadata": {}, "outputs": [], "source": [ @@ -109,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 204, "metadata": {}, "outputs": [], "source": [ @@ -132,7 +134,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 205, "metadata": {}, "outputs": [], "source": [ @@ -149,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 206, "metadata": {}, "outputs": [], "source": [ @@ -166,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 207, "metadata": {}, "outputs": [], "source": [ @@ -182,7 +184,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 208, "metadata": {}, "outputs": [], "source": [ @@ -199,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 209, "metadata": {}, "outputs": [ { @@ -248,7 +250,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 210, "metadata": {}, "outputs": [ { @@ -300,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 211, "metadata": {}, "outputs": [], "source": [ @@ -316,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 212, "metadata": {}, "outputs": [], "source": [ @@ -333,11 +335,9 @@ " layers.MaxPooling2D(),\n", " layers.Conv2D(Ns*2**2, kernel_size, padding='same', activation='relu'),\n", " layers.MaxPooling2D(),\n", - " layers.Conv2D(Ns*2**3, kernel_size, padding='same', activation='relu'),\n", - " layers.MaxPooling2D(),\n", " layers.Dropout(0.1),\n", " layers.Flatten(),\n", - " layers.Dense(Ns*2**4, activation='relu'),\n", + " layers.Dense(Ns*2**3, activation='relu'),\n", " layers.Dense(num_classes)\n", "])\n", "\n", @@ -355,125 +355,48 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 213, "metadata": {}, "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",
-       "│ rescaling_1 (Rescaling)         │ (None, 32, 32, 3)      │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_4 (Conv2D)               │ (None, 32, 32, 16)     │           448 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_4 (MaxPooling2D)  │ (None, 16, 16, 16)     │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_5 (Conv2D)               │ (None, 16, 16, 32)     │         4,640 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_5 (MaxPooling2D)  │ (None, 8, 8, 32)       │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_6 (Conv2D)               │ (None, 8, 8, 64)       │        18,496 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_6 (MaxPooling2D)  │ (None, 4, 4, 64)       │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ conv2d_7 (Conv2D)               │ (None, 4, 4, 128)      │        73,856 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ max_pooling2d_7 (MaxPooling2D)  │ (None, 2, 2, 128)      │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ flatten_1 (Flatten)             │ (None, 512)            │             0 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ dense_2 (Dense)                 │ (None, 256)            │       131,328 │\n",
-       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ dense_3 (Dense)                 │ (None, 66)             │        16,962 │\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", - "│ rescaling_1 (\u001b[38;5;33mRescaling\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m3\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_4 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m16\u001b[0m) │ \u001b[38;5;34m448\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_4 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_5 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m4,640\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_5 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_6 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m8\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_6 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ conv2d_7 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m73,856\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ max_pooling2d_7 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m2\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ flatten_1 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m131,328\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ dense_3 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m66\u001b[0m) │ \u001b[38;5;34m16,962\u001b[0m │\n", - "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
 Total params: 245,730 (959.88 KB)\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m245,730\u001b[0m (959.88 KB)\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
 Trainable params: 245,730 (959.88 KB)\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m245,730\u001b[0m (959.88 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": [ + "Model: \"sequential_14\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " rescaling_14 (Rescaling) (None, 32, 32, 3) 0 \n", + " \n", + " conv2d_57 (Conv2D) (None, 32, 32, 16) 448 \n", + " \n", + " max_pooling2d_57 (MaxPooli (None, 16, 16, 16) 0 \n", + " ng2D) \n", + " \n", + " conv2d_58 (Conv2D) (None, 16, 16, 32) 4640 \n", + " \n", + " max_pooling2d_58 (MaxPooli (None, 8, 8, 32) 0 \n", + " ng2D) \n", + " \n", + " conv2d_59 (Conv2D) (None, 8, 8, 64) 18496 \n", + " \n", + " max_pooling2d_59 (MaxPooli (None, 4, 4, 64) 0 \n", + " ng2D) \n", + " \n", + " dropout_12 (Dropout) (None, 4, 4, 64) 0 \n", + " \n", + " flatten_14 (Flatten) (None, 1024) 0 \n", + " \n", + " dense_28 (Dense) (None, 128) 131200 \n", + " \n", + " dense_29 (Dense) (None, 66) 8514 \n", + " \n", + "=================================================================\n", + "Total params: 163298 (637.88 KB)\n", + "Trainable params: 163298 (637.88 KB)\n", + "Non-trainable params: 0 (0.00 Byte)\n", + "_________________________________________________________________\n" + ] } ], "source": [ @@ -489,33 +412,73 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 214, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.1883 - loss: 3.3504 - val_accuracy: 0.7300 - val_loss: 0.9018\n", + "Epoch 1/10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1441/1441 [==============================] - 14s 9ms/step - loss: 2.6969 - accuracy: 0.3342 - val_loss: 1.1842 - val_accuracy: 0.6765\n", "Epoch 2/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.7781 - loss: 0.7389 - val_accuracy: 0.8441 - val_loss: 0.5111\n", + "1441/1441 [==============================] - 14s 10ms/step - loss: 0.9378 - accuracy: 0.7362 - val_loss: 0.7358 - val_accuracy: 0.7918\n", "Epoch 3/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 13ms/step - accuracy: 0.8598 - loss: 0.4484 - val_accuracy: 0.8634 - val_loss: 0.4434\n", + "1441/1441 [==============================] - 15s 10ms/step - loss: 0.6374 - accuracy: 0.8147 - val_loss: 0.5526 - val_accuracy: 0.8393\n", "Epoch 4/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 14ms/step - accuracy: 0.8901 - loss: 0.3393 - val_accuracy: 0.8935 - val_loss: 0.3648\n", + "1441/1441 [==============================] - 15s 10ms/step - loss: 0.4963 - accuracy: 0.8536 - val_loss: 0.4316 - val_accuracy: 0.8723\n", "Epoch 5/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 13ms/step - accuracy: 0.9120 - loss: 0.2717 - val_accuracy: 0.8937 - val_loss: 0.3536\n", + "1441/1441 [==============================] - 15s 10ms/step - loss: 0.4125 - accuracy: 0.8757 - val_loss: 0.4035 - val_accuracy: 0.8818\n", "Epoch 6/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 13ms/step - accuracy: 0.9268 - loss: 0.2250 - val_accuracy: 0.9046 - val_loss: 0.3258\n", + "1441/1441 [==============================] - 14s 10ms/step - loss: 0.3479 - accuracy: 0.8937 - val_loss: 0.3343 - val_accuracy: 0.9002\n", "Epoch 7/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 13ms/step - accuracy: 0.9379 - loss: 0.1858 - val_accuracy: 0.9135 - val_loss: 0.2980\n", + "1441/1441 [==============================] - 14s 10ms/step - loss: 0.3039 - accuracy: 0.9061 - val_loss: 0.3527 - val_accuracy: 0.8949\n", "Epoch 8/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 14ms/step - accuracy: 0.9460 - loss: 0.1603 - val_accuracy: 0.9111 - val_loss: 0.3229\n", + "1441/1441 [==============================] - 14s 10ms/step - loss: 0.2711 - accuracy: 0.9141 - val_loss: 0.3401 - val_accuracy: 0.9009\n", "Epoch 9/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 14ms/step - accuracy: 0.9519 - loss: 0.1433 - val_accuracy: 0.8969 - val_loss: 0.3802\n", + "1441/1441 [==============================] - 14s 10ms/step - loss: 0.2434 - accuracy: 0.9240 - val_loss: 0.3033 - val_accuracy: 0.9122\n", "Epoch 10/10\n", - "\u001b[1m1441/1441\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 14ms/step - accuracy: 0.9592 - loss: 0.1225 - val_accuracy: 0.9142 - val_loss: 0.3519\n" + "1441/1441 [==============================] - 13s 9ms/step - loss: 0.2233 - accuracy: 0.9296 - val_loss: 0.2707 - val_accuracy: 0.9217\n", + "Model: \"sequential_14\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " rescaling_14 (Rescaling) (None, 32, 32, 3) 0 \n", + " \n", + " conv2d_57 (Conv2D) (None, 32, 32, 16) 448 \n", + " \n", + " max_pooling2d_57 (MaxPooli (None, 16, 16, 16) 0 \n", + " ng2D) \n", + " \n", + " conv2d_58 (Conv2D) (None, 16, 16, 32) 4640 \n", + " \n", + " max_pooling2d_58 (MaxPooli (None, 8, 8, 32) 0 \n", + " ng2D) \n", + " \n", + " conv2d_59 (Conv2D) (None, 8, 8, 64) 18496 \n", + " \n", + " max_pooling2d_59 (MaxPooli (None, 4, 4, 64) 0 \n", + " ng2D) \n", + " \n", + " dropout_12 (Dropout) (None, 4, 4, 64) 0 \n", + " \n", + " flatten_14 (Flatten) (None, 1024) 0 \n", + " \n", + " dense_28 (Dense) (None, 128) 131200 \n", + " \n", + " dense_29 (Dense) (None, 66) 8514 \n", + " \n", + "=================================================================\n", + "Total params: 163298 (637.88 KB)\n", + "Trainable params: 163298 (637.88 KB)\n", + "Non-trainable params: 0 (0.00 Byte)\n", + "_________________________________________________________________\n" ] } ], @@ -526,7 +489,9 @@ " epochs=epochs\n", ")\n", "\n", - "model.save('russian-cursive-32x32rgb.model.keras')" + "model.save('russian-cursive-32x32rgb.model.keras')\n", + "\n", + "model.summary()" ] } ], diff --git "a/testdata/\320\221\320\243\320\232\320\222\320\220\320\221.jpg" "b/testdata/\320\221\320\243\320\232\320\222\320\220\320\221.jpg" new file mode 100644 index 000000000..590e70170 Binary files /dev/null and "b/testdata/\320\221\320\243\320\232\320\222\320\220\320\221.jpg" differ diff --git "a/testdata/\320\221\320\243\320\232\320\222\320\220\320\230.jpg" "b/testdata/\320\221\320\243\320\232\320\222\320\220\320\230.jpg" new file mode 100644 index 000000000..5a3fd5937 Binary files /dev/null and "b/testdata/\320\221\320\243\320\232\320\222\320\220\320\230.jpg" differ diff --git "a/testdata/\320\221\320\243\320\232\320\222\320\220\320\237.jpg" "b/testdata/\320\221\320\243\320\232\320\222\320\220\320\237.jpg" new file mode 100644 index 000000000..72a16cd11 Binary files /dev/null and "b/testdata/\320\221\320\243\320\232\320\222\320\220\320\237.jpg" differ diff --git "a/testdata/\320\270.png" "b/testdata/\320\270.png" index 51452632b..6a7299929 100644 Binary files "a/testdata/\320\270.png" and "b/testdata/\320\270.png" differ diff --git "a/testdata/\320\276.png" "b/testdata/\320\276.png" index 55ce1fdd7..f09ebaf4c 100644 Binary files "a/testdata/\320\276.png" and "b/testdata/\320\276.png" differ diff --git a/tflite.ipynb b/tflite.ipynb index c983dfeed..560e743d9 100644 --- a/tflite.ipynb +++ b/tflite.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -17,21 +17,21 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "INFO:tensorflow:Assets written to: C:\\Users\\argraur\\AppData\\Local\\Temp\\tmp0f51h_09\\assets\n" + "INFO:tensorflow:Assets written to: C:\\Users\\argraur\\AppData\\Local\\Temp\\tmp2igbpi39\\assets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:tensorflow:Assets written to: C:\\Users\\argraur\\AppData\\Local\\Temp\\tmp0f51h_09\\assets\n" + "INFO:tensorflow:Assets written to: C:\\Users\\argraur\\AppData\\Local\\Temp\\tmp2igbpi39\\assets\n" ] } ], @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -70,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ diff --git a/tflite_with_metadata-ok/russian-cursive.json b/tflite_with_metadata-ok/russian-cursive.json new file mode 100644 index 000000000..d267116dd --- /dev/null +++ b/tflite_with_metadata-ok/russian-cursive.json @@ -0,0 +1,55 @@ +{ + "name": "Russian Cursive Letter Classifier V1", + "description": "Identify the most prominent object in the image from a set of 66 categories.", + "version": "v1", + "subgraph_metadata": [ + { + "input_tensor_metadata": [ + { + "name": "image", + "description": "Input image to be classified. The expected image is 32 x 32, with three channels (red, blue, and green) per pixel. Each value in the tensor is a single byte between 0 and 255.", + "content": { + "content_properties_type": "ImageProperties", + "content_properties": { + "color_space": "RGB" + } + }, + "stats": { + "max": [ + 255.0 + ], + "min": [ + 0.0 + ] + } + } + ], + "output_tensor_metadata": [ + { + "name": "probability", + "description": "Probabilities of the 66 labels respectively.", + "content": { + "content_properties_type": "FeatureProperties" + }, + "stats": { + "max": [ + 1.0 + ], + "min": [ + 0.0 + ] + }, + "associated_files": [ + { + "name": "class_names-dataset.txt", + "description": "Labels for objects that the model can recognize.", + "type": "TENSOR_AXIS_LABELS" + } + ] + } + ] + } + ], + "author": "me@argraur.dev", + "license": "Apache License. Version 2.0 http://www.apache.org/licenses/LICENSE-2.0." +}