Добавлены последние пункты и изображения
Двоичные данные
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 |
@@ -82,10 +82,10 @@ for i in range(4):
|
|||||||
|
|
||||||
**Вывод:**
|
**Вывод:**
|
||||||
```bash
|
```bash
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@ plt.show()
|
|||||||
|
|
||||||
**Вывод:**
|
**Вывод:**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -214,15 +214,15 @@ Accuracy on test data: 0.9185000061988831
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## 8. Обучение и тестирование модели с одним скрытым слоем
|
## 8. Обучение и тестирование модели с одним скрытым слоем
|
||||||
|
|
||||||
Проведем тестирование модели при 100, 300, 500 нейронов в скрытом слое. В качестве функции активации нейронов в скрытом слое будем использовать функцию sigmoid.
|
Проведем тестирование модели при 100, 300, 500 нейронов в скрытом слое. В качестве функции активации нейронов в скрытом слое будем использовать функцию sigmoid.
|
||||||
|
|
||||||
По метрике качества классификации выберем наилучшее количество нейронов в скрытом слое.
|
По метрике качества классификации выберем наилучшее количество нейронов в скрытом слое.
|
||||||
|
|
||||||
1. Модель со 100 нейронами в скрытом слое
|
1. Модель со 100 нейронами в скрытом слое
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Loss on test data: 0.20470060408115387
|
Loss on test data: 0.20470060408115387
|
||||||
@@ -231,7 +231,7 @@ Accuracy on test data: 0.9412999749183655
|
|||||||
|
|
||||||
2. Модель с 300 нейронами в скрытом слое
|
2. Модель с 300 нейронами в скрытом слое
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Loss on test data: 0.23246125876903534
|
Loss on test data: 0.23246125876903534
|
||||||
@@ -240,7 +240,7 @@ Accuracy on test data: 0.9337999820709229
|
|||||||
|
|
||||||
3. Модель с 500 нейронами в скрытом слое
|
3. Модель с 500 нейронами в скрытом слое
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Loss on test data: 0.24853046238422394
|
Loss on test data: 0.24853046238422394
|
||||||
@@ -256,7 +256,7 @@ Accuracy on test data: 0.9283999800682068
|
|||||||
|
|
||||||
1. Модель с 50 нейронами в скрытом слое
|
1. Модель с 50 нейронами в скрытом слое
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Loss on test data: 0.19981178641319275
|
Loss on test data: 0.19981178641319275
|
||||||
@@ -265,7 +265,7 @@ Accuracy on test data: 0.9387000203132629
|
|||||||
|
|
||||||
2. Модель со 100 нейронами в скрытом слое
|
2. Модель со 100 нейронами в скрытом слое
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Loss on test data: 0.19404223561286926
|
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, 50 нейронов) │ 0.19981178641319275 │ 0.9387000203132629 │
|
||||||
├─────────────────────────────────┼───────────────────────┼─────────────────────┤
|
├─────────────────────────────────┼───────────────────────┼─────────────────────┤
|
||||||
│ 2 (100, 100 нейронов) │ 0.19404223561286926 │ 0.9413999915122986 │
|
│ 2 (100, 100 нейронов) │ 0.19404223561286926 │ **0.9413999915122986** │
|
||||||
└─────────────────────────────────┴───────────────────────┴───────────────────────┘
|
└─────────────────────────────────┴───────────────────────┴───────────────────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
По результатам исследования мы видим, что наилучшие результаты достигаются при архитектуре при 100 нейронах на каждом скрытом слое.
|
По результатам исследования мы видим, что наилучшие результаты достигаются при архитектуре при 100 нейронах на каждом скрытом слое.
|
||||||
|
|
||||||
## 11. Сохранение наилучшей модели на диск
|
## 11. Сохранение наилучшей модели на диск
|
||||||
|
|
||||||
@@ -301,3 +301,85 @@ filepath='/content/drive/MyDrive/Colab Notebooks/best_model.keras'
|
|||||||
model_2_100.save(filepath)
|
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]]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```bash
|
||||||
|
Real mark: 7
|
||||||
|
NN answer: 7
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 13. Тестирование модели на собственных изображениях цифр
|
||||||
|
|
||||||
|
1. Создадим собственные изображения рукописных цифр "1" и "0"
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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))
|
||||||
|
```
|
||||||
|
|
||||||
|
**Вывод:**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```bash
|
||||||
|
I think it's 0
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```bash
|
||||||
|
I think it's 1
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 14. Тестирование модели на собственных изображениях цифр, повернутых на 90 градусов
|
||||||
|
|
||||||
|
**Результат тестирования:**
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```bash
|
||||||
|
I think it's 0
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```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 |