Как я кошек отделил от собак при помощью нейросетки.
Фух, рассказывать тут можно много, но я расскажу на самой-самой поверхности.
Есть такой датасет на соревновании dogs vs cats, в котором нужно обучить что-нибудь на 25000 картинок собак и котов. Такой вот:
Посидел я, почесал репу. Сделал на коленке сетку, состоящую из 5 сверточных слоев. Как ни странно, такая сетка не зашла, ибо просто слишком "тупая". Так думал я. Ну хорошо, запиливаю большущую сеть:
из суммарно 42 сверточных слоев, что уже нереально дохрена. И что вы думаете? Нихрена! Не работает! Угадывает только в половине случаев, но при двух классах это не очень много...
Двое суток мучился, обращался в ods (наше научное сообщество), у друзей спрашивал. Задача простая, обидно прям. Решил уже было забить, как вдруг понял: у нас же между слоями образуется ерунда, надо нормализировать ерунду!
Добавляем слой BatchNorm (это такой слой, который приводит числа к адекватным, например оочень большие делит, а ооочень малькие умножает). И о чудо! 60% точности!
Такие дела :). Довел вот уже до 80%, наверное еще повышу. Если кому интересно - расскажу в следующем посте что означает рисунок выше, как создать такую сетку.
Спасибо за прочтение!
бм нашел в моем посте сиськи...
а как с 60% до 80% увеличил-то? Этот скачок в описания конкурса упоминается не иначе как "state of the art" решение, а у тебя ррраз - "Довел вот уже до 80%"
Теперь в этой сети поменяй вход и выход местами. Потом на новый вход подай «кот» и на выходе получи картинку - то как нейронная сеть представляет себе кота.
Подписался.