Функция извлечения с использованием сверточной нейронной сети? - PullRequest
0 голосов
/ 05 декабря 2011

У меня проблема с распознаванием цифр. В части извлечения функций мне нужно использовать некоторые сверточные маски (например, рисунок 4.23 в этой ссылке ), чтобы получить карты функций и ВЫХОД. Тем не менее, я не знаю, какие маски мне нужны и как получить маску? (В некоторых статьях, возможно, они использовали Back-Propagation, но я не знаю, как его использовать). Можете ли вы показать мне некоторые маски, используемые в этой части, или как их получить? Большое спасибо! Любое предложение приветствуется!

Ответы [ 2 ]

0 голосов
/ 12 июня 2017

В CNN у вас обычно есть 2D-изображение в качестве входных данных, скажем, черно-белое 28x28x1 (горизонтальное, вертикальное, каналы) число, как в MNIST.

Затем вы создаете 2-мерное ядро ​​(например, ядро ​​3х3), которое скользит по пикселям входного изображения с определенным шагом (на сколько пикселей оно перемещается по горизонтали / вертикали на каждом шаге) и padding (сколько пикселей со значением 0 добавить ко всем сторонам, чтобы иметь скользящий центр ядра, чтобы иметь возможность покрывать каждый пиксель изображения при достижении его границ).

Давайте скажем используемое Ядро = 3х3, Заполнение = 1, Страйд = 1.

Это ядро, примененное в свертке при скольжении, также будет генерировать изображение 28x28, где каждый пиксель является сверткой ядра с другой областью входного изображения.

Если вместо одного ядра вы создадите 16 из них, то после свертки вы получите 16 изображений размером 28x28, каждое из которых представляет свой «шаблон» изображения. «Шаблон» - это то, что находится внутри каждого ядра.

CNN посредством обратного распространения в контролируемом обучении автоматически изучит значения, которые должны быть помещены в каждое ядро. Например, одно ядро ​​может иметь формат

000
111
000

означает, что он обнаружит горизонтальные линии.

Я думаю, что ядро ​​- это то, что вы называете mask .

Наконец, все 16 изображений 28x28 можно объединить, чтобы сформировать некоторые элементы , которые можно использовать в качестве входных данных полностью подключенного слоя для получения выходных данных классификации.

Обратите внимание, что это объяснение довольно упрощенное, поскольку оно пропускает некоторые отрывки (глубокие свертки, объединение и т. Д.), Но я надеюсь, что этого будет достаточно для ваших сомнений.

0 голосов
/ 05 декабря 2011

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

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...