Поскольку в предыдущем посте я рассказывал об операции Dilated Convolution, это имеет смысл только в том случае, если я сделал из нее сеть. Поэтому я считаю, что для меня лучше всего реализовать контекстный модуль, представленный в этой статье Многомасштабное агрегирование контекста с помощью расширенных сверток. Который был представлен на Международной конференции по обучающим представительствам 2016.

Есть две вещи, которые я хочу отметить…
1. Авторы оригинальной статьи инициализировали веса, используя свои собственные методы, для этого поста я просто собираюсь инициализировать из нормального распределения.
2. Ради интереса, давайте обучим сеть с помощью Dilated Back Propagation as well l.

Сетевая архитектура (таблица) / настройка эксперимента

По сути, контекстный модуль - это полностью сверточная нейронная сеть с операциями расширенной свертки. И установка нашего эксперимента предельно проста, мы собираемся провести многоклассовую классификацию на наборе данных MNIST. Для этого мы добавим полностью подключенную нейронную сеть на выходе из сети контекстного модуля.

Сетевая архитектура (форма ООП)

Красная линия → Операция расширенной свертки

За исключением красной линии выше, которая выполняет операцию расширенной свертки, сетевая архитектура точно такая же, как и у сверточной нейронной сети. У которых есть сверточные слои спереди и полностью подключенная нейронная сеть сзади.

Коэффициент расширения / прямая связь

Красные линии → коэффициент расширения в соответствии с исходной бумагой.

Поэтому, чтобы коэффициенты расширения оставались такими же, как в документе, мы установим коэффициенты равными 1,1,2,4,8,16,1 и 1 соответственно.

Автоматическая дифференциация результатов обучения (оптимизатор ADAM)

Левый график → График затрат на обучение изображений с течением времени
Правый график → График точности обучающих изображений с течением времени

Левый график → График стоимости тестирования изображений с течением времени
Правый график → График точности тестирования изображений с течением времени

Это наиболее интересные результаты, которые я видел, особенно для авто дифференцирования. Примерно к 50-й эпохе мы видим, что модель работает очень хорошо. Однако после 100-й (ну?) Эпохи производительность модели начинает снижаться. В конечном итоге точность составляет около 77 процентов как для обучающих, так и для тестовых изображений.

Результаты тренировки (сломанные) опора с расширенной спиной (оптимизатор ADAM)

Левый график → График затрат на обучение изображений с течением времени
Правый график → График точности обучающих изображений с течением времени

Левый график → График стоимости тестирования изображений с течением времени
Правый график → График точности тестирования изображений с течением времени

Давая модели тренироваться, я пошла в спортзал. И во время тренировки я понял, что моя реализация обратного распространения для слоя расширенной свертки неверна. Поэтому я назову эту модель (Broken) Dilated Back Propagation. Тем не менее, очень интересно увидеть, хотя процесс может быть нарушен, модель все еще может учиться. Хотя по сравнению с автодифференциацией он был ниже производительности, он все равно показал точность около 75 процентов.

Интерактивный код

Я перешел на Google Colab для интерактивных кодов! Таким образом, вам понадобится учетная запись Google для просмотра кодов, а также вы не можете запускать сценарии только для чтения в Google Colab, поэтому сделайте копию на своей игровой площадке. Наконец, я никогда не буду спрашивать разрешения на доступ к вашим файлам на Google Диске, просто к сведению. Удачного кодирования!

Чтобы получить доступ к коду для (Сломанного) расширенного обратного распространения, нажмите здесь.
Чтобы получить доступ к коду для автоматического дифференцирования, нажмите здесь.

Заключительные слова

Поскольку этот пост больше посвящен реализации контекстного модуля, я не буду его оптимизировать. Однако, если вам удалось получить превосходные результаты, пожалуйста, прокомментируйте ниже и то, как вам удалось достичь этого результата.

Если будут обнаружены какие-либо ошибки, пожалуйста, напишите мне на [email protected], если вы хотите увидеть список всех моих писем, пожалуйста, просмотрите мой сайт здесь.

Тем временем подпишитесь на меня в моем твиттере здесь и посетите мой веб-сайт или мой канал Youtube для получения дополнительной информации. Я также сделал сравнение Decoupled Neural Network здесь, если вам интересно.

Ссылка

  1. маркировка ?, W. (2018). Что такое семантическая сегментация по сравнению с сегментацией и разметкой сцены? Stackoverflow.com. Получено 12 марта 2018 г. с сайта https://stackoverflow.com/questions/33947823/what-is-semantic-segmentation-compared-to-segmentation-and-scene-labeling
  2. Ю. Ф., и Колтун В. (2015). Многомасштабная агрегация контекста с помощью расширенных сверток. Препринт arXiv arXiv: 1511.07122.
  3. Руководство по семантической сегментации с глубоким обучением 2017 г. (2017). Blog.qure.ai. Получено 12 марта 2018 г. с сайта http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review#dilation.
  4. sklearn.utils.shuffle - документация scikit-learn 0.19.1. (2018). Scikit-learn.org. Получено 12 марта 2018 г. с сайта http://scikit-learn.org/stable/modules/generated/sklearn.utils.shuffle.html.
  5. Семантическая сегментация изображений с DeepLab в Tensorflow. (2018). Блог исследований. Получено 12 марта 2018 г. с сайта https://research.googleblog.com/2018/03/semantic-image-segmentation-with.html.
  6. Отмена компьютерной томографии с использованием NN с интерактивным кодом - Часть 3, Сверточные остаточные нейронные сети…. (2018). К науке о данных. Получено 12 марта 2018 г. с сайта https://towardsdatascience.com/denosing-lung-ct-scans-using-neural-networks-with-interactive-code-part-3-convolutional-residual-6dbb36b28be.
  7. Понимание операции двумерной расширенной свертки с примерами в Numpy и Tensorflow с…. (2018). К науке о данных. Получено 12 марта 2018 г. с сайта https://towardsdatascience.com/understanding-2d-dilated-convolution-operation-with-examples-in-numpy-and-tensorflow-with-d376b3972b25.
  8. Ю. Ф., и Колтун В. (2015). Многомасштабное агрегирование контекста с помощью расширенных сверток. Arxiv.org. Получено 12 марта 2018 г. с сайта https://arxiv.org/abs/1511.07122.
  9. tf.nn.conv2d_backprop_filter | TensorFlow. (2018). TensorFlow. Получено 12 марта 2018 г. с сайта https://www.tensorflow.org/api_docs/python/tf/nn/conv2d_backprop_filter.
  10. tf.nn.conv2d_backprop_input | TensorFlow. (2018). TensorFlow. Получено 12 марта 2018 г. с сайта https://www.tensorflow.org/api_docs/python/tf/nn/conv2d_backprop_input.
  11. Only Numpy: расширенное обратное распространение и градиентный шум Google Brain с интерактивным кодом. (2018). Хакерский полдень. Получено 12 марта 2018 г. с сайта https://hackernoon.com/only-numpy-dilated-back-propagation-and-google-brains-gradient-noise-with-interactive-code-3a527fc8003c.
  12. ценности ?, Х. (2018). Как получить размеры (форму) тензорного потока Tensorflow в виде значений типа int ?. Stackoverflow.com. Получено 13 марта 2018 г. из https://stackoverflow.com/questions/40666316/how-to-get-tensorflow-tensor-dimensions-shape-as-int-values.