Итак, я читал эту статью Сети со стохастической глубиной станут новой нормой и там увидел статью Глубинные сети со стохастической глубиной. Прочитав эту статью, я увидел диаграмму ниже.

И сразу же я был вдохновлен на создание собственного 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 здесь, если вам интересно.

Ссылка

  1. Хуанг, Г., Сунь, Ю., Лю, З., Седра, Д., и Вайнбергер, К. К. (2016, октябрь). Глубокие сети со стохастической глубиной. В Европейской конференции по компьютерному зрению (стр. 646–661). Спрингер, Чам.
  2. Д. (2016, 05 июня). Сети со стохастической глубиной станут новой нормой. Получено 8 февраля 2018 г. с сайта http://deliprao.com/archives/134.