@PrizmMARgh

Возможно ли обучить GAN без batchnorm?

Пишу свой инструментарий для создания нейросетей. FeedForward модели на нём учатся нормально (часто довольно медленно, свёрточный классификатор рисованных нулей-единиц размера 30*30 может учиться до минуты, но меня это устраивает). Проблемы начинаются, когда я пытаюсь реализовать GAN. Распространение ошибок и прочее работает правильное, но обучение ни к чему не приводит. Пытался обучить на примерно 300 вручную нарисованных окружностях, в качестве выборок брал случайные поднаборы размера от 5 до 200, методы оптимизации так же перепробовал все, что только мог, ждал достаточно долго - до 2 часов, пробовал разные архитектуры, перенастраивал операции pool и т.п., как советуют - ничего не выходит. Пришёл к выводу, что нужно использовать batchNorm, но в моей реализации он невозможен, т.к. прогонка вычислений по нейросети проходит только для одного значения одновременно. (а чтобы это исправить нужно будет исправлять примерно 4к строк кода либо писать заново). Так вот - действительно ли дело может быть в отсутствии batchnorm? Если нет, то какие оптимальные архитектуры генератора и дискриминатора и методы оптимизации градиентного спуска необходимо использовать? И почему?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@imageman
Да, можно без нормализации.

Вот тут https://github.com/eriklindernoren/PyTorch-GAN собрано довольно много реализаций нейросетей (я оттуда с ESRGAN экспериментировал).

FeedForward (это те, что полносвязные) практически тупиковый путь. Посчитайте сколько вы весов заложили в свою нейросеть. Для картинок пробуйте сверточные нейросети.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы