Как я кошек отделил от собак при помощью нейросетки.

Фух, рассказывать тут можно много, но я расскажу на самой-самой поверхности.

Есть такой датасет на соревновании dogs vs cats, в котором нужно обучить что-нибудь на 25000 картинок собак и котов. Такой вот:

Как я кошек отделил от собак при помощью нейросетки. Нейронные сети, Сверточный слой, Коты и собаки вместе

Посидел я, почесал репу. Сделал на коленке сетку, состоящую из 5 сверточных слоев. Как ни странно, такая сетка не зашла, ибо просто слишком "тупая". Так думал я. Ну хорошо, запиливаю большущую сеть:

Как я кошек отделил от собак при помощью нейросетки. Нейронные сети, Сверточный слой, Коты и собаки вместе

из суммарно 42 сверточных слоев, что уже нереально дохрена. И что вы думаете? Нихрена! Не работает! Угадывает только в половине случаев, но при двух классах это не очень много...


Двое суток мучился, обращался в ods (наше научное сообщество), у друзей спрашивал. Задача простая, обидно прям. Решил уже было забить, как вдруг понял: у нас же между слоями образуется ерунда, надо нормализировать ерунду!


Добавляем слой BatchNorm (это такой слой, который приводит числа к адекватным, например оочень большие делит, а ооочень малькие умножает). И о чудо! 60% точности!


Такие дела :). Довел вот уже до 80%, наверное еще повышу. Если кому интересно - расскажу в следующем посте что означает рисунок выше, как создать такую сетку.


Спасибо за прочтение!


бм нашел в моем посте сиськи...

Искусственный интеллект

2.4K постов9.7K подписчиков

Добавить пост

Правила сообщества

Здесь вы можете свободно создавать посты по теме Искусственного интеллекта. Добро пожаловать :)


Разрешено:


- Делиться вопросами, мыслями, гипотезами, юмором на эту тему.

- Делиться статьями, понятными большинству аудитории Пикабу.

- Делиться опытом создания моделей машинного обучения.

- Рассказывать, как работает та или иная фиговина в анализе данных.

- Век жить, век учиться.


Запрещено:


I) Невостребованный контент

  I.1) Создавать контент, сложный для понимания. Такие посты уйдут в минуса лишь потому, что большинству неинтересно пробрасывать градиенты в каждом тензоре реккурентной сетки с AdaGrad оптимизатором.

  I.2) Создавать контент на "олбанском языке" / нарочно игнорируя правила РЯ даже в шутку. Это ведет к нечитаемости контента.


II) Нетематический контент

  II.1) Создавать контент, несвязанный с Data Science, математикой, программированием.

  II.2) Создавать контент, входящий в противоречие существующей базе теорем математики. Например, "Земля плоская" или "Любое действительное число представимо в виде дроби двух целых".

  II.3) Создавать контент, входящий в противоречие с правилами Пикабу.


III) Непотребный контент

  III.1) Эротика, порнография (даже с NSFW).

  III.2) Жесть.


За нарушение I - предупреждение

За нарушение II - предупреждение и перемещение поста в общую ленту

За нарушение III - бан

1
Автор поста оценил этот комментарий

Я не понимаю к чему пост. Те, кто в теме и так через что-то подобное проходили. Много раз. Те кто не в теме, те не в теме.

раскрыть ветку (1)
2
DELETED
Автор поста оценил этот комментарий

Ну и что? Я просто поделился со всеми, как такая простая ерунда может сводить работоспособность сетки на нет. А те кто не в теме - ну извините, на пикабу свою работу публикуют и сантехники, и юристы, и сапожники. Почему ds нельзя?)

показать ответы
Автор поста оценил этот комментарий

А комменты разве не для высказывания своего мнения придумали? Это их прямое назначение. И я не против постов про машинку или что-либо другое. Всегда найдутся те, кому эта тема интересна.

В этом посте никакого описания процесса или познавательных знаний нет. Вот что ты нового узнал? Что иногда нужно нормализировать векторы?

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий
А разве этот пост был создан с целью какого-учения? Вы вообще для получения научных знаний сюда ходите? Вряд ли, тут не так много постов. И учебник по ML я создавать не обязан и не буду.
2
Автор поста оценил этот комментарий

Ну слушай, где ты видел пост, где сантехник пишет: "собрал я кран, а он течёт, оказалось резинку забыл", или юрист: "подал я документы в суд, их отклонили я исправил и их приняли".

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Эм, а ты сам-то не видел?) Ну я конечно хз, что ты имеешь ввиду, но я такие часто вижу. Впрочем, я открыт для критики. Просто хотелось бы понять, что не так.

9
DELETED
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (1)
2
DELETED
Автор поста оценил этот комментарий

Ну таки да Не, тут нужно понимание происходящего :).

На самом деле, простые задачки решаются import sklearn, сложные - умом и сообразительностью.

Автор поста оценил этот комментарий

Покажи, что получится. 

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ниче интересного. Прилагаю исходное изображение (собака), и конечное (кот, вернее сетка думает, что это кот)

Иллюстрация к комментарию
Иллюстрация к комментарию
1
Автор поста оценил этот комментарий

Теперь в этой сети поменяй вход и выход местами. Потом на новый вход подай «кот» и на выходе получи картинку - то как нейронная сеть представляет себе кота.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Я к этому сетку и делал) Я по-другому сделаю: я подам на вход собаку и сделаю так, чтобы сетка сделала из нее кота. Повесить в комменты?) Или даже пост сделать..

показать ответы
3
DELETED
Автор поста оценил этот комментарий
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий
Иллюстрация к комментарию
2
Автор поста оценил этот комментарий

а как с 60% до 80% увеличил-то? Этот скачок в описания конкурса упоминается не иначе как "state of the art" решение, а у тебя ррраз - "Довел вот уже до 80%"

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ну там совсем чуть-чуть тюнинга: подкрутил пару гиперапараметров сетки, увеличил кол-во блоков (с 4 до 6).