Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
Заголовок функции:
Function Modify(Direct: PRealArray; OldStep, NewStep: Real): Logic;
Описание аргументов
Direct — указатель на массив направления модификации сети.
OldStep — вес старого массива параметров в модифицированном.
NewStep — вес массива направления модификации в модифицированном массиве параметров.
Эта функция генерирует запрос на модификацию параметров сети (см. раздел «Провести обучение (Modify)»). Вызов запроса имеет вид:
Modify(Net, OldStep, NewStep, Tipe, Direct)
Аргументами запроса являются:
Net — указатель на пустую строку (используется сеть по умолчанию).
OldStep, NewStep — аргументы функции.
Tipe — значение аргумента What в запросе InstructionObject.
Direct — аргумент функции.
Аргумент функции Direct может быть пустым указателем. В этом случае для модификации используется массив градиента, хранящийся вместе с сетью. В случае возникновения ошибки в ходе модификации сети (запрос Modify возвращает значение ложь) генерируется внутренняя ошибка 605 — ошибка при исполнении внешнего запроса, управление передается обработчику ошибок, функция возвращает значение ложь. В противном случае возвращается значение истина.
Оптимизация шага (Optimize)Заголовок функции:
Function Optimize (Direct: PRealArray; Step: Real): Real;
Описание аргументов
Direct — указатель на массив направления модификации сети.
Step — начальный шаг в направлении Direct.
Действия, выполняемые функцией Optimize, описаны в разделе «Подбор оптимального шага». В случае возникновения ошибки при выполнении функции она генерирует внутреннюю ошибку 605 — ошибка при исполнении внешнего запроса, передает управление обработчику ошибок, функция возвращает значение 0. В противном случае возвращается значение оценки при оптимальном шаге. Следует отметить, что после завершения выполнения функции, параметры сети соответствуют результату выполнения функции Modify(Direct, 1, Step), где Step — значение оптимального шага.
Сохранить массив (SaveArray)Заголовок функции:
Function SaveArray(Vec: PRealArray): Logic;
Описание аргументов
Vec — указатель на массив.
Функция генерирует запрос nwGetData. После выполнения функции в массиве, на который указывает аргумент Vec, содержится текущий массив параметров. В случае возникновения ошибки в ходе выполнения функции генерируется внутренняя ошибка 605 — ошибка при исполнении внешнего запроса, управление передается обработчику ошибок, функция возвращает значение ложь. В противном случае возвращается значение истина.
Установить параметры (SetArray)Заголовок функции:
Function SetArray(Vec: PRealArray): Logic;
Описание аргументов
Vec — указатель на массив, содержащий параметры, которые необходимо установить.
Функция генерирует запрос nwSetData.После выполнения функции параметры сети совпадают с параметрами, содержащимися в массиве, на который указывает аргумент Vec. В случае возникновения ошибки в ходе выполнения функции генерируется внутренняя ошибка 605 — ошибка при исполнении внешнего запроса, управление передается обработчику ошибок, функция возвращает значение ложь. В противном случае возвращается значение истина.
Вычислить оценку (Estimate)Заголовок функции:
Function Estimate(Handle: Integer; All: Logic): Real;
Описание аргументов
Handle — номер сеанса задачника.
All — признак обучения по всему обучающему множеству.
Функция генерирует запрос к исполнителю на вычисление оценки. Если аргумент All содержит значение истина, то обучение производится по всему обучающему множеству, в противном случае — позадачно. В случае возникновения ошибки при выполнении функции он генерирует внутреннюю ошибку 605 — ошибка при исполнении внешнего запроса, передает управление обработчику ошибок, функция возвращает значение 0. В противном случае возвращается значение вычисленной оценки.
Вычислить градиент (CalcGradient)Заголовок функции:
Function CalcGradient(Handle: Integer; All: Logic): Real;
Описание аргументов
Handle — номер сеанса задачника.
All — признак обучения по всему обучающему множеству.
Функция генерирует запрос к исполнителю на вычисление градиента. Если аргумент All содержит значение истина, то обучение производится по всему обучающему множеству, в противном случае — позадачно. В случае возникновения ошибки при выполнении функции он генерирует внутреннюю ошибку 605 — ошибка при исполнении внешнего запроса, передает управление обработчику ошибок, функция возвращает значение 0. В противном случае возвращается значение вычисленной оценки.
Запустить запрос (GenerateQuest)Заголовок функции:
Function GenerateQuest(Name: PString; Arguments: PRealArray): Logic
Описание аргументов
Name — указатель на символьную строку, содержащую имя запроса.
Arguments — массив, содержащий адреса аргументов запроса.
Функция генерирует запрос к макрокомпоненту нейрокомпьютер на исполнение запроса, имя которого указано в аргументе Name, с аргументами, адреса которых указаны в аргументе Arguments. Действуют следующие ограничения. В строке, содержащей имя запроса должно содержаться только одно слово — имя запроса. Ведущие и хвостовые пробелы подавляются. В массиве Arguments должно содержаться ровно столько элементов, сколько аргументов у генерируемого запроса. В массив Arguments всегда складываются адреса аргументов, даже если в запрос данный аргумент передается по значению.
Язык описания учителя
В отличие от таких компонентов как оценка, сеть и интерпретатор ответа, учитель не является составным объектом. Однако учитель может состоять из множества функций, вызывающих друг друга. Собственно учитель — это процедура, управляющая обучением сети. Ключевые слова, специфические для языка описания учителя приведены в табл. 37.
Библиотеки функций учителяБиблиотеки функций учителя содержат описание функций, необходимых для работы одного или нескольких учителей. Использование библиотек позволяет избежать дублирования функций в различных учителях. Описание библиотеки функций аналогично описанию учителя, но не содержит главной процедуры.
Таблица 37. Ключевые слова специфические для языка описания учителя
Идентификатор Краткое описание Main Начало главной процедуры Instructor Заголовок описания учителя InstrLib Заголовок описания библиотеки функций Used Подключение библиотек функций Init Начало блока инициации InstrStep Начало блока одного шага обучения Close Начало блока завершения обучения БНФ языка описания учителяОбозначения, принятые в данном расширении БНФ и описание ряда конструкций приведены в разделе «Описание языка описания компонентов».
<Описание библиотеки>::= <Заголовок библиотеки> <Описание глобальных переменных> <Описание функций> <Конец описания библиотеки>
<Заголовок библиотеки>::= InstrLib <Имя библиотеки> [Used <Список имен библиотек>]
<Имя библиотеки>::= <Идентификатор>
<Список имен библиотек>::= <Имя используемой библиотеки> [,<Список имен библиотек>]
<Имя используемой библиотеки>::= <Идентификатор>
<Конец описания библиотеки>::= EndInstrLib
<Описание учителя>::= <Заголовок учителя> <Описание глобальных переменных> <Описание функций> <Главная процедура> <Конец описания учителя>
<Заголовок учителя>::= Instructor <Имя библиотеки> [Used <Список имен библиотек>]
<Главная процедура>::= Main<Описание статических переменных> <Описание переменных> <Блок инициации> <Блок шага обучения> <Блок завершения>
<Блок инициации>::= Init <Тело функции>
<Блок шага обучения>::= InstrStep <Выражение типа Logic> <Тело функции>
<Блок завершения>::= Close<Тело функции>
<Конец описания учителя> End Instructor
Описание языка описания учителяЯзык описания учителя является наиболее простым из всех языков описания компонент. Фактически все синтаксические конструкции этого языка описаны в разделе «Общий стандарт». В теле функции, являющемся частью главной процедуры недопустим оператор возврата значения, поскольку главная процедура не является функцией. Три раздела главной функции — блок инициации, блок одного шага обучения и блок завершения являются фрагментами одной процедуры. Выделение этих разделов необходимо для выполнения запроса «Выполнить N шагов обучения». Выполнение главной процедуры происходит следующим образом. Выполняется блок инициации. Выполнение блока одного шага обучения сети производится до тех пор, пока не наступит одно из следующих событий: