Commit
·
ed8e080
1
Parent(s):
f83adab
Update README.md
Browse files
README.md
CHANGED
|
@@ -1,3 +1,36 @@
|
|
| 1 |
---
|
| 2 |
-
license: gpl-2.0
|
| 3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
license: gpl-2.0
|
| 3 |
---
|
| 4 |
+
[](https://huggingface.co/Innokentiy)
|
| 5 |
+
# FlowerNet
|
| 6 |
+
## Нейросеть для многоклассовой классификации цветов.
|
| 7 |
+
|
| 8 |
+

|
| 9 |
+
|
| 10 |
+
## Введение
|
| 11 |
+
Цель данной работы заключается в разработке нейронной сети для многоклассовой классификации, обладающей **высокой устойчивостью** к переобучению.
|
| 12 |
+
|
| 13 |
+
## Набор данных (Dataset)
|
| 14 |
+
Для решения задачи многоклассовой классификации цветов, я использовал набор данных tf_flowers из tensorflow.
|
| 15 |
+
Набор имеет 5 классов цветов: 'Одуванчик', 'Ромашка', 'Тюльпаны', 'Подсолнухи' и 'Розы'. Поэтому на конечном слое Dense 5 нейронов. Теперь про выборки. Я разбил набор данных на три выборки: от 0 до 80% - тренировочная, от 80% до 90% - проверочная(валидационная) и от 90% до 100% - тестовая.
|
| 16 |
+
|
| 17 |
+
## Архитектура сети
|
| 18 |
+
К качестве архитектуры я использовал xception. Схема архитектуры получилась большая, поэтому я решил не вставлять ей сюда, а загрузить в файлы проекта.
|
| 19 |
+
Нейронная сеть предназначена для работы на тензорных процессорах (TPU), это позволяет повысить количество эпох и мощность.
|
| 20 |
+
|
| 21 |
+
## Оптимизатор и функция потерь
|
| 22 |
+

|
| 23 |
+
Моей целью было создать крепкую нейронную сеть, которая обладала бы высокой устойчивостью к переобучению.
|
| 24 |
+
И тут начинается настройка.
|
| 25 |
+
Если использовать оптимизатор Adam, который я использовал ранее, то точность будет 90%, но при этом будет переобучение. Поэтому я решил зайти с другого бока, и использовать оптимизатор Adagrad(Adaptive Gradient) - его точность на 10 эпохе была 40%, но чем больше эпох, тем лучше его точность, и при этом точность проверочной выборки будет всегда выше чем тренировочной, и переобучения не будет. В качестве функции потерь я использую SparseCategoricalCrossentropy, так как именно её нужно использовать на TPU моделях. Так как модель моя модель использует тензорный процессор и быстро проходит эпохи, я решил увеличить количество эпох до тысячи. Adagrad начал с 40%, постепенно его точность увеличивалась, и в конечном итоге я получил точность 89.65% на проверочных данных и 0.87% на тестовых. При этом на графике можно увидеть, что модель не подвергается переобучению.
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
## Результат
|
| 29 |
+

|
| 30 |
+
|
| 31 |
+
Задача выполнена. Я создал модель которая имеет устойчивую защиту от переобучения и хорошую точность 87%.
|
| 32 |
+
Модель доступна для скачивания на huggingface:
|
| 33 |
+
|
| 34 |
+
>Программа предоставляется в виде открытого исходного кода.
|
| 35 |
+
|
| 36 |
+
|