![]() |
|
Модераторы: Rickert |
![]()
|
|
| User008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
Как можно хорошо реализовать распознавание символов для картинки, размером, например 50х50?
Необязательно, чтобы работал очень быстро или сверхточно, хорошо бы по обоим критериям получить удовлетворительные результаты. Это обычно реализуется многослойным персептроном? 1) Сколько слоёв по сколько нейронов использовать? 2) Что даёт использование нескольких слоёв в распознавании образов? На примере xor понятно, что без второго слоя задача не решается, а что дают дополнительные слои при распознавании образов? 3) Как выход выражает результат? Допустим, для 10 цифр, вроде бы достаточно 4 бит, но может из-за того что некоторые биты принимают значение 1 чаще при выражении 10 цифр в двоичной системе, лучше сделать 10 нейронов, один из которых будет в ответе 1, остальные 0? Также непонятно, что делать с тем, что выход нейрона крайнего слоя не обязан быть целым числом? Это сообщение отредактировал(а) User008 - 13.8.2012, 20:21 |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: нет Всего: 17 |
Зависит исключительно от задачи. Как правило одного скрытого слоя хватает. Как-то сформулировали, но поленились доказывать теорему о достаточности одного скрытого слоя Число слоев задает степень нелинейности. Если у вас можно обойтись без скрытых слоев - используйте k-means. Быстрее и проще. Есть целая теория об интерпретации выходных сигналов. Например тут Часто для предварительной обработки (снятия искажений и т.п.) используют сети Хопфилда. Успехов. Это сообщение отредактировал(а) Mirkes - 10.9.2012, 09:20 -------------------- Mirkes |
|||
|
||||
| OlegDorozhko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 11.9.2012 Репутация: нет Всего: нет |
Допустим, у вас есть две последовательности чисел
10, 20, 30, 40, 50 и 11, 19, 30, 44, 50 Эти последовательности при отображении, скажем на графике дадут примерно подобные линии Вопрос, как запрограммировать программу, чтобы она эти две последовательности посчитала равными? На помощь придет объект Cell - ячейка и такая присказка: у любой ячейки есть и начало и конец. Итак, объект Cell имеет два поля s и f Создаем 5 объектов Cell на основе первой последовательности Вот они: [10,10][20,20][30,30][40,40][50,50] Объект Cell также имеет метод eql, который возвращает истину, если входной параметр помещается между граничными значения s и f (включительно) Таким образом, после инициализации 5 ячеек первой последовательностью и сравнении в цикле этих ячеек с каждым элементом второй последовательности получим 40% совпадение между двумя последовательностями. Но что будет, если под чутким руководством оператора, одна из ячеек изменит свое значение? [10,11] <- эта [20,20][30,30][40,40][50,50] Теперь при сравнении в цикле этих ячеек с каждым элементом второй последовательности получим уже 60% совпадение между двумя последовательностями. Такое изменение возможно при вызове метода learning нашего объекта Cell. В этом методе входной параметр сравнивается с граничными условиями и если он меньше s то s присваивается входной параметр. Если он больше f то f присваивается входной параметр. Так происходит обучение ячейки на распознавание близко лежащих значений. Обучив все ячейки добиваемся 100% результата распознавания наших двух последовательностей, как похожих между собой. Более того, если подать на вход третью подобную последовательность то также получим результат близкий к 100% Состояние ячеек после обучения можно сохранять, за это и другие операции с нашими ячейками отвечает объект CellsManager. Это: первичная инициализация ячеек, сравнение входящего образца с ячейками, обучение ячеек и сохранение обученных ячеек. Используя классы CellsManager и Cell я написал простенькую обучаемую программу распознавания речи. (разместил ее на sourceforge.net) Подобная программная конструкция может оказаться весьма полезной при разработке программ распознавания образов |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |