Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diplom1.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2.73 Mб
Скачать

Расчет значений нейронов

  • Входное изображение преобразуется в массив значений. Они заносятся в нейроны Input сети в качестве их значений.

  • Сеть запускает активацию всех слоев последовательно.

  • Нейронный слой запускает функции активации всех нейронов, передавая им ссылки на нейроны предыдущего слоя и на синапсы. Функция активации нейрона выбирается в соответствии со слоем.

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

  • Для S-слоя вначале считаются значения V-нейронов, а затем с их использованием – значения остальных нейронов.

Обработка данных

  • Входное изображение в формате RGB переводится в grayscale, затем преобразуется в массив чисел со значениями в интервале [0, 1]:

sample[j*image.width()+i] = (255-qGray(image.pixel(i, j)))/255

  • Значение нейронов слоя распечатывается в виде изображений, полученных обратным преобразованием:

255-100*((float)this->neurons[k* NX* NY+i* NY+j].getValue()/abs)

abs – нормализующее значение, является максимальным значением нейрона, для попадания в интервал [0,1].

Обучение слоя s1 сети с учителем

  • Перед обучением генерируются обучающие примеры: горизонтальный отрезок, повернутый под разными углами на белом фоне. Отрезок на примере k повернут на угол (180o/K), где K – количество плоскостей на слое S1. Количество примеров равно K.

  • Обучение выполняется для каждой плоскости слоя S1.

    • На вход подается обучающий пример (в виде двумерного массива значений) и номер k обучаемой плоскости, а также константа скорости обучения.

    • Значения заносятся в массив input.

    • Активируются слои C0 и Sl.

    • Для слоя Sl вызывается функция обучения с учителем, куда передается ссылка на слой C0.

    • Среди нейронов поданного слоя C0 выбираются нейроны с максимальным значением (лежащие на отрезке), из них берется случайный нейрон (для правильной формы окружения это центральный нейрон либо его ближайшие соседи). От его координаты (i1, j1) отсчитываются координаты зерна с учетом сдвига слоев друг относительно друга: (i1+rc+rs-1; j1+rc+rs-1). rc – радиус окружения на слое C0, rs – радиус окружения слоя S1. Номер k обучаемой плоскости берется из параметров функции.

    • Для зерна с найденными координатами (i0; j0; k0) применяется функция изменения весов. Веса синапсов, соответствующих этой плоскости, изменяются по формуле изменения весов, затем рассчитывается значение веса bk подавляющей связи этой плоскости.

Обучение слоя Sl без учителя

  • На вход сети передается обучающий пример в виде двумерного массива значений и константы скорости q и q2; q соответствует обучению нейрона-победителя, а q2 используется для обучения плоскостей, где нет нейронов-победителей. Иногда q2 берется равной 0 (это увеличивает специализацию нейронов, но убирает вероятность того, что сеть, не имеющая достаточной дифференциации значений сможет начать обучение).

  • В массив input заносятся входные данные.

  • Последовательно активируются слои сети начиная с C0 и заканчивая Sl. Для слоя Sl вызывается функция обучения без учителя.

  • В цикле для всех плоскостей слоя производится процесс поиска нейрона-победителя.

    • Все нейроны плоскости k проверяются на право быть кандидатом в победители: если нейрон имеет максимальное значение в своей конкурентной области, он попадает в список maxResponse.

    • Из списка maxResponse выбирается максимальный элемент; он заносится в список seeds в качестве элемента k. Если maxResponse пуст, seeds[k]=-1. Если найдено два равных кандидата, в seeds может быть занесен любой из них.

  • Для всех элементов массива seeds выполняется процедура обучения:

  • Если элемент seeds[k]≥0 , производится обучение нейрона плоскости k с этим номером. Для обучения берется константа скорости q.

  • Если элемент seeds[k]=-1, обучается центральный нейрон плоскости k, скорость обучения берется равной q2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]