Чтение онлайн

ЖАНРЫ

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

Миркес Е. М.

Шрифт:

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

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

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

Real Step, ParTanStep; {Длины шагов для оптимизации шага}

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

Long I;

Init

 Begin

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

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

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

If Map = Null Then GoTo Exit;

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

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

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

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

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

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

Map = CreateArray; {Создаем вспомогательные массивы}

DirectMap= CreateArray;

If Map = Null Then GoTo Exit;

If DirectMap = Null Then GoTo Exit;

Est1 = Accuracy*10; {Задаем оценку, не удовлетворяющую требованию точности}

Step = 0.005; {Задаем начальное значение шагу}

 End

InstrStep Est > Accuracy

 Begin

If Not SaveArray(Map1) Then GoTo Exit; {Сохраняем начальный массив параметров}

For I = 1 To k Do Begin {Выполняем k межпартанных шагов}

If Direct Then Est = SDM(Handle, Step) Else Est = RDM(Handle, Step);

If Error <> 0 Then GoTo Exit;

End;

If Not SaveArray(DirectMap) Then GoTo Exit; {Сохраняем конечный массив параметров}

For I = 1 To TLong(Map^[0]) Do

DirectMap^[I] = DirectMap^[I] - Map^[I]; {Вычисляем направление ParTan шага}

ParTanStep = 1; {Задаем
начальное значение ParTan шагу}

Est =Optimize(DirectMap, ParTanStep); {Вызываем функцию подбора оптимального шага}

If Error <> 0 Then GoTo Exit;

 End

Close

 Begin

Exit:

If Not EraseArray(Мар) Then; {Освобождаем вспомогательные массивы}

If Not EraseArray(DirectMap) Then;

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

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

If Map = Null Then GoTo Exit1;

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

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

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

Exit1:

 End

End Instructor

Стандарт второго уровня компонента учитель

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

1. Обучение сети.

2. Чтение/запись учителя.

3. Инициация редактора учителя.

4. Работа с параметрами учителя.

Обучение сети

К данной группе относятся три запроса — обучить сеть (InstructNet), провести N шагов обучения (NInstructSteps) и прервать обучение (CloseInstruction).

Обучить сеть (InstructNet)

Описание запроса:

Pascal:

Function InstructNet: Logic;

C:

Logic InstructNet

Аргументов нет.

Назначение — производит обучение сети.

Описание исполнения.

1. Если Error <> 0, то выполнение запроса прекращается.

2. Если в момент получения запроса учитель не загружен, то возникает ошибка 601 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3. Выполняется главная процедура загруженного учителя.

4. Если во время выполнения запроса возникает ошибка, а значение переменной Error равно нулю, то генерируется внутренняя ошибка 605 — ошибка исполнения учителя, управление передается обработчику ошибок, а обработка запроса прекращается.

5. Если во время выполнения запроса возникает ошибка, а значение переменной Error не равно нулю, то обработка запроса прекращается.

Поделиться с друзьями: