Итак, я читал эту статью Сети со стохастической глубиной станут новой нормой и там увидел статью Глубинные сети со стохастической глубиной. Прочитав эту статью, я увидел диаграмму ниже.
И сразу же я был вдохновлен на создание собственного Res Net. Однако, поскольку пакетную нормализацию немного сложно реализовать для обратного распространения, я не буду учитывать их в сегодняшней реализации. Но обещаю, скоро их реализовываю!
Сетевая архитектура (математическая форма)
Как видно выше, сетевая архитектура не может быть проще для понимания, у нас есть какая-то функция f (), которая преобразует входные данные. И у нас есть дополнительная функция id (), которая в другом названии Identity function, позволяет напрямую подключаться с предыдущего уровня к текущему.
Прямая связь / частичное обратное распространение
(математическое уравнение)
Зеленая рамка → Прямое распространение для 3-х остаточных блоков
Красная рамка → Частичное обратное распространение для скрытых грузов.
Синий подчеркнутый → Обратное распространение относительно W3H
Розовый подчеркнутый → Обратное распространение относительно W2H
Фиолетовый подчеркнутый → Обратное распространение относительно W1H
Теперь я не буду выполнять обратное распространение для каждого веса, однако обратное распространение по отношению к W3b, W3a, W2b, W2a, W1b и W1a также легко.
Операция прямой связи (код)
Красный прямоугольник → Res Block 1
Зеленый ящик → Res Block 2
Синий ящик → Res Block 3
Операция Feed Forward для Res Blocks очень проста, но эффективна. Однако процесс обратного распространения немного сложен.
Обратное распространение (код)
Основная причина, по которой обратное распространение в Res Net немного усложняется, заключается в добавлении, которое происходит в конце остаточного блока. При выполнении обратного распространения нам нужно убедиться, что мы суммируем все градиенты относительно этих весов. Подчеркнутые красным части кода выполняют добавления.
Обучение и результаты (одинаковые темпы обучения)
Сначала я установил одинаковую скорость обучения как для скрытых весов, так и для других. И как я ни старался, мне не удалось добиться хорошего результата с этой настройкой. Поэтому я решил просто установить разные скорости обучения для разных «типов» весов.
Обучение и результаты (разные темпы обучения)
Точность 72% далеко не впечатляет для простой задачи классификации изображений 10 классов. Я вернусь в надежде повысить точность этой модели. Но похоже, что установка разной скорости обучения для разных «типов» весов даст лучшие результаты.
Интерактивный код
Я перешел на Google Colab для интерактивных кодов! Таким образом, вам понадобится учетная запись Google для просмотра кодов, а также вы не можете запускать сценарии только для чтения в Google Colab, поэтому сделайте копию на своей игровой площадке. Наконец, я никогда не буду спрашивать разрешения на доступ к вашим файлам на Google Диске, просто к сведению. Удачного кодирования!
Чтобы получить доступ к интерактивному коду, щелкните по этой ссылке.
Заключительные слова
Основная сеть, представленная в статье «Глубокие сети со стохастической глубиной», не является простой сетью Res Net, скорее они представляют собой сеть со стохастической глубиной. Я постараюсь реализовать эту сеть с пакетной нормализацией в ближайшее время.
Если будут обнаружены какие-либо ошибки, напишите мне по адресу [email protected].
Тем временем подпишитесь на меня в моем твиттере здесь и посетите мой веб-сайт или мой канал Youtube для получения дополнительной информации. Я также сделал сравнение Decoupled Neural Network здесь, если вам интересно.
Ссылка
- Хуанг, Г., Сунь, Ю., Лю, З., Седра, Д., и Вайнбергер, К. К. (2016, октябрь). Глубокие сети со стохастической глубиной. В Европейской конференции по компьютерному зрению (стр. 646–661). Спрингер, Чам.
- Д. (2016, 05 июня). Сети со стохастической глубиной станут новой нормой. Получено 8 февраля 2018 г. с сайта http://deliprao.com/archives/134.