Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3083 строки
532 KiB
Plaintext

{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "code",
"execution_count": 101,
"metadata": {
"id": "oSTff6t9gfe-"
},
"outputs": [],
"source": [
"import os\n",
"os.chdir('/content/drive/MyDrive/Colab Notebooks')"
]
},
{
"cell_type": "code",
"source": [
"# импорт модулей\n",
"from tensorflow import keras\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import sklearn"
],
"metadata": {
"id": "hDrqXWbaghWH"
},
"execution_count": 102,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# загрузка датасета\n",
"from keras.datasets import mnist\n",
"(X_train, y_train), (X_test, y_test) = mnist.load_data()\n"
],
"metadata": {
"id": "ku-r72dNoLyH"
},
"execution_count": 103,
"outputs": []
},
{
"cell_type": "code",
"source": [
"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 = 15)"
],
"metadata": {
"id": "xVu31VofoMVf"
},
"execution_count": 104,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# вывод размерностей\n",
"print('Shape of X train:', X_train.shape)\n",
"print('Shape of y train:', y_train.shape)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8B1VfUSNouBo",
"outputId": "0178ff8b-51fd-4ea9-8e37-67cb638041b8"
},
"execution_count": 105,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Shape of X train: (60000, 28, 28)\n",
"Shape of y train: (60000,)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Создаем subplot для 4 изображений\n",
"fig, axes = plt.subplots(1, 4, figsize=(10, 3))\n",
"\n",
"for i in range(4):\n",
" axes[i].imshow(X_train[i], cmap=plt.get_cmap('gray'))\n",
" axes[i].set_title(f'Label: {y_train[i]}') # Добавляем метку как заголовок\n",
"\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 251
},
"id": "udeIiw2Go6Pi",
"outputId": "07cc8dd5-f6c9-4403-a94a-e10e366cb425"
},
"execution_count": 159,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x300 with 4 Axes>"
],
"image/png": "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mkdzl7Nwyc/Pt+ZOr77ddttt1typn0VFRdZ848aN7pOLkpAXNidPnqzxU4C9e/dqy5YtSk9PV3p6un72s59pxIgRysrK0p49ezR16lR17txZubm5YZ04EMvoCeCOngDu6AkQvJAXNps2bdJNN91U/fHF39EcM2aMFixYoI8//lhLly5VeXm5srOzdeutt+rnP/85e6ojodATwB09AdzREyB4IS9sBg8eXOsbRP7+97+v14SAeEBPAHf0BHBHT4DgRXzzAAAAAACINBY2AAAAADwv4ruiJSKnXSomTJjQwDP52gcffOD42PDhw615586drfkrr7xizbOzs635t38v+NtSU1OteaLuiobY0KxZs2hPAQjajTfeaM0HDBhgzZ1+nclp9zOn42v7d5rdzxBp58+ft+Zbtmxp2InEsG3btllzp13RWrdubc1HjRplzWN5VzResQEAAADgeSxsAAAAAHgeCxsAAAAAnsfCBgAAAIDnsbABAAAA4HnsilYP3/3ud6356NGjrXnLli1DOv+iRYuseUpKijUfN26cNe/Tp4/jNf76179a89dee82at2vXzvFcoZz/7NmzIZ0HAFCT0y5+kd7d7+DBg46PLV68OKLXBhJRTk6ONX/55Zetee/evSM5nZjGKzYAAAAAPI+FDQAAAADPY2EDAAAAwPNY2AAAAADwPBY2AAAAADyPXdHqITc315r36tXLmhtjQjr/kSNHrHlpaak179GjhzW//vrrQ7quJI0aNcqaO93DW2+9Zc2ffPJJa378+PGQ54TE4bSTX3p6ekjnueqqq6z51Vdfbc2dulubSZMmWfOuXbuGdJ7Dhw9b8+nTp1vzc+fOhXR+xJ8777wz2lMAUAe33367NR8wYIA1/5d/+Rdr3rp167DNKV7wig0AAAAAz2NhAwAAAMDzWNgAAAAA8DwWNgAAAAA8L6SFTWFhoXr37q3U1FRlZGQoLy9PO3furHHMmTNnlJ+fr1atWqlFixYaMWKEysrKwjppIJbRE8AdPQGCQ1eA4CWZELbqGjp0qO6++2717t1b58+f109/+lNt3bpV27dvV/PmzSVJEyZM0DvvvKMlS5bI7/dr4sSJSk5O1p///OegrlFRUSG/31+3u4mQjIwMa75u3Tpr3qFDh7BcNykpyZqHurtabb766itr/rvf/c6az5o1y5p/8skn1ryqqqpu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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"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"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "aA2jf933o-L_",
"outputId": "9c8f480d-0b5d-42ff-ed53-cb64b437de23"
},
"execution_count": 107,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Shape of transformed X train: (60000, 784)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# переведем метки в one-hot\n",
"from keras.utils import to_categorical\n",
"y_train = to_categorical(y_train)\n",
"y_test = to_categorical(y_test)\n",
"print('Shape of transformed y train:', y_train.shape)\n",
"num_classes = y_train.shape[1]\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "3wf63CHPpMQ8",
"outputId": "145e28b6-4825-4a61-dbe3-12fdb77684f5"
},
"execution_count": 108,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Shape of transformed y train: (60000, 10)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"from keras.models import Sequential\n",
"from keras.layers import Dense"
],
"metadata": {
"id": "3zTIE8MQprCi"
},
"execution_count": 109,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# 1. создаем модель - объявляем ее объектом класса Sequential\n",
"model = Sequential()\n",
"# 2. добавляем первый скрытый слой\n",
"model.add(Dense(units=300, input_dim=num_pixels, activation='sigmoid'))\n",
"# 3. добавляем второй скрытый слой\n",
"model.add(Dense(units=100, activation='sigmoid'))\n",
"# 4. добавляем выходной слой\n",
"model.add(Dense(units=num_classes, activation='softmax'))\n",
"# 5. компилируем модель\n",
"model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ABH5pkU0qaeH",
"outputId": "700d2007-fb7e-42db-9165-047219385190"
},
"execution_count": 110,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.12/dist-packages/keras/src/layers/core/dense.py:93: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
" super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# вывод информации об архитектуре модели\n",
"print(model.summary())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 242
},
"id": "IcWKR9BBqd6e",
"outputId": "3c257d50-9c5f-44d9-d38a-c78a9bb6598a"
},
"execution_count": 111,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1mModel: \"sequential_7\"\u001b[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_7\"</span>\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_16 (\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_17 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m30,100\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_18 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,010\u001b[0m │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_16 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">300</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">235,500</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_17 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">30,100</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_18 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">1,010</span> │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m266,610\u001b[0m (1.02 MB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">266,610</span> (1.02 MB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m266,610\u001b[0m (1.02 MB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">266,610</span> (1.02 MB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"None\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Обучаем модель\n",
"H = model.fit(X_train, y_train, validation_split=0.1, epochs=15)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YwjmFwTBq1MA",
"outputId": "cbfcdc54-b757-4c71-b101-3d694ea98e9f"
},
"execution_count": 112,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 7ms/step - accuracy: 0.2517 - loss: 2.2636 - val_accuracy: 0.5822 - val_loss: 1.9925\n",
"Epoch 2/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 5ms/step - accuracy: 0.6028 - loss: 1.8278 - val_accuracy: 0.7020 - val_loss: 1.2828\n",
"Epoch 3/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.7341 - loss: 1.1469 - val_accuracy: 0.7930 - val_loss: 0.8675\n",
"Epoch 4/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8049 - loss: 0.8009 - val_accuracy: 0.8337 - val_loss: 0.6765\n",
"Epoch 5/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 5ms/step - accuracy: 0.8362 - loss: 0.6381 - val_accuracy: 0.8537 - val_loss: 0.5671\n",
"Epoch 6/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.8607 - loss: 0.5364 - val_accuracy: 0.8643 - val_loss: 0.5022\n",
"Epoch 7/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.8715 - loss: 0.4791 - val_accuracy: 0.8753 - val_loss: 0.4607\n",
"Epoch 8/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.8826 - loss: 0.4328 - val_accuracy: 0.8827 - val_loss: 0.4276\n",
"Epoch 9/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.8877 - loss: 0.4082 - val_accuracy: 0.8858 - val_loss: 0.4072\n",
"Epoch 10/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 4ms/step - accuracy: 0.8937 - loss: 0.3827 - val_accuracy: 0.8915 - val_loss: 0.3894\n",
"Epoch 11/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 5ms/step - accuracy: 0.8955 - loss: 0.3692 - val_accuracy: 0.8928 - val_loss: 0.3753\n",
"Epoch 12/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9017 - loss: 0.3506 - val_accuracy: 0.8945 - val_loss: 0.3677\n",
"Epoch 13/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9022 - loss: 0.3425 - val_accuracy: 0.8982 - val_loss: 0.3540\n",
"Epoch 14/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9059 - loss: 0.3290 - val_accuracy: 0.8980 - val_loss: 0.3482\n",
"Epoch 15/15\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 4ms/step - accuracy: 0.9065 - loss: 0.3252 - val_accuracy: 0.9015 - val_loss: 0.3401\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"scores=model.evaluate(X_test,y_test)\n",
"print('Lossontestdata:',scores[0])\n",
"print('Accuracyontestdata:',scores[1])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "crnhtB4QESjY",
"outputId": "87a2df0a-f703-49ab-dd3e-35cee45f9a51"
},
"execution_count": 160,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9152 - loss: 0.3057\n",
"Lossontestdata: 0.3149861991405487\n",
"Accuracyontestdata: 0.913100004196167\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Пункт 6. Однослойная ИНС\n",
"# 1. создаем модель - объявляем ее объектом класса Sequential\n",
"model_1 = Sequential()\n",
"model_1.add(Dense(units=num_classes,input_dim=num_pixels, activation='softmax'))\n",
"# 2. компилируем модель\n",
"model_1.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])"
],
"metadata": {
"id": "RVm96wrdq6B7"
},
"execution_count": 113,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"Архитектура нейронной сети:\")\n",
"model_1.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 178
},
"id": "0Yi8y-fctlqm",
"outputId": "5602312b-2e48-4f03-9fda-51251d2d3d11"
},
"execution_count": 114,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Архитектура нейронной сети:\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1mModel: \"sequential_8\"\u001b[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_8\"</span>\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_19 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m7,850\u001b[0m │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_19 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">7,850</span> │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">7,850</span> (30.66 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">7,850</span> (30.66 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
"</pre>\n"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Обучаем модель\n",
"history = model_1.fit(\n",
" X_train, y_train,\n",
" validation_split=0.1,\n",
" epochs=50\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "p8ydXSm8toX0",
"outputId": "d2d37a83-f2c0-4c25-8287-45dcff94efd9"
},
"execution_count": 115,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.7106 - loss: 1.1677 - val_accuracy: 0.8667 - val_loss: 0.5285\n",
"Epoch 2/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.8719 - loss: 0.4933 - val_accuracy: 0.8805 - val_loss: 0.4439\n",
"Epoch 3/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.8886 - loss: 0.4152 - val_accuracy: 0.8880 - val_loss: 0.4078\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.8946 - loss: 0.3877 - val_accuracy: 0.8903 - val_loss: 0.3882\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.8988 - loss: 0.3700 - val_accuracy: 0.8967 - val_loss: 0.3736\n",
"Epoch 6/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 3ms/step - accuracy: 0.8987 - loss: 0.3613 - val_accuracy: 0.8973 - val_loss: 0.3630\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.9038 - loss: 0.3461 - val_accuracy: 0.9002 - val_loss: 0.3560\n",
"Epoch 8/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9073 - loss: 0.3322 - val_accuracy: 0.9017 - val_loss: 0.3488\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.9081 - loss: 0.3267 - val_accuracy: 0.9022 - val_loss: 0.3438\n",
"Epoch 10/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9077 - loss: 0.3220 - val_accuracy: 0.9047 - val_loss: 0.3394\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.9116 - loss: 0.3187 - val_accuracy: 0.9043 - val_loss: 0.3355\n",
"Epoch 12/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9104 - loss: 0.3207 - val_accuracy: 0.9058 - val_loss: 0.3320\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.9113 - loss: 0.3162 - val_accuracy: 0.9060 - val_loss: 0.3292\n",
"Epoch 14/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9151 - loss: 0.3056 - val_accuracy: 0.9075 - val_loss: 0.3268\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.9155 - loss: 0.3025 - val_accuracy: 0.9083 - val_loss: 0.3246\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.9154 - loss: 0.3005 - val_accuracy: 0.9097 - val_loss: 0.3225\n",
"Epoch 17/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9164 - loss: 0.3049 - val_accuracy: 0.9095 - val_loss: 0.3203\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.9171 - loss: 0.2980 - val_accuracy: 0.9088 - val_loss: 0.3194\n",
"Epoch 19/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9148 - loss: 0.3072 - val_accuracy: 0.9088 - val_loss: 0.3186\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.9152 - loss: 0.3040 - val_accuracy: 0.9113 - val_loss: 0.3152\n",
"Epoch 21/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9167 - loss: 0.2958 - val_accuracy: 0.9118 - val_loss: 0.3143\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.9190 - loss: 0.2932 - val_accuracy: 0.9115 - val_loss: 0.3133\n",
"Epoch 23/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9192 - loss: 0.2921 - val_accuracy: 0.9123 - val_loss: 0.3120\n",
"Epoch 24/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 3ms/step - accuracy: 0.9200 - loss: 0.2910 - val_accuracy: 0.9125 - val_loss: 0.3113\n",
"Epoch 25/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9202 - loss: 0.2908 - val_accuracy: 0.9120 - val_loss: 0.3103\n",
"Epoch 26/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9197 - loss: 0.2890 - val_accuracy: 0.9135 - val_loss: 0.3087\n",
"Epoch 27/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9188 - loss: 0.2865 - val_accuracy: 0.9145 - val_loss: 0.3081\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.9185 - loss: 0.2913 - val_accuracy: 0.9137 - val_loss: 0.3074\n",
"Epoch 29/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9179 - loss: 0.2910 - val_accuracy: 0.9138 - val_loss: 0.3065\n",
"Epoch 30/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9219 - loss: 0.2845 - val_accuracy: 0.9147 - val_loss: 0.3058\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.9202 - loss: 0.2826 - val_accuracy: 0.9140 - val_loss: 0.3056\n",
"Epoch 32/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9191 - loss: 0.2896 - val_accuracy: 0.9130 - val_loss: 0.3049\n",
"Epoch 33/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 2ms/step - accuracy: 0.9204 - loss: 0.2786 - val_accuracy: 0.9152 - val_loss: 0.3039\n",
"Epoch 34/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9202 - loss: 0.2798 - val_accuracy: 0.9145 - val_loss: 0.3033\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.9232 - loss: 0.2744 - val_accuracy: 0.9152 - val_loss: 0.3043\n",
"Epoch 36/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9186 - loss: 0.2892 - val_accuracy: 0.9145 - val_loss: 0.3027\n",
"Epoch 37/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9238 - loss: 0.2755 - val_accuracy: 0.9152 - val_loss: 0.3014\n",
"Epoch 38/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 2ms/step - accuracy: 0.9236 - loss: 0.2751 - val_accuracy: 0.9138 - val_loss: 0.3016\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.9219 - loss: 0.2796 - val_accuracy: 0.9133 - val_loss: 0.3012\n",
"Epoch 40/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9220 - loss: 0.2749 - val_accuracy: 0.9148 - val_loss: 0.3001\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.9234 - loss: 0.2729 - val_accuracy: 0.9150 - val_loss: 0.3007\n",
"Epoch 42/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 2ms/step - accuracy: 0.9235 - loss: 0.2731 - val_accuracy: 0.9142 - val_loss: 0.3001\n",
"Epoch 43/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9221 - loss: 0.2780 - val_accuracy: 0.9158 - val_loss: 0.2998\n",
"Epoch 44/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9239 - loss: 0.2741 - val_accuracy: 0.9147 - val_loss: 0.2992\n",
"Epoch 45/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 2ms/step - accuracy: 0.9217 - loss: 0.2805 - val_accuracy: 0.9155 - val_loss: 0.2987\n",
"Epoch 46/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9252 - loss: 0.2695 - val_accuracy: 0.9148 - val_loss: 0.2982\n",
"Epoch 47/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 2ms/step - accuracy: 0.9227 - loss: 0.2772 - val_accuracy: 0.9170 - val_loss: 0.2976\n",
"Epoch 48/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 2ms/step - accuracy: 0.9245 - loss: 0.2756 - val_accuracy: 0.9153 - val_loss: 0.2977\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.9249 - loss: 0.2716 - val_accuracy: 0.9167 - val_loss: 0.2974\n",
"Epoch 50/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9248 - loss: 0.2711 - val_accuracy: 0.9152 - val_loss: 0.2983\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Выводим график функции ошибки\n",
"plt.figure(figsize=(12, 5))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(history.history['loss'], label='Обучающая ошибка')\n",
"plt.plot(history.history['val_loss'], label='Валидационная ошибка')\n",
"plt.title('Функция ошибки по эпохам')\n",
"plt.xlabel('Эпохи')\n",
"plt.ylabel('Categorical Crossentropy')\n",
"plt.legend()\n",
"plt.grid(True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "AQerkZ1YuV0D",
"outputId": "e4b2046b-091c-4dd7-b4a2-9a267f9f543c"
},
"execution_count": 116,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x500 with 1 Axes>"
],
"image/png": "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+flRtWpVNmzYYFe+YcMGGjZsaFcWGRlpOwGKiYlBqy3e2RoeHm63zeXJ7uDBg1y4cIE33niDe+65h/r16xcbmAYwYMAA6tevz9NPP01CQgIPP/zwNb9fgwYNShV/WcyZMwcfHx/69etXbF39+vU5ceIEJ06csJUdO3aMkydP2h27Vq1aLFy4kJdeegk/Pz8mTJhgW7d9+3YsFgtvv/02d911F3Xr1uX06RvTkyVd5eUkE7AIUXHy8/NJTk4GrF3lH3zwAVlZWXTr1g2AOnXqcPz4cb7++mvuvPNOfvvtN1tLEKwtnyVLljBz5kymTp16zWMlJSVx/PhxkpKSSlx/6NAh3njjDbp3715spHlaWhpGo5HAwECqVKnCxx9/TEREBMePH2f8+PEl7s9oNJKXl2d7rygKBQUFmM1mW5f14sWLad68+VVHZr/wwgtMmTKF2rVrExsby4IFC0hISHB6S7d69ero9Xref/99nn32Wfbu3csrr7xSbLsxY8agUql455130Ol0+Pr6FqurK+Pv1asXt912Gx06dGDp0qX88MMPrFy50m47k8lkqyuz2YzFYrG9v9o19LfeeoulS5cWG2gG0LFjRxo0aECfPn145513AOvgtNjYWO677z7bdr6+vraTnIULF9KiRQv+85//cM899xATE4PJZOL999+nW7dubNiwgblz516jFp1IqWTS09MVQElPTy/3voxGo9Jn5i9K1LhflZkrEp0QXeVhNBqVn376STEaja4Oxa2Upd5yc3OVffv2Kbm5uRUYmfMNGDBAAWyLr6+vcueddyrfffed3XYvvPCCUqVKFcXHx0fp3bu38s477yj+/v6KoijK33//rdSqVUuZPn26YjKZlIsXLypms1lZvXq1AigXL15UFEVRpkyZogDK//73P9t+r9wmKirKLp4rl9WrVyuKoijx8fFKgwYNFIPBoDRt2lRZs2aNAig//vijoiiKcuTIkWvuZ8GCBYqiKErbtm0VlUqlbNu2zRbTlClTlGbNmtnem81mZerUqUq1atUUnU6nNGvWTPn9999t64uOtXPnTrs6i4qKUt555x3b+8vjK9K2bVtl1KhRitlsVi5evKgsWrRIiY6OVgwGg9KqVSvll19+sdv34sWLlbCwMOXUqVN2v8Pu3buX/Asu9OGHHyq1atVSdDqdUrduXeXzzz+3W3+turp8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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"scores=model_1.evaluate(X_test,y_test)\n",
"print('Lossontestdata:',scores[0])\n",
"print('Accuracyontestdata:',scores[1])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "t6pRsthkuxHa",
"outputId": "686ac8ce-14cf-44f9-a05f-b55835ebec16"
},
"execution_count": 117,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9316 - loss: 0.2666\n",
"Lossontestdata: 0.2741525173187256\n",
"Accuracyontestdata: 0.928600013256073\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#Пункт 8\n",
"model_2l_100 = Sequential()\n",
"model_2l_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))\n",
"model_2l_100.add(Dense(units=num_classes, activation='softmax'))\n",
"# 2. компилируем модель\n",
"model_2l_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])"
],
"metadata": {
"id": "OB1TocyoxJqd"
},
"execution_count": 118,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"Архитектура нейронной сети:\")\n",
"model_2l_100.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 210
},
"id": "66f28BYPyphJ",
"outputId": "95fa3ce7-9da3-4f14-f6e7-3ab4bbb3d4e2"
},
"execution_count": 119,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Архитектура нейронной сети:\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1mModel: \"sequential_9\"\u001b[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_9\"</span>\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_20 (\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_21 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,010\u001b[0m │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_20 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">78,500</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_21 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">1,010</span> │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">79,510</span> (310.59 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m79,510\u001b[0m (310.59 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">79,510</span> (310.59 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
"</pre>\n"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Обучаем модель\n",
"history_2l_100 = model_2l_100.fit(\n",
" X_train, y_train,\n",
" validation_split=0.1,\n",
" epochs=50\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "0Jv3UAPCyhrA",
"outputId": "99d743a8-7277-4918-f62b-c9ac13ccc0a1"
},
"execution_count": 120,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.5431 - loss: 1.8730 - val_accuracy: 0.8193 - val_loss: 0.9612\n",
"Epoch 2/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8325 - loss: 0.8374 - val_accuracy: 0.8562 - val_loss: 0.6289\n",
"Epoch 3/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8661 - loss: 0.5818 - val_accuracy: 0.8730 - val_loss: 0.5130\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.8795 - loss: 0.4818 - val_accuracy: 0.8825 - val_loss: 0.4548\n",
"Epoch 5/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.8853 - loss: 0.4311 - val_accuracy: 0.8900 - val_loss: 0.4174\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.8964 - loss: 0.3925 - val_accuracy: 0.8943 - val_loss: 0.3931\n",
"Epoch 7/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8989 - loss: 0.3714 - val_accuracy: 0.8983 - val_loss: 0.3744\n",
"Epoch 8/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9005 - loss: 0.3600 - val_accuracy: 0.9008 - val_loss: 0.3600\n",
"Epoch 9/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 4ms/step - accuracy: 0.9024 - loss: 0.3443 - val_accuracy: 0.9010 - val_loss: 0.3484\n",
"Epoch 10/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.9051 - loss: 0.3332 - val_accuracy: 0.9027 - val_loss: 0.3393\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.9101 - loss: 0.3199 - val_accuracy: 0.9047 - val_loss: 0.3316\n",
"Epoch 12/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9086 - loss: 0.3159 - val_accuracy: 0.9055 - val_loss: 0.3241\n",
"Epoch 13/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 4ms/step - accuracy: 0.9107 - loss: 0.3140 - val_accuracy: 0.9068 - val_loss: 0.3186\n",
"Epoch 14/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9164 - loss: 0.2948 - val_accuracy: 0.9093 - val_loss: 0.3120\n",
"Epoch 15/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9140 - loss: 0.3004 - val_accuracy: 0.9093 - val_loss: 0.3057\n",
"Epoch 16/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9169 - loss: 0.2937 - val_accuracy: 0.9120 - val_loss: 0.3015\n",
"Epoch 17/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9185 - loss: 0.2836 - val_accuracy: 0.9133 - val_loss: 0.2969\n",
"Epoch 18/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9198 - loss: 0.2789 - val_accuracy: 0.9132 - val_loss: 0.2924\n",
"Epoch 19/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9215 - loss: 0.2758 - val_accuracy: 0.9147 - val_loss: 0.2882\n",
"Epoch 20/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 4ms/step - accuracy: 0.9227 - loss: 0.2687 - val_accuracy: 0.9168 - val_loss: 0.2844\n",
"Epoch 21/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9246 - loss: 0.2651 - val_accuracy: 0.9183 - val_loss: 0.2807\n",
"Epoch 22/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9247 - loss: 0.2627 - val_accuracy: 0.9198 - val_loss: 0.2771\n",
"Epoch 23/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 3ms/step - accuracy: 0.9257 - loss: 0.2584 - val_accuracy: 0.9193 - val_loss: 0.2739\n",
"Epoch 24/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9281 - loss: 0.2531 - val_accuracy: 0.9212 - val_loss: 0.2704\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.9280 - loss: 0.2521 - val_accuracy: 0.9225 - val_loss: 0.2674\n",
"Epoch 26/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9272 - loss: 0.2518 - val_accuracy: 0.9237 - val_loss: 0.2646\n",
"Epoch 27/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9289 - loss: 0.2488 - val_accuracy: 0.9243 - val_loss: 0.2610\n",
"Epoch 28/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9310 - loss: 0.2410 - val_accuracy: 0.9242 - val_loss: 0.2594\n",
"Epoch 29/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9317 - loss: 0.2382 - val_accuracy: 0.9260 - val_loss: 0.2554\n",
"Epoch 30/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9326 - loss: 0.2389 - val_accuracy: 0.9250 - val_loss: 0.2531\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.9333 - loss: 0.2279 - val_accuracy: 0.9278 - val_loss: 0.2508\n",
"Epoch 32/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9326 - loss: 0.2319 - val_accuracy: 0.9273 - val_loss: 0.2475\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.9336 - loss: 0.2272 - val_accuracy: 0.9282 - val_loss: 0.2448\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.9364 - loss: 0.2236 - val_accuracy: 0.9282 - val_loss: 0.2429\n",
"Epoch 35/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9346 - loss: 0.2283 - val_accuracy: 0.9302 - val_loss: 0.2400\n",
"Epoch 36/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9379 - loss: 0.2202 - val_accuracy: 0.9298 - val_loss: 0.2379\n",
"Epoch 37/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9375 - loss: 0.2177 - val_accuracy: 0.9312 - val_loss: 0.2353\n",
"Epoch 38/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9369 - loss: 0.2201 - val_accuracy: 0.9323 - val_loss: 0.2337\n",
"Epoch 39/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9398 - loss: 0.2111 - val_accuracy: 0.9337 - val_loss: 0.2307\n",
"Epoch 40/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9398 - loss: 0.2086 - val_accuracy: 0.9348 - val_loss: 0.2291\n",
"Epoch 41/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9392 - loss: 0.2096 - val_accuracy: 0.9350 - val_loss: 0.2269\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.9417 - loss: 0.2056 - val_accuracy: 0.9350 - val_loss: 0.2251\n",
"Epoch 43/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9419 - loss: 0.2057 - val_accuracy: 0.9353 - val_loss: 0.2236\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.9426 - loss: 0.1992 - val_accuracy: 0.9362 - val_loss: 0.2217\n",
"Epoch 45/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9423 - loss: 0.2054 - val_accuracy: 0.9368 - val_loss: 0.2196\n",
"Epoch 46/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9451 - loss: 0.1942 - val_accuracy: 0.9373 - val_loss: 0.2172\n",
"Epoch 47/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9444 - loss: 0.1979 - val_accuracy: 0.9382 - val_loss: 0.2155\n",
"Epoch 48/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9459 - loss: 0.1897 - val_accuracy: 0.9388 - val_loss: 0.2139\n",
"Epoch 49/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9460 - loss: 0.1890 - val_accuracy: 0.9392 - val_loss: 0.2122\n",
"Epoch 50/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9474 - loss: 0.1889 - val_accuracy: 0.9400 - val_loss: 0.2104\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Выводим график функции ошибки\n",
"plt.figure(figsize=(12, 5))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(history_2l_100.history['loss'], label='Обучающая ошибка')\n",
"plt.plot(history_2l_100.history['val_loss'], label='Валидационная ошибка')\n",
"plt.title('Функция ошибки по эпохам')\n",
"plt.xlabel('Эпохи')\n",
"plt.ylabel('Categorical Crossentropy')\n",
"plt.legend()\n",
"plt.grid(True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "1AjWTqGPxYgd",
"outputId": "5ca92110-3696-4d02-ab03-b43e67cd057d"
},
"execution_count": 121,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x500 with 1 Axes>"
],
"image/png": "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PHnSvO7ChQuKr6+vcs8991i8/6OPPlIA5csvv1T+/PNPxdXVVXnhhRcs9snNzS0V486dOxVAWbp0aakYH3vsMeW2224zr8/JyVH8/PyUgQMHlvkZhONJU7mwq6ysrFK1kLKEh4cDmIcR1a9fn7Zt27Js2TLzPmlpafz88888/vjjpZpOs7KySElJsViuJT8/nwceeIDk5GTWr19PcHBwRT5amc6fP8/777/PlClT8PHxKRUjUKHzrVu3DoCxY8darB83bhwAP/30U0XCvS5FUZg0aRIPP/wwbdu2LXOfsWPH4urqan49aNAgwsPDy4xn9+7dPProozz88MPMnj270ueuqI0bN6LVannhhRdwcSn+L3DYsGH4+fndsCxN49VNS3h4OL169eK7777DYDBYFYter+fXX3+lX79+1KlTx7w+MjKSgQMH8scff1gMrXv22Wfp0aMH//vf/xg0aBB169bl9ddftzimp6en+blOpyM1NZW4uDgCAgL466+/SsUwaNAgjh49am4S/+677/D396dLly5WfRZx80jiFnYVFRXFyZMnb7jfiRMnACx6Jz/55JNs376dM2fOAPDNN9+g0+kYNGhQqfcPHTqU0NBQi8V0ze9qTz31FH/88QdZWVnm69q2Mm3aNKKioszX4Etq0KABgYGBzJkzh+3bt5OcnExKSgo6ne6Gxz1z5gwuLi7ExcVZrI+IiCAgIMBcRra0bNky/vnnn1KJATD/cGrYsKHFeldXV+rVq1fqeur58+e5//77ycnJITU19YbXrK937soylVWDBg0s1ms0GurUqXPDskxMTCz1XVu1ahUZGRnX/cFYluTkZHJzc0vFAtCoUSMMBgNnz561WP/ZZ5+Rm5vL8ePHWbJkiUWiBsjLy2Pq1KlER0fj7u5OSEgIoaGhpKenk5GRUeo8oaGh3H///SxatAiARYsWMXjwYIsfNaJqkb+MsKvevXuTlpbGZ599ds19kpKS+PzzzwkNDeXOO+80rx8wYABqtdpc6/7yyy+54447yvxPburUqWzYsMFi8fDwKPN8f/31F2vWrCE0NJRnn322kp+w2JEjR1iyZAmvvfZamddIfXx8WLlyJTk5OXTo0IGwsDBCQ0PZsWNHuc9Rnk5atqDVapkyZQpPP/009evXL7X96mRxIydOnKBWrVp88cUXbNy4kc8//7zC53a0iIiI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aRNPPfVUqc+UlJTE5MmT2bJlC5cvX0av15Obm2tRJrcaqXFXgqfGVOOWxC2ch0qlwkvj5pClvE3EcXFxqFQqjhw5Uub2I0eOEBgYSGhoKIGBgdf9rCZPP/0033//PXl5eSxevJj+/fvj5eUFQFBQEHPnzmXixIl4enri4+PDsmXLLI7Vp08f0tLS+OSTT9i1axe7du0CQKvVWuy3cuVKXn311XLFZK3x48ezatUqXn/9dX7//Xfi4+O57bbbLGJ45513KCgoICQkBB8fH3r27Fnh89nC7NmzadCgAX369LFYX96/Gxj/3j///DMrVqzgl18sL/MMHjyY+Ph43n33XXbs2EF8fDzBwcGl/i63EkncleCpNhaf1LiFsK3g4GC6devGhx9+WKr5+tKlSyxbtoz+/fujUqmoW7cubm5ubN++3byPwWBgx44dFjXeXr164e3tzcKFC1m/fr25mdxkxIgRZGRk8PfffxMfH88DDzxg3paamsqxY8eYPHkyXbp0MTfVlyU6OpoOHTqQnp5u0Yx+9uxZzp49axGTtbZv386QIUN48MEHue2224iIiLDoIAZQv359hgwZQmxsLLt27eLTTz+97jEbNWrEgQMHyMnJsTiPi4sLDRo0qHCsYOwoN2fOnFIdAwH8/f2JiIiw+LsB/PHHH6XK6IsvvuC+++7j1VdfZdiwYWRmZlrEOmrUKHr16kWTJk1wd3cnJSWlUnFXdZK4K8FDrnELYTcffPABBQUF9OjRg23btnH27FnWr19Pt27dqFGjBjNnzgTAx8eHYcOG8eKLL7Ju3TqOHDnC8OHDuXDhAsOHDzcfz9XVlccee4z/+7//o169erRr167UOT09Palbty5xcXEWHZsCAwMJDg7m448/5sSJE/z222/XbFIHY3N527ZtefLJJ9m9ezd//fUXjz/+OC1atODee+8176coCvn5+eTn55t7SWu1WvM6vV6PwWAwzyZWr149vv/+e+Lj4zlw4AADBw40N9mb/Pnnn/zf//0f3377LU2aNKFGjRrXLefHH38cDw8PBg8ezN9//83mzZv53//+x6BBgwgPDzfvZzAYzHGZarMFBQXmdVfHATB//nwefPBBWrZsWea5x4wZw5tvvsmKFSv4999/mT59Ops3b2b8+PEW+5max8eMGUN0dLRF2derV48vvviCI0eOsGvXLh5//PFb/mY6krgrwVOucQthN/Xq1WPv3r3UqVOHRx99lLp16/Lss8/SuXNndu7caXGt8+2336Zfv34MHjyYFi1acODAAX755RciIyMtjjlo0CC0Wi1PPfWUVbG4uLiwYsUK9u3bR9OmTRkzZgyzZ8++7nu+++47oqOj6dKlCx07diQkJITVq1dbNAMfPHgQT09PPD09iYiIAKBHjx7mdV9++SVr164194afO3cugYGBtG/fnj59+tCjRw9uv/128/GSk5N55JFHmDt3rsX66/Hy8uKXX34hLS2N1q1b85///IcuXbrwwQcfWOz3448/muNq27YtAA0bNjSv+/3330sd22AwmH9glWXcuHGMGjWKcePG0bRpU77//nu+//57mjdvXub+Li4uLF68mOXLl/Prr78C8Nlnn3HlyhVuv/12Bg0axKhRowgLCyvXZ3dWKsWa3h+3gMzMTPz9/cnIyMDPz69Sx9p85BJPfb6PhuE+rB/T0UYRVg86nY5169aZh8yI8qlIueXn55OQkEDt2rUrdStBZ2cwGFi/fj39+vXj7NmzFrXJqmz16tWsXr3aZkOzrGUwGMjMzMTPz09u62mlq8vuev8WrclN0qu8EoqvcUtTuRBVWUFBAUlJSbz55pv85z//cZqkDcYmfvlxK0qSn0+VUHyNW5rKhajKTFOmZmRk8Oabbzo6HKv06dOHTz75xNFhiCpEEnclyDVuIZzDkCFD0Ol0bNmy5YadtYSo6iRxV4JpHLckbiGEEDeLJO5K8Ci6xq3TKxTq5Tq3EEII+5PEXQklp2/ML5TELYQQwv4kcVeCu1tx8eVppblcCCGE/UnirgSVSoXGxTgMXnqWCyGEuBkkcVdS0WVu6aAmhBBOzjS1bFUnibuSNKbELU3lQgjhVFatWsX9999PbGwsPj4+3H333Y4OqVwkcVdS0YgwqXELYWNDhgxBpVKZl+DgYO677z4OHjzo6NDELWDWrFkMGzaM3r1789NPPxEfH8+6descHVa5yJSnlSRN5ULYz3333cfixYsB4+08J0+eTO/evUlMTHRwZMKZnTp1itdff50///yTJk2aODocq0mNu5JMTeX50lQunIWigDbHMYuV9zRyd3cnIiKCiIgIWrRowcSJEzl79izJycnmfSZMmED9+vXx8vKiTp06TJkypdS1ytOnT+Pq6kpgYCCurq7mWnx6ejoA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tb5Lly788ssvAPTq1YtTp05VPjpndlVTOch1biGEEJVndeIOCgpi7dq1pdavXbuWoCDj+OScnBx8fX0rH50zM9W48zOgsADAPPXpqWTpWS6EEKJirG4qnzJlCs8//zybN282X+Pes2cP69atY+HChQBs2LCBjh072jZSZ+MRACpXUPTG69z+NeRmI0IIISrN6sQ9bNgwGjduzAcffMD3338PQIMGDdi6dat5JrVx48bZNkpn5OJivEtY9iVjc7l/DWoX9SyXpnIhhBAVVaEJWO666y7uuusuW8dy6/EpStzZlpOwnE/PI1+nx0Pt6sjohBBCOKEKTcBy8uRJJk+ezMCBA7l82dj56ueff+aff/6xaXBOzyfc+JiRCECIjwZfDzcUBRLTch0YmBBCCGdldeLeunUrt912G7t27eK7774jO9vY0erAgQNMmzbN5gE6tRqtjI9ndgDGSWrM17llznIhhBAVYHXinjhxIq+99hobNmxAo9GY19977738+eefNg3O6cXebXxM+B0UBZAhYUIIISrH6sR96NChMm8wEhYWRkpKik2CumXUbA2u7sbOaSn/Apg7qMmQMCGEEBVhdeIOCAjg4sWLpdbv37+fGjVq2CSoW4baA2q1NT5P2AYUj+WWGrcQQoiKsDpxDxgwgAkTJnDp0iVUKhUGg4Ht27czfvx4nnzySasDmD9/PrGxsXh4eNC2bVt279593f3T09MZMWIEkZGRuLu7U79+fdatW2f1eW+a2HuMj0WJu440lQshhKgEqxP366+/TsOGDYmOjiY7O5vGjRtzzz330L59eyZPnmzVsVauXMnYsWOZNm0af/31F82bN6dHjx7mnupX02q1dOvWjdOnT/Ptt99y7NgxPvnkk6pd069ddJ379B9gMBBblLhTc7Rk5OocGJgQQghnZPU4bo1GwyeffMLUqVM5dOgQ2dnZtGzZknr16ll98rlz5zJs2DDzLUAXLlzITz/9xKJFi5g4cWKp/RctWkRaWho7duxArVYDEBsbe91zFBQUUFBQYH6dmZkJgE6nQ6erXOI0vf+6xwm7DTe1F6q8NHQXDuIe3oRwX3eSsgo4npRB85r+lYrBWZWr7EQpUm4VJ2VXMVJuFWdN2VlTvipFKeruXE6vvPIK48ePx8vL8u5WeXl5zJ49m6lTp5brOFqtFi8vL7799lv69etnXj94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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"scores_2l_100=model_2l_100.evaluate(X_test,y_test)\n",
"print('Lossontestdata:',scores_2l_100[0])\n",
"print('Accuracyontestdata:',scores_2l_100[1])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PWskjkNrzErf",
"outputId": "dbb26b71-2e50-4c36-e6f8-bfa9943b080c"
},
"execution_count": 122,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9482 - loss: 0.1875\n",
"Lossontestdata: 0.19283892214298248\n",
"Accuracyontestdata: 0.9462000131607056\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#Пункт 8\n",
"model_2l_300 = Sequential()\n",
"model_2l_300.add(Dense(units=300,input_dim=num_pixels, activation='sigmoid'))\n",
"model_2l_300.add(Dense(units=num_classes, activation='softmax'))\n",
"# 2. компилируем модель\n",
"model_2l_300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])"
],
"metadata": {
"id": "D7pthVnNzIhJ"
},
"execution_count": 123,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"Архитектура нейронной сети:\")\n",
"model_2l_300.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 210
},
"id": "t1x6cGBQzO03",
"outputId": "0e955914-d9be-480b-a2e0-8dc3e5529c94"
},
"execution_count": 124,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Архитектура нейронной сети:\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1mModel: \"sequential_10\"\u001b[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_10\"</span>\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_22 (\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_23 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m3,010\u001b[0m │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_22 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">300</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">235,500</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_23 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">3,010</span> │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">238,510</span> (931.68 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m238,510\u001b[0m (931.68 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">238,510</span> (931.68 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
"</pre>\n"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Обучаем модель\n",
"history_2l_300 = model_2l_300.fit(\n",
" X_train, y_train,\n",
" validation_split=0.1,\n",
" epochs=50\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "VYUly0tazTZU",
"outputId": "ac60d347-2147-42cd-f27f-c2f830323c93"
},
"execution_count": 125,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.5804 - loss: 1.7583 - val_accuracy: 0.8300 - val_loss: 0.8481\n",
"Epoch 2/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.8406 - loss: 0.7464 - val_accuracy: 0.8615 - val_loss: 0.5755\n",
"Epoch 3/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.8697 - loss: 0.5313 - val_accuracy: 0.8772 - val_loss: 0.4808\n",
"Epoch 4/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 5ms/step - accuracy: 0.8800 - loss: 0.4584 - val_accuracy: 0.8845 - val_loss: 0.4344\n",
"Epoch 5/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8880 - loss: 0.4133 - val_accuracy: 0.8873 - val_loss: 0.4070\n",
"Epoch 6/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8926 - loss: 0.3830 - val_accuracy: 0.8932 - val_loss: 0.3855\n",
"Epoch 7/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.8962 - loss: 0.3680 - val_accuracy: 0.8960 - val_loss: 0.3718\n",
"Epoch 8/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.8993 - loss: 0.3526 - val_accuracy: 0.8972 - val_loss: 0.3617\n",
"Epoch 9/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9011 - loss: 0.3445 - val_accuracy: 0.8997 - val_loss: 0.3518\n",
"Epoch 10/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9036 - loss: 0.3365 - val_accuracy: 0.9017 - val_loss: 0.3438\n",
"Epoch 11/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9048 - loss: 0.3286 - val_accuracy: 0.9030 - val_loss: 0.3396\n",
"Epoch 12/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 5ms/step - accuracy: 0.9075 - loss: 0.3222 - val_accuracy: 0.9028 - val_loss: 0.3324\n",
"Epoch 13/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9108 - loss: 0.3119 - val_accuracy: 0.9050 - val_loss: 0.3270\n",
"Epoch 14/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 5ms/step - accuracy: 0.9118 - loss: 0.3063 - val_accuracy: 0.9065 - val_loss: 0.3235\n",
"Epoch 15/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9141 - loss: 0.3018 - val_accuracy: 0.9070 - val_loss: 0.3199\n",
"Epoch 16/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 4ms/step - accuracy: 0.9141 - loss: 0.3003 - val_accuracy: 0.9065 - val_loss: 0.3150\n",
"Epoch 17/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 5ms/step - accuracy: 0.9152 - loss: 0.2934 - val_accuracy: 0.9063 - val_loss: 0.3122\n",
"Epoch 18/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9147 - loss: 0.2955 - val_accuracy: 0.9085 - val_loss: 0.3087\n",
"Epoch 19/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9158 - loss: 0.2941 - val_accuracy: 0.9097 - val_loss: 0.3053\n",
"Epoch 20/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9163 - loss: 0.2893 - val_accuracy: 0.9092 - val_loss: 0.3031\n",
"Epoch 21/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 6ms/step - accuracy: 0.9179 - loss: 0.2878 - val_accuracy: 0.9117 - val_loss: 0.2999\n",
"Epoch 22/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9199 - loss: 0.2765 - val_accuracy: 0.9128 - val_loss: 0.2982\n",
"Epoch 23/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9174 - loss: 0.2831 - val_accuracy: 0.9130 - val_loss: 0.2954\n",
"Epoch 24/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 6ms/step - accuracy: 0.9197 - loss: 0.2765 - val_accuracy: 0.9138 - val_loss: 0.2923\n",
"Epoch 25/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9198 - loss: 0.2786 - val_accuracy: 0.9150 - val_loss: 0.2908\n",
"Epoch 26/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9229 - loss: 0.2727 - val_accuracy: 0.9150 - val_loss: 0.2870\n",
"Epoch 27/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 6ms/step - accuracy: 0.9218 - loss: 0.2688 - val_accuracy: 0.9160 - val_loss: 0.2850\n",
"Epoch 28/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9235 - loss: 0.2645 - val_accuracy: 0.9183 - val_loss: 0.2832\n",
"Epoch 29/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9245 - loss: 0.2652 - val_accuracy: 0.9188 - val_loss: 0.2805\n",
"Epoch 30/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 6ms/step - accuracy: 0.9244 - loss: 0.2626 - val_accuracy: 0.9190 - val_loss: 0.2774\n",
"Epoch 31/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9242 - loss: 0.2614 - val_accuracy: 0.9188 - val_loss: 0.2759\n",
"Epoch 32/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 5ms/step - accuracy: 0.9251 - loss: 0.2596 - val_accuracy: 0.9193 - val_loss: 0.2752\n",
"Epoch 33/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9253 - loss: 0.2609 - val_accuracy: 0.9202 - val_loss: 0.2719\n",
"Epoch 34/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9291 - loss: 0.2497 - val_accuracy: 0.9192 - val_loss: 0.2698\n",
"Epoch 35/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9305 - loss: 0.2445 - val_accuracy: 0.9222 - val_loss: 0.2670\n",
"Epoch 36/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9304 - loss: 0.2436 - val_accuracy: 0.9225 - val_loss: 0.2650\n",
"Epoch 37/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9314 - loss: 0.2405 - val_accuracy: 0.9235 - val_loss: 0.2626\n",
"Epoch 38/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9300 - loss: 0.2407 - val_accuracy: 0.9243 - val_loss: 0.2600\n",
"Epoch 39/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9307 - loss: 0.2394 - val_accuracy: 0.9255 - val_loss: 0.2585\n",
"Epoch 40/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9331 - loss: 0.2361 - val_accuracy: 0.9265 - val_loss: 0.2565\n",
"Epoch 41/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9321 - loss: 0.2386 - val_accuracy: 0.9275 - val_loss: 0.2542\n",
"Epoch 42/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 4ms/step - accuracy: 0.9342 - loss: 0.2312 - val_accuracy: 0.9285 - val_loss: 0.2543\n",
"Epoch 43/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 4ms/step - accuracy: 0.9328 - loss: 0.2363 - val_accuracy: 0.9282 - val_loss: 0.2497\n",
"Epoch 44/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 5ms/step - accuracy: 0.9355 - loss: 0.2233 - val_accuracy: 0.9292 - val_loss: 0.2478\n",
"Epoch 45/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9371 - loss: 0.2166 - val_accuracy: 0.9287 - val_loss: 0.2461\n",
"Epoch 46/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 4ms/step - accuracy: 0.9355 - loss: 0.2252 - val_accuracy: 0.9297 - val_loss: 0.2434\n",
"Epoch 47/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9362 - loss: 0.2210 - val_accuracy: 0.9297 - val_loss: 0.2421\n",
"Epoch 48/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9374 - loss: 0.2172 - val_accuracy: 0.9315 - val_loss: 0.2404\n",
"Epoch 49/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9389 - loss: 0.2135 - val_accuracy: 0.9305 - val_loss: 0.2377\n",
"Epoch 50/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 5ms/step - accuracy: 0.9406 - loss: 0.2072 - val_accuracy: 0.9308 - val_loss: 0.2365\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Выводим график функции ошибки\n",
"plt.figure(figsize=(12, 5))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(history_2l_300.history['loss'], label='Обучающая ошибка')\n",
"plt.plot(history_2l_300.history['val_loss'], label='Валидационная ошибка')\n",
"plt.title('Функция ошибки по эпохам')\n",
"plt.xlabel('Эпохи')\n",
"plt.ylabel('Categorical Crossentropy')\n",
"plt.legend()\n",
"plt.grid(True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "zm-4vPhUzbNK",
"outputId": "e4042736-561b-4979-aec1-9d775d897fff"
},
"execution_count": 126,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x500 with 1 Axes>"
],
"image/png": "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ZscbB94ZnTt3DsBsX1xcXKnX2rdvH7Vq1eKll14qM56AgACmTp3KtGnT6NmzJw899BCnTp3iww8/pGXLljz77LNlvjc0NJQ5c+bw7LPP8tRTT5m+lFT02pUVFBTElClTmDVrFvfffz99+/bl+PHjfPTRR9x1113l3mp47tw5HnjgAR577DFq167N4cOH+eyzz6hVq5bV/fGvvfYasbGxdOzYkZEjR+Li4sInn3xCfn4+b7/9tum4xYsX89tvv7FkyRLq1KkDGBLyU089xccff8zIkSMBQ/fUV199ha+vL82aNWP79u1s2LDhhoMiX331VV588cUKfZEUdmbXMe2iRirtdrDyjBw5UgGUFStWlHjN2tvBivvyyy8VQPnll1/MjitvK37bEqCoVCpl7969Zue9/vamN954Q9FoNMqBAwdKHHej28EURVG0Wq0ya9YspV69eoqrq6sSERGhTJkyRcnLyzM7LjIy8obxF9+uvx0MUN59912zcxpv/7reggULlCZNmiiurq5KSEiI8t///le5cuVKueVg1LVrV6Vu3bpKZmamVde+XkVvBzP68MMPzWJ//vnnlbS0tHKvkZmZqQwfPlyJjIxU1Gq1EhQUpAwaNEg5e/as2XGW3lK4b98+pWfPnoqXl5fi4eGhdOnSRfn7779Nr58/f17x9fVV+vTpUyKmhx9+WPH09FROnTqlKIqipKWlKUOHDlVq1aqleHl5KT179lSOHTumREZGlvrvoazbvW70urAfmfJUVHvjxo3jiy++ICEhocTkEfYwc+ZMNm/ezObNm+0dihCiBpI+blGt5eXlsWzZMh599NFqkbSFEMLepI9bVEtJSUls2LCB7777jitXrpQ6kMleoqOjycnJsXcYQogaSprKRbW0efNmunTpQnBwMNOmTWP06NH2DkkIIaoFSdxCCCGEA5E+biGEEMKBSOIWQgghHEiNG5ym1+u5dOkS3t7eN23eZyGEEKI8iqKQmZlJeHj4DWfgq3GJ+9KlS2Zz/wohhBDVxfnz500z45WlxiVub29vwFA4xecAtoZWq2X9+vX06NGj1NWgRNmk7Kwj5WY9KTvrSLlZz5Kyy8jIICIiwpSjylPjErexedzHx8cmidvDwwMfHx/5g7aQlJ11pNysJ2VnHSk361lTdhXpwpXBaUIIIYQDkcQthBBCOBC7Ju6tW7fSp08f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bNq0KQcOHCA7O9vsOk5OTjRu3NjqWMEwUG7u3LklBgYC+Pr6EhoaavZ7A/jrr79KlNFXX33F/fffz6uvvsrw4cPNpgfdtm0bL7zwAr179+a2225Do9GQkpJSqbirO0nclWBM3HmFkriFsLUPP/yQ/Px8evbsydatWzl//jxr166le/fu1K5dm9dffx0ALy8vhg8fzosvvsiaNWs4evQoI0eO5NKlS4wcOdJ0PmdnZ5544gn+7//+j4YNG9K+ffsS13R3d6dBgwZER0ebDWzy9/cnMDCQTz/9lPj4eP74448ym9TB0Fzerl07nn76aXbt2sW+fft48sknadWqldnUzIqikJeXR15enmmUdEFBgWmfTqdDr9ebFvho2LAhP/zwA3FxcRw4cICBAweamuyNduzYwf/93//x3Xffcdttt1G7du1yy/nJJ5/Ezc2NwYMHc/jwYTZt2sT//vc/Bg0aREhIiOk4vV5vistYm83Pzzftuz4OgAULFvDwww+b5uq43rhx43jrrbdYuXIl//77LzNnzmTTpk1MnDjR7Dhj8/i4ceOIiIgwK/uGDRvy1VdfcfToUXbu3MmTTz5ZYkDjrUYSdyW4uRiKTwanCWF7DRs2ZM+ePdSvX5/HH3+cBg0a8Nxzz9GlSxe2b99u1tf5zjvv0K9fPwYPHkyrVq04cOAA69atIywszOycgwYNoqCggKFDh1oUi5OTEytXrmTv3r00b96ccePGMWfOnHLf8/333xMREUG3bt3o1KkTtWrV4qeffjJrBj548CDu7u64u7sTGhoKQM+ePU37li1bxurVq02j4efNm4e/vz8dOnSgT58+9OzZkzvuuMN0vuTkZB577DHmzZtntr88Hh4erFu3jtTUVO666y7+85//0K1bNz788EOz43799VdTXO3atQOgSZMmpn1//vlniXPr9XrTF6zSTJgwgRdeeIEJEybQvHlzfvjhB3744QdatmxZ6vFOTk4sXryYFStWsH79egC++OIL0tLSuOOOOxg0aBAvvPACwcHBFfrsjkqlWDL64xaQkZGBr68vV69erfTqYBuPXOaZpftoFubNmjH32SjCmkGr1bJmzRrTLTOiYqwpt7y8PE6fPk29evVq9Opger2etWvX0q9fP86fP29Wm6zOfvrpJ3766Seb3ZplKb1eT0ZGBj4+PrLIiIWuL7vy/i1akptkVHklaEw1bmkqF6I6y8/PJzExkbfeeov//Oc/DpO0wdDEL19uRXHy9akS5D5uIRyDccrUq1ev8tZbb9k7HIv06dOHzz77zN5hiGpEEnclGG8Hk1HlQlRvQ4YMQavVsnnz5hsO1hKiupPEXQnGUeX5hVLjFkIIcXNI4q6E4vdx17AxfkIIIexEEncluBc1lSsKFOik1i2EEKLqSeKuBI3LtXmX8wokcQshhKh6krgrwdVZhROGJnKZPU0IIcTNIIm7ElQqFUWt5eQWSOIWQghHZpxatrqTxF1JxlUKpcYthBCO5ccff+SBBx4gKioKLy8v7r33XnuHVCGSuCtJLTVuIarEkCFDUKlUpi0wMJD777+fgwcP2js0cQuYPXs2w4cP58EHH+S3334jLi6ONWvW2DusCpEpTyvJ2FQus6cJYXv3338/ixcvBgzLeU6dOpUHH3yQc+fO2Tky4chOnTrFG2+8wY4dO7jtttvsHY7FpMZdSdcSt9S4hYNQFCjIts9m4XwHGo2G0NBQQkNDadWqFZMnT+b8+fMkJyebjpk0aRKNGjXCw8OD+vXrM23atBJ9lWfOnMHZ2Rl/f3+cnZ1Ntfj09HQAZs6cSatWrUzHFxQUEB0dbXaMUVRUlFlLgEql4qeffjK9vnbtWjp27Iifnx+BgYE8+OCDnDx50iwWlUpFXFxcifPOnz/f9Lxz586MHTvW9Pz48eO4urqaxanX63nllVeoU6cOGo2GVq1asXbtWouvdf1nKO36X331FXfeeSfe3t6EhoYycOBAkpKSzN7z66+/0rJlS9zd3U1l069fP8rz8ccf06BBA9RqNY0bN+arr74ye/362MaOHUvnzp3L/IybN28u8XsbNGiQ2XnWrVtHgwYNeP311wkKCsLb25tHHnmECxcumN5z/d/Evn378PPzM1vffN68edx+++14enoSERHByJEjycrKKvfz2oLUuCtJLYlbOBptDrwRbp9r/98lUHta9dasrCyWLVtGdHQ0gYGBpv3e3t4sWbKE8PBwDh06xPDhw/H29uall14yHWOcIOmnn37irrvuYseOHTz66KNlXuvDDz8kMTGxzNdfeeUV01Kb1y8dmp2dzfjx42nRogVZWVlMnz6dhx9+mLi4uEqtrvXiiy+WWFHqvffeY+7cuXzyySe0bt2aRYsW0bdvX/755x8aNmxo9bVKo9VqefXVV2ncuDFJSUmMHz+eIUOGmJqX09PT6d+/P88++yw//fQT7u7ujBkzxrTOeGl+/PFHxowZw/z584mJieHXX39l6NCh1KlThy5dutgk7r179/LLL7+Y7UtOTubAgQN4e3vz+++/AzBmzBj69evH7t27zZZeBTh27Bg9e/Zk6tSpPPvss6b9Tk5OvP/++9SrV49Tp04xcuRIXnrpJT766CObxF4WSdyV5OqkACqZr1yIKvDrr7/i5eUFGBJiWFgYv/76q1kCnDp1qulxVFQUEydOZOXKlWaJ21gDDw4OJjQ01Gwt7+ulpqby2muvMWnSJKZNm1bi9fz8fAICAkzrZ1/v+i8EixYtIigoiCNHjtC8efMKfOqSNm3axN9//82zzz7Lpk2bTPvfeecdJk2axIABAwB466232LRpE/Pnz2fBggVWXassw4YNM5V7/fr1ef/997nrrrvIysrCy8uLf//9l5ycHCZNmkR4uOGLobu7e7mJ+5133mHIkCGMHDkSgPHjx7Njxw7eeecdmyXu8ePH8+KLL5r9LvV6Pc7OzqxYsYKIiAgAVqxYQYMGDdi4cSMxMTGmY8+ePUv37t157rnnmDhxotm5i7dIREVF8dprrzFixAhJ3NWdWvq4haNx9TDUfO11bQt06dKFjz/+GIC0tDQ++ugjevXqxa5du4iMjARg1apVvP/++5w8eZKsrCwKCwtLrGeckZEBgKfnjWv7r7zyCl26dKFjx46lvp6amlruesknTpxg+vTp7Ny5k5SUFPR6w/8N586dsypxK4rChAkTmDFjBleuXDHtz8jI4NKlS9xzzz1mx99zzz0cOHDAbF+HDh3Mvuzk5OSUuM4TTzyBs/O1SaVyc3PNmor37t3LK6+8woEDB0hLSzP7XM2aNSMiIgIXFxe+/vprxo0bV6HWhaNHj/Lcc8+ViP+999674Xsr4qeffuLUqVNMmDChxJewiIgIU9IGiIyMpE6dOhw5csSUuNPT04mJieHChQv07NmzxPk3bNjA7NmzOXbsGBkZGRQWFpKXl0dOTg4eHpb9rVtC+rgryXQft9S4haNQqQzN1fbYrmuCvBFPT0+io6OJjo7mrrvu4vPPPyc7O9u0zOX27dt58skn6d27N7/++iv79+/n5ZdfpqCgwOw8ly5dwsnJieDg4HKvd+LECT7//PMyl/68cOECBQUF1KtXr8xz9OnTh9TUVD777DN27tzJzp07AUrEVFFLly4lOzubESNGWPV+MHy5iYuLM23GGnFx7777rtkxd955p+m17OxsevXqhY+PD8uXL2f37t38+OOPwLXPFRYWxscff8wbb7yBm5sbXl5eLF++3OqYK0ur1fLSSy/x+uuv4+7ubvaav79/me8r3kx+9uxZ2rVrx8yZMxk2bJjZF54zZ87w4IMP0qJFC77//nv27t1rauWw9nddUZK4K0kGpwlx86hUKpycnMjNzQXg77//JjIykpdffpk777yThg0bcvbs2RLv2717N02aNCnRR3y9SZMm8eyzzxIdHV3q61u2bMHd3d0sqRV35coVjh8/ztSpU+nWrRtNmzYlLS3Nwk95TU5ODi+//DJvvfUWrq6uZq/5+PgQHh7Otm3bzPZv27aNZs2ame2LiIgwfQGKjo7GxaVkY2toaKjZMcWT3YkTJ7hy5Qpvvvkm9957L02aNCkxMA1g8ODBNGnShOeee464uDj69u1b7udr2rRpheK3xscff4yXlxeDBg0q8VqTJk04f/4858+fN+07e/YsFy5cMLt2/fr1WbJkCS+//DI+Pj5MmTLF9NrevXvR6/XMnTuXu+++m0aNGnHp0s1pyZKm8kqSwWlCVJ38/HwSEhIAQ1P5hx9+SFZWFn369AGgYcOGnDt3jpUrV3LXXXfx22+/mWqCYKj5rFq1innz5jFz5sxyrxUfH8+5c+eIj48v9fWTJ0/y5ptv8tBDD5UYaZ6enk5BQQH+/v4EBgby6aefEhYWxrlz55g8eXKp5ysoKCAvL8/0XFEUCgsL0el0pibrFStW0KZNmzJHZr/44ovMmDGDBg0a0KpVKxYvXkxcXJzNa7p16tRBrVbzwQcfMGLECA4fPsyrr75a4rgJEyagUql49913cXV1xdvbu0RZXR//448/TuvWrYmJiWH16tX88MMPbNiwwew4rVZrKiudToderzc9L6sP/e2332b16tUlBpoBdO/enaZNmzJw4EDeffddwDA4rVWrVnTt2tV0nLe3t+lLzpIlS2jbti3/+c9/uPfee4mOjkar1fLBBx/Qp08ftm3bxsKFC8spRRtSapirV68qgHL16tVKn6ugoEAZ+t4vSuSkX5XXfv3HBtHVHAUFBcpPP/2kFBQU2DsUh2JNueXm5ipHjhxRcnNzqzAy2xs8eLACmDZvb2/lrrvuUr777juz41588UUlMDBQ8fLyUvr376+8++67iq+vr6IoirJnzx6lfv36yuzZsxWtVqukpaUpOp1O2bRpkwIoaWlpiqIoyowZMxRAeeedd0znvf6YyMhIs3iu3zZt2qQoiqLExsYqTZs2VTQajdKiRQtl8+bNCqD8+OOPiqIoyunTp8s9z+LFixVFUZROnTopKpVK2b17tymmGTNmKC1btjQ91+l0ysyZM5XatWsrrq6uSsuWLZXff//d9LrxWvv37zcrs8jISOXdd981PS8en1GnTp2UMWPGKDqdTklLS1OWLVumREVFKRqNRmnfvr3yyy+/mJ17xYoVSkhIiHLx4kWz3+FDDz1U+i+4yEcffaTUr19fcXV1VRo1aqQsXbrU7PXyyqr4ZozD+Ht78MEHS5yn+Gc8efKk8sADDygeHh6Kl5eX8vDDDysXLlwos6wVRVFeeeUVJTo6WsnOzlYURVHmzZunhIWFKe7u7krPnj2VpUuXmv3NGMtOp9MpilL+v0VLcpOq6APVGBkZGfj6+nL16tVyB5hUhFarZfQna1l3wYmn7q7La/1ut1GUtz6tVsuaNWvo3bt3iSZAUTZryi0vL4/Tp09Tr169GzYV38r0ej0ZGRn4+PhYdVtWVFQUmzdvJioqqsRr/fr1K3F/sTXGjh1Lq1atGDJkSKXOY0uVLbea7PqyK+/foiW5SX4LlaR2KlodTEaVC3FLCwoKMht1XZy/vz9qtbrS13B1dS3zGkIYSR93JcmociFqht27d5f5mnFa1sqaM2eOTc4jbm1S464k4+C0fEncQgghbgJJ3JUkNW4hhBA3kyTuSpLVwYSjqGHjUIWodmz1b1ASdyXJetyiujMOdqrq2ZyEEOUzzrxW2TtpZHBaJbk6F40qL5TELaonFxcXPDw8SE5OxtXVtcbe0qPX602TntTUMrCGlJv1jGWXm5tLXl4eSUlJ+Pn5VfrOAUnclWRqKpcat6imVCoVYWFhnD59utTpQGsKRVHIzc01rRUtKkbKzXrXl52fn1+Zq8pZQhJ3JZmmPC2UPm5RfanVaho2bFijm8u1Wi1bt27lvvvuk0l/LCDlZj1j2XXq1Al3d3eb3aMvibuSXKWPWzgIJyenGj1zmrOzM4WFhbi5uUkCsoCUm/WMZafRaGw6sY50WFTStRq3TkbtCiGEqHKSuCvJWONWFMiX5nIhhBBVTBJ3JamLlWC+3MsthBCiikniriRnJ3B2Moy0lNnThBBCVDVJ3DbgVtRenieJWwghRBWTxG0Dbi6G0YJS4xZCCFHVJHHbgLvUuIUQQtwkkrhtQOMqNW4hhBA3hyRuG3AvStwyqlwIIURVk8RtA8bBaVLjFkIIUdXsmri3bt1Knz59CA8PR6VS8dNPP5V7/A8//ED37t0JCgrCx8eH9u3bs27dupsTbDncimrc0scthBCiqtk1cWdnZ9OyZUsWLFhQoeO3bt1K9+7dWbNmDXv37qVLly706dOH/fv3V3Gk5XNzkRq3EEKIm8Oui4z06tWLXr16Vfj4+fPnmz1/4403+Pnnn1m9ejWtW7cu9T35+fnk5+ebnmdkZACGVVu0Wq3lQRdjfL/GxTABS3Ze5c9ZUxjLScrLMlJu1pOys46Um/UsKTtLytehVwfT6/VkZmYSEBBQ5jGzZ89m1qxZJfavX78eDw8Pm8SRkpgAOHHg8BHWpP9jk3PWFLGxsfYOwSFJuVlPys46Um7Wq0jZ5eTkVPh8Dp2433nnHbKysnj88cfLPGbKlCmMHz/e9DwjI4OIiAh69OiBj49Ppa6v1WqJjY2lQVQEO5MvElm/Ib1joit1zprCWHbdu3eXpQItIOVmPSk760i5Wc+SsjO2BleEwybuFStWMGvWLH7++WeCg4PLPE6j0aDRaErsd3V1tdkfoYfGcJ4CnSJ/2Bay5e+hJpFys56UnXWk3KxXkbKzpGwdMnGvXLmSZ599lm+//ZaYmBh7h3Nt5rRCGZwmhBCiajncfdxff/01Q4cO5euvv+aBBx6wdzgAaIxzlRfIBCxCCCGqll1r3FlZWcTHx5uenz59mri4OAICAqhbty5Tpkzh4sWLLF26FDA0jw8ePJj33nuPdu3akZCQAIC7uzu+vr52+QwA7uqi+7ilxi2EEKKK2bXGvWfPHlq3bm26lWv8+PG0bt2a6dOnA3D58mXOnTtnOv7TTz+lsLCQUaNGERYWZtrGjBljl/iNjPdx5xVI4hZCCFG17Frj7ty5M4qilPn6kiVLzJ5v3ry5agOykmnmNKlxCyGEqGIO18ddHZnmKpcatxBCiComidsG3E1zlcvgNCGEEFVLErcNaIy3g8lc5UIIIaqYJG4bcJfVwYQQQtwkkrhtwM14H7ckbiGEEFVMErcNuKmNTeXSxy2EEKJqSeK2geI17vJubxNCCCEqSxK3DRjv4wbIL5RatxBCiKojidsGjPdxgwxQE0IIUbUkcduAq7MTLk4qQPq5hRBCVC1J3DZibC6XkeVCCCGqkiRuG3GTe7mFEELcBJK4bcQ0X7kkbiGEEFVIEreNyOxpQgghbgZJ3DYiTeVCCCFuBkncNiIrhAkhhLgZJHHbiJu6aFS5rMkthBCiCknithE3l6L5ygslcQshhKg6krhtxF1q3EIIIW4CSdw2YlxoROYqF0IIUZUkcduI1LiFEELcDJK4bUTjalyTWxK3EEKIqiOJ20bcZa5yIYQQN4Ekbhtxk/u4hRBC3ASSuG1EpjwVQghxM0jithE36eMWQghxE0jithFZj1sIIcTNIInbRmSRESGEEDeDJG4buTaqXAanCSGEqDoWJ+5Tp05VRRwOz1jjzpcatxBCiCpkceKOjo6mS5cuLFu2jLy8vKqIySHJfdxCCCFuBosT9759+2jRogXjx48nNDSU//73v+zatasqYnMoMqpcCCHEzWBx4m7VqhXvvfcely5dYtGiRVy+fJmOHTvSvHlz5s2bR3JyclXEWe3JqHIhhBA3g9WD01xcXHjkkUf49ttveeutt4iPj2fixIlERETw9NNPc/nyZVvGWe0VnzlNURQ7RyOEEOJWZXXi3rNnDyNHjiQsLIx58+YxceJETp48SWxsLJcuXeKhhx6yZZzVnnF1MJClPYUQQlQdF0vfMG/ePBYvXszx48fp3bs3S5cupXfv3jg5Gb4D1KtXjyVLlhAVFWXrWKs1N5dr34FyC3SmGrgQQghhSxYn7o8//phhw4YxZMgQwsLCSj0mODiYL774otLBORIXZydcnVVodQp5hdLPLYQQompYnLhPnDhxw2PUajWDBw+2KiBH5ubijFZXSG6BJG4hhBBVw+LEDZCWlsYXX3zB0aNHAWjatCnDhg0jICDApsE5Gje1M5n5hbK0pxBCiCpj8eC0rVu3EhUVxfvvv09aWhppaWl88MEH1KtXj61bt1ZFjA7DeC+33BImhBCiqlhc4x41ahT9+/fn448/xtnZMABLp9MxcuRIRo0axaFDh2wepKNwl2lPhRBCVDGLa9zx8fFMmDDBlLQBnJ2dGT9+PPHx8TYNztHIJCxCCCGqmsWJ+4477jD1bRd39OhRWrZsaZOgHFXxSViEEEKIqmBxU/kLL7zAmDFjiI+P5+677wZgx44dLFiwgDfffJODBw+ajm3RooXtInUAUuMWQghR1SxO3E888QQAL730UqmvqVQqFEVBpVKh09WsBOYuC40IIYSoYhYn7tOnT1dFHLeEa03lkriFEEJUDYsTd2RkZFXEcUtwl8QthBCiilk1AcvJkyeZP3++aZBas2bNGDNmDA0aNLBpcI5G+riFEEJUNYtHla9bt45mzZqxa9cuWrRoQYsWLdi5cye33XYbsbGxVRGjw5BR5UIIIaqaxYl78uTJjBs3jp07dzJv3jzmzZvHzp07GTt2LJMmTbLoXFu3bqVPnz6Eh4ejUqn46aefbviezZs3c8cdd6DRaIiOjmbJkiWWfoQqIzOnCSGEqGoWJ+6jR4/yzDPPlNg/bNgwjhw5YtG5srOzadmyJQsWLKjQ8adPn+aBBx6gS5cuxMXFMXbsWJ599lnWrVtn0XWrivRxCyGEqGoW93EHBQURFxdHw4YNzfbHxcURHBxs0bl69epFr169Knz8woULqVevHnPnzgUMi5v89ddfvPvuu/Ts2dOia1cFGVUuhBCiqlmcuIcPH85zzz3HqVOn6NChAwDbtm3jrbfeYvz48TYPsLjt27cTExNjtq9nz56MHTu2zPfk5+eTn59vep6RkQGAVqtFq9VWKh7j+40/i1rKyckvrPS5b3XXl52oGCk360nZWUfKzXqWlJ0l5Wtx4p42bRre3t7MnTuXKVOmABAeHs7MmTN54YUXLD2dRRISEggJCTHbFxISQkZGBrm5ubi7u5d4z+zZs5k1a1aJ/evXr8fDw8MmcRkH5R1LUQHOXExIYs2aNTY5962upg9otJaUm/Wk7Kwj5Wa9ipRdTk5Ohc9nUeIuLCxkxYoVDBw4kHHjxpGZmQmAt7e3Jae5qaZMmWLWEpCRkUFERAQ9evTAx8enUufWarXExsbSvXt3XF1dUR9NYumJODx9/endu11lQ7+lXV92omKk3KwnZWcdKTfrWVJ2xtbgirAocbu4uDBixAjT/ds3O2GHhoaSmJhoti8xMREfH59Sa9sAGo0GjUZTYr+rq6vN/giN5/J0UwOG28HkD7xibPl7qEmk3KwnZWcdKTfrVaTsLClbi0eVt23blv3791v6Npto3749GzduNNsXGxtL+/bt7RLP9dzVRetxF8p93EIIIaqGxX3cI0eOZMKECVy4cIE2bdrg6elp9rolK4JlZWWZreF9+vRp4uLiCAgIoG7dukyZMoWLFy+ydOlSAEaMGMGHH37ISy+9xLBhw/jjjz/45ptv+O233yz9GFXCzaVo5rQCGVUuhBCialicuAcMGABgNhDN2hXB9uzZQ5cuXUzPjX3RgwcPZsmSJVy+fJlz586ZXq9Xrx6//fYb48aN47333qNOnTp8/vnn1eJWMAB3ddHqYIWSuIUQQlQNu64O1rlzZxRFKfP10mZF69y5s92a6m9EIzVuIYQQVczixH327Fk6dOiAi4v5WwsLC/n7779r9Ophxfu49XoFJyeVnSMSQghxq7F4cFqXLl1ITU0tsf/q1atmzd41kXHmNJABakIIIaqGxYnb2Jd9vStXrpQYqFbTuLlcK06Z9lQIIURVqHBT+SOPPAIYBqINGTLE7N5onU7HwYMHTVOg1lQuzk64OqvQ6hRytTr87R2QEEKIW06FE7evry9gqHF7e3ubTXiiVqu5++67GT58uO0jdDBurs5odYVS4xZCCFElKpy4Fy9eDEBUVBQTJ06s8c3iZXFzdSYzr1DW5BZCCFElLB5VPmPGjKqI45ZxbU1uGZwmhBDC9iwenJaYmMigQYMIDw/HxcUFZ2dns62mcyta21OayoUQQlQFi2vcQ4YM4dy5c0ybNo2wsLBSR5jXZNdq3JK4hRBC2J7Fifuvv/7izz//pFWrVlUQjuPTFCVu6eMWQghRFSxuKo+IiCh3mtKaTvq4hRBCVCWLE/f8+fOZPHkyZ86cqYJwHJ+xj1tq3EIIIaqCxU3l/fv3JycnhwYNGuDh4VFi8e/SpkOtSYw17nxJ3EIIIaqAxYl7/vz5VRDGrcM4X7msECaEEKIqWJy4Bw8eXBVx3DKMiVvW5BZCCFEVLO7jBjh58iRTp07liSeeICkpCYDff/+df/75x6bBOaJrNW4ZnCaEEML2LE7cW7Zs4fbbb2fnzp388MMPZGVlAXDgwAGZVY1io8qlxi2EEKIKWJy4J0+ezGuvvUZsbCxqtdq0v2vXruzYscOmwTki08xp0scthBCiClicuA8dOsTDDz9cYn9wcDApKSk2CcqRuaulxi2EEKLqWJy4/fz8uHz5con9+/fvp3bt2jYJypG5uciociGEEFXH4sQ9YMAAJk2aREJCAiqVCr1ez7Zt25g4cSJPP/10VcToUNzUMnOaEEKIqmNx4n7jjTdo0qQJERERZGVl0axZM+677z46dOjA1KlTqyJGh+LmIjOnCSGEqDoW38etVqv57LPPmD59OocOHSIrK4vWrVvTsGHDqojP4Zj6uCVxCyGEqAIWJ26jiIgIIiIi0Ol0HDp0iLS0NPz9/W0Zm0Nyk2U9hRBCVCGLm8rHjh3LF198AYBOp6NTp07ccccdREREsHnzZlvH53BkdTAhhBBVyeLE/d1339GyZUsAVq9ezalTpzh27Bjjxo3j5ZdftnmAjkZWBxNCCFGVLE7cKSkphIaGArBmzRoef/xxGjVqxLBhwzh06JDNA3Q00lQuhBCiKlmcuENCQjhy5Ag6nY61a9fSvXt3AHJycnB2drZ5gI7GmLjzC/Xo9YqdoxFCCHGrsXhw2tChQ3n88ccJCwtDpVIRExMDwM6dO2nSpInNA3Q0xj5uMCRv4yhzIYQQwhYsTtwzZ86kefPmnD9/nsceewyNRgOAs7MzkydPtnmAjsatWOLO1eokcQshhLApq24H+89//mP2PD09XdbpLuLspELt7ESBTi/93EIIIWzO4j7ut956i1WrVpmeP/744wQGBlKnTh0OHjxo0+AclUZGlgshhKgiFifuhQsXEhERAUBsbCyxsbH8/vvv3H///UycONHmAToidxlZLoQQoopY3FSekJBgSty//vorjz/+OD169CAqKop27drZPEBHJLeECSGEqCoW17j9/f05f/48AGvXrjWNKlcUBZ1OEhXI7GlCCCGqjsU17kceeYSBAwfSsGFDrly5Qq9evQDDetzR0dE2D9ARmWZPkzW5hRBC2JjFifvdd98lKiqK8+fP8/bbb+Pl5QXA5cuXGTlypM0DdESmpvJCSdxCCCFsy+LE7erqWuogtHHjxtkkIEeiOrOVRgk/oTrjDQ27mvYbE7fUuIUQQtiaVfdxnzx5kvnz53P06FEAmjVrxtixY6lfv75Ng6vuVP+uo+nlH9CdqmOWuE193IXSxy2EEMK2LB6ctm7dOpo1a8auXbto0aIFLVq0YOfOnTRr1ozY2NiqiLH68goGQJWdZLbb2MedJzVuIYQQNmZxjXvy5MmMGzeON998s8T+SZMmmRYdqQkUT0PiJivRbL9xmlO5HUwIIYStWVzjPnr0KM8880yJ/cOGDePIkSM2CcpheIUAoMoyr3FrXIr6uCVxCyGEsDGLE3dQUBBxcXEl9sfFxREcHGyLmByGUtRUznVN5ddq3NLHLYQQwrYsbiofPnw4zz33HKdOnaJDhw4AbNu2jbfeeovx48fbPMBqzdhUnp0CukJwNhSnm9S4hRBCVBGLE/e0adPw9vZm7ty5TJkyBYDw8HBmzpzJCy+8YPMAqzWPQPQ44YQespPBJwwAd7WhISNfErcQQggbsyhxFxYWsmLFCgYOHMi4cePIzMwEwNvbu0qCq/acnClw8cGtMN0wQK0ocZvu45bELYQQwsYs6uN2cXFhxIgR5OXlAYaEXWOTdpE8Vz/Dg2Ijy2WRESGEEFXF4sFpbdu2Zf/+/VURi0PKc/U1PCglcUuNWwghhK1Z3Mc9cuRIJkyYwIULF2jTpg2enp5mr7do0cJmwTmCfJeixJ15LXHL6mBCCCGqisU17gEDBnD69GleeOEF7rnnHlq1akXr1q1NPy21YMECoqKicHNzo127duzatavc4+fPn0/jxo1xd3cnIiKCcePGmZru7aH0pvKimdOkxi2EEMLGLK5xnz592mYXX7VqFePHj2fhwoW0a9eO+fPn07NnT44fP17qPeErVqxg8uTJLFq0iA4dOvDvv/8yZMgQVCoV8+bNs1lclsgvpancXfq4hRBCVBGLE3dkZKTNLj5v3jyGDx/O0KFDAVi4cCG//fYbixYtYvLkySWO//vvv7nnnnsYOHAgAFFRUTzxxBPs3LnTZjFZKs9F+riFEELcPBVO3Hv37mXixIn8/PPP+Pj4mL129epV+vXrx/z582nZsmWFzldQUMDevXtN94IDODk5ERMTw/bt20t9T4cOHVi2bBm7du2ibdu2nDp1ijVr1jBo0KAyr5Ofn09+fr7peUZGBgBarRatVluhWMui1WrJL2oqVzITKSw6n4tKAQw17spe41ZlLBcpH8tIuVlPys46Um7Ws6TsLCnfCifuuXPn0rVr1xJJG8DX15fu3bszZ84cli1bVqHzpaSkoNPpCAkJMdsfEhLCsWPHSn3PwIEDSUlJoWPHjiiKQmFhISNGjOD//u//yrzO7NmzmTVrVon969evx8PDo0KxlsejqKlcl3GJNb/9BioVqfkALmTnaVmzZk2lr3Erq3ErytmIlJv1pOysI+VmvYqUXU5OToXPV+HEvXPnzlKbr4369OnD559/XuELW2Pz5s288cYbfPTRR7Rr1474+HjGjBnDq6++yrRp00p9z5QpU8ymYs3IyCAiIoIePXqU+iXEElqtlj/W/gqAi76A3jH3gcabK9kFzNq3mUJFxf3398LJSVWp69yKtFotsbGxdO/eHVdXV3uH4zCk3KwnZWcdKTfrWVJ2xtbgiqhw4r548WK5k614eXlx+fLlCl+4Vq1aODs7k5hoviRmYmIioaGhpb5n2rRpDBo0iGeffRaA22+/nezsbJ577jlefvllnJxKDpLXaDRoNJoS+11dXW3yR6hz1qCovVAVZOGalwpeAXi7X0vUOpUTGleLhxLUGLb6PdQ0Um7Wk7KzjpSb9SpSdpaUbYVvBwsKCuL48eNlvn7s2DFq1apV4Qur1WratGnDxo0bTfv0ej0bN26kffv2pb4nJyenRHJ2djYMBFMUpcLXtjnjKmFZCcC1wWkg93ILIYSwrQon7piYGF5//fVSX1MUhddff52YmBiLLj5+/Hg+++wzvvzyS44ePcrzzz9Pdna2aZT5008/bTZ4rU+fPnz88cesXLmS06dPExsby7Rp0+jTp48pgduDUrQut3FkubOTCrWzoWhlZLkQQghbqnAb7tSpU2nTpg3t2rVjwoQJNG7cGDDUtOfOncu///7LkiVLLLp4//79SU5OZvr06SQkJNCqVSvWrl1rGrB27tw5sxr21KlTUalUTJ06lYsXLxIUFESfPn3K/EJx0xiX98y6ti63m6sTBTq93MsthBDCpiqcuBs0aMCGDRsYMmQIAwYMQKUy9OMqikKzZs2IjY0lOjra4gBGjx7N6NGjS31t8+bN5sG6uDBjxgxmzJhh8XWqkqnGnZlg2ufm6kxGXiG5BZK4hRBC2I5Fo6buvPNODh8+TFxcHCdOnEBRFBo1akSrVq2qKDwHYWoqv1bjdlcbmu7zCyVxCyGEsB2rhju3atVKknUxiqmpvNjsaS5Fs6cVyOA0IYQQtmPxIiOiFF6lJG61zFcuhBDC9iRx28D1o8oB3FxkVLkQQgjbk8RtC8am8uwU0BUC1/q4pcYthBDCliRx24JHIKicAQWyk4FrfdySuIUQQthShQanHTx4sMInbNGihdXBOCwnZ/AMMsyclpUIPmHFatwyOE0IIYTtVChxt2rVCpVKVea0osbXVCoVOl0NrWF6BV9L3BgmYAHp4xZCCGFbFUrcp0+fruo4HJ93KCQcLJa4palcCCGE7VUocUdGRlZ1HI7vulvCjIlbatxCCCFsyer1Jo8cOcK5c+coKCgw29+3b99KB+WQTNOeGhK3u6v0cQshhLA9ixP3qVOnePjhhzl06JBZv7dx7vKa28ddtIb4dX3c0lQuhBDCliy+HWzMmDHUq1ePpKQkPDw8+Oeff9i6dSt33nlniUVBahQv8xXC3KWPWwghRBWwuMa9fft2/vjjD2rVqoWTkxNOTk507NiR2bNn88ILL7B///6qiLP6M82eZlghTCN93EIIIaqAxTVunU6Ht7c3ALVq1eLSpUuAYQDb8ePHbRudI/EutkKYokiNWwghRJWwuMbdvHlzDhw4QL169WjXrh1vv/02arWaTz/9lPr161dFjI7BWOPW5kB+ZrFR5TI4TQghhO1YnLinTp1KdnY2AK+88goPPvgg9957L4GBgaxatcrmAToMtSeovaEgE7KScHf1AyBfatxCCCFsyOLE3bNnT9Pj6Ohojh07RmpqKv7+/qaR5TWWVzCkZkJWIm6uAYD0cQshhLAti/u4r169Smpqqtm+gIAA0tLSyMjIsFlgDqnYADWZOU0IIURVsDhxDxgwgJUrV5bY/8033zBgwACbBOWwig1QM/VxF0jiFkIIYTsWJ+6dO3fSpUuXEvs7d+7Mzp07bRKUwzLVuBOvrQ5WKIPThBBC2I7FiTs/P5/CwsIS+7VaLbm5uTYJymEZJ2HJTMTNxVC0BYV6dPrSV1UTQgghLGVx4m7bti2ffvppif0LFy6kTZs2NgnKYRWb9tRY4wbIL5TmciGEELZh8ajy1157jZiYGA4cOEC3bt0A2LhxI7t372b9+vU2D9CheBXr43a5lrhzC3R4qK1ez0UIIYQwsbjGfc8997B9+3YiIiL45ptvWL16NdHR0Rw8eJB77723KmJ0HN7XRpU7OalQFzWXSz+3EEIIW7GqGtiqVSuWL19u61gcn7HGnZ0CukLcXJwoKNTLyHIhhBA2U6HEnZGRgY+Pj+lxeYzH1UgegaByAkUP2cm4q53JyCuUe7mFEELYTIUSt7+/P5cvXyY4OBg/P79SZ0hTFAWVSlVz1+MGcHIGz2DDCmFZiTIJixBCCJurUOL+448/CAgwTOG5adOmKg3I4XkZE3cS7q5uAOTJQiNCCCFspEKJu1OnTgAUFhayZcsWhg0bRp06dao0MIdVbNpTjWsDQOYrF0IIYTsWjSp3cXFhzpw5pU7AIop4F5s9zbVoVLkkbiGEEDZi8e1gXbt2ZcuWLVURy62h2L3cnkX3bl/N1doxICGEELcSi28H69WrF5MnT+bQoUO0adMGT09Ps9f79u1rs+AckjFxZyYQGWgom9Mp2XYMSAghxK3E4sQ9cuRIAObNm1fitRo/qhzMatzRUV4AxCdl2TEgIYQQtxKLE7deLyOky1VscFp0sCRuIYQQtmVxH7e4gWJrckcHGZrKL6bnklMgA/qEEEJUnlWJe8uWLfTp04fo6Giio6Pp27cvf/75p61jc0yeRUt7anMIcC0gwFMNwKlk6ecWQghReRYn7mXLlhETE4OHhwcvvPACL7zwAu7u7nTr1o0VK1ZURYyOReMFakMTOZmJRAcZHp9MluZyIYQQlWdxH/frr7/O22+/zbhx40z7XnjhBebNm8err77KwIEDbRqgQ/IKgdQsyEqkQbA3u86kSj+3EEIIm7C4xn3q1Cn69OlTYn/fvn05ffq0TYJyeF7XJmFpECQD1IQQQtiOxYk7IiKCjRs3lti/YcMGIiIibBKUw/Mq6ufOSpSR5UIIIWzK4qbyCRMm8MILLxAXF0eHDh0A2LZtG0uWLOG9996zeYAOyTvU8DMrkejGhsR95ko2hTo9Ls4ykF8IIYT1LE7czz//PKGhocydO5dvvvkGgKZNm7Jq1SoeeughmwfokEw17iTCfd1xd3UmV6vjbGqOqelcCCGEsIbFiRvg4Ycf5uGHH7Z1LLeOYtOeOjmpaBDsyeGLGZxMypLELYQQolKk3bYqeBmbypMArg1Qk1vChBBCVJLFNW5/f39UKlWJ/SqVCjc3N6KjoxkyZAhDhw61SYAOydRUngBgupdbBqgJIYSoLIsT9/Tp03n99dfp1asXbdu2BWDXrl2sXbuWUaNGcfr0aZ5//nkKCwsZPny4zQN2CMbBadkpoCs0jSw/KYlbCCFEJVmcuP/66y9ee+01RowYYbb/k08+Yf369Xz//fe0aNGC999/v+Ymbo9AUDmBooeclGuJOzkbRVFKbbEQQgghKsLiPu5169YRExNTYn+3bt1Yt24dAL179+bUqVOVj85ROTmDZ5DhcdG63M5OKrLyC0nIyLNvbEIIIRyaxYk7ICCA1atXl9i/evVqAgICAMjOzsbb27vy0TmyYutyq12ciAz0AKSfWwghROVYnLinTZvGiy++SN++fXnttdd47bXXeOihh3jppZeYMWMGALGxsXTq1KlC51uwYAFRUVG4ubnRrl07du3aVe7x6enpjBo1irCwMDQaDY0aNWLNmjWWfoyqV2zaU7g2slz6uYUQQlSGxX3cw4cPp1mzZnz44Yf88MMPADRu3JgtW7aYZlKbMGFChc61atUqxo8fz8KFC2nXrh3z58+nZ8+eHD9+nODg4BLHFxQU0L17d4KDg/nuu++oXbs2Z8+exc/Pz9KPUfVMibtoZHmwF7FHEuWWMCGEEJVi1QQs99xzD/fcc0+lLz5v3jyGDx9uunVs4cKF/PbbbyxatIjJkyeXOH7RokWkpqby999/4+rqCkBUVFSl46gS3teaykFuCRNCCGEbViXukydPsnjxYk6dOsX8+fMJDg7m999/p27dutx2220VOkdBQQF79+5lypQppn1OTk7ExMSwffv2Ut/zyy+/0L59e0aNGsXPP/9MUFAQAwcOZNKkSTg7O5f6nvz8fPLz803PMzIyANBqtWi12op+5FIZ31/aeZzca+EM6DMuo9NqiQpwAwyJu7LXvRWUV3aibFJu1pOys46Um/UsKTtLytfixL1lyxZ69erFPffcw9atW3nttdcIDg7mwIEDfPHFF3z33XcVOk9KSgo6nY6QkBCz/SEhIRw7dqzU95w6dYo//viDJ598kjVr1hAfH8/IkSPRarWm/vXrzZ49m1mzZpXYv379ejw8PCoU643ExsaW2BeWdpG2QNr5Y/y1Zg15OgAXUrIK+O6XNXhY9ZXp1lNa2Ykbk3KznpSddaTcrFeRssvJyanw+SxOH5MnT+a1115j/PjxZiPHu3btyocffmjp6Syi1+sJDg7m008/xdnZmTZt2nDx4kXmzJlTZuKeMmUK48ePNz3PyMggIiKCHj164OPjU6l4tFotsbGxdO/e3dR0b6Q6HwBnPiRAXUjv3r0BePfYFhIy8qnfqgN31PWr1LUdXXllJ8om5WY9KTvrSLlZz5KyM7YGV4TFifvQoUOsWLGixP7g4GBSUlIqfJ5atWrh7OxMYmKi2f7ExERCQ0NLfU9YWBiurq5mzeJNmzYlISGBgoIC1Gp1ifdoNBo0Gk2J/a6urjb7Iyz1XL7hAKiyEnF1cQGViuhgbxIy8jmTmku7BkE2ubajs+XvoSaRcrOelJ11pNysV5Gys6RsLb4dzM/Pj8uXL5fYv3//fmrXrl3h86jVatq0acPGjRtN+/R6PRs3bqR9+/alvueee+4hPj4evV5v2vfvv/8SFhZWatK2K+Oocm0OFBgGpBWfQU0IIYSwhsWJe8CAAUyaNImEhARUKhV6vZ5t27YxceJEnn76aYvONX78eD777DO+/PJLjh49yvPPP092drZplPnTTz9tNnjt+eefJzU1lTFjxvDvv//y22+/8cYbbzBq1ChLP0bV03iBumgJT+MqYcEyslwIIUTlWNxUbkyUERER6HQ6mjVrhk6nY+DAgUydOtWic/Xv35/k5GSmT59OQkICrVq1Yu3ataYBa+fOncPJ6dp3i4iICNatW8e4ceNo0aIFtWvXZsyYMUyaNMnSj3FzeAVDahZkJkBgA7klTAghRKVZnLjVajWfffYZ06dP59ChQ2RlZdG6dWsaNmxoVQCjR49m9OjRpb62efPmEvvat2/Pjh07rLrWTecVCqmnINPQtWBsKj+flkOeVoeba+m3sAkhhBBlsbip/JVXXiEnJ4eIiAh69+7N448/TsOGDcnNzeWVV16pihgdV1Ajw88LewCo5aXG190VRYFT0s8thBDCChYn7lmzZpGVVbKpNycnp9T7pWu0Bl0NP0/+AYBKpaJBkCeATH0qhBDCKhYn7rLWkz5w4IBpdTBRpN59hnW5U47D1QvAteZy6ecWQghhjQr3cfv7+6NSqVCpVDRq1Mgseet0OrKyshgxYkSVBOmw3P2h9p1wYRec3AR3DCp2S5gkbiGEEJarcOKeP38+iqIwbNgwZs2aha+vr+k1tVpNVFRUmfdf12gNuhYl7o3miVtq3EIIIaxQ4cQ9ePBgAOrVq0eHDh1kBp2KatAVtrwJpzaDXkd0kGGa2FMp2ej0Cs5OJbsdhBBCiLJYfDtYp06dTI/z8vIoKCgwe72y83/fcmq3AY0P5KbB5Thqh92BxsWJ/EI951NziKrlae8IhRBCOBCLB6fl5OQwevRogoOD8fT0xN/f32wT13F2MQxSAzj5B85OKurLRCxCCCGsZHHifvHFF/njjz/4+OOP0Wg0fP7558yaNYvw8HCWLl1aFTE6PtNtYZsMT+WWMCGEEFayuKl89erVLF26lM6dOzN06FDuvfdeoqOjiYyMZPny5Tz55JNVEadji+5m+Hl+J+RlyC1hQgghrGZxjTs1NZX69esDhv7s1NRUADp27MjWrVttG92twj8KAuqDvhDO/CW3hAkhhLCaxYm7fv36nD59GoAmTZrwzTffAIaauJ+fn02Du6UUm0WteI1bURQ7BiWEEMLRWJy4hw4dyoEDBwCYPHkyCxYswM3NjXHjxvHiiy/aPMBbRrHEXa+WJ04qyMwrJDkz375xCSGEcCgW93GPGzfO9DgmJoZjx46xd+9eoqOjadGihU2Du6VE3QsqZ0g9iSbzPHUDPDhzJYf4pCyCfdzsHZ0QQggHYXGN+3qRkZE88sgjkrRvxM0HItoaHp/8gwbGW8Kkn1sIIYQFKpy4//jjD5o1a0ZGRkaJ165evcptt93Gn3/+adPgbjll9HMLIYQQFVXhxD1//nyGDx9e6sxovr6+/Pe//2XevHk2De6W06DotrBTW4muZWgel8QthBDCEhVO3AcOHOD+++8v8/UePXqwd+9emwR1ywpvBW5+kH+VFk4nAbklTAghhGUqnLgTExPLXVjExcWF5ORkmwR1y3JyhvqdAYhM3wlAYkY+GXlaOwYlhBDCkVQ4cdeuXZvDhw+X+frBgwcJCwuzSVC3tKJ+brezWwjx0QBw6MJVe0YkhBDCgVQ4cffu3Ztp06aRl5dX4rXc3FxmzJjBgw8+aNPgbkkNuhh+XthDr2h3AL7fd8GOAQkhhHAkFU7cU6dOJTU1lUaNGvH222/z888/8/PPP/PWW2/RuHFjUlNTefnll6sy1luDX10IbAiKjkEh5wBYc+gymdJcLoQQogIqPAFLSEgIf//9N88//zxTpkwxTdWpUqno2bMnCxYsICQkpMoCvaVEd4MrJ6ifsZMGQf04mZzNrwcv80TbuvaOTAghRDVn0QQskZGRrFmzhpSUFHbu3MmOHTtISUlhzZo11KtXr6pivPUU9XOrTm7ksTZ1APh2z3l7RiSEEMJBWDzlKYC/vz933XWXrWOpOSLvASdXSD/HY/W0zHFSse9cOvFJmUQHe9s7OiGEENVYpac8FVbQeEHduwEITPyLLo2DAPh2jwxSE0IIUT5J3PZiHF1+8g/+0yYCgO/3XUSr09sxKCGEENWdJG57Mc5bfnorXRv6E+ipJiUrny3HZRIbIYQQZZPEbS+hLcGjFhRkoT7xKw+3rg3At3tlkJoQQoiySeK2FycnaPuc4fGGWTzeOhiAjUeTSMnKt2NgQgghqjNJ3PbUYTR4h0H6WRqdWUHLOr4U6hV+2n/R3pEJIYSopiRx25PaE7pONTze+g5PtTCs0f3NnvOmCW6EEEKI4iRx21vLJyDkdsi/St+ry9C4OPFvYhYHZeERIYQQpZDEbW9OztDzNQA0+xczqJFhzvJvZCY1IYQQpZDEXR3U7wwNe4K+kOe1SwH45cAl8rQ6+8YlhBCi2pHEXV30eBVUzgSej+UBn5Nk5hWy7p8Ee0clhBCimpHEXV0ENYY2QwCY7roCFXppLhdCCFGCJO7qpPMUUHsTkn2Uh5z+5u+TVzifmmPvqIQQQlQjkrirE68guHc8AFPdv0WtFPD9Pll4RAghxDWSuKubu58H3whq6ZJ5xnkN3+65QEGhLDwihBDCQBJ3dePqDt2mAzDK9Rfy0xP44I8Tdg5KCCFEdSGJuzpq/h8Ib40neYxz+Y4Fm+LZdy7N3lEJIYSoBiRxV0dOTtDzDQCecPmDvqq/GL8qjpyCQjsHJoQQwt4kcVdXkR2g3fM4ofCOeiGN07bwxpqj9o5KCCGEnUnirs56vgGtnsQFPe+7fsDZXb+y+XiSvaMSQghhR5K4qzMnJ+jzPjR7CI2qkE9d57H8m1WkZRfYOzIhhBB2Iom7unN2gUc+R9cgBndVAXMLX+eTVd/Lsp9CCFFDSeJ2BC5qnAcsIyv0bnxUuTx3diKb/txi76iEEELYgSRuR+HqjtfQ70jwuo0AVRa3/zGYpLNH7B2VEEKIm6xaJO4FCxYQFRWFm5sb7dq1Y9euXRV638qVK1GpVPTr169qA6wuNN7UGrGaM85RBJGOamk/9GmyEIkQQtQkdk/cq1atYvz48cyYMYN9+/bRsmVLevbsSVJS+aOnz5w5w8SJE7n33ntvUqTVg4tXIKqnf+KMEkqQLpHsT3tCktwmJoQQNYXdE/e8efMYPnw4Q4cOpVmzZixcuBAPDw8WLVpU5nt0Oh1PPvkks2bNon79+jcx2uohMrIeezst4aw+GO/ci2g/6QrH19o7LCGEEDeBiz0vXlBQwN69e5kyZYppn5OTEzExMWzfvr3M973yyisEBwfzzDPP8Oeff5Z7jfz8fPLz803PMzIyANBqtWi12krFb3x/Zc9jjT4d2zA76TN6HpnM3RxF+XoA+q7T0N/9P1Cpbno8lrJn2TkyKTfrSdlZR8rNepaUnSXla9fEnZKSgk6nIyQkxGx/SEgIx44dK/U9f/31F1988QVxcXEVusbs2bOZNWtWif3r16/Hw8PD4phLExsba5PzWKqlG3wROImTyV/xpMtGnP94hYv7N3Kg7lD0Tmq7xGQpe5Wdo5Nys56UnXWk3KxXkbLLycmp8PnsmrgtlZmZyaBBg/jss8+oVatWhd4zZcoUxo8fb3qekZFBREQEPXr0wMfHp1LxaLVaYmNj6d69O66urpU6l7UeAD7Z0oxpmz5ihstS6qZto457Hrr/fAneoXaJqSKqQ9k5Iik360nZWUfKzXqWlJ2xNbgi7Jq4a9WqhbOzM4mJiWb7ExMTCQ0tmXROnjzJmTNn6NOnj2mfXm9Yq9rFxYXjx4/ToEEDs/doNBo0Gk2Jc7m6utrsj9CW57LG6JjGLPMaz+Bfwlng+h5+l/aiWtwD1RMrILy13eKqCHuXnaOScrOelJ11pNysV5Gys6Rs7To4Ta1W06ZNGzZu3Gjap9fr2bhxI+3bty9xfJMmTTh06BBxcXGmrW/fvnTp0oW4uDgiIiJuZvjVylN3R9K//yAe1b7KSX0YqsxLKIt6we4vQCerigkhxK3C7k3l48ePZ/Dgwdx55520bduW+fPnk52dzdChQwF4+umnqV27NrNnz8bNzY3mzZubvd/Pzw+gxP6aqG/LcLw1fei/zJd3lPfpzAH4bTzs+Ai6vAzN+hnmPxdCCOGw7J64+/fvT3JyMtOnTychIYFWrVqxdu1a04C1c+fO4STJpsK6NAnmo2e6MnyJJ49of2OM68/4XYmH74ZC6LsQMwMadHOIkedCCCFKsnviBhg9ejSjR48u9bXNmzeX+94lS5bYPiAH17ZeAMuf68DwpWq+udqZZ13WMFL9O5qEg7DsUYjsaEjgEW3tHaoQQggLSVX2FtW8ti/rxt3Hg3c24r3CR7k7Zx6rXPoabhM7+xd80R2+fgLObgdZaUwIIRyGJO5bmI+bK2/9pwVfDmuLm28wk7IGcE/OXPYF9kFROcHxNbD4fvjwLtj2PmQl2ztkIYQQNyCJuwbo1CiIdePuY8BdEVwmkEcuPsEgtw9Iin4MXD3gygmInQbzmsCqQXBiA+h19g5bCCFEKSRx1xA+bq68+aih9h3u68Zfaf60PfwwL0V+S1Lnt6B2G9AXwtFfYPmjML8FbJoNaWftHboQQohiJHHXMJ0aBbG2qPYN8M3hq7RbF8Foz3c489h6aDcC3Pwg4wJseRPeawFf9oEDq6Cg4lPyCSGEqBqSuGsgY+371/91pOdtISgK/HrwMp2/SmFk6uMce3I3PPoF1OtkeMPprfDjczC3MfzyApzfLQPahBDCTqrF7WDCPprX9uWTQXdy5FIGH246wZpDCaat521R/C/mK5p7XoW4ryFuGaSfg31fGrZajaDlE9C0L9SKtvdHEUKIGkNq3IJm4T589GQb1o29jwdbhKFSwbp/Ennwg794fOVFfvB5kryR+2DwamgxAFzcIeVf2DgLPmxjGJUeOwPO74KiueOFEEJUDalxC5PGod58OPAOxiZl8sEf8fx68DK7zqSy60wqM39x4ZE76jCgwxya9J4D//wA//wIZ/4yJPGUf2HbfPAMhsb3Q+MHoH4ncHW398cSQohbiiRuUUJ0sDfvDWjN//Vuyrd7zvP1rvNcTM9lyd9nWPL3GVrX9eOJu7rx4ICn8NBlQfwGOPab4Wd2EuxbathUzhBQD4KaQFDjaz8DG4JKVhkSQghrSOIWZQrxcWN014aM7BzNX/EpfL3rHLFHEtl/Lp3959KZtfofujQJ5v7mHejStx+ezno486dhYpfjv0PGRbgSb9iO/VrszCpc/CK5k2BUcanQqAf41rbb5xRCCEciiVvckJOTivsaBXFfoyCSM/P5bu8FVu0+x5krOfx68DK/HryMxsWJ+xoF0at5Y7p1uQ/f3u9AViIkH4Pk49d+Jh2F3FRU6WeozRn4bRf8hqE23qCrYQGUyA6g9rD3xxZCiGpJErewSJC3huc7N2BEp/ocuHCV3w9fZu3hBM5eySH2SCKxRxJxcVLRIboWPZqF0KlRWyLqdzY/SXYKhZcOEr/xSxo5X8Dp0r6ixH7MsASpswYi20PkPRB+B9S+AzwC7PJ5hRCiupHELayiUqloFeFHqwg/Jt/fhGMJmfx+OIF1hxM4npjJ1n+T2fqvYe7zqEAPOjasxb0Ng2jfIBAfz1ooUfdyPCyTBr1746TNhNNbIH4jnPzD0MR+arNhM/KLNCTw8DsgvDWEtwKNtz0+uhBC2JUkblFpKpWKpmE+NA3zYXz3RpxKzuL3wwlsOZ7MvnNpnLmSw5kr51i24xzOTipaR/jRoX4AZEC+VoerRwDc9rBhUxTDCPWTm+DiHri4D1JPQvpZw/bPj8argk84+NeDgKiin/XAv+ix1NCFELcoSdzC5uoHeTGqSzSjukSTmadlx6lU/jqRzJ8nUjiVks2es2nsOZsGuPDxsT9oWcePO6MCuCvKnzaR/vgFNTaMPjfKTYfLcYYkfmkfXNxvmJI146JhO/tXySDcfIuSef2ihF7ssVcoOMkUBkIIxySJW1QpbzdXujcLoXuzEAAupOXw14kUthxP4q9/E8jUYkrkC7cY3tMoxIs2kQG0rutHizq+RAf54FK/MxTvK8++AqmnIO00pJ6GtDPXHmclQN5VQ7K/HFcyKBc3CGgAoc0htAWEtYDQ28Hdv2oLQwghbEASt7ip6vh7MKBtXR5tHcZvv12k+d2dibuYyZ4zqew+k8rJ5Gz+Tczi38Qsvt51DgA3VyeahfnQoo4fzWv70qKOLw2CAnCOCISIu0pepCDHPJEXT/Dp56AwD5L+MWwHV117n19dQyIPbQHBTQ23qHmHg1cwODnfnAISQogbkMQt7EalgshAD6JDfflPmzoAXMnKZ29RDfzghXQOX8wgK7+QfefS2Xcu3fRed1dnmoZ50yzch9vCfWkW5kPjUG/cXJ0Nt5KFNDNs19Np4ep5SP4XEg7C5QOGn+nnrm1m95xjmEjGOwx8wgz96j61wbfOtf50/0hQe1ZdQQkhRDGSuEW1EuilocdtofS4LRQAvV7h9JVsDl24yqGLVzl04SqHL10lp0BXIpk7O6loEORJszAfmoX70DDEm+ggL2r7uePkpCo6yLWor7u+YWpWo9w0SDgElw8aEvmVk5BxydDsruiK+tQvlB24V0ixRB5VtEUafkqfuhDChiRxi2rNyUlFgyAvGgR50a+1YXY1nV7hdEoW/1zK4MilDI5czuCfSxmkZheYmtl/irtkOoe7qzPRwV5mW8NgL+oGeODiXJRQ3f2h3n2GrThdoWEa14zLhoFwmZfh6gVDrT31tKEJPu+qYbKZrEQ4v7Pkh3DWgF+EIYn7RRoSulcoeAaCRy3wDALPWuCiqaJSFELcSiRxC4fj7KQiOtib6GBvHmplSOaKopCUmc+RSxn8c+kqRy9nEp+UxamULHK1OkNt/eJVs/O4OquICvSkQZAhmTcI9jR9SfDUFP3TcHYpah4PB9qUHlBuWskBculnIe2sIcnr8q9N/VoetbchmXsGG5ri/SIM/e5+kYafvhEyx7sQQhK3uDWoVCpCfNwI8XGjS5Ng0/5CnZ5zqTmcSMoivmg7kZTJyaRscrU6TiRlcSIpC/4xP1+ojxuRgR5EBXoSWcvws26AB1G1PPHSXPfPxt0favsbJoi5nq7Q0MSedvZaMk8/Z6jFZ1+B7GTISQF9IRRkGra0M3BhV6mf08WjFp0UL5zTF4GHP7j5gbtf0U9/w2OPwKI++XBZnU2IW5AkbnFLc3F2on6QF/WDvOh527X9er3C5Yw84pOyOJmURXyy4efJ5CxSsgpIyMgjISOPnadTS5yzlpeaugEeRAZ6EhHgQWSAB3UDDT+DvDWoVKprBzu7XOvzLouiQF76tUSenQTp5w3N8cUHzeVnoMpJwY8UOH2mYgXg7m8YTGdM5MUH1/nVNTx2davYuYQQ1YIkblEjOTmpqO3nTm0/dzo1CjJ7LT2ngNMp2Zy9ksOZK4afZ4t+XskuICXLsBUfGGfk5upE3QAP6vh7EO7nRnjRNWr7uRPu506wt+Zav7qRSlVUW/aHWtFlB52bjjblFHs3/cKdzRviUpBhmJwmL73YzzTITjH0xWtzDM9z0yDxcNnn9Qw2NMv71jE0x3sGgZsPaIybd7Hn3obJbYp/ORFC3FSSuIW4jp+HmtZ11bSuW3JClow8Leeu5HD2Sg7nUnM4l5rNuVTD80vpueRp9aYBcqVxdlIR6uNGbT936vi7UyfAw/DT350Ifw9Cfd1wvT6xG7n7QejtJPqeR7m9N7iW099trMVnXDaMjs+8ZPiZcRGuXrw2wE6bU9RsnwQX91asgNTeEFgfAqMNW0CDosf1ZRIbIW4CSdxCWMDHzZXmtX1pXtu3xGtanZ6LabmcTTUk8UvpuVxMz+ViWi6XruZyOT2PQr1i2Jeey64zJc/vpIIwX2MN3VBjD/dzp7a/YV+QZwX/yRavxZd2PzsYkntumqEZ3pjIr16AnFTIzzCMls/PLHqcYfipKzD0w18+YNiu5x5guDXOI9AwX7xHoGHzrGX46R5wrS/e3d9Qe5fJbYSwiCRuIWzE1dmJqFqeRNUqfTIWnV4hJSufC2mGxH0hLYcLablFm+FxQaHelNjL4u7szMen/ia8WHN8uK8hwYf5upVfay9OpSpKrgGG1dYqQptrGGB3Jd6w+MuVeLhyyvAzKwFyUw1bhakMzfDGLxnuAeAdWrSFXfvpFWLYXNQWnFuIW5MkbiFuEmenayPf20SWbFLW6xVSsvM5n5prqrGbau3peVxKz+VqrpZcnYpjiVkcK6M5XqWCQE8NIT4aQn3cCPZxI9THjRAfjen64X5u+Lq7mg+kqwhXdwhuYtiul180Ij47BXKuGGruOVeu21Kv9cUXZAGKoWafd9Xw3hvxDDL0w/tFGH4Wf+wXYRhdL/3v4hYniVuIasLJSUWwtxvB3qUndoDUzFy++XU9DVu2JTFTy+WrhsR+KT2Xy1fzuJyeR4FOT0pWPilZ+fxzKaPM67m5OhHme62WHubrRpive1Fy1xDs7UYtL3XJwXRl0XgbFmupqMICQ8LOTTMfWJeVAJkJhgF2mcUe6wuLRt0nG1aJK42Tq6H53TiYzs3H8Fzji5Pak6aXLuG09TCo3cFZbZj0xtnVMEmOi9owN71xghyZ7U5UU5K4hXAg3m4uhHnAfQ1r4VrK4DS9XiE1p4DEjDwSM/JIuJpvepyYkUdChuF5anYBeVo9p1OyOZ2SXeb1jLX3YG+NKZkHeWtMWy0v4081XhoXy2rwLmrwCjJsN6LXG2rsGRev9cUbb5m7et7wOCcF9FrDz5yUEqdwBhoBJK6+8fWcNYbb5fwji2a7izI89wy61mfv7i/988IuJHELcQtxclJRy8uQUG8LLzmAzihPqyMxI89QS79qqK0nXM3jUnoeyZl5JGbkk5yVb+qXT8nK58jl8q/t5upEkLchuRua6DVFTfTmjz2vn8CmYh/sWpIvqz++IMfQv55nHFhXNKguLx3yM9DlpHMm/hhREeE4K4WGGr+u2KbNLRqkZ5zt7oRhK5Pq2oQ3HkXT1/qEFd0zX7vocdG98xovyz+zEGWQxC1EDeTm6kxkoCeRgWWvaqbTK6RmF5CUmUdSRj5JRQk9JSuf5EzDZnycXaAjT6vnfGou51PLHlgH4Kl2NiV4Y8092EdDkJeGYB+3otq9G/4eFvbBqz0MWxnfV/RaLYfz1lC3V2+cy7uVTldoqNmnnSk2213RjHfGvvrcNEC5dp/8jaaz1fgYBtcZR9cXH3FffOS9V4jhvnoZhCfKIYlbCFEqZyeVKbHeFl7+sTkFhaRkFiX5zHwSruaRWJTwjY8Tr+aRXaAzbFdyOHMlp9xzujqrTMndmMyDzRK9oSYf6GlBP3yFPrhL0cpukWUfoys0JOziA++Mi9FkFi1IY3ycn3FtK7cGX4y7/7WR9F4hhjXhvUMNfe/eIUU/Qw3jCmQwXo0jiVsIUWkeahfqBrpQN9Cj3OOy8gtJzswnKSOP5Kz8opq8odaelJlX9DOf1OwCtDrlhrfGgbEfXk2tohp7UFG/e3Cxvvhgbw1+bs4oio0+sLNLxfvn8zMNSTwr0dCUX3yEvSnppxQNzEs09NMba/LJx8o/t6uHIbF7hxqSvXFA3vUz3rn5Gm61M9b0JeE7NEncQoibxkvjgpfGhXpl3OtuVFCoL0rsRf3txn53Y4IvSvopWfnoFUzT0B5LyCz3vGonZ9799y9CfN1MNXjjbXLG5vtgHw3elg60K4/GG4K8IajRjY81TopjXCY2K8kwqt743DjKPivRUIPX5hhWpEs7bVlMTq7XNdcHFC0vW7R5BV97rPHHdt94hC1I4hZCVDtqFyfTHO/lMfbDF6+xG5N6crG++OTMfLLyCynQqzibmsPZ1PKb6Y0D7YK8NGbN9YFeGgI81dTyUhPgqSbQS4OPmw2TfPFJcYKbln9sQfa1JJ6ZYD4gLz/DUNM3PjbOZ59zxZDs9dprXwZuwBXoiwoOqIol8OsSucbXEG9IMwhuBiHNDc/d/SwvA3FDkriFEA6reD98M3zKPfZqdi7frl5PszbtuZJTSGKGIdEnFtXqE4sSf2ZeYYUH2oGhLz7AU02gZ8nb5IzJ3/jTx92GSV7tCYENDJsljKPvSzTXJxtq+NkpRfPXJ0NWMmizUaGUX+vOvwrndxi24nzqGJK5X91r0916BFybJc/4XKa+tYgkbiFEjeChdiHIHe6K8i/1HnijPK2uRJ+7oV8+nyvZBVzJzudKVgGp2QVk5Rei1SmGxJ+RDze4ZU7t7GS67938PvhrffHG5no31ypKZKbR93UqdLg2O52Nv/9Mt27dcHVxLdY3XuwLSHYSJP5j2JKOQOIRwzr0xq0iND5F68r7Gn66+V6b094rtNjtdUW33LloLPjQtxZJ3EIIUYybqzMRAR5EBJQ/0A4MSf5KdgGpWQWGW+NKuVXOuC8zr5AC3Y3nojfydnMxJXJjcg/0UhPoea2ZPtBTTYCX2rZ98tdTe5Lv6mcYBFfWFx6vIAi5zXxfbjokHYWkfyCzaGBebpqhlp+bVvQ83dCUD9dG3l+tYFwegYZEbhxdr/YEtZfhp8ar2OOipWjdin0h0Pg49Mx4kriFEMJKbq7OFeqLB0OSNybzlKwC8+Ru7JsvuoUuv1BPZl4hmXmFnEwue2Y7I7WzE7W81NQq3jRfSo3eqhnurOXuB5HtDVt5dNqiqW/TS64tn5cOOWmGaXAzLhctT3vZMEGOsYk/8ZAVwRUtbuPmV/QFIKzY5DlFXwaMtXuNT7UbgS+JWwghbgI3V2fq+HtQx7/8mryiKGTkFZo312fkk5KdT2pWQVFzfQGpRc+zC3QU6PRcuprHpat5N4xD4+J0XUJXl5LgDT891Teh39nZ1TD5jGetih1vHHmfcclwn3xWIuRnGRatKcgyDNoryDYMzjP+zLtq+BKQdxUK8zBb3Cb9bPnXc3Ipqr17FdXkPc2f+0ZAt2mVLQWLSOIWQohqRKVS4evuiq+7K9HBN54q1ViTv1JUi0/Oyicl87pR9UX7sgt05Fdg6VgjN1dDknfROvNL2n6CfdwI9DTU3AOLptY1PvZzd8XJ6SbUTIuPvA9tbvn7tXnmiTw7uehLQNFiNsYvBJmXDa/rC4uOTS/9fEFNJXELIYSouIrW5AFyC3RmffEpWfmkZBaQnJVHSua1fnpjks/T6rmQlguoOHMsudxzOzsZR9eri/XHG34abp8reuypIcBLjafa+eY02V/P1c2weYfc+NiCbEPTfUE2FBhr8MVq9/lZhib3m0wStxBC1BDu6ooPvDNOY5uQns3aLduJatKc9NxitfusfK5kGfrrr+Zq0ekVUw0fyp8IB6412RsG2qlNi+PU8rqW+I37/D1cbTutbUWpPQ1bNSOJWwghRAnGaWzDfFy5HKjQ+66IMm+jKyjUk5ZTYErqxlvmUopG26dmF3Aly3A7XUpWPnlavUVN9gC+7q6mEfXGZG94fC3ZGxO/v4f65jTb24kkbiGEEJWidnEipGjZ1orIKSgsSvBFCb2oBm9M/CnFHqfmFKAocDVXy9VcLafKWT/eyEmFKaEHeWtME+QYm+2NjwPt3WxvJUncQgghbioPtQseAS4VarIv1OlJz9WSml1g2oz3zqdmF02KUyzZp+Voi+avNzy/0fz1YLidzs/DlQBPdbGfagI81PgXm+I2oKj/3t9DjdrFfveBS+IWQghRbbk4O5mawStCq9OTlm2swReQUrTaXEqxGe+MffMpWYZ75gt0epKKZsmrKB83FwK9NDQM9uLTp++09uNZRRK3EEKIW4arsxPBPm4EV6DZXlEUcgp0pOUUkJ6jJS3HkNiNj9OyC0jN0XKlqJ8+paiWr1cgI6+QjLzCqpuathzVInEvWLCAOXPmkJCQQMuWLfnggw9o27Ztqcd+9tlnLF26lMOHDwPQpk0b3njjjTKPF0IIIUqjUqnw1LjgqXGhjn/F3qPXK1zN1ZoG4NmD3SdrXbVqFePHj2fGjBns27ePli1b0rNnT5KSkko9fvPmzTzxxBNs2rSJ7du3ExERQY8ePbh48eJNjlwIIURN4+Skwt9TTXSwN+3qB9KufuBNj8HuNe558+YxfPhwhg4dCsDChQv57bffWLRoEZMnTy5x/PLly82ef/7553z//fds3LiRp59+usTx+fn55Odf67fIyDBMaK/VatFqtZWK3fj+yp6nJpKys46Um/Wk7Kwj5WY9S8rOkvJVKUp5i6xWrYKCAjw8PPjuu+/o16+faf/gwYNJT0/n559/vuE5MjMzCQ4O5ttvv+XBBx8s8frMmTOZNWtWif0rVqzAw+PGIxqFEEKIqpaTk8PAgQO5evUqPj7lz8Zm1xp3SkoKOp2OkBDzqedCQkI4duxYhc4xadIkwsPDiYmJKfX1KVOmMH78eNPzjIwMU/P6jQrnRrRaLbGxsXTv3r3c9X1FSVJ21pFys56UnXWk3KxnSdkZW4Mrwu5N5ZXx5ptvsnLlSjZv3oybW+kjCDUaDRpNydsIXF1dbfZHaMtz1TRSdtaRcrOelJ11pNysV5Gys6Rs7Zq4a9WqhbOzM4mJiWb7ExMTCQ0NLfe977zzDm+++SYbNmygRYsWVRmmEEIIUW3YdVS5Wq2mTZs2bNy40bRPr9ezceNG2rcve/H1t99+m1dffZW1a9dy550398Z3IYQQwp7s3lQ+fvx4Bg8ezJ133knbtm2ZP38+2dnZplHmTz/9NLVr12b27NkAvPXWW0yfPp0VK1YQFRVFQkICAF5eXnh53XjtWiGEEMKR2T1x9+/fn+TkZKZPn05CQgKtWrVi7dq1pgFr586dw8npWsPAxx9/TEFBAf/5z3/MzjNjxgxmzpx5M0MXQgghbjq7J26A0aNHM3r06FJf27x5s9nzM2fOVH1AQgghRDVl95nThBBCCFFxkriFEEIIByKJWwghhHAgkriFEEIIByKJWwghhHAg1WJU+c1kXFPFknlhy6LVasnJySEjI0OmArSQlJ11pNysJ2VnHSk361lSdsacVJF1v2pc4s7MzAQgIiLCzpEIIYQQ5jIzM/H19S33GLsu62kPer2eS5cu4e3tjUqlqtS5jCuNnT9/vtIrjdU0UnbWkXKznpSddaTcrGdJ2SmKQmZmJuHh4WaTjpWmxtW4nZycqFOnjk3P6ePjI3/QVpKys46Um/Wk7Kwj5Wa9ipbdjWraRjI4TQghhHAgkriFEEIIByKJuxI0Gg0zZsxAo9HYOxSHI2VnHSk360nZWUfKzXpVVXY1bnCaEEII4cikxi2EEEI4EEncQgghhAORxC2EEEI4EEncQgghhAORxF0JCxYsICoqCjc3N9q1a8euXbvsHVK1s3XrVvr06UN4eDgqlYqffvrJ7HVFUZg+fTphYWG4u7sTExPDiRMn7BNsNTJ79mzuuusuvL29CQ4Opl+/fhw/ftzsmLy8PEaNGkVgYCBeXl48+uijJCYm2ini6uHjjz+mRYsWpgkv2rdvz++//256XcqsYt58801UKhVjx4417ZOyK93MmTNRqVRmW5MmTUyvV0W5SeK20qpVqxg/fjwzZsxg3759tGzZkp49e5KUlGTv0KqV7OxsWrZsyYIFC0p9/e233+b9999n4cKF7Ny5E09PT3r27EleXt5NjrR62bJlC6NGjWLHjh3Exsai1Wrp0aMH2dnZpmPGjRvH6tWr+fbbb9myZQuXLl3ikUcesWPU9lenTh3efPNN9u7dy549e+jatSsPPfQQ//zzDyBlVhG7d+/mk08+oUWLFmb7pezKdtttt3H58mXT9tdff5leq5JyU4RV2rZtq4waNcr0XKfTKeHh4crs2bPtGFX1Big//vij6bler1dCQ0OVOXPmmPalp6crGo1G+frrr+0QYfWVlJSkAMqWLVsURTGUk6urq/Ltt9+ajjl69KgCKNu3b7dXmNWSv7+/8vnnn0uZVUBmZqbSsGFDJTY2VunUqZMyZswYRVHk7608M2bMUFq2bFnqa1VVblLjtkJBQQF79+4lJibGtM/JyYmYmBi2b99ux8gcy+nTp0lISDArR19fX9q1ayfleJ2rV68CEBAQAMDevXvRarVmZdekSRPq1q0rZVdEp9OxcuVKsrOzad++vZRZBYwaNYoHHnjArIxA/t5u5MSJE4SHh1O/fn2efPJJzp07B1RdudW4RUZsISUlBZ1OR0hIiNn+kJAQjh07ZqeoHE9CQgJAqeVofE0YVrQbO3Ys99xzD82bNwcMZadWq/Hz8zM7VsoODh06RPv27cnLy8PLy4sff/yRZs2aERcXJ2VWjpUrV7Jv3z52795d4jX5eytbu3btWLJkCY0bN+by5cvMmjWLe++9l8OHD1dZuUniFqKaGzVqFIcPHzbrNxNla9y4MXFxcVy9epXvvvuOwYMHs2XLFnuHVa2dP3+eMWPGEBsbi5ubm73DcSi9evUyPW7RogXt2rUjMjKSb775Bnd39yq5pjSVW6FWrVo4OzuXGBmYmJhIaGionaJyPMayknIs2+jRo/n111/ZtGmT2XK0oaGhFBQUkJ6ebna8lB2o1Wqio6Np06YNs2fPpmXLlrz33ntSZuXYu3cvSUlJ3HHHHbi4uODi4sKWLVt4//33cXFxISQkRMqugvz8/GjUqBHx8fFV9jcnidsKarWaNm3asHHjRtM+vV7Pxo0bad++vR0jcyz16tUjNDTUrBwzMjLYuXNnjS9HRVEYPXo0P/74I3/88Qf16tUze71Nmza4urqald3x48c5d+5cjS+76+n1evLz86XMytGtWzcOHTpEXFycabvzzjt58sknTY+l7ComKyuLkydPEhYWVnV/c1YPa6vhVq5cqWg0GmXJkiXKkSNHlOeee07x8/NTEhIS7B1atZKZmans379f2b9/vwIo8+bNU/bv36+cPXtWURRFefPNNxU/Pz/l559/Vg4ePKg89NBDSr169ZTc3Fw7R25fzz//vOLr66ts3rxZuXz5smnLyckxHTNixAilbt26yh9//KHs2bNHad++vdK+fXs7Rm1/kydPVrZs2aKcPn1aOXjwoDJ58mRFpVIp69evVxRFyswSxUeVK4qUXVkmTJigbN68WTl9+rSybds2JSYmRqlVq5aSlJSkKErVlJsk7kr44IMPlLp16ypqtVpp27atsmPHDnuHVO1s2rRJAUpsgwcPVhTFcEvYtGnTlJCQEEWj0SjdunVTjh8/bt+gq4HSygxQFi9ebDomNzdXGTlypOLv7694eHgoDz/8sHL58mX7BV0NDBs2TImMjFTUarUSFBSkdOvWzZS0FUXKzBLXJ24pu9L1799fCQsLU9RqtVK7dm2lf//+Snx8vOn1qig3WdZTCCGEcCDSxy2EEEI4EEncQgghhAORxC2EEEI4EEncQgghhAORxC2EEEI4EEncQgghhAORxC2EEEI4EEncQgghhAORxC2EEEI4EEncQtQQWq2WJUuW0LFjR4KCgnB3d6dFixa89dZbFBQU2Ds8IUQFyZSnQtQQcXFxTJgwgZEjR9K6dWvy8vI4dOgQM2fOJCwsjHXr1uHq6mrvMIUQNyA1biFqiObNm7Nx40YeffRR6tevT7Nmzejfvz9bt27l8OHDzJ8/HwCVSlXqNnbsWNO50tLSePrpp/H398fDw4NevXpx4sQJ0+vDhg2jRYsW5OfnA1BQUEDr1q15+umnAThz5gwqlYq4uDjTe6ZNm4ZKpTLFIYQonSRuIWoIFxeXUvcHBQXxyCOPsHz5ctO+xYsXc/nyZdN2/drBQ4YMYc+ePfzyyy9s374dRVHo3bs3Wq0WgPfff5/s7GwmT54MwMsvv0x6ejoffvhhqTFcuHCB+fPn4+7ubouPKsQtrfR/yUKIW9Ztt93G2bNnzfZptVqcnZ1Nz/38/AgNDTU9V6vVpscnTpzgl19+Ydu2bXTo0AGA5cuXExERwU8//cRjjz2Gl5cXy5Yto1OnTnh7ezN//nw2bdqEj49PqTG9/PLL9O/fnw0bNtjyowpxS5LELUQNs2bNGlPN2Ojtt99m2bJlFXr/0aNHcXFxoV27dqZ9gYGBNG7cmKNHj5r2tW/fnokTJ/Lqq68yadIkOnbsWOr59u3bx48//sjx48clcQtRAZK4hahhIiMjS+w7efIkjRo1sul19Ho927Ztw9nZmfj4+DKPmzBhAhMnTiQsLMym1xfiViV93ELUEKmpqWRmZpbYv2fPHjZt2sTAgQMrdJ6mTZtSWFjIzp07TfuuXLnC8ePHadasmWnfnDlzOHbsGFu2bGHt2rUsXry4xLl++eUX/v33XyZOnGjFJxKiZpLELUQNce7cOVq1asUXX3xBfHw8p06d4quvvuKhhx7i3nvvNRs1Xp6GDRvy0EMPMXz4cP766y8OHDjAU089Re3atXnooYcA2L9/P9OnT+fzzz/nnnvuYd68eYwZM4ZTp06Znevtt9/mtddew8PDw9YfV4hbliRuIWqI5s2bM2PGDJYsWcLdd9/Nbbfdxttvv83o0aNZv3692QC0G1m8eDFt2rThwQcfpH379iiKwpo1a3B1dSUvL4+nnnqKIUOG0KdPHwCee+45unTpwqBBg9DpdKbzREdHM3jwYJt/ViFuZTIBixBCCOFApMYthBBCOBBJ3EIIIYQDkcQthBBCOBBJ3EIIIYQDkcQthBBCOBBJ3EIIIYQDkcQthBBCOBBJ3EIIIYQDkcQthBBCOBBJ3EIIIYQDkcQthBBCOJD/B3DcHxWa9rtaAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"scores_2l_300=model_2l_300.evaluate(X_test,y_test)\n",
"print('Lossontestdata:',scores_2l_300[0])\n",
"print('Accuracyontestdata:',scores_2l_300[1])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ZFQiFpwYzg07",
"outputId": "ca8c2544-d953-4f77-c723-6fccc51cdddb"
},
"execution_count": 127,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9437 - loss: 0.2113\n",
"Lossontestdata: 0.2168053537607193\n",
"Accuracyontestdata: 0.9412000179290771\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#Пункт 8\n",
"model_2l_500 = Sequential()\n",
"model_2l_500.add(Dense(units=500,input_dim=num_pixels, activation='sigmoid'))\n",
"model_2l_500.add(Dense(units=num_classes, activation='softmax'))\n",
"# 2. компилируем модель\n",
"model_2l_500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])"
],
"metadata": {
"id": "pGfMTe6Zzo-O"
},
"execution_count": 128,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"Архитектура нейронной сети:\")\n",
"model_2l_500.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 210
},
"id": "ei21tUOBzwMv",
"outputId": "72f7a465-8404-46a9-be26-797d605eba21"
},
"execution_count": 129,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Архитектура нейронной сети:\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1mModel: \"sequential_11\"\u001b[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_11\"</span>\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_24 (\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_25 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m5,010\u001b[0m │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_24 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">500</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">392,500</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_25 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">5,010</span> │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">397,510</span> (1.52 MB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m397,510\u001b[0m (1.52 MB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">397,510</span> (1.52 MB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
"</pre>\n"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Обучаем модель\n",
"history_2l_500 = model_2l_500.fit(\n",
" X_train, y_train,\n",
" validation_split=0.1,\n",
" epochs=50\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HgO3st_uzyjd",
"outputId": "b99b82c6-f7a8-4cb0-f2db-74e8a819b649"
},
"execution_count": 130,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.5580 - loss: 1.7493 - val_accuracy: 0.8328 - val_loss: 0.8208\n",
"Epoch 2/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8438 - loss: 0.7269 - val_accuracy: 0.8607 - val_loss: 0.5631\n",
"Epoch 3/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 6ms/step - accuracy: 0.8707 - loss: 0.5200 - val_accuracy: 0.8755 - val_loss: 0.4721\n",
"Epoch 4/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.8816 - loss: 0.4488 - val_accuracy: 0.8838 - val_loss: 0.4282\n",
"Epoch 5/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8907 - loss: 0.4021 - val_accuracy: 0.8875 - val_loss: 0.4031\n",
"Epoch 6/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 5ms/step - accuracy: 0.8906 - loss: 0.3913 - val_accuracy: 0.8925 - val_loss: 0.3831\n",
"Epoch 7/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.8976 - loss: 0.3632 - val_accuracy: 0.8953 - val_loss: 0.3700\n",
"Epoch 8/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.8991 - loss: 0.3526 - val_accuracy: 0.8970 - val_loss: 0.3595\n",
"Epoch 9/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9014 - loss: 0.3450 - val_accuracy: 0.8980 - val_loss: 0.3531\n",
"Epoch 10/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.9042 - loss: 0.3312 - val_accuracy: 0.8995 - val_loss: 0.3439\n",
"Epoch 11/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9063 - loss: 0.3262 - val_accuracy: 0.9007 - val_loss: 0.3384\n",
"Epoch 12/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9087 - loss: 0.3212 - val_accuracy: 0.9023 - val_loss: 0.3355\n",
"Epoch 13/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 5ms/step - accuracy: 0.9063 - loss: 0.3191 - val_accuracy: 0.9037 - val_loss: 0.3305\n",
"Epoch 14/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.9081 - loss: 0.3162 - val_accuracy: 0.9040 - val_loss: 0.3258\n",
"Epoch 15/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9090 - loss: 0.3131 - val_accuracy: 0.9052 - val_loss: 0.3212\n",
"Epoch 16/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 5ms/step - accuracy: 0.9123 - loss: 0.3005 - val_accuracy: 0.9063 - val_loss: 0.3184\n",
"Epoch 17/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.9126 - loss: 0.3023 - val_accuracy: 0.9040 - val_loss: 0.3163\n",
"Epoch 18/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9136 - loss: 0.2982 - val_accuracy: 0.9078 - val_loss: 0.3149\n",
"Epoch 19/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9148 - loss: 0.2991 - val_accuracy: 0.9090 - val_loss: 0.3113\n",
"Epoch 20/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9143 - loss: 0.2930 - val_accuracy: 0.9087 - val_loss: 0.3090\n",
"Epoch 21/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9169 - loss: 0.2878 - val_accuracy: 0.9098 - val_loss: 0.3057\n",
"Epoch 22/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9171 - loss: 0.2843 - val_accuracy: 0.9100 - val_loss: 0.3047\n",
"Epoch 23/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 7ms/step - accuracy: 0.9186 - loss: 0.2797 - val_accuracy: 0.9122 - val_loss: 0.3032\n",
"Epoch 24/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 5ms/step - accuracy: 0.9185 - loss: 0.2827 - val_accuracy: 0.9130 - val_loss: 0.3002\n",
"Epoch 25/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9189 - loss: 0.2820 - val_accuracy: 0.9132 - val_loss: 0.2987\n",
"Epoch 26/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9197 - loss: 0.2784 - val_accuracy: 0.9140 - val_loss: 0.2965\n",
"Epoch 27/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9196 - loss: 0.2782 - val_accuracy: 0.9150 - val_loss: 0.2951\n",
"Epoch 28/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 5ms/step - accuracy: 0.9200 - loss: 0.2754 - val_accuracy: 0.9143 - val_loss: 0.2941\n",
"Epoch 29/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9196 - loss: 0.2761 - val_accuracy: 0.9162 - val_loss: 0.2913\n",
"Epoch 30/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9229 - loss: 0.2723 - val_accuracy: 0.9147 - val_loss: 0.2893\n",
"Epoch 31/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.9205 - loss: 0.2688 - val_accuracy: 0.9172 - val_loss: 0.2883\n",
"Epoch 32/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.9243 - loss: 0.2632 - val_accuracy: 0.9143 - val_loss: 0.2900\n",
"Epoch 33/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9235 - loss: 0.2613 - val_accuracy: 0.9177 - val_loss: 0.2845\n",
"Epoch 34/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9254 - loss: 0.2616 - val_accuracy: 0.9175 - val_loss: 0.2838\n",
"Epoch 35/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9255 - loss: 0.2613 - val_accuracy: 0.9185 - val_loss: 0.2812\n",
"Epoch 36/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9250 - loss: 0.2632 - val_accuracy: 0.9188 - val_loss: 0.2815\n",
"Epoch 37/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9251 - loss: 0.2612 - val_accuracy: 0.9202 - val_loss: 0.2787\n",
"Epoch 38/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9247 - loss: 0.2642 - val_accuracy: 0.9205 - val_loss: 0.2780\n",
"Epoch 39/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9257 - loss: 0.2592 - val_accuracy: 0.9212 - val_loss: 0.2750\n",
"Epoch 40/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 5ms/step - accuracy: 0.9261 - loss: 0.2550 - val_accuracy: 0.9190 - val_loss: 0.2748\n",
"Epoch 41/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9289 - loss: 0.2518 - val_accuracy: 0.9218 - val_loss: 0.2733\n",
"Epoch 42/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9301 - loss: 0.2454 - val_accuracy: 0.9252 - val_loss: 0.2696\n",
"Epoch 43/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 5ms/step - accuracy: 0.9282 - loss: 0.2498 - val_accuracy: 0.9230 - val_loss: 0.2679\n",
"Epoch 44/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.9306 - loss: 0.2417 - val_accuracy: 0.9238 - val_loss: 0.2668\n",
"Epoch 45/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 5ms/step - accuracy: 0.9309 - loss: 0.2398 - val_accuracy: 0.9263 - val_loss: 0.2657\n",
"Epoch 46/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9308 - loss: 0.2461 - val_accuracy: 0.9243 - val_loss: 0.2639\n",
"Epoch 47/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.9330 - loss: 0.2383 - val_accuracy: 0.9257 - val_loss: 0.2620\n",
"Epoch 48/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 5ms/step - accuracy: 0.9322 - loss: 0.2344 - val_accuracy: 0.9260 - val_loss: 0.2599\n",
"Epoch 49/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9318 - loss: 0.2371 - val_accuracy: 0.9258 - val_loss: 0.2588\n",
"Epoch 50/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9326 - loss: 0.2363 - val_accuracy: 0.9277 - val_loss: 0.2564\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Выводим график функции ошибки\n",
"plt.figure(figsize=(12, 5))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(history_2l_500.history['loss'], label='Обучающая ошибка')\n",
"plt.plot(history_2l_500.history['val_loss'], label='Валидационная ошибка')\n",
"plt.title('Функция ошибки по эпохам')\n",
"plt.xlabel('Эпохи')\n",
"plt.ylabel('Categorical Crossentropy')\n",
"plt.legend()\n",
"plt.grid(True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "VVt_lGsrz2hM",
"outputId": "27d921ae-1b4c-451c-d406-4bf7cc503440"
},
"execution_count": 131,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x500 with 1 Axes>"
],
"image/png": "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kJ+fb3QeqVSKZs2aWRwrIA6UW7JkSYWBgQDg6emJoKAgo98bAPz9998V6ujbb7/FY489hjfffBNjxoxBTk6OUayTJ09Gv379cN9990GlUiEtLa1Gcdd2TNw14KTQd5WzxU1kbZ9++inUajX69OmD/fv3IyEhAdu3b0fv3r1Rr149vP322wAANzc3jBkzBq+++iq2bduG8+fPY8KECbh16xYmTJhgOJ5MJsMLL7yA//u//0OTJk3QqVOnCud0dnZG48aNERERYTSwydvbG76+vvj8888RFxeHP//8s8oudUDsLu/YsSOGDRuGI0eO4MSJE3jxxRcRGRmJnj17GvYTBAFFRUUoKioyjJIuLi42lGm1Wuh0OsNqYk2aNMHPP/+M2NhYnDp1CkOGDDF02esdOnQI//d//4cff/wR9913H+rVq1dtPb/44otwcnLC8OHD8e+//2LPnj145ZVXMHToUAQGBhr20+l0hrj0rVm1Wm0ouz0OAFi+fDmeeuoptG3bttJzT5s2De+99x42btyI//77DwsWLMCePXswY8YMo/303ePTpk1DaGioUd03adIE3377Lc6fP4/Dhw/jxRdfvOdvpsPEXQMq/TVutriJrK5JkyY4duwYGjVqhOeffx6NGzfG2LFj0aNHDxw8eNDoWucHH3yAgQMHYvjw4YiMjMSpU6ewY8cOBAcHGx1z6NChKC4uxsiRI82KRSqVYuPGjTh+/DhatWqFadOmYfHixdW+56effkJoaCh69eqFbt26wc/PD1u2bDHqBj59+jScnZ3h7OyMoKAgAECfPn0MZevWrcPWrVsNo+GXLl0Kb29vdO7cGQMGDECfPn3wwAMPGI6XmpqK5557DkuXLjUqr46Liwt27NiBjIwMtG/fHs8++yx69eqFTz/91Gi/3377zRBXx44dAQDNmzc3lP31118Vjq3T6QxfsCozffp0TJ48GdOnT0erVq3w888/4+eff0abNm0q3V8qlWLNmjXYsGEDdu7cCQD46quvkJmZiQceeABDhw7F5MmTERAQYNJnd1QSwZzRH/eAnJwceHp6Ijs7Gx4eHjU61s5/b2HsupNoFeKB3yZ3tVKEdYNGo8G2bdsMU2bINJbUW1FREa5cuYKGDRvW6FaCjk6n02H79u0YOHAgEhISjFqTtdmWLVuwZcsWq03NMpdOp0NOTg48PDx4W08z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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"scores_2l_500=model_2l_500.evaluate(X_test,y_test)\n",
"print('Lossontestdata:',scores_2l_500[0])\n",
"print('Accuracyontestdata:',scores_2l_500[1])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "SBf9p7vMz5FX",
"outputId": "2fbe52c0-8cf8-46d9-9ee4-bbb4ddc8c3d4"
},
"execution_count": 132,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9396 - loss: 0.2295\n",
"Lossontestdata: 0.23596525192260742\n",
"Accuracyontestdata: 0.9369999766349792\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Как мы видим, лучшая метрика получилась равной **0.9465000033378601** при архитектуре со 100 нейронами в скрытом слое, поэтому для дальнейших пунктов используем ее."
],
"metadata": {
"id": "Fw2hUOhm4dqT"
}
},
{
"cell_type": "code",
"source": [
"#9 пункт\n",
"model_3l_100_50 = Sequential()\n",
"model_3l_100_50.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n",
"model_3l_100_50.add(Dense(units=50, activation='sigmoid'))\n",
"model_3l_100_50.add(Dense(units=num_classes, activation='softmax'))\n",
"\n",
"model_3l_100_50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])"
],
"metadata": {
"id": "JT6AsLLP4uNp"
},
"execution_count": 133,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"Архитектура нейронной сети:\")\n",
"model_3l_100_50.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 242
},
"id": "8HyNGO1l56ru",
"outputId": "b71aff60-c7f0-48f4-83f3-616712f30eef"
},
"execution_count": 134,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Архитектура нейронной сети:\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1mModel: \"sequential_12\"\u001b[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_12\"</span>\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_26 (\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_27 (\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_28 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m510\u001b[0m │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_26 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">78,500</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_27 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">50</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">5,050</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_28 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">510</span> │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">84,060</span> (328.36 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m84,060\u001b[0m (328.36 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">84,060</span> (328.36 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
"</pre>\n"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Обучаем модель\n",
"history_3l_100_50 = model_3l_100_50.fit(\n",
" X_train, y_train,\n",
" validation_split=0.1,\n",
" epochs=50\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "sQwHOD5X7j5z",
"outputId": "bce0983e-0354-4e2c-f5fb-3c9e6c5d1dd1"
},
"execution_count": 135,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.2333 - loss: 2.2703 - val_accuracy: 0.5425 - val_loss: 2.1027\n",
"Epoch 2/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.6070 - loss: 1.9965 - val_accuracy: 0.6730 - val_loss: 1.5702\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.6855 - loss: 1.4374 - val_accuracy: 0.7502 - val_loss: 1.0896\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.7654 - loss: 1.0119 - val_accuracy: 0.8085 - val_loss: 0.8186\n",
"Epoch 5/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8195 - loss: 0.7722 - val_accuracy: 0.8425 - val_loss: 0.6650\n",
"Epoch 6/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 4ms/step - accuracy: 0.8454 - loss: 0.6291 - val_accuracy: 0.8573 - val_loss: 0.5729\n",
"Epoch 7/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.8600 - loss: 0.5463 - val_accuracy: 0.8703 - val_loss: 0.5112\n",
"Epoch 8/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.8730 - loss: 0.4905 - val_accuracy: 0.8788 - val_loss: 0.4693\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.8824 - loss: 0.4476 - val_accuracy: 0.8848 - val_loss: 0.4383\n",
"Epoch 10/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.8876 - loss: 0.4203 - val_accuracy: 0.8877 - val_loss: 0.4152\n",
"Epoch 11/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.8922 - loss: 0.3942 - val_accuracy: 0.8915 - val_loss: 0.3972\n",
"Epoch 12/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.8932 - loss: 0.3820 - val_accuracy: 0.8938 - val_loss: 0.3814\n",
"Epoch 13/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8998 - loss: 0.3615 - val_accuracy: 0.8952 - val_loss: 0.3710\n",
"Epoch 14/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9016 - loss: 0.3525 - val_accuracy: 0.8988 - val_loss: 0.3586\n",
"Epoch 15/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 4ms/step - accuracy: 0.9049 - loss: 0.3386 - val_accuracy: 0.9017 - val_loss: 0.3492\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.9065 - loss: 0.3283 - val_accuracy: 0.9028 - val_loss: 0.3410\n",
"Epoch 17/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9070 - loss: 0.3231 - val_accuracy: 0.9057 - val_loss: 0.3335\n",
"Epoch 18/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9085 - loss: 0.3163 - val_accuracy: 0.9075 - val_loss: 0.3271\n",
"Epoch 19/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9100 - loss: 0.3146 - val_accuracy: 0.9103 - val_loss: 0.3214\n",
"Epoch 20/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9112 - loss: 0.3063 - val_accuracy: 0.9107 - val_loss: 0.3144\n",
"Epoch 21/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9133 - loss: 0.2954 - val_accuracy: 0.9127 - val_loss: 0.3090\n",
"Epoch 22/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9175 - loss: 0.2852 - val_accuracy: 0.9137 - val_loss: 0.3036\n",
"Epoch 23/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9172 - loss: 0.2874 - val_accuracy: 0.9128 - val_loss: 0.2997\n",
"Epoch 24/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9197 - loss: 0.2789 - val_accuracy: 0.9152 - val_loss: 0.2937\n",
"Epoch 25/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9202 - loss: 0.2748 - val_accuracy: 0.9165 - val_loss: 0.2903\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.9199 - loss: 0.2729 - val_accuracy: 0.9168 - val_loss: 0.2850\n",
"Epoch 27/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9241 - loss: 0.2639 - val_accuracy: 0.9180 - val_loss: 0.2814\n",
"Epoch 28/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 4ms/step - accuracy: 0.9250 - loss: 0.2573 - val_accuracy: 0.9185 - val_loss: 0.2765\n",
"Epoch 29/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9251 - loss: 0.2609 - val_accuracy: 0.9195 - val_loss: 0.2726\n",
"Epoch 30/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9253 - loss: 0.2557 - val_accuracy: 0.9210 - val_loss: 0.2688\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.9250 - loss: 0.2529 - val_accuracy: 0.9232 - val_loss: 0.2655\n",
"Epoch 32/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 3ms/step - accuracy: 0.9292 - loss: 0.2456 - val_accuracy: 0.9225 - val_loss: 0.2619\n",
"Epoch 33/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 4ms/step - accuracy: 0.9291 - loss: 0.2462 - val_accuracy: 0.9233 - val_loss: 0.2598\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.9314 - loss: 0.2403 - val_accuracy: 0.9260 - val_loss: 0.2549\n",
"Epoch 35/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9302 - loss: 0.2431 - val_accuracy: 0.9262 - val_loss: 0.2519\n",
"Epoch 36/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9326 - loss: 0.2326 - val_accuracy: 0.9270 - val_loss: 0.2494\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.9327 - loss: 0.2316 - val_accuracy: 0.9285 - val_loss: 0.2458\n",
"Epoch 38/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9331 - loss: 0.2303 - val_accuracy: 0.9293 - val_loss: 0.2430\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.9333 - loss: 0.2298 - val_accuracy: 0.9305 - val_loss: 0.2404\n",
"Epoch 40/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9369 - loss: 0.2231 - val_accuracy: 0.9308 - val_loss: 0.2376\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.9374 - loss: 0.2158 - val_accuracy: 0.9318 - val_loss: 0.2346\n",
"Epoch 42/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9367 - loss: 0.2183 - val_accuracy: 0.9323 - val_loss: 0.2321\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.9388 - loss: 0.2101 - val_accuracy: 0.9338 - val_loss: 0.2291\n",
"Epoch 44/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 3ms/step - accuracy: 0.9393 - loss: 0.2089 - val_accuracy: 0.9338 - val_loss: 0.2263\n",
"Epoch 45/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9397 - loss: 0.2092 - val_accuracy: 0.9347 - val_loss: 0.2235\n",
"Epoch 46/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9409 - loss: 0.2064 - val_accuracy: 0.9357 - val_loss: 0.2221\n",
"Epoch 47/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9416 - loss: 0.2024 - val_accuracy: 0.9370 - val_loss: 0.2199\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.9419 - loss: 0.2008 - val_accuracy: 0.9370 - val_loss: 0.2168\n",
"Epoch 49/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9427 - loss: 0.2007 - val_accuracy: 0.9402 - val_loss: 0.2143\n",
"Epoch 50/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9458 - loss: 0.1921 - val_accuracy: 0.9387 - val_loss: 0.2130\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Выводим график функции ошибки\n",
"plt.figure(figsize=(12, 5))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(history_3l_100_50.history['loss'], label='Обучающая ошибка')\n",
"plt.plot(history_3l_100_50.history['val_loss'], label='Валидационная ошибка')\n",
"plt.title('Функция ошибки по эпохам')\n",
"plt.xlabel('Эпохи')\n",
"plt.ylabel('Categorical Crossentropy')\n",
"plt.legend()\n",
"plt.grid(True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "iZTH0ku47wf0",
"outputId": "bce2fe5b-b130-4512-e1d6-b6f67da89e47"
},
"execution_count": 136,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x500 with 1 Axes>"
],
"image/png": "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1yBFUXBzdnLIVN0m6KioKBRF4fDhwxUuP3z4ML6+vgQGBlr1fK/ou5b4z3/+w/fff09eXh6ffPIJ999/v2UsCz8/P9544w2mTp2Kq6srHh4e5UbCHDJkCKmpqXz44Yds376d7du3A+Z7k0v76quvePHFF6sVk62efvppVq1axSuvvMKff/5JbGws7dq1s4rhzTffpKCggICAADw8PBg0aJDdx6sNr732Gq1atWLIkCFW86v7cwPzz/u3335j5cqV5VptR40aRWxsLG+99RZbtmwhNjYWf3//cj+X+kISex2TxC5E3fD396d///689957Vh1uARITE/niiy+4//77URSF5s2b4+TkxObNmy3rmEwmtmzZYlVjHjx4MO7u7ixZsoQ1a9YwZswYq/1OmDCBjIwMDhw4QGxsLHfccYdlWUpKCkePHmX69OnccsstlksBFQkPD6dXr16kp6dbWgzAfOtefHy8VUy22rx5M6NHj2bYsGG0a9eOkJCQcpcwW7ZsyejRo4mMjGT79u189NFHVe6zTZs27N27l5ycHKvjaDSaKh/aVR0JCQksWLCgXMdFAG9vb0JCQqx+bgB//fVXuTL67LPPuPXWW3nxxRcZN26cZQTRklifeOIJBg8ezHXXXYderyc5OblGcV/NJLHXMUtiT8/HZLoqxgISot549913KSgoYODAgWzatIn4+HjWrFlD//79adSoES+//DIAHh4ejBs3jmeeeYZff/2Vw4cPM378eM6fP8/48eMt+9NqtYwYMYLnn3+eFi1a0KNHj3LHdHV1pXnz5kRFRVl1vPL19cXf358PPviA48eP8/vvv1faZA/m5vju3bszcuRIduzYwe7du3nwwQfp2LGj1TVhVVXJz88nPz/f0svbYDBY5hUVFWEymSzDjbZo0YLvv/+e2NhY9u7dywMPPFBumNdt27bx/PPP8+2333LddddZPUCrIg8++CAuLi6MGjWKAwcO8Mcff/Df//6Xhx9+mODgYMt6JpPJEldJbbigoMAyr6LhZhctWsSwYcPo1KlThcd+6qmnmDdvHitXruSff/5h1qxZ/PHHHzz99NNW65U0vz/11FOEh4dblX2LFi347LPPOHz4MNu3b+fBBx8s1+GyXlFFORkZGSqgZmRk1HhfOXn5atPnflIjnvtZTczIq4XoGg6DwaCuXr1aNRgMjg7lmmJr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T6Tc7CdlZx8pN/vYWm7VHSum2on9999/Z+LEiWzbtq1cssvIyKBnz54sWbKEm266qbq7JCAgAK1WS1JSktX8pKQkQkJCqtw2JyeHlStXVutRsc2aNSMgIIDjx49XmNj1ej16vb7cfJ1OV2u/pLW5r0q1HgS/PIkmYQ96Qxodw33463gyBxKy6dCk4ssQ14IrUnb1kJSb/aTs7CPlZp/qllt1y7banecWLlzIuHHjKqzBent783//9382X2N3dnamc+fObNiwwTLPZDKxYcOGy447/80331BQUMBDDz102eOcPXuWlJQUQkNDbYrvmuMZbH7iG8DxaEsHup2nUh0XkxBCiCuq2ol97969Vd4LPmDAAHbt2mVzAJMnT+bDDz9k+fLlHD58mMcff5ycnBweeeQRAEaOHGnVua7Exx9/zNChQ8t1iMvOzuaZZ55h27ZtnD59mg0bNnDnnXcSFRXFwIEDbY7vmlMyWM0/a/h3S3MHuuhDSeQaCh0YlBBCiCul2k3xSUlJVTYDODk5cfHiRZsDuP/++7l48SIzZswgMTGRjh07smbNGoKDgwGIi4tDo7E+/zh69Ch//fUX69atK7c/rVbLvn37WL58Oenp6YSFhTFgwABefPHFCpvb650WAyBmLpz4gy53udHEz4241FzWHEjkrhsaOzo6IYQQdazaib1Ro0YcOHCAqKioCpfv27fP7qbuiRMnMnHixAqXxcTElJvXqlUrKuvM7+rqytq1a+2Ko14I7QgewZCdhBK3lbtuaMTC9cf4bvdZSexCCNEAVLspfvDgwbzwwgvk55cfojQvL4+ZM2dy++2312pwwg4aDbTob37/z1ruLk7mW06kcD49z4GBCSGEuBKqndinT59OamoqLVu2ZP78+fzwww/88MMPzJs3j1atWpGamsr//ve/uoxVVFep6+zhvq50a+qHqsKqPeccG5cQQog6V+2m+ODgYLZs2cLjjz/OtGnTLE3hiqIwcOBAFi1aZLkuLhysWR/QOkPaKUg5zj03NGbHqVS+232W8X2aoygyWo0QQtRXNo0VHxERwa+//kpycjLbt29n27ZtJCcn8+uvv9K0adO6ilHYSu8JETea3/+zhkHtQnDRaTh5MUee0S6EEPWczQ+BAfD19aVr165069at/j9c5VplaY5fi6eLjluvMw/4893usw4MSgghRF2zK7GL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pWvXrnh6ehIUFMTQoUM5evSo1Tr5+flMmDABf39/PDw8uPvuu0lKSnJQxFePxYsX0759e8ugID169OC3336zLJdyq55XX30VRVGYNGmSZZ6UXcVmzZqFoihWU+vWrS3La7vcJLHXoa+++orJkyczc+ZMdu/eTYcOHRg4cCAXLlxwdGhXjZycHDp06MCiRYsqXD5//nzefvttlixZwvbt23F3d2fgwIHk5+df4UivLhs3bmTChAls27aN6OhojEYjAwYMICcnx7LOU089xU8//cQ333zDxo0bOX/+PHfddZcDo746NG7cmFdffZVdu3bx999/c/PNN3PnnXdy8OBBQMqtOnbu3Mn7779P+/btreZL2VXuuuuuIyEhwTL99ddflmW1Xm6qqDPdunVTJ0yYYPlcVFSkhoWFqXPnznVgVFcvQF21apXls8lkUkNCQtTXXnvNMi89PV3V6/Xql19+6YAIr14XLlxQAXXjxo2qqprLSafTqd98841lncOHD6uAunXrVkeFedXy9fVVP/roIym3asjKylJbtGihRkdHq71791affPJJVVXld64qM2fOVDt06FDhsrooN6mx1xGDwcCuXbvo16+fZZ5Go6Ffv35s3brVgZFdO06dOkViYqJVGXp7e9O9e3cpwzIyMjIA8PPzA2DXrl0YjUarsmvdujVNmjSRsiulqKiIlStXkpOTQ48ePaTcqmHChAncdtttVmUE8jt3OceOHSMsLIxmzZrx4IMPEhcXB9RNuclDYOpIcnIyRUVFBAcHW80PDg7myJEjDorq2pKYmAhQYRmWLBPmpxFOmjSJG2+8keuvvx4wl52zszM+Pj5W60rZme3fv58ePXqQn5+Ph4cHq1atom3btsTGxkq5VWHlypXs3r2bnTt3llsmv3OV6969O8uWLaNVq1YkJCQwe/ZsbrrpJg4cOFAn5SaJXYhr3IQJEzhw4IDVNTtRtVatWhEbG0tGRgbffvsto0aNYuPGjY4O66oWHx/Pk08+SXR0NC4uLo4O55oyaNAgy/v27dvTvXt3IiIi+Prrr3F1da3140lTfB0JCAhAq9WW69mYlJRESEiIg6K6tpSUk5Rh5SZOnMjPP//MH3/8YfWo4ZCQEAwGA+np6VbrS9mZOTs7ExUVRefOnZk7dy4dOnTgrbfeknKrwq5du7hw4QI33HADTk5OODk5sXHj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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"scores_3l_100_50=model_3l_100_50.evaluate(X_test,y_test)\n",
"print('Lossontestdata:',scores_3l_100_50[0])\n",
"print('Accuracyontestdata:',scores_3l_100_50[1])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "pL-lOsbF72C9",
"outputId": "5339da09-585d-4579-e676-07e049a3442a"
},
"execution_count": 137,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9459 - loss: 0.1914\n",
"Lossontestdata: 0.1960301399230957\n",
"Accuracyontestdata: 0.9444000124931335\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#9 пункт\n",
"model_3l_100_100 = Sequential()\n",
"model_3l_100_100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))\n",
"model_3l_100_100.add(Dense(units=100, activation='sigmoid'))\n",
"model_3l_100_100.add(Dense(units=num_classes, activation='softmax'))\n",
"\n",
"model_3l_100_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])"
],
"metadata": {
"id": "FKrc0L7H8A6o"
},
"execution_count": 138,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"Архитектура нейронной сети:\")\n",
"model_3l_100_100.summary()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 242
},
"id": "fBqVnsbg9pQU",
"outputId": "a559550a-56e4-4627-92be-26244791c799"
},
"execution_count": 139,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Архитектура нейронной сети:\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1mModel: \"sequential_13\"\u001b[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_13\"</span>\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_29 (\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_30 (\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_31 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,010\u001b[0m │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
"│ dense_29 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">78,500</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_30 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">10,100</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_31 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">1,010</span> │\n",
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">89,610</span> (350.04 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m89,610\u001b[0m (350.04 KB)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">89,610</span> (350.04 KB)\n",
"</pre>\n"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
"</pre>\n"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Обучаем модель\n",
"history_3l_100_100 = model_3l_100_100.fit(\n",
" X_train, y_train,\n",
" validation_split=0.1,\n",
" epochs=50\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "rLPaUTtJ9u4A",
"outputId": "3bfdf938-bc94-44ee-8661-0da7c0b818e5"
},
"execution_count": 140,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.2194 - loss: 2.2793 - val_accuracy: 0.4952 - val_loss: 2.0919\n",
"Epoch 2/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 4ms/step - accuracy: 0.5646 - loss: 1.9686 - val_accuracy: 0.6503 - val_loss: 1.4959\n",
"Epoch 3/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 3ms/step - accuracy: 0.7034 - loss: 1.3398 - val_accuracy: 0.7640 - val_loss: 0.9908\n",
"Epoch 4/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.7881 - loss: 0.9110 - val_accuracy: 0.8203 - val_loss: 0.7452\n",
"Epoch 5/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 4ms/step - accuracy: 0.8294 - loss: 0.6966 - val_accuracy: 0.8447 - val_loss: 0.6150\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.8519 - loss: 0.5810 - val_accuracy: 0.8595 - val_loss: 0.5386\n",
"Epoch 7/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.8672 - loss: 0.5061 - val_accuracy: 0.8737 - val_loss: 0.4873\n",
"Epoch 8/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.8786 - loss: 0.4580 - val_accuracy: 0.8768 - val_loss: 0.4526\n",
"Epoch 9/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.8847 - loss: 0.4247 - val_accuracy: 0.8867 - val_loss: 0.4250\n",
"Epoch 10/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 4ms/step - accuracy: 0.8911 - loss: 0.3978 - val_accuracy: 0.8887 - val_loss: 0.4065\n",
"Epoch 11/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.8940 - loss: 0.3847 - val_accuracy: 0.8902 - val_loss: 0.3894\n",
"Epoch 12/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.8972 - loss: 0.3695 - val_accuracy: 0.8945 - val_loss: 0.3755\n",
"Epoch 13/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8999 - loss: 0.3563 - val_accuracy: 0.8972 - val_loss: 0.3645\n",
"Epoch 14/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9009 - loss: 0.3473 - val_accuracy: 0.8977 - val_loss: 0.3551\n",
"Epoch 15/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 4ms/step - accuracy: 0.9033 - loss: 0.3372 - val_accuracy: 0.9015 - val_loss: 0.3466\n",
"Epoch 16/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 4ms/step - accuracy: 0.9072 - loss: 0.3248 - val_accuracy: 0.9028 - val_loss: 0.3385\n",
"Epoch 17/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9097 - loss: 0.3146 - val_accuracy: 0.9058 - val_loss: 0.3309\n",
"Epoch 18/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 4ms/step - accuracy: 0.9118 - loss: 0.3103 - val_accuracy: 0.9067 - val_loss: 0.3239\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.9137 - loss: 0.2979 - val_accuracy: 0.9097 - val_loss: 0.3184\n",
"Epoch 20/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9144 - loss: 0.2994 - val_accuracy: 0.9103 - val_loss: 0.3116\n",
"Epoch 21/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9155 - loss: 0.2897 - val_accuracy: 0.9107 - val_loss: 0.3062\n",
"Epoch 22/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9176 - loss: 0.2852 - val_accuracy: 0.9125 - val_loss: 0.3012\n",
"Epoch 23/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9179 - loss: 0.2803 - val_accuracy: 0.9143 - val_loss: 0.2961\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.9185 - loss: 0.2793 - val_accuracy: 0.9165 - val_loss: 0.2909\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.9212 - loss: 0.2723 - val_accuracy: 0.9168 - val_loss: 0.2865\n",
"Epoch 26/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9233 - loss: 0.2660 - val_accuracy: 0.9195 - val_loss: 0.2813\n",
"Epoch 27/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9243 - loss: 0.2643 - val_accuracy: 0.9185 - val_loss: 0.2766\n",
"Epoch 28/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 3ms/step - accuracy: 0.9259 - loss: 0.2574 - val_accuracy: 0.9195 - val_loss: 0.2731\n",
"Epoch 29/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9270 - loss: 0.2527 - val_accuracy: 0.9217 - val_loss: 0.2682\n",
"Epoch 30/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9257 - loss: 0.2535 - val_accuracy: 0.9228 - val_loss: 0.2654\n",
"Epoch 31/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9283 - loss: 0.2459 - val_accuracy: 0.9242 - val_loss: 0.2603\n",
"Epoch 32/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9292 - loss: 0.2460 - val_accuracy: 0.9253 - val_loss: 0.2559\n",
"Epoch 33/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 4ms/step - accuracy: 0.9304 - loss: 0.2371 - val_accuracy: 0.9253 - val_loss: 0.2533\n",
"Epoch 34/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9307 - loss: 0.2373 - val_accuracy: 0.9272 - val_loss: 0.2490\n",
"Epoch 35/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9342 - loss: 0.2265 - val_accuracy: 0.9290 - val_loss: 0.2451\n",
"Epoch 36/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 4ms/step - accuracy: 0.9327 - loss: 0.2291 - val_accuracy: 0.9288 - val_loss: 0.2422\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.9345 - loss: 0.2284 - val_accuracy: 0.9322 - val_loss: 0.2379\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.9348 - loss: 0.2238 - val_accuracy: 0.9337 - val_loss: 0.2351\n",
"Epoch 39/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9379 - loss: 0.2124 - val_accuracy: 0.9325 - val_loss: 0.2322\n",
"Epoch 40/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 3ms/step - accuracy: 0.9385 - loss: 0.2143 - val_accuracy: 0.9343 - val_loss: 0.2285\n",
"Epoch 41/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9391 - loss: 0.2112 - val_accuracy: 0.9342 - val_loss: 0.2259\n",
"Epoch 42/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 3ms/step - accuracy: 0.9389 - loss: 0.2117 - val_accuracy: 0.9353 - val_loss: 0.2228\n",
"Epoch 43/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9400 - loss: 0.2059 - val_accuracy: 0.9367 - val_loss: 0.2199\n",
"Epoch 44/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9402 - loss: 0.2074 - val_accuracy: 0.9372 - val_loss: 0.2178\n",
"Epoch 45/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 3ms/step - accuracy: 0.9409 - loss: 0.2012 - val_accuracy: 0.9377 - val_loss: 0.2148\n",
"Epoch 46/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 3ms/step - accuracy: 0.9410 - loss: 0.2027 - val_accuracy: 0.9387 - val_loss: 0.2117\n",
"Epoch 47/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9441 - loss: 0.1951 - val_accuracy: 0.9388 - val_loss: 0.2101\n",
"Epoch 48/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 3ms/step - accuracy: 0.9455 - loss: 0.1887 - val_accuracy: 0.9395 - val_loss: 0.2080\n",
"Epoch 49/50\n",
"\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 4ms/step - accuracy: 0.9455 - loss: 0.1879 - val_accuracy: 0.9400 - val_loss: 0.2049\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.9458 - loss: 0.1879 - val_accuracy: 0.9412 - val_loss: 0.2024\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Выводим график функции ошибки\n",
"plt.figure(figsize=(12, 5))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plt.plot(history_3l_100_100.history['loss'], label='Обучающая ошибка')\n",
"plt.plot(history_3l_100_100.history['val_loss'], label='Валидационная ошибка')\n",
"plt.title('Функция ошибки по эпохам')\n",
"plt.xlabel('Эпохи')\n",
"plt.ylabel('Categorical Crossentropy')\n",
"plt.legend()\n",
"plt.grid(True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "L-x7i_LV9z0v",
"outputId": "d77c6b28-c82a-4f0a-bcda-72cc0f296164"
},
"execution_count": 141,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x500 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"scores_3l_100_100=model_3l_100_100.evaluate(X_test,y_test)\n",
"print('Lossontestdata:',scores_3l_100_100[0])\n",
"print('Accuracyontestdata:',scores_3l_100_100[1])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "XLR32kLP-9ti",
"outputId": "14fd3cd1-76f8-4834-bbf7-3f5759fee897"
},
"execution_count": 142,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.9488 - loss: 0.1810\n",
"Lossontestdata: 0.18787769973278046\n",
"Accuracyontestdata: 0.9467999935150146\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import pandas as pd\n",
"\n",
"data = {\n",
" 'Слои': [0, 1, 1, 1, 2, 2],\n",
" 'Нейроны 1': ['-', 100, 300, 500, 100, 100],\n",
" 'Нейроны 2': ['-', '-', '-', '-', 50, 100],\n",
" 'Метрика': [0.913100004196167, 0.9462000131607056, 0.9412000179290771, 0.9369999766349792, 0.9444000124931335, 0.9467999935150146]\n",
"}\n",
"\n",
"df = pd.DataFrame(data)\n",
"df"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 237
},
"id": "5qJnBp0xHnCI",
"outputId": "2ea8d1f6-c538-41cf-d4fa-f640523ae0ca"
},
"execution_count": 171,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Слои Нейроны 1 Нейроны 2 Метрика\n",
"0 0 - - 0.9131\n",
"1 1 100 - 0.9462\n",
"2 1 300 - 0.9412\n",
"3 1 500 - 0.9370\n",
"4 2 100 50 0.9444\n",
"5 2 100 100 0.9468"
],
"text/html": [
"\n",
" <div id=\"df-575a1040-8160-46c6-8074-3ba4b76f87f0\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Слои</th>\n",
" <th>Нейроны 1</th>\n",
" <th>Нейроны 2</th>\n",
" <th>Метрика</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>-</td>\n",
" <td>-</td>\n",
" <td>0.9131</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>-</td>\n",
" <td>0.9462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>300</td>\n",
" <td>-</td>\n",
" <td>0.9412</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>500</td>\n",
" <td>-</td>\n",
" <td>0.9370</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>100</td>\n",
" <td>50</td>\n",
" <td>0.9444</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2</td>\n",
" <td>100</td>\n",
" <td>100</td>\n",
" <td>0.9468</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-575a1040-8160-46c6-8074-3ba4b76f87f0')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-575a1040-8160-46c6-8074-3ba4b76f87f0 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-575a1040-8160-46c6-8074-3ba4b76f87f0');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-252fb343-365e-4e5d-a9f3-f2a05af2c474\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-252fb343-365e-4e5d-a9f3-f2a05af2c474')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-252fb343-365e-4e5d-a9f3-f2a05af2c474 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" <div id=\"id_c7adcf5f-3034-4785-97e9-7e434f657f87\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('df')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_c7adcf5f-3034-4785-97e9-7e434f657f87 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('df');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df",
"summary": "{\n \"name\": \"df\",\n \"rows\": 6,\n \"fields\": [\n {\n \"column\": \"\\u0421\\u043b\\u043e\\u0438\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 2,\n \"num_unique_values\": 3,\n \"samples\": [\n 0,\n 1,\n 2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041d\\u0435\\u0439\\u0440\\u043e\\u043d\\u044b 1\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 4,\n \"samples\": [\n 100,\n 500,\n \"-\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041d\\u0435\\u0439\\u0440\\u043e\\u043d\\u044b 2\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"-\",\n 50,\n 100\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"\\u041c\\u0435\\u0442\\u0440\\u0438\\u043a\\u0430\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.012781303089044108,\n \"min\": 0.913100004196167,\n \"max\": 0.9467999935150146,\n \"num_unique_values\": 6,\n \"samples\": [\n 0.913100004196167,\n 0.9462000131607056,\n 0.9467999935150146\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 171
}
]
},
{
"cell_type": "code",
"source": [
"# сохранение модели на диск, к примеру, в папку best_model\n",
"# В общем случае может быть указан произвольный путь\n",
"model_2l_100.save(filepath='best_model.keras')\n"
],
"metadata": {
"id": "lHbEMPiP_H1U"
},
"execution_count": 143,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# вывод тестового изображения и результата распознавания\n",
"n = 333\n",
"result = model.predict(X_test[n:n+1])\n",
"print('NN output:', result)\n",
"\n",
"plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))\n",
"plt.show()\n",
"print('Real mark: ', str(np.argmax(y_test[n])))\n",
"print('NN answer: ', str(np.argmax(result)))\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 517
},
"id": "Odl88Uq9A1s-",
"outputId": "aa841ffb-84c6-49f6-c7aa-9aad3b6c7aa6"
},
"execution_count": 144,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 91ms/step\n",
"NN output: [[3.0055828e-02 1.7918642e-06 1.0183058e-05 1.3000262e-04 2.2273003e-05\n",
" 9.6671683e-01 3.1997326e-05 6.5717955e-05 2.9293287e-03 3.6015103e-05]]\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Real mark: 5\n",
"NN answer: 5\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# вывод тестового изображения и результата распознавания\n",
"n = 555\n",
"result = model.predict(X_test[n:n+1])\n",
"print('NN output:', result)\n",
"\n",
"plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))\n",
"plt.show()\n",
"print('Real mark: ', str(np.argmax(y_test[n])))\n",
"print('NN answer: ', str(np.argmax(result)))\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 517
},
"id": "jsg-mI4LCQdl",
"outputId": "c135c799-03e5-4ff3-a822-4d5b5c50b2b1"
},
"execution_count": 145,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 49ms/step\n",
"NN output: [[9.8050815e-01 5.7898621e-08 9.2301030e-05 8.2087971e-04 5.6250155e-06\n",
" 1.8371470e-02 9.3076023e-06 1.4318567e-04 2.3332947e-05 2.5768295e-05]]\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Real mark: 0\n",
"NN answer: 0\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#загрузка собственного изображения\n",
"from PIL import Image\n",
"file_1_data = Image.open('1.png')\n",
"file_1_data = file_1_data.convert('L') #перевод в градации серого\n",
"test_1_img = np.array(file_1_data)"
],
"metadata": {
"id": "l1FWO_UOCvzD"
},
"execution_count": 146,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#вывод собственного изображения\n",
"plt.imshow(test_1_img, cmap=plt.get_cmap('gray'))\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 430
},
"id": "zUsnip1x5EZC",
"outputId": "eea8d655-7ecb-4752-ec45-7e67a5c9ab5d"
},
"execution_count": 147,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"#предобработка\n",
"test_1_img = test_1_img / 255\n",
"test_1_img = test_1_img.reshape(1, num_pixels)"
],
"metadata": {
"id": "ut90eKMe6Ah-"
},
"execution_count": 148,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#распознавание\n",
"result_1 = model.predict(test_1_img)\n",
"print('I think it\\'s', np.argmax(result_1))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1EP5i4NF6PTM",
"outputId": "6f3f583b-bdd8-4037-a79a-4d15c7388bb0"
},
"execution_count": 149,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 41ms/step\n",
"I think it's 1\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"file_2_data = Image.open('2.png')\n",
"file_2_data = file_2_data.convert('L') #перевод в градации серого\n",
"test_2_img = np.array(file_2_data)\n",
"\n",
"plt.imshow(test_2_img, cmap=plt.get_cmap('gray'))\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 430
},
"id": "UMp0wzuX6W2Q",
"outputId": "f272d0f4-e788-4463-b3e0-3bb10b402d88"
},
"execution_count": 150,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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WyNHjox4PTQ3N+vcuXMp9Xq433Xoz4kTJyQpuV4P1p+CeBDvvfee83q9rra21v3rX/9ya9ascZmZma6jo8N6tEH1wx/+0NXX17vW1lb3j3/8w5WWlrrs7Gx38eJF69ESqquryx0/ftwdP37cSXK/+c1v3PHjx91nn33mnHPul7/8pcvMzHT79u1zJ0+edIsWLXKFhYXu2rVrxpPH172uQ1dXl3v11VddY2Oja21tdR999JH76le/6p566inX09NjPXrcVFZWOp/P5+rr6117e3t4u3r1aviYtWvXuvHjx7tDhw65o0ePuuLiYldcXGw4dfzd7zq0tLS4n/3sZ+7o0aOutbXV7du3z02aNMmVlJQYTx5pSATIOed+97vfufHjx7tRo0a5uXPnuqamJuuRBt3y5ctdXl6eGzVqlHvyySfd8uXLXUtLi/VYCffxxx87SXdtK1eudM7d+ij2G2+84XJzc53X63Xz5893zc3NtkMnwL2uw9WrV92CBQvc2LFj3ciRI92ECRPc6tWrU+5/0vr755fkduzYET7m2rVr7vvf/7770pe+5B577DG3ZMkS197ebjd0AtzvOpw7d86VlJS4rKws5/V63ZQpU9xrr73mgsGg7eBfwI9jAACYSPr3gAAAqYkAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMPF/FQeeSN9YW+AAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"test_2_img = test_2_img / 255\n",
"test_2_img = test_2_img.reshape(1, num_pixels)\n",
"\n",
"result_2 = model.predict(test_2_img)\n",
"print('I think it\\'s', np.argmax(result_2))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-iem-iep80g2",
"outputId": "7886a179-f10b-4547-bbe7-dd35b0236d52"
},
"execution_count": 151,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 40ms/step\n",
"I think it's 2\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Сеть не ошиблась и корректно распознала обе цифры на изображениях\n"
],
"metadata": {
"id": "Y0HbWXbZBbQj"
}
},
{
"cell_type": "code",
"source": [
"file_1_90_data = Image.open('1_90.png')\n",
"file_1_90_data = file_1_90_data.convert('L') #перевод в градации серого\n",
"test_1_90_img = np.array(file_1_90_data)\n",
"\n",
"plt.imshow(test_1_90_img, cmap=plt.get_cmap('gray'))\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 430
},
"id": "CdByiEkv9Hb0",
"outputId": "e230f3ac-65f1-42fc-d0a8-5266ef7cb19e"
},
"execution_count": 152,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"test_1_90_img = test_1_90_img / 255\n",
"test_1_90_img = test_1_90_img.reshape(1, num_pixels)\n",
"\n",
"result_1_90 = model.predict(test_1_90_img)\n",
"print('I think it\\'s', np.argmax(result_1_90))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fyM2y4LoCWx1",
"outputId": "dd73bdd9-3f6a-4e3e-b93b-bdeaeb9e54a1"
},
"execution_count": 153,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 41ms/step\n",
"I think it's 4\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"file_2_90_data = Image.open('2_90.png')\n",
"file_2_90_data = file_2_90_data.convert('L') #перевод в градации серого\n",
"test_2_90_img = np.array(file_2_90_data)\n",
"\n",
"plt.imshow(test_2_90_img, cmap=plt.get_cmap('gray'))\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 430
},
"id": "iR1uqM0BCkGs",
"outputId": "a6277d02-cadb-4bfa-e70c-02b63f673c0f"
},
"execution_count": 154,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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9913ndfrdfX19e6f//yn27Bhg8vIyHCdnZ3Wow2pn/zkJ66pqckFAgH397//3ZWWlrqsrCx39epV69ES6saNG+7MmTPuzJkzTpJ744033JkzZ9x///tf55xzO3bscBkZGe7QoUPu3LlzbunSpa6wsNB9+umnxpPH1/3Ow40bN9zLL7/sWlpaXCAQcB988IH75je/6Z566inX09NjPXrcVFVVOZ/P55qamlxHR0d4u3XrVnifyspKN3nyZHfs2DF36tQpV1xc7IqLiw2njr8HnYe2tjb3i1/8wp06dcoFAgF36NAhN2XKFFdSUmI8eaRhESDnnPvd737nJk+e7MaMGePmz5/vTpw4YT3SkFu1apXLzc11Y8aMcU8++aRbtWqVa2trsx4r4T788EMn6Z5t7dq1zrn+t2K/9tprLicnx3m9Xrdw4ULX2tpqO3QC3O883Lp1yy1atMhNmDDBjR492uXn57v169en3P+kDfT3l+T27NkT3ufTTz91P/rRj9zXvvY199hjj7nly5e7jo4Ou6ET4EHn4dKlS66kpMRlZmY6r9frpk2b5l555RUXDAZtB/8Sfh0DAMBE0r8GBABITQQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACAif8DiCSeDioieJ0AAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"test_2_90_img = test_2_90_img / 255\n",
"test_2_90_img = test_2_90_img.reshape(1, num_pixels)\n",
"\n",
"result_2_90 = model.predict(test_2_90_img)\n",
"print('I think it\\'s', np.argmax(result_2_90))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "jMJZ03YoCq5M",
"outputId": "eccd2c67-a19d-4084-dbf4-9573d4bdeda7"
},
"execution_count": 155,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 59ms/step\n",
"I think it's 5\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"При повороте изображений сеть не распознала цифры правильно.\n",
"Так как она не обучалась на повернутых изображениях."
],
"metadata": {
"id": "kcmszzPCC2HJ"
}
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "KPfEzQkTW7M_"
},
"execution_count": null,
"outputs": []
}
]
}