Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Scriptozaur
2 / 2 / 4
Регистрация: 11.10.2015
Сообщений: 150
1

Нейронные сети и распознавание картинок

09.09.2016, 10:36. Просмотров 1960. Ответов 6
Метки нет (Все метки)

Недавно увлекся нейронными сетями, очень интересно стало. Написал их уже несколько, в том числе и для распознавания цифр, нарисованных на картинке, писал не на C++, но это не принципиаьно. Собственно вопрос: как создать нейронную сеть, которая сможет распознавать цифры даже если они, скажем, перевернуты или сдвинуты? Если использовать старый алгоритм (если не ошибаюсь, то это однослойный персептрон Кохонена или что-то вроде этого), то в нейронах данные наслоятся и ничего работать не будет. Поэтому сеть нужно писать как-то иначе. Прошу объяснить алгоритм для распознавания таких картинок, которые перевернуты или растянуты/передвинуты.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2016, 10:36
Ответы с готовыми решениями:

Нейронные сети и распознавание речи C++ и Java
Здравствуйте. Я обладаю некоторыми навыками в программировании на языках C++ и...

Нейронные сети (адаптивные сети)
нужен исходник 3д или 2д адаптивной сетки для небольшого использования в своей...

Нейронные сети
Добрый вечер, товарищи. Прошу у вас помощи по нейронным сетям. Есть...

Нейронные сети
Добрый вечер! Можете подсказать где есть много примеров по нейронным сетям...?...

Нейронные сети
Недавно открыл для себя тему нейросетей, и хотел бы спросить ресурс где бы я...

6
VTsaregorodtsev
538 / 494 / 69
Регистрация: 19.02.2010
Сообщений: 1,813
11.09.2016, 21:27 2
Вариантов - куча.

1. Нужны специальные нейросети - когнитрон, неокогнитрон, ну или свёрточная (она - из современных, а не >30-40летней давности).

2. Можно перед обучением пополнить обучающую выборку специально сгенерированными "искажёнными" образами - сдвинутыми, повёрнутыми на некоторый угол, изменёнными в размерах,... Чтобы нейросетка явно видела, с чем (с какими вариациями) ей нужно будет иметь дело.

3. Нужно использовать специальную предобработку, инвариантную к тем или иным искажениям образа. Например, сдвиговый автокоррелятор или двумерные преобразования Фурье/Радона - результаты будут инвариантны к сдвигам и их можно будет совать нейросети. Естественно, по одинаковой схеме придётся предобрабатывать как обучающие, так и тестовые образы-картинки.
0
Scriptozaur
2 / 2 / 4
Регистрация: 11.10.2015
Сообщений: 150
11.09.2016, 21:55  [ТС] 3
VTsaregorodtsev, Я уже понял, что дело в том, что моя сеть имеет всего 2 слоя: входной и выходной, скрытого нет, но теперь, прочитав немного материала, у меня есть новая проблема: я не понимаю, как обучать 3-слойную нейросеть. Раз уж вы шарите в этом деле, то объясните алгоритм, а лучше код напишите, как правильно обучать трехслойную сеть.
0
VTsaregorodtsev
538 / 494 / 69
Регистрация: 19.02.2010
Сообщений: 1,813
11.09.2016, 22:16 4
Трёхслойных (и с бОльшим числом слоёв) нейросетей - вагон и маленькая тележка.
Какую сеть Вам нужно (или какую Вы имели в виду) - мне неизвестно.
В телепата/нострадамуса я играть не собираюсь.
Объяснять или код писать - тоже. Я отметился в теме как знающий - и всё, "экипаж воздушного судна прощается с пассажирами и желает им приятного полёта".
{deleted}
0
Scriptozaur
2 / 2 / 4
Регистрация: 11.10.2015
Сообщений: 150
13.09.2016, 08:45  [ТС] 5
Какие еще есть способы обучения сетей кроме обратного распространения ошибки? А то с этим черт ногу сломит
0
andreyfreelans
417 / 66 / 30
Регистрация: 21.02.2011
Сообщений: 2,577
13.09.2016, 09:49 6
Чем вам не нравится ОРО? Алгоритм обучения нужно выбирать исходя из вашей сети. И не путайте, ОРО это метод обучения сетей. Способов обучения всего три - это Обучение с учителем, Обучение без учителя, Обучение с подкреплением. Если уж говорить про методы, то подойдут алгоритмы методов оптимизации - метод градиентного спуска например.
0
Scriptozaur
2 / 2 / 4
Регистрация: 11.10.2015
Сообщений: 150
13.09.2016, 12:58  [ТС] 7
dogg12, ладно, не способ, а метод. Я не понимаю, как нужно писать ОРО. У меня есть 3 слоя нейронов. Запускаю функцию изменения весов связей с параметром output - массивом, который должен получаться на выходе. Расскажите, как и исходя из чего нужно изменять связи каждого слоя.
0
13.09.2016, 12:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2016, 12:58

Книги по С++ и нейронные сети
Уважаемые форумчане, может кто посоветовать книги (или статьи в интернете) по...

Нейронные сети(персептрон)
Привет всем. Недавно начал изучать нейронные сети. Понравилось, очень...

Нейронные сети. Перцептрон Розенблата
Здравствуйте! Помогите разобраться в коде (напишите комментарии). Уже несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru