Читаем Учебное пособие по курсу «Нейроинформатика» полностью

<Главная процедура>::= Main<Описание статических переменных> <Описание переменных> <Блок инициации> <Блок шага обучения> <Блок завершения>

<Блок инициации>::= Init <Тело функции>

<Блок шага обучения>::= InstrStep <Выражение типа Logic> <Тело функции>

<Блок завершения>::= Close<Тело функции>

<Конец описания учителя> End Instructor

Описание языка описания учителя

Язык описания учителя является наиболее простым из всех языков описания компонент. Фактически все синтаксические конструкции этого языка описаны в разделе «Общий стандарт». В теле функции, являющемся частью главной процедуры недопустим оператор возврата значения, поскольку главная процедура не является функцией. Три раздела главной функции — блок инициации, блок одного шага обучения и блок завершения являются фрагментами одной процедуры. Выделение этих разделов необходимо для выполнения запроса «Выполнить N шагов обучения». Выполнение главной процедуры происходит следующим образом. Выполняется блок инициации. Выполнение блока одного шага обучения сети производится до тех пор, пока не наступит одно из следующих событий:

1. программа выйдет из блока одного шага обучения сети прямым переходом на метку в другом разделе;

2. нарушится условие, указанное в конструкции InstStep;

3. компонент учитель получит запрос «Прервать обучение сети»;

4. в случае выполнения запроса «Выполнить N шагов обучения» блок одного шага обучения сети выполнен N раз.

Далее выполняется блок завершения обучения.

Пример описания учителя

В данном разделе приведены описания некоторых методов обучения, описанных в разделе «Описание алгоритмов обучения».

Пример 1.

Instructor RandomFire;  {Метод случайной стрельбы с уменьшением радиуса}

Main                                         {Обучение ведется по всему обучающему множеству}

 Label Exit, Exit1;

 Static

  Integer Try Name "Число попыток при одном радиусе" Default 5;

  Real MinRadius Name "Минимальный радиус, при котором + "продолжается работа"Default 0.001;

  String NetName Name "Имя сети" Default "";

  Integer What Name "Что обучать" Default Parameters;

  Color InstColor Name "Цвет примеров обучающего множества" Default HFFFF; {По умолчанию}

  Integer OperColor Name "Операция для отбора цветов" Default CIn;

 Var {все примеры, в цвете которых есть хоть один единичный бит}

  PRealArray Map, DirectMap; {Для хранения текущего и случайного массивов параметров}

  Real Est1, Est2; {Для хранения текущей и случайной оценки}

  Real Radius; {Текущий радиус}

  Integer TryNum, RadiusNum; {Число попыток, номер использованного радиуса}

  Integer Handle; {Номер сеанса задачника}

  String QName; {Имя запроса}

Init

 Begin

  If Not SetInstructionObject(What, @NetName) Then GoTo Exit; {Задаем объекты обучения}

  QName = "InitSession"; {Задаем имя запроса}

  Map = NewArray(mRealArray, 3); {Создаем массив для аргументов запроса}

  If Map = Null Then GoTo Exit;

  TPointer(Map^[1]) = @InstColor; {Заносим адрес первого аргумента}

  TPointer(Map^[2]) = @OperColor; {Заносим адрес второго аргумента}

  TPointer(Map^[3]) = @Handle; {Заносим адрес третьего аргумента}

  If Not GenerateQuest(@QName, Map) Then GoTo Exit;{Открываем сеанс работы с задачником}

  If Not FreeArray(mRealArray, Map) Then GoTo Exit;  {Освобождаем массив для аргументов}

  {Собственно начало обучения}

Перейти на страницу:

Похожие книги