Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
3. Работа со структурой.
4. Инициация редактора предобработчика.
5. Обработка ошибок.
Поскольку нейрокомпьютер может работать одновременно с несколькими сетями, то и компонент предобработчик должна иметь возможность одновременной работы с несколькими предобработчиками. Поэтому большинство запросов к предобработчику содержат явное указание имени предобработчика. Ниже приведено описание всех запросов к компоненту предобработчик. Каждый запрос является логической функцией, возвращающей значение истина, если запрос выполнен успешно, и ложь — при ошибочном завершении исполнения запроса.
В запросах второй и третьей группы при обращении к частным интерпретаторам используется следующий синтаксис:
<Полное имя частного интерпретатора>::= <Имя интерпретатора>.
<Псевдоним частного интерпретатора> [[<Номер экземпляра>]]
При вызове ряда запросов используются предопределенные константы. Их значения приведены в табл. 23.
Таблица 23. Значения предопределенных констант компонента предобработчик
Название Значение Значение BinaryPrep 0 Стандартный предобработчик бинарных признаков UnOrdered 1 Стандартный предобработчик неупорядоченных качественных признаков Ordered 2 Стандартный предобработчик упорядоченных качественных признаков. EmptyPrep 3 Стандартный простейший предобработчик ModPrep 4 Стандартный модулярный предобработчик FuncPrep 5 Стандартный функциональный предобработчик PositPrep 6 Стандартный позиционный предобработчик UserType -1 Предобработчик, определенный пользователем.Запрос на предобработку
Единственный запрос первой группы выполняет основную функцию компонента предобработчик — предобрабатывает входные данные, вычисляя вектор входных сигналов.
Предобработать вектор сигналов (prepare)Описание запроса:
Pascal:
Function Prepare(CompName: PString; Data: PRealArray; Var Signals: PRealArray): Logic;
C:
Logic Prepare(PString CompName, PRealArray Data; PRealArray* Signals)
Описание аргумента:
CompName — указатель на строку символов, содержащую имя предобработчика.
Data — массив входных данных.
Signals — вычисляемый массив входных сигналов.
Назначение — предобрабатывает массив входных данных Data, вычисляя массив входных сигналов Signals используя предобработчик, указанный в параметре CompName.
Описание исполнения.
1. Если Error <> 0, то выполнение запроса прекращается.
2. Если в качестве аргумента CompName дан пустой указатель, или указатель на пустую строку, то исполняющим запрос объектом является текущий предобработчик — первый в списке предобработчиков компонента предобработчик.
3. Если список предобработчиков компонента предобработчик пуст или имя предобработчика, переданное в аргументе CompName в этом списке не найдено, то возникает ошибка 201 — неверное имя предобработчика, управление передается обработчику ошибок, а обработка запроса прекращается.
4. Производится предобработка предобработчиком, имя которого было указано в аргументе CompName.
5. Если во время выполнения запроса возникает ошибка, то генерируется внутренняя ошибка 204 — ошибка предобработки. Управление передается обработчику ошибок. Выполнение запроса прекращается. В противном случае выполнение запроса успешно завершается.
Остальные запросы
Ниже приведен список запросов к компоненту предобработчик, исполнение которых описано в разделе «Общий стандарт»:
prSetCurrent — Сделать предобработчик текущим
prAdd — Добавление нового предобработчика
prDelete — Удаление предобработчика
prWrite — Запись предобработчика
prGetStructNames — Вернуть имена структурных единиц предобработчика
prGetType — Вернуть тип структурной единицы предобработчика
prGetData — Получить параметры предобработчика
prGetName — Получить имена параметров предобработчика
prSetData — Установить параметры предобработчика
prEdit — Редактировать предобработчик
OnError — Установить обработчик ошибок
GetError — Дать номер ошибки
FreeMemory — Освободить память
В запросе prGetType в переменной TypeId возвращается значение одной из предопределенных констант, перечисленных в табл. 23.
Ошибки компонента предобработчик
В табл. 24 приведен полный список ошибок, которые могут возникать при выполнении запросов компонентом предобработчик, и действия стандартного обработчика ошибок.
Таблица 24. Ошибки компонента предобработчик и действия стандартного обработчика ошибок.
№ Название ошибки Стандартная обработка 201 Неверное имя предобработчика Занесение номера в Error 202 Ошибка считывания предобработчика Занесение номера в Error 203 Ошибка сохранения предобработчика Занесение номера в Error 204 Ошибка предобработки Занесение номера в ErrorСтандарт первого уровня компонента сеть
Данный раздел посвящен описанию стандарта хранения компонента сеть на внешних носителях.
Структура компонента
Рассмотрим более подробно структуры данных сети. Как уже было описано ранее, сеть строится иерархически от простых подсетей к сложным. Простейшими подсетями являются элементы. Подсеть каждого уровня имеет свое имя и тип. Существуют следующие типы подсетей: элемент, каскад, слой, цикл с фиксированным числом тактов функционирования и цикл, функционирующий до тех пор, пока не выполнится некоторое условие. Последние четыре типа подсетей будем называть блоками. Имена подсетей определяются при конструировании. В разделе «Имена структурных единиц компонентов» приведены правила построения полного и однозначного имен подсети. В качестве примера рассмотрим сеть, конструирование которой проиллюстрировано в главе «Описание нейронных сетей» на рис. 2. В описании сети NW однозначное имя первого нейрона второго слоя имеет вид K[2].SN.N[1]. При описании слоя однозначное имя первого нейрона записывается как N[1]. В квадратных скобках указываются номер экземпляра подсети, входящей в непосредственно содержащую ее структуру в нескольких экземплярах.
Сигналы и параметры
При использовании контрастирования для изменения структуры сети и значений обучаемых параметров другим компонентам бывает необходим прямой доступ к сигналам и параметрам сети в целом или отдельных ее подсетей. Для адресации входных и выходных сигналов используются имена InSignals и OutSignals, соответственно. Таким образом, для получения массива входных сигналов второго слоя сети, приведенной на рис. 2, необходимо запросить массив NW.K[2].InSignals, а для получения выходного сигнала всей сети можно воспользоваться любым из следующего списка имен:
• NW.OutSignals;
• NW.N.OutSignals.
Для получения конкретного сигнала из массива сигналов необходимо в конце в квадратных скобках указать номер сигнала. Например, для получения третьего входного сигнала второго слоя сети нужно указать следующее имя — NW.K[2].InSignals[3].
Для получения доступа к параметрам нужно указать имя подсети, к чьим параметрам нужен доступ и через точку ключевое слово Parameters. При необходимости получить конкретный параметр, его номер в квадратных скобках записывается после ключевого слова Parameters.
Обучаемые и не обучаемые параметры и сигналы
При обучении параметров и сигналов (использование обучения сигналов описано во введении) возникает необходимость обучать только часть из них. Так, например, при описании обучения персептрона во второй части главы «Описание нейронных сетей» было отмечено, что обучать необходимо только веса связей второго слоя. Для реализации этой возможности используются два массива логических перемен-ных — маска обучаемых параметров и маска обучаемых входных сигналов.