Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Программная реализация




Рассмотрим вопросы, связанные с программной реализацией многослойной нейронной сети. При написании программы необходимо знать следующие параметры сети:

· количество входов и выходов сети;

· количество скрытых слоев, а также количество и тип нейронов в них.

Т.к. нейроны входного слоя, как правило, не выполняют никаких функций, то их реализация необязательна. Т.е. достаточно считать, что входные сигналы сети совпадают с входными сигналами нейронов первого скрытого слоя, либо, если скрытых слоев нет, со входными сигналами нейронов выходного слоя. Кроме этого, для сети прямого распространения без обратных связей верно следующее:

· все нейроны одного слоя имеют одинаковые входные сигналы;

· входные сигналы слоя (q+1) являются выходными сигналами слоя q.

 

Рис. 6.15. Прямой проход после коррекции весов

Таким образом, каждый нейрон достаточно описать следующими параметрами:

· веса входящих связей (от нейронов предыдущего слоя к данному);

· смещение;

· коэффициент a в активационной функции;

· указатель на массив входных сигналов;

· указатель/ссылка на элемент массива выходных сигналов слоя, которому принадлежит данный нейрон.

Нейронный слой можно считать нейронной сетью без скрытых слоев, поэтому важнейшими характеристиками для него будут:

· число входов – равно числу нейронов в предыдущем слое;

· число выходов – равно числу нейронов в данном слое.

В многослойной сети два смежных слоя (q) и (q+1) имеют один общий массив, который будет содержать выходные сигналы слоя (q) и входные сигналы слоя (q+1). Поэтому целесообразно реализовать этот массив только один раз: либо как массив выходных сигналов слоя (q) (рис. 8.9), либо как массив входных сигналов слоя (q+1) (рис. 6.16, 6.17).

 

Рис. 6.16

 

В случае программной реализации искусственной нейронной сети с использованием объектно-ориентированного подхода можно выделить следующие объекты:

· нейрон;

· нейронный слой;

· нейронная сеть.

При этом класс каждого следующего объекта можно считать производным от класса предыдущего.

 

 

Рис. 6.17

 

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

Например, рассмотренная выше сеть с двумя входами, одним выходом и двумя скрытыми слоями по два нейрона в каждом может быть представлена в виде массива следующим образом (на языке программирования С):

 

double ***net; // массив весов связей сети

net = new double**[3]; // создание указателей на слои

net[0] = new double*[2]; // создание указателей

// на нейроны 1-го слоя

net[1] = new double*[2]; // создание указателей

// на нейроны 2-го слоя

net[2] = new double*[1]; // создание указателей

// на нейроны 3-го слоя

net[0][0] = new double[2]; // создание массива весов

// для 1-го нейрона 1-го слоя

net[0][1] = new double[2]; // создание массива весов

// для 2-го нейрона 1-го слоя

net[1][0] = new double[2]; // создание массива весов

// для 1-го нейрона 2-го слоя

net[1][0] = new double[2]; // создание массива весов

// для 2-го нейрона 2-го слоя

net[2][0] = new double[2]; // создание массива весов

// для 1-го нейрона 3-го слоя

 

Чтение/запись весов осуществляется обращением к массиву следующим образом:

 

double temp = net[0][1][1]; // чтение значения веса 2-го

// сигнала 2-го нейрона 1-го

// слоя

net[1][0][1] = 0.12; // запись (изменение) значения веса

// 2-го сигнала 1-го нейрона 2-го

// слоя

 

Значения смещений можно задавать аналогичным образом через двумерный массив, в котором первый индекс обозначает слой, а второй – нейрон, к которому относится это смещение.


Поделиться:

Дата добавления: 2014-12-23; просмотров: 145; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты