![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
ColdDeath |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.8.2009 Репутация: нет Всего: нет |
Пробую реализовать нейронную сеть Кохонена на C# на простом примере - распознавания образов, а конкретно 6 цифр: 0, 1, 2, 3, 4, 5.
Одно из описаний алгоритма работы сети Кохонена представлено здесь: http://gorbachenko.self-organization.ru/ar...anizing_map.pdf Реализую сеть следующим образом: Описываю 2 класса: - класс описания нейрона, который содержит такие параметры как: порядковый номер нейрона, массив его весов. При создании экцемпляра класса, необходимо конструктору указать, соответственно, порядковый номер нейрона и количество входов (весов). Веса будут назначены случайным образом в диапазоне от 0.0 до 1.0. - класс описания сети Кохонена, включающей в себя количество входов, массив нейронов (экземпляров первого класса). Как я уже писал ранее, для начала, я хочу отладить нейронную сеть на распознавании образов (картинок) изображений, соответствующих 6-ти цифрам. Размер каждого изображения 45*45 Для этого, я беру изображения каждой цифры и преобразую их в вектор (массив) длинной 2045.
Далее, создаю структуру необученной нейронной сети:
Исполняю функцию обучения:
Выдаю результат:
В результате я вывожу на каждой итерации Евклидово расстояние между каждым нейроном, соответствующим своему входному вектору. Так я хочу, увидеть, действительно ли веса нейроном подстроились согласно входным векторам. Но результаты выводятся несоответствующие ожиданиям. Когда происходит подстройка весов определенно нейрона, сильно искажаются ранее подстроенные веса других нейронов. Я полагаю, что проблема может быть либо в какой-то части реализации алгоритма обучения, либо конкретно в функции соседства hc. Привожу код проекта:
Файл проекта находится во вложении. Готовые библиотеки не хочу использовать, так как хочу понять как самому реализовать. Очень прошу, те кто знакомы с нейронными сетями, укажите, пожалуйста, на ошибку. |
||||||||||
|
|||||||||||
Агрох |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Лень читать про сети Кохонена, поэтому просто спрошу:
Являются ли они обучаемыми без учителя? Насколько я помню, для обучения любой сети требуется обучающая группа и контрольная группа. В вашем случае это хотя бы по 5 картинок обучающей группы, с немного отличающимися друг от друга изображениями всех цифр и ещё по 1-2 в контрольной группе, так же немного отличных друг от друга и от соответствующих картинок из группы для обучения. Если этого нет, то вы сможете в лучшем случае обучить сеть распознавать по одному конкретному изображению каждой цифры. Шаг влево, шаг вправо и уже не распознается. Например, при наличии "мусора" в изображении, или если изображение будет сдвинуто (не ровно по центру, как при обучении, а чуть чуть левее). Самыми проблемными в вашем примере являются цифры 2, 3, 5, которые могут распознаваться непредсказуемо, т.е. цифра 2 иногда будет распознаваться как 5 или 3 и наоборот. --------------------
Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
prog2013 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 16.11.2013 Репутация: нет Всего: нет |
> Когда происходит подстройка весов определенно нейрона, сильно искажаются ранее подстроенные веса других нейронов...
Я тоже скажу лишь как теоретик, в целом они и должны меняться. Они же в коллективе работают - в этом суть нейронных сетей. Вопрос лишь нет ли ошибки в программе. |
|||
|
||||
Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: нет Всего: 17 |
Тема еще жива?
Если автор откликнется, могу попробовать помочь. -------------------- Mirkes |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |