Сравнить коммиты

...

3 Коммитов

Автор SHA1 Сообщение Дата
KonovalovaAlA faacab3cc4 Добавлены последние пункты и изображения
2 недель назад
KonovalovaAlA 1f049f8d3e Настроены изображения
2 недель назад
KonovalovaAlA 7fa4a08483 Настроены изображения
2 недель назад

Двоичные данные
labworks/LW1/created_0.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 737 B

Двоичные данные
labworks/LW1/created_0_90.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 264 B

Двоичные данные
labworks/LW1/created_1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 701 B

Двоичные данные
labworks/LW1/created_1_90.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 196 B

До

Ширина:  |  Высота:  |  Размер: 31 KiB

После

Ширина:  |  Высота:  |  Размер: 31 KiB

До

Ширина:  |  Высота:  |  Размер: 31 KiB

После

Ширина:  |  Высота:  |  Размер: 31 KiB

До

Ширина:  |  Высота:  |  Размер: 24 KiB

После

Ширина:  |  Высота:  |  Размер: 24 KiB

До

Ширина:  |  Высота:  |  Размер: 24 KiB

После

Ширина:  |  Высота:  |  Размер: 24 KiB

До

Ширина:  |  Высота:  |  Размер: 26 KiB

После

Ширина:  |  Высота:  |  Размер: 26 KiB

До

Ширина:  |  Высота:  |  Размер: 26 KiB

После

Ширина:  |  Высота:  |  Размер: 26 KiB

@ -49,7 +49,7 @@ y = np.concatenate((y_train, y_test))
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size = 10000,
train_size = 60000,
random_state = 123)
random_state = 31)
```
Выведем размерности.
@ -82,10 +82,10 @@ for i in range(4):
**Вывод:**
```bash
![`5`](image.png)
![`1`](image-1.png)
![`0`](image-2.png)
![`0`](image-3.png)
![5](train_4_5.png)
![1](train_4_1.png)
![0](train_4_0.1.png)
![0](train_4_0.2.png)
```
@ -193,9 +193,9 @@ plt.show()
```
**Вывод:**
```bash
![График ошибки по эпохам](image-4.png)
```
![График ошибки по эпохам](plot_0_hidden_layer.png)
## 7. Оценка работы модели на тестовых данных
@ -214,15 +214,15 @@ Accuracy on test data: 0.9185000061988831
```
## 8. Обучение и тестирование модели с одним скрытым слоем
## 8. Обучение и тестирование модели с одним скрытым слоем
Проведем тестирование модели при 100, 300, 500 нейронов в скрытом слое. В качестве функции активации нейронов в скрытом слое будем использовать функцию sigmoid.
Проведем тестирование модели при 100, 300, 500 нейронов в скрытом слое. В качестве функции активации нейронов в скрытом слое будем использовать функцию sigmoid.
По метрике качества классификации выберем наилучшее количество нейронов в скрытом слое.
1. Модель со 100 нейронами в скрытом слое
![График ошибки по эпохам со 100 нейронами в скрытом слое](image-5.png)
![График ошибки по эпохам со 100 нейронами в скрытом слое](plot_1_hidden_layer_100.png)
```bash
Loss on test data: 0.20470060408115387
@ -231,7 +231,7 @@ Accuracy on test data: 0.9412999749183655
2. Модель с 300 нейронами в скрытом слое
![График ошибки по эпохам с 300 нейронами в скрытом слое](image-6.png)
![График ошибки по эпохам с 300 нейронами в скрытом слое](plot_1_hidden_layer_300.jpg)
```bash
Loss on test data: 0.23246125876903534
@ -240,7 +240,7 @@ Accuracy on test data: 0.9337999820709229
3. Модель с 500 нейронами в скрытом слое
![График ошибки по эпохам с 500 нейронами в скрытом слое](image-7.png)
![График ошибки по эпохам с 500 нейронами в скрытом слое](plot_1_hidden_layer_500.jpg)
```bash
Loss on test data: 0.24853046238422394
@ -256,7 +256,7 @@ Accuracy on test data: 0.9283999800682068
1. Модель с 50 нейронами в скрытом слое
![График ошибки по эпохам с 50 нейронами в скрытом слое](image-8.png)
![График ошибки по эпохам с 50 нейронами в скрытом слое](plot_2_hidden_layer_50.jpg)
```bash
Loss on test data: 0.19981178641319275
@ -265,7 +265,7 @@ Accuracy on test data: 0.9387000203132629
2. Модель со 100 нейронами в скрытом слое
![График ошибки по эпохам со 100 нейронами в скрытом слое](image-9.png)
![График ошибки по эпохам со 100 нейронами в скрытом слое](plot_2_hidden_layer_100.jpg)
```bash
Loss on test data: 0.19404223561286926
@ -288,11 +288,11 @@ Accuracy on test data: 0.9413999915122986
├─────────────────────────────────┼───────────────────────┼─────────────────────┤
│ 2 (100, 50 нейронов) │ 0.19981178641319275 │ 0.9387000203132629 │
├─────────────────────────────────┼───────────────────────┼─────────────────────┤
│ 2 (100, 100 нейронов) │ 0.19404223561286926 │ 0.9413999915122986 │
│ 2 (100, 100 нейронов) │ 0.19404223561286926 │ **0.9413999915122986**
└─────────────────────────────────┴───────────────────────┴───────────────────────┘
```
По результатам исследования мы видим, что наилучшие результаты достигаются при архитектуре при 100 нейронах на каждом скрытом слое.
По результатам исследования мы видим, что наилучшие результаты достигаются при архитектуре при 100 нейронах на каждом скрытом слое.
## 11. Сохранение наилучшей модели на диск
@ -301,3 +301,85 @@ filepath='/content/drive/MyDrive/Colab Notebooks/best_model.keras'
model_2_100.save(filepath)
```
## 12. Вывод тестовых изображений
```py
n = 31
result = model.predict(X_test[n:n+1])
print('NN output:', result)
plt.imshow(X_test[n].reshape(28,28), cmap=plt.get_cmap('gray'))
plt.show()
print('Real mark: ', str(np.argmax(y_test[n])))
print('NN answer: ', str(np.argmax(result)))
```
**Вывод:**
```bash
NN output: [[4.3196760e-06 1.3248758e-04 9.4383031e-02 2.8113697e-03 2.2433515e-04 4.0835417e-05 5.3229469e-05 8.9428437e-01 3.7515254e-04 7.6909573e-03]]
```
![alt text](test_12_7.png)
```bash
Real mark: 7
NN answer: 7
```
## 13. Тестирование модели на собственных изображениях цифр
1. Создадим собственные изображения рукописных цифр "1" и "0"
![alt text](created_0.png)
![alt text](created_1.png)
2. Загрузим, предобработаем и подадим на вход обученной нейросети собственные изображения
```py
# вывод собственного изображения
plt.imshow(test_img, cmap=plt.get_cmap('gray'))
plt.show()
# предобработка
test_img = test_img / 255
test_img = test_img.reshape(1, num_pixels)
# распознавание
result = model.predict(test_img)
print('I think it\'s ', np.argmax(result))
```
**Вывод:**
![alt text](result_0.png)
```bash
I think it's 0
```
![alt text](result_1.png)
```bash
I think it's 1
```
## 14. Тестирование модели на собственных изображениях цифр, повернутых на 90 градусов
**Результат тестирования:**
![alt text](result_0_90.png)
```bash
I think it's 0
```
![alt text](result_1_90.png)
```bash
I think it's 4
```
*Таким образом, нейросеть смогла определить 0 из-за простой и неизменной формы при повороте, однако подав на вход перевернутую 1, нейросеть не смогла корренто определить цифру.*

Двоичные данные
labworks/LW1/result_0.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 32 KiB

Двоичные данные
labworks/LW1/result_0_90.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 49 KiB

Двоичные данные
labworks/LW1/result_1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 29 KiB

Двоичные данные
labworks/LW1/result_1_90.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 45 KiB

Двоичные данные
labworks/LW1/test_12_7.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 9.3 KiB

До

Ширина:  |  Высота:  |  Размер: 9.8 KiB

После

Ширина:  |  Высота:  |  Размер: 9.8 KiB

До

Ширина:  |  Высота:  |  Размер: 12 KiB

После

Ширина:  |  Высота:  |  Размер: 12 KiB

До

Ширина:  |  Высота:  |  Размер: 8.7 KiB

После

Ширина:  |  Высота:  |  Размер: 8.7 KiB

До

Ширина:  |  Высота:  |  Размер: 9.1 KiB

После

Ширина:  |  Высота:  |  Размер: 9.1 KiB

Загрузка…
Отмена
Сохранить