Изменил(а) на 'labworks/LW3/report.md'

main
TekotovaVA 3 недель назад
Родитель 6c34f72ef3
Сommit d76217389e

@ -103,37 +103,57 @@ model.add(layers.Flatten())
model.add(layers.Dense(num_classes, activation="softmax")) model.add(layers.Dense(num_classes, activation="softmax"))
model.summary() model.summary()
```
**Model: "sequential"** **Model: "sequential"**
| Layer (type) | Output Shape | Param # | | Layer (type) | Output Shape | Param # |
|--------------------------------|---------------------|--------:| |--------------------------------|---------------------|--------:|
| conv2d (Conv2D) | (None, 26, 26, 32) | 320 | | conv2d (Conv2D) | (None, 26, 26, 32) | 320 |
| max_pooling2d_8 (MaxPooling2D) | (None, 13, 13, 32) | 0 | | max_pooling2d_8 (MaxPooling2D) | (None, 13, 13, 32) | 0 |
| conv2d_1 (Conv2D) | (None, 11, 11, 64) | 18,496 | | conv2d_1 (Conv2D) | (None, 11, 11, 64) | 18,496 |
| max_pooling2d_9 (MaxPooling2D) | (None, 5, 5, 64) | 0 | | max_pooling2d_9 (MaxPooling2D) | (None, 5, 5, 64) | 0 |
| dropout (Dropout) | (None, 5, 5, 64) | 0 | | dropout (Dropout) | (None, 5, 5, 64) | 0 |
| flatten (Flatten) | (None, 1600) | 0 | | flatten (Flatten) | (None, 1600) | 0 |
| dense (Dense) | (None, 10) | 16,010 | | dense (Dense) | (None, 10) | 16,010 |
**Total params:** 34,826 (136.04 KB) **Total params:** 34,826 (136.04 KB)
**Trainable params:** 34,826 (136.04 KB) **Trainable params:** 34,826 (136.04 KB)
**Non-trainable params:** 0 (0.00 B) **Non-trainable params:** 0 (0.00 B)
```python ```python
batch_size = 512 batch_size = 512
epochs = 15 epochs = 15
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1) model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)
``` ```
```
Epoch 1/15 Epoch 1/15
106/106 ━━━━━━━━━━━━━━━━━━━━ 6s 34ms/step - accuracy: 0.5991 - loss: 1.2739 - val_accuracy: 0.9427 - val_loss: 0.1933 106/106 ━━━━━━━━━━━━━━━━━━━━ 6s 34ms/step - accuracy: 0.5991 - loss: 1.2739 - val_accuracy: 0.9427 - val_loss: 0.1933
Epoch 2/15 Epoch 2/15
106/106 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - accuracy: 0.9363 - loss: 0.2175 - val_accuracy: 0.9645 - val_loss: 0.1128 106/106 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - accuracy: 0.9363 - loss: 0.2175 - val_accuracy: 0.9645 - val_loss: 0.1128
... ...
Epoch 15/15 Epoch 15/15
106/106 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - accuracy: 0.9851 - loss: 0.0460 - val_accuracy: 0.9895 - val_loss: 0.0350 106/106 ━━━━━━━━━━━━━━━━━━━━ 1s 12ms/step - accuracy: 0.9851 - loss: 0.0460 - val_accuracy: 0.9895 - val_loss: 0.0350
<keras.src.callbacks.history.History at 0x78575e329e50> <keras.src.callbacks.history.History at 0x78575e329e50>
```
### 6) Оценили качество обучения на тестовых данных. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных. ### 6) Оценили качество обучения на тестовых данных. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных.
```python ```python
@ -141,11 +161,14 @@ scores = model.evaluate(X_test, y_test)
print('Loss on test data:', scores[0]) print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1]) print('Accuracy on test data:', scores[1])
``` ```
```
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.9867 - loss: 0.0411 313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.9867 - loss: 0.0411
Loss on test data: 0.04398002102971077 Loss on test data: 0.04398002102971077
Accuracy on test data: 0.9865000247955322 Accuracy on test data: 0.9865000247955322
```
### 7) Подали на вход обученной модели два тестовых изображения. Вывели изображения, истинные метки и результаты распознавания. ### 7) Подали на вход обученной модели два тестовых изображения. Вывели изображения, истинные метки и результаты распознавания.
@ -160,24 +183,29 @@ for n in [3,26]:
print('Real mark: ', np.argmax(y_test[n])) print('Real mark: ', np.argmax(y_test[n]))
print('NN answer: ', np.argmax(result)) print('NN answer: ', np.argmax(result))
``` ```
```
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 332ms/step 1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 332ms/step
NN output: [[1.9338373e-09 8.8185527e-12 4.5429974e-08 2.5885814e-04 1.7587592e-08 NN output: [[1.9338373e-09 8.8185527e-12 4.5429974e-08 2.5885814e-04 1.7587592e-08
9.9952632e-01 1.1317411e-08 1.5951617e-08 1.6658140e-08 2.1473359e-04]] 9.9952632e-01 1.1317411e-08 1.5951617e-08 1.6658140e-08 2.1473359e-04]]
```
![picture](7.png) ![picture](7.png)
```
Real mark: 5 Real mark: 5
NN answer: 5 NN answer: 5
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step 1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 28ms/step
NN output: [[2.6663812e-04 5.6896381e-09 3.4766167e-04 2.4042051e-09 2.7227568e-04 NN output: [[2.6663812e-04 5.6896381e-09 3.4766167e-04 2.4042051e-09 2.7227568e-04
6.0989500e-08 9.9911338e-01 2.0191379e-08 4.6584045e-08 1.9427532e-08]] 6.0989500e-08 9.9911338e-01 2.0191379e-08 4.6584045e-08 1.9427532e-08]]
```
![picture](7_1.png) ![picture](7_1.png)
```
Real mark: 6 Real mark: 6
NN answer: 6 NN answer: 6
```
### 8) Вывели отчет о качестве классификации тестовой выборки и матрицу ошибок для тестовой выборки. ### 8) Вывели отчет о качестве классификации тестовой выборки и матрицу ошибок для тестовой выборки.
@ -196,25 +224,40 @@ display = ConfusionMatrixDisplay(confusion_matrix=conf_matrix)
display.plot() display.plot()
plt.show() plt.show()
``` ```
```
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step 313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
precision recall f1-score support precision recall f1-score support
0 0.99 0.99 0.99 1009 0 0.99 0.99 0.99 1009
1 0.99 1.00 1.00 1147 1 0.99 1.00 1.00 1147
2 0.98 0.98 0.98 969 2 0.98 0.98 0.98 969
3 0.98 0.99 0.99 1025 3 0.98 0.99 0.99 1025
4 0.99 0.98 0.99 939 4 0.99 0.98 0.99 939
5 0.98 0.98 0.98 881 5 0.98 0.98 0.98 881
6 0.99 0.99 0.99 1037 6 0.99 0.99 0.99 1037
7 0.98 0.99 0.98 1001 7 0.98 0.99 0.98 1001
8 0.99 0.98 0.98 950 8 0.99 0.98 0.98 950
9 0.99 0.98 0.98 1042 9 0.99 0.98 0.98 1042
accuracy 0.99 10000 accuracy 0.99 10000
macro avg 0.99 0.99 0.99 10000 macro avg 0.99 0.99 0.99 10000
weighted avg 0.99 0.99 0.99 10000 weighted avg 0.99 0.99 0.99 10000
```
![picture](8.png) ![picture](8.png)
### 9) Загрузили, предобработали и подали на вход обученной нейронной сети собственное изображение, созданное при выполнении лабораторной работы №1. Вывели изображение и результат распознавания. ### 9) Загрузили, предобработали и подали на вход обученной нейронной сети собственное изображение, созданное при выполнении лабораторной работы №1. Вывели изображение и результат распознавания.
@ -241,13 +284,13 @@ for name_image in ['цифра 3.png', 'цифра 6.png']:
print('I think it\'s', np.argmax(result)) print('I think it\'s', np.argmax(result))
``` ```
![picture](9.png) ![picture](9.png)
```
I think it's 2 I think it's 2
```
![picture](9_2.png) ![picture](9_2.png)
```
I think it's 5 I think it's 5
```
### 10) Загрузили с диска модель, сохраненную при выполнении лабораторной работы №1. Вывели информацию об архитектуре модели. Повторили для этой модели п. 6. ### 10) Загрузили с диска модель, сохраненную при выполнении лабораторной работы №1. Вывели информацию об архитектуре модели. Повторили для этой модели п. 6.
@ -257,13 +300,21 @@ model_lr1 = keras.models.load_model("model_1h100_2h50.keras")
model_lr1.summary() model_lr1.summary()
``` ```
**Model: "sequential_10"** **Model: "sequential_10"**
| Layer (type) | Output Shape | Param # | | Layer (type) | Output Shape | Param # |
|------------------|-------------:|--------:| |------------------|-------------:|--------:|
| dense_1 (Dense) | (None, 100) | 78,500 | | dense_1 (Dense) | (None, 100) | 78,500 |
| dense_2 (Dense) | (None, 10) | 1,010 | | dense_2 (Dense) | (None, 10) | 1,010 |
**Total params:** 79,512 (310.60 KB) **Total params:** 79,512 (310.60 KB)
**Trainable params:** 79,510 (310.59 KB)
**Trainable params:** 79,510 (310.59 KB)
**Non-trainable params:** 0 (0.00 B) **Non-trainable params:** 0 (0.00 B)
**Optimizer params:** 2 (12.00 B) **Optimizer params:** 2 (12.00 B)
@ -285,12 +336,15 @@ y_test = keras.utils.to_categorical(y_test, num_classes)
print('Shape of transformed y train:', y_train.shape) print('Shape of transformed y train:', y_train.shape)
print('Shape of transformed y test:', y_test.shape) print('Shape of transformed y test:', y_test.shape)
``` ```
```
Shape of transformed X train: (60000, 784) Shape of transformed X train: (60000, 784)
Shape of transformed X train: (10000, 784) Shape of transformed X train: (10000, 784)
Shape of transformed y train: (60000, 10) Shape of transformed y train: (60000, 10)
Shape of transformed y test: (10000, 10) Shape of transformed y test: (10000, 10)
```
```python ```python
# Оценка качества работы модели на тестовых данных # Оценка качества работы модели на тестовых данных
@ -298,11 +352,13 @@ scores = model_lr1.evaluate(X_test, y_test)
print('Loss on test data:', scores[0]) print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1]) print('Accuracy on test data:', scores[1])
``` ```
```
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - accuracy: 0.9452 - loss: 0.1976 313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step - accuracy: 0.9452 - loss: 0.1976
Loss on test data: 0.19490210711956024 Loss on test data: 0.19490210711956024
Accuracy on test data: 0.944599986076355 Accuracy on test data: 0.944599986076355
```
### 11) Сравнили обученную модель сверточной сети и наилучшую модель полносвязной сети из лабораторной работы №1 по следующим показателям: ### 11) Сравнили обученную модель сверточной сети и наилучшую модель полносвязной сети из лабораторной работы №1 по следующим показателям:
### - количество настраиваемых параметров в сети ### - количество настраиваемых параметров в сети
@ -310,24 +366,19 @@ Accuracy on test data: 0.944599986076355
### - качество классификации тестовой выборки. ### - качество классификации тестовой выборки.
### Сделали выводы по результатам применения сверточной нейронной сети для распознавания изображений. ### Сделали выводы по результатам применения сверточной нейронной сети для распознавания изображений.
Таблица1:
| Модель | Количество настраиваемых параметров | Количество эпох обучения | Качество классификации тестовой выборки | | Модель | Количество настраиваемых параметров | Количество эпох обучения | Качество классификации тестовой выборки |
|----------|-------------------------------------|---------------------------|-----------------------------------------| |----------|-------------------------------------|---------------------------|-----------------------------------------|
| Сверточная | 34 826 | 15 | accuracy:0.986 ; loss:0.044 | | Сверточная | 34 826 | 15 | accuracy:0.986 ; loss:0.044 |
| Полносвязная | 84 062 | 50 | accuracy:0.944 ; loss:0.195 | | Полносвязная | 84 062 | 50 | accuracy:0.944 ; loss:0.195 |
##### По результатам применения сверточной НС, а также по результатам таблицы 1 делаем выводы, что сверточная НС намного лучше справляется с задачами распознования изображений, чем полносвязная - имеет меньше настраиваемых параметров, быстрее обучается, имеет лучшие показатели качества. ##### Вывод:Сравнительный анализ показывает явное преимущество свёрточной нейронной сети перед полносвязной в задачах распознавания изображений: при вдвое меньшем количестве параметров (34 826 против 79 512) и трёхкратном сокращении числа эпох обучения (15 против 50) CNN достигает более высокой точности (98,65% против 94,46%) и значительно меньшей ошибки (0,044 против 0,195).
## Задание 2 ## Задание 2
### В новом блокноте выполнили п. 2–8 задания 1, изменив набор данных MNIST на CIFAR-10, содержащий размеченные цветные изображения объектов, разделенные на 10 классов.
### При этом:
### - в п. 3 разбиение данных на обучающие и тестовые произвели в соотношении 50 000:10 000
### - после разбиения данных (между п. 3 и 4) вывели 25 изображений из обучающей выборки с подписями классов
### - в п. 7 одно из тестовых изображений должно распознаваться корректно, а другое – ошибочно.
### 1) Загрузили набор данных CIFAR-10, содержащий цветные изображения размеченные на 10 классов: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль, грузовик. ### 1) Загрузили набор данных CIFAR-10, содержащий цветные изображения размеченные на 10 классов: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль, грузовик.
```python ```python
@ -357,12 +408,15 @@ print('Shape of y train:', y_train.shape)
print('Shape of X test:', X_test.shape) print('Shape of X test:', X_test.shape)
print('Shape of y test:', y_test.shape) print('Shape of y test:', y_test.shape)
``` ```
```
Shape of X train: (50000, 32, 32, 3) Shape of X train: (50000, 32, 32, 3)
Shape of y train: (50000, 1) Shape of y train: (50000, 1)
Shape of X test: (10000, 32, 32, 3) Shape of X test: (10000, 32, 32, 3)
Shape of y test: (10000, 1) Shape of y test: (10000, 1)
```
### Вывели 25 изображений из обучающей выборки с подписью классов. ### Вывели 25 изображений из обучающей выборки с подписью классов.
@ -402,12 +456,15 @@ y_test = keras.utils.to_categorical(y_test, num_classes)
print('Shape of transformed y train:', y_train.shape) print('Shape of transformed y train:', y_train.shape)
print('Shape of transformed y test:', y_test.shape) print('Shape of transformed y test:', y_test.shape)
``` ```
```
Shape of transformed X train: (50000, 32, 32, 3) Shape of transformed X train: (50000, 32, 32, 3)
Shape of transformed X test: (10000, 32, 32, 3) Shape of transformed X test: (10000, 32, 32, 3)
Shape of transformed y train: (50000, 10) Shape of transformed y train: (50000, 10)
Shape of transformed y test: (10000, 10) Shape of transformed y test: (10000, 10)
```
### 4) Реализовали модель сверточной нейронной сети и обучили ее на обучающих данных с выделением части обучающих данных в качестве валидационных. Вывели информацию об архитектуре нейронной сети. ### 4) Реализовали модель сверточной нейронной сети и обучили ее на обучающих данных с выделением части обучающих данных в качестве валидационных. Вывели информацию об архитектуре нейронной сети.
@ -449,32 +506,59 @@ model.add(layers.Dense(num_classes, activation="softmax"))
model.summary() model.summary()
``` ```
**Model: "sequential_9"** **Model: "sequential_9"**
| Layer (type) | Output Shape | Param # | | Layer (type) | Output Shape | Param # |
|--------------------------------------------|-------------------|---------:| |--------------------------------------------|-------------------|---------:|
| conv2d_16 (Conv2D) | (None, 32, 32, 32) | 896 | | conv2d_16 (Conv2D) | (None, 32, 32, 32) | 896 |
| batch_normalization_12 (BatchNormalization) | (None, 32, 32, 32) | 128 | | batch_normalization_12 (BatchNormalization) | (None, 32, 32, 32) | 128 |
| conv2d_17 (Conv2D) | (None, 32, 32, 32) | 9,248 | | conv2d_17 (Conv2D) | (None, 32, 32, 32) | 9,248 |
| batch_normalization_13 (BatchNormalization) | (None, 32, 32, 32) | 128 | | batch_normalization_13 (BatchNormalization) | (None, 32, 32, 32) | 128 |
| max_pooling2d_10 (MaxPooling2D) | (None, 16, 16, 32) | 0 | | max_pooling2d_10 (MaxPooling2D) | (None, 16, 16, 32) | 0 |
| dropout_10 (Dropout) | (None, 16, 16, 32) | 0 | | dropout_10 (Dropout) | (None, 16, 16, 32) | 0 |
| conv2d_18 (Conv2D) | (None, 16, 16, 64) | 18,496 | | conv2d_18 (Conv2D) | (None, 16, 16, 64) | 18,496 |
| batch_normalization_14 (BatchNormalization) | (None, 16, 16, 64) | 256 | | batch_normalization_14 (BatchNormalization) | (None, 16, 16, 64) | 256 |
| conv2d_19 (Conv2D) | (None, 16, 16, 64) | 36,928 | | conv2d_19 (Conv2D) | (None, 16, 16, 64) | 36,928 |
| batch_normalization_15 (BatchNormalization) | (None, 16, 16, 64) | 256 | | batch_normalization_15 (BatchNormalization) | (None, 16, 16, 64) | 256 |
| max_pooling2d_11 (MaxPooling2D) | (None, 8, 8, 64) | 0 | | max_pooling2d_11 (MaxPooling2D) | (None, 8, 8, 64) | 0 |
| dropout_11 (Dropout) | (None, 8, 8, 64) | 0 | | dropout_11 (Dropout) | (None, 8, 8, 64) | 0 |
| conv2d_20 (Conv2D) | (None, 8, 8, 128) | 73,856 | | conv2d_20 (Conv2D) | (None, 8, 8, 128) | 73,856 |
| batch_normalization_16 (BatchNormalization)| (None, 8, 8, 128) | 512 | | batch_normalization_16 (BatchNormalization)| (None, 8, 8, 128) | 512 |
| conv2d_21 (Conv2D) | (None, 8, 8, 128) | 147,584 | | conv2d_21 (Conv2D) | (None, 8, 8, 128) | 147,584 |
| batch_normalization_17 (BatchNormalization)| (None, 8, 8, 128) | 512 | | batch_normalization_17 (BatchNormalization)| (None, 8, 8, 128) | 512 |
| max_pooling2d_12 (MaxPooling2D) | (None, 4, 4, 128) | 0 | | max_pooling2d_12 (MaxPooling2D) | (None, 4, 4, 128) | 0 |
| dropout_12 (Dropout) | (None, 4, 4, 128) | 0 | | dropout_12 (Dropout) | (None, 4, 4, 128) | 0 |
| flatten_4 (Flatten) | (None, 2048) | 0 | | flatten_4 (Flatten) | (None, 2048) | 0 |
| dense_6 (Dense) | (None, 128) | 262,272 | | dense_6 (Dense) | (None, 128) | 262,272 |
| dropout_13 (Dropout) | (None, 128) | 0 | | dropout_13 (Dropout) | (None, 128) | 0 |
| dense_7 (Dense) | (None, 10) | 1,290 | | dense_7 (Dense) | (None, 10) | 1,290 |
**Total params:** 552,362 (2.11 MB) **Total params:** 552,362 (2.11 MB)
**Trainable params:** 551,466 (2.10 MB) **Trainable params:** 551,466 (2.10 MB)
**Non-trainable params:** 896 (3.50 KB) **Non-trainable params:** 896 (3.50 KB)
```python ```python
@ -484,16 +568,24 @@ epochs = 50
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1) model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)
``` ```
```
Epoch 1/50 Epoch 1/50
704/704 ━━━━━━━━━━━━━━━━━━━━ 25s 21ms/step - accuracy: 0.2474 - loss: 2.1347 - val_accuracy: 0.5014 - val_loss: 1.3804 704/704 ━━━━━━━━━━━━━━━━━━━━ 25s 21ms/step - accuracy: 0.2474 - loss: 2.1347 - val_accuracy: 0.5014 - val_loss: 1.3804
Epoch 2/50 Epoch 2/50
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.4517 - loss: 1.4843 - val_accuracy: 0.5648 - val_loss: 1.2039 704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.4517 - loss: 1.4843 - val_accuracy: 0.5648 - val_loss: 1.2039
... ...
Epoch 50/50 Epoch 50/50
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 13ms/step - accuracy: 0.9183 - loss: 0.2363 - val_accuracy: 0.8370 - val_loss: 0.5748 704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 13ms/step - accuracy: 0.9183 - loss: 0.2363 - val_accuracy: 0.8370 - val_loss: 0.5748
<keras.src.callbacks.history.History at 0x78575551f7a0> <keras.src.callbacks.history.History at 0x78575551f7a0>
```
### 5) Оценили качество обучения на тестовых данных. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных. ### 5) Оценили качество обучения на тестовых данных. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных.
@ -503,11 +595,13 @@ scores = model.evaluate(X_test, y_test)
print('Loss on test data:', scores[0]) print('Loss on test data:', scores[0])
print('Accuracy on test data:', scores[1]) print('Accuracy on test data:', scores[1])
``` ```
```
313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.8535 - loss: 0.5236 313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.8535 - loss: 0.5236
Loss on test data: 0.5263504981994629 Loss on test data: 0.5263504981994629
Accuracy on test data: 0.8525000214576721 Accuracy on test data: 0.8525000214576721
```
### 6) Подали на вход обученной модели два тестовых изображения. Вывели изображения, истинные метки и результаты распознавания. ### 6) Подали на вход обученной модели два тестовых изображения. Вывели изображения, истинные метки и результаты распознавания.
@ -523,24 +617,30 @@ for n in [3,15]:
print('Real mark: ', np.argmax(y_test[n])) print('Real mark: ', np.argmax(y_test[n]))
print('NN answer: ', np.argmax(result)) print('NN answer: ', np.argmax(result))
``` ```
```
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 662ms/step 1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 662ms/step
NN output: [[3.9128518e-13 3.7927967e-14 9.7535979e-10 9.2453198e-11 2.2669273e-13 NN output: [[3.9128518e-13 3.7927967e-14 9.7535979e-10 9.2453198e-11 2.2669273e-13
4.2581650e-13 1.0000000e+00 2.1332333e-19 5.8570602e-13 1.1833489e-11]] 4.2581650e-13 1.0000000e+00 2.1332333e-19 5.8570602e-13 1.1833489e-11]]
```
![picture](2_6.png) ![picture](2_6.png)
```
Real mark: 6 Real mark: 6
NN answer: 6 NN answer: 6
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 40ms/step 1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 40ms/step
NN output: [[9.5250229e-08 5.8261224e-10 2.7865291e-05 2.9105169e-03 9.8321760e-01 NN output: [[9.5250229e-08 5.8261224e-10 2.7865291e-05 2.9105169e-03 9.8321760e-01
1.3797697e-02 2.7701269e-06 4.3220436e-05 2.0006892e-08 1.8016836e-07]] 1.3797697e-02 2.7701269e-06 4.3220436e-05 2.0006892e-08 1.8016836e-07]]
```
![picture](2_7.png) ![picture](2_7.png)
```
Real mark: 4 Real mark: 4
NN answer: 4 NN answer: 4
```
### 7) Вывели отчет о качестве классификации тестовой выборки и матрицу ошибок для тестовой выборки. ### 7) Вывели отчет о качестве классификации тестовой выборки и матрицу ошибок для тестовой выборки.
@ -561,25 +661,40 @@ disp.plot(ax=ax, xticks_rotation=45) # поворот подписей по X
plt.tight_layout() # чтобы всё влезло plt.tight_layout() # чтобы всё влезло
plt.show() plt.show()
``` ```
```
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step 313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
precision recall f1-score support precision recall f1-score support
airplane 0.90 0.84 0.87 1007 airplane 0.90 0.84 0.87 1007
automobile 0.92 0.93 0.93 1037 automobile 0.92 0.93 0.93 1037
bird 0.86 0.78 0.82 1030 bird 0.86 0.78 0.82 1030
cat 0.68 0.72 0.70 990 cat 0.68 0.72 0.70 990
deer 0.84 0.83 0.83 966 deer 0.84 0.83 0.83 966
dog 0.77 0.79 0.78 1009 dog 0.77 0.79 0.78 1009
frog 0.78 0.94 0.86 972 frog 0.78 0.94 0.86 972
horse 0.95 0.84 0.89 991 horse 0.95 0.84 0.89 991
ship 0.94 0.93 0.94 990 ship 0.94 0.93 0.94 990
truck 0.91 0.92 0.92 1008 truck 0.91 0.92 0.92 1008
accuracy 0.85 10000 accuracy 0.85 10000
macro avg 0.86 0.85 0.85 10000 macro avg 0.86 0.85 0.85 10000
weighted avg 0.86 0.85 0.85 10000 weighted avg 0.86 0.85 0.85 10000
```
![picture](2_8.png) ![picture](2_8.png)
#### Сводная точность модели на тестовой выборке CIFAR-10 составила 85%, что свидетельствует о её эффективности в решении задачи классификации цветных изображений. #### Сводная точность модели на тестовой выборке CIFAR-10 составила 85%, что свидетельствует о её эффективности в решении задачи классификации цветных изображений.
Загрузка…
Отмена
Сохранить