предисловие
Развитие сверточных нейронных сетей в основном направлено на решение задач человеческого зрения, но сейчас оно используется и в других направлениях. Процесс разработки в основном идет от Lenet5->Alexnet->VGG->GooLenet->ResNet и так далее.
традиционная нейронная сеть
Традиционные слои нейронной сети BP полностью связаны.Для области обработки изображений, когда нейронная сеть обрабатывает большие изображения, полное соединение приведет к обучению очень больших параметров.Например, для изображения в 1 миллион пикселей, для 100 Скрытый слой узла будет генерировать сотни миллионов параметров, если слоев и узлов больше, то количество параметров будет очень большим. Кроме того, традиционные нейронные сети BP не предполагают наличие тесных связей между соседними изображениями. Подводя итог, нейронная сеть BP не подходит для обработки изображений.
Сверточная нейронная сеть
Для того, чтобы уменьшить количество параметров, сначала думают, что можно построить частично связанную нейронную сеть, где каждый нейрон больше не связан со всеми нейронами верхнего слоя, а связан с определенной частью. Кроме того, количество параметров может быть уменьшено за счет распределения веса, когда группа соединений имеет общие веса без необходимости иметь разные веса для каждого соединения. Кроме того, объединение может уменьшить количество выборок на слой, тем самым уменьшив количество параметров. Сочетая в себе вышеперечисленные характеристики, сверточная нейронная сеть является такой сетью.
Посмотрите на схематическую диаграмму сверточной нейронной сети, которая содержит несколько сверточных слоев, объединяющих слоев и полностью связанных слоев. После обработки входного изображения первым слоем свертки получается 4 слоя признаков, почему может быть 4 слоя? Фактически, вы можете настроить 4 разных фильтра для работы с входными данными отдельно и получить 4 уровня функций. Затем слой пула объединяет сверточные функции, чтобы получить меньшие функции, которые также являются 4-слойными функциями после операции. Затем продолжайте делать свертки и пулы в соответствии с фильтром и, наконец, завершайте вывод через два полносвязных слоя.
Визуальное исследование сверточных сетей
На самом деле, иногда нам интересно, как выглядит картинка после прохождения каждого слоя сверточной нейронной сети, и мы хотим понять, что изменилось в этом процессе, в это время мы можем воспользоваться инструментом — Quiver. Это с открытым исходным кодом, а затем на github,GitHub.com/copeland-io/go…. Он может легко исследовать объемы и сети, визуализировать модель в виде веб-браузера и видеть изменения в различных сетевых слоях.
Для удобства непосредственно здесь создается экземпляр модели VGG16. Следующий скрипт загрузит весовые параметры модели VGG16 (сюда автоматически загружаются параметры модели, обученные Imagenet, включая 1000 категорий), общий размер весовых параметров достигает 100 мегабайт, а затем модель загружается в память и создает Служба прослушивает порт 5000.
import keras.applications as apps
from quiver_engine.server import launch
model = apps.vgg16.VGG16()
launch(model, input_folder="data")
Откройте браузер, выберите одно из изображений в качестве входных данных, слева — график сетевой архитектуры, и щелкните разные слои, чтобы просмотреть различные входные данные. На картинке справа мы можем щелкнуть, чтобы выбрать, и тогда приложение автоматически использует его в качестве входных данных, и модель будет предсказывать пять наиболее вероятных результатов на основе этих входных данных. Среди них вы можете увидеть вход 224x224, а это 3 слоя, которые представляют красный, зеленый и синий цвета исходного изображения.
Затем выберите первый сверточный слой, вы можете видеть, что после работы ядра свертки выделяются различные функции.Выдающиеся функции включают в себя различные типы краев, яркость и контрастность и т. д.
Продолжая движение вниз, вы можете видеть, что черты становятся все более и более абстрактными, включая различные текстуры, углы и т. д., и, возможно, глаза и носы.
Переходя к последнему сверточному слою, функции в настоящее время были абстрагированы до такой степени, что мы, люди, больше не можем их понимать, и для нас функции, которые мы видим, не имеют значения. Наконец, пропускается полносвязный слой и получается массив вероятностей, содержащий 1000 элементов, то есть вероятности, соответствующие каждой категории в ImageNet.
------------- Рекомендуем прочитать ------------
Зачем писать «Анализ проектирования ядра Tomcat»
Резюме моей статьи за 2017 год — машинное обучение
Резюме моих статей за 2017 год — Java и промежуточное ПО
Резюме моих статей 2017 года — глубокое обучение
Краткое изложение моих статей за 2017 год — исходный код JDK
Резюме моей статьи за 2017 год — обработка естественного языка
Резюме моих статей 2017 года — Java Concurrency
Поговори со мной, задай мне вопросы:
Добро пожаловать, чтобы следовать: