|
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 21
|
|
Сверточная Нейронная Сеть, Слой C3 (от слоя субдискретизации до слоя сверкти)09.08.2015, 09:51. Показов 3792. Ответов 7
Метки нет (Все метки)
Здравствуйте!
Построение слоев C1, S2,S4 идет в итерративном режиме. Сначала строим слой C1, проходим слева направо на 1 сдвиг (байс) рецептивным полем размером 5*5 по входному изображению MNIST цифры и применяем операцию свертки, так же пропускаем результат с байсом через функцию активации (сигмоидальная функция). Причем используем 6 случайно сгенерироваанных ядер свертки с небольшими значениями для построения каждой карт признаков (одно ядро на каждую карту признаков). Далее применяем операцию субдискретизации, так же проходим рецептивным полем по всему изображению карты признаков, но вместо операции свертки выбираем максимальный элемент из рецептивного поля размера 2*2 и записываем его в i,j позицию текущей обрабатываемой карты признака. В итоге получем 6 карт признаков. Но далее для построения слоя C3 используется таблица связей. 1,2,3 карты признаков из слоя S2 связаны с 1-ой картой призанков слоя С3, 1,2,3,4,5,6 карты призанков связаны с 16 картой признако слоя C3. Мне не понятно что подразумевается под связанностью, здесь http://dap.vsb.cz/wsc17conf/Me... ion_59.pdf на 3-ей странице написано, что "As shown in table 1 the choice is made not to connect every feature map of S2 to every feature map of C3. Each unit of C3 is connected to several receptive fields at identical locations in a subset of feature maps of S2", Как показано в таблице 1 выбор основывается на том чтобы не соединять каждую карту признаков слоя S2 с каждой картой признаков слоя C3. Каждый юнит C3 соединен с несколькими рецептивными полями в идентичных позициях поднабора карт призанков слоя C2. Наверное под "юнитами" подразумевают карты признаков? И получается, что если мы хотим построить первую карту признаков слоя C3, нужно применить операцию свертки над 1,2,3 картами признаков слоя S2. Выходит что тогда мы получим целых 3 новых карт признаков, что уже неправильно. В описание выше сказано что соеденияют несколько рецептивных полей из поднабора слоя C2. Выходит чтобы построить первую карту признаков слоя C3, смотрим на таблицу связей видим что 1,2,3 карты признаков слоя S2 соединены с первой картой признаков слоя C3. Занчит распологаем каждое рецептивное поле на каждую карту признаков в итоге получим 3 рецептивных поля размера 5*5, что в итоге даст всего 3 пикселя, что никак не 10*10 пикселей. Допустим 16 карта признаков слоя С3 уже связана со всеми картами признаков слоя S2, что даст 6 рецептивных полей и в процессе сверкти даст только 6 пикселей. Не очень понятно что интерпритируют под связями в этой таблице и как определять в каких именно одинаковых позициях должны распологаться рецептивные поля. Так же не очень понятно сколько именно ядер свертки нужно использовать на слое C3, опять нужно сгенерировать 16 случайных ядер сверкти размером 5*5 с маленькими значениями, как на слое C1? Не могли бы вы подсказать, может где нибудь доступен визуализатор сверточной нейронной сети (LeNet5), чтобы можно было наглядно понять как работает каждый слой этой сети. Ранее для Алгоритма Ахо-Корасик находил хороший визуализатор https://www.youtube.com/watch?v=d24CyiU1JFk сразу можно было переходить к его программированию, так как наглядно было показана его работа. Для сверточных нейронных сетей подобных визуализаторов не встерчал, что усложняет понимание работы его слоев и прямого перехода к его программированию. Заранее Вам спасибо! Рисунок 1 Сверточная нейронная сеть LeNet5, для определения MNIST цифр Рисунок 2 Построение слоя C1, двигаем рецептивное окно 5*5 слево направо на 1 пиксель (байс) по всему изобраежнию 32*32 Рисунок 3 Построение слоя S2, применение операции Max Pooling, выбор максимума из рецептивного окна 2*2, сдвиг на 1 пиксель Рисунко 4 Таблица связей между слоем S2 и C3. Пример 10 карта призанков слоя C3 соединена с 1,4,5,6 картами призанков слоя S2
0
|
|
| 09.08.2015, 09:51 | |
|
Ответы с готовыми решениями:
7
Сверточная нейронная сеть
|
|
2611 / 1624 / 264
Регистрация: 19.02.2010
Сообщений: 4,304
|
||||
| 09.08.2015, 21:46 | ||||
|
Результаты этих свёрток нейроном суммируются, добавляется ЕДИНСТВЕННОЕ (а не по числу связей с картами из S2) смещение. Т.е., фактически, связи сумматора нейрона не образуют одно локальное окно 5*5 - они образуют несколько окон, берущих сигналы из разных источников. Будет столько блоков весов длиной 5*5=25 компонент, сколько крестиков-галочек в таблице. Эти блоки будут неравномерно раскиданы по нейронам карт C3 (у какой-то карты/нейрона будет 3 блока, у кого-то 4, у последнего - 6). Ну и, вообще-то, сами исходные авторы (ЛеКун и др, а не пересказчики в статье по Вашей ссылке) затем преимущественно отказались от такого геморроя со связями между С2 и S3, ибо пользы не видно.
1
|
||||
|
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 21
|
|
| 10.08.2015, 09:35 [ТС] | |
|
VTsaregorodtsev, Спасибо Вам за ответ! Но допустим если нужно построить первую карту признаков слоя C3, она соединена с 1,2,3 картами признаков слоя S2. Вы говорили, что "У нейрона в C3 столько рецептивных полей 5*5 (с РАЗНЫМИ весами), со сколькими картами из S2 он соединён (ну, или соединена С3, что без разницы)." Получается что у первой карты признаков слоя C3 всего 3 рецептивных поля 5*5. Но размер всех 16 карт слоя С3 10*10. 3 рецептивных поля расположенных в разных местах одной карты признака слоя S2, дадут всего 3 нейрона и 3 пикселя, но не 10*10. Этого не достатчоно чтобы построить карту признака. То есть всего 100 нейронов и 100 рецептивных полей размера 5*5 для каждой карты признаков слоя С3 (В каждом ряду 10 рецептивных полей 5*5. В итоге 10 рядов с 10 рецептивными полями размера 5*5. Чтобы построить одну карту признака в слое С3). Пожалуйста подскажите, что я не так понял. Заранее спасибо!
0
|
|
|
2611 / 1624 / 264
Регистрация: 19.02.2010
Сообщений: 4,304
|
|||
| 12.08.2015, 21:59 | |||
|
А в одних и тех же местах разных карт (первой-третьей) слоя S2. Уж извините - но у Вас просто первый рисунок кривой (он, правда, был кривым и в исходной статье 1998г - а затем многократно перепечатывался без изменений) - там недостаточно полно связи между S2 и С3 нарисованы. Но, тем не менее, текст всё описывает правильно. Переводим указанное Вами английское преложение Размер карт в S2 - 14*14. При смещении рецептивного поля размером 5*5 с шагом в 1 сигнал=элемент - у этого поля возможно 10*10 позиций (вот и получается размер карт С3). Просто нейрон из С3 получает сигналы не с одной карты предыдущего слоя - а с нескольких из них (но получает сигналы в одних и тех же координатах-позициях со всех карт).
1
|
|||
|
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 1
|
|
| 18.12.2015, 07:20 | |
|
VTsaregorodtsev, Здравствуйте! Можно Вас спросить, если в слое C3 необходимо построить допустим 1-ю карту признака. Все карты признаков в слое C3 размера 10*10, размер рецептивного поля 5*5. Это значит что нужно данным рецптивным полем, полностью пройтись по всей карте признаков слоя S2, чтобы получить карту признака размера 10*10. По тому же прицнципу, когда мы строили 6 карт слоя C1 с 6-ью разными фильтрами для каждой карты отдельно. Но в таблице связей для первой карты признаков C3, значятся 1, 2, 3 карты S2. Значит что мы получаем сигналы с рецептивных полей размера 5*5 1-ой, 2-ой, 3-ей карты признаков, но опять же этого не достаточно чтобы получить карту размера 10*10, так как мы получим карту размера 3*1. Ведь согласно таблицы надо брать значения из 3 рецептивных полей 1-ой, 2-ой, 3-ей карт признаков и применять к ним операцию сверкти, что на выходе даст всего 3 пикселя(карту размера 3*1), что уже никак не достаточно чтобы получить размер 10*10. Или надо понимать это так, допустим из 1-ой карты признаков мы берем 98 окон размера 5*5 из 2-ой 1 окно из 3-ей 1 окно, чтобы получить размер 10*10, но тогда это будет неправильно так как надо брать окна из идентичных позиции. Можно ли использовать одну матрицу весов (фильтр) для построения всех 16 карт слоя C3 или нужно использовать 16 разных фильторов? Заранее Вам спасибо!
0
|
|
|
2611 / 1624 / 264
Регистрация: 19.02.2010
Сообщений: 4,304
|
||
| 20.12.2015, 21:53 | ||
|
Но если все остальные веса в сети (и в предыдущих, и в последующих слоях) разные - то тут можно воткнуть и одинаковые. Только зачем? Никакой пользы для обучения они не принесут. По поводу остального - перечитывайте мои посты в этой теме.
2
|
||
|
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 21
|
|
| 22.12.2015, 20:59 [ТС] | |
|
VTsaregorodtsev,Спасибо! Я понял. Так как в слое C3 используется матрица смежности, то допустим чтобы построить 1 карту признака C3 надо применить операцию свертки над 1-ой, 2-ой, 3-ей картой признаков слоя S2, это даст нам 3 карты признаков размера 10*10, затем их надо сложить между собой, чтобы получить одну карту признака размера 10*10. И так далее мы будем повторять эту операцию итеративно пока не обработаем все карты признаков из матрицы смежности. Исходя из этого в C3 мы будем использовать целых 60 ядер (матриц), так как всего в матрице смежности 6 карт признаков (карты 1-6) образованных из 3 карт признаков предыдущего слоя, 9 карт признаков (карты 7-15) образованные из 4 карт признаков предыдущего слоя, 1 карты признака (карта 16) образованная из 6 карт признаков предыдущего слоя. Размер рецептивного поля 5*5(25 значение весов), в итоге получем (18*25)+(36*25)+(6*25)=450+900+150=1500+ 16(по одному байесу(сдвигу) на одну карту признаков. Всего получилось 1516 обучаемых весов (Картинка 1, с заголовком LeNet 5, Layer C3). Тот же принцип в слое С5, но там уже нету мартицы смежности так как весь набор для каждой из 120 карт признаков образован всеми картами предыдущего слоя S4, чтобы построить 1 карту признаокв из 120 слоя C5, надо применить операцию сверкти ко всем 16 картам C3, и сложить их чтобы получить одну карту признака слоя C5. Значит что для построения для каждой карты из 120 мы будем использовать 16 ядер размером 5*5 всего будет 1920 ядер сверкти (16*120), значит весов будет 48000+120 (по 1 байсу сдвигу на каждую из 120 карт признаков. 1920*25=48000. В итоге 48120 обучаемых весов. (Картинка 2, с заголовком LeNet 5, Layer S4)
Но теперь мне не очень понятно как построить слой F6, RBF(Output). Пока я понял что на F6 надо подать 10 картинок из MNIST, это так называемые идеальные образы цифр (0,2,3,4,5,6,7,8,9) они состоят из картинок размера 7*12(7*12=84 пикселя). А слой RBF это просто Эвклидовое расстояние между идеальным образом и полученным выходом сети и вычисляется по формуле (Картинка 3, с идеальным образом цифры 0). Но раз мы на слой F6 подаем исключительно идеальные образы, то что же нужно делать со 120 картами признаками слоя C5, их же нельзя вставлять в слой F6, или в данном случае в F6 веса это и есть значения идеальных образов, а инпуты это значения 120 карт признаков C5? Просто визуально я представляю соединения между C5 и F6 так, но в таком случае я ошибся, так как идеальные образы мы будем подавать в F6, а в RBF (Output) вычитывать разницу между выходами F6 и C5? Не могли бы Вы сказать правильно ли я понял (Картинка 4, Нарисованные связи, сежду слоями C5,F6,Output (RBF))? Заранее Вам спасибо! P.S. Не могли бы Вы подсказать, можно ли где нибудь посмотреть reference implementation LeNet-5, без Алгоритма обучения чтобы допустим я смог сравнить выходы моей сети (Кода) при таких же весах и входных данных у справочной реализации. Чтобы быть уверенным что мой общий каркас работает правильно, прежде чем переходить к процессу обучения. Либо может где нибудь есть тестовые векторы и значения выходов на каждом слое, потому что в интернете большинство реализации LeNet-5 написанные очень мудренно с использованием сторонних библиотек, даже не видно в коде как можно просто предоставить веса, тестовую картинку с цифрой и получить значения выходов. Заранее Вам спасибо!
0
|
|
|
2611 / 1624 / 264
Регистрация: 19.02.2010
Сообщений: 4,304
|
|||
| 23.12.2015, 23:54 | |||
|
Если почитаете другие статьи - никто (повторяю, НИКТО) больше так не делал для какой-то иной задачи, да и для задачи MNIST тоже не увлекались повторением. В общем, ставьте обычные слои сигмоидных нейронов (один или несколько "скрытых" и выходной тоже сигмоидный или без нелинейности). Т.е. две особенности LeNet5 ("идеальные образы" внутри сети и не полностью заполненная "галочками" матрица смежности при связывании С3 с S2) я бы не рекомендовал повторять - это только лишние проблемы при проектировании-написании-отладке кода, а практической пользы не видно.
1
|
|||
| 23.12.2015, 23:54 | |
|
Помогаю со студенческими работами здесь
8
Сверточная нейронная сеть Сверточная нейронная сеть (CNN) - нужен пример Сверточная нейронная сеть (CNN) - нужен пример в ООП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub
Примеры вызова:
# Указанная валюта 'EUR'
floatrates-rub -Code 'EUR'
# Список имеющихся кодов валют
floatrates-rub -Available
function floatrates-rub {
|
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5
Примеры вызова
Get-WeatherRP5rss
с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
|
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr
Примеры вызова:
Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
|
|
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют
function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) {
$url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js'
$data = Invoke-RestMethod -Uri $url
$esc = 27
. . .
|
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений
Всем привет. А вот мой компьютер, переделанный из ноутбука.
Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
|
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
|
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца:
Хочу еще Симбу взять, очень нравится. . .
|
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
|