Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
<Главная процедура>::= Main<Описание статических переменных> <Описание переменных> <Тело функции>
<Конец описания контрастера> End Contrast
Описание языка описания контрастераЯзык описания контрастера является наиболее простым из всех языков описания компонент. Фактически все синтаксические конструкции этого языка описаны в разделе «Общий стандарт». В теле функции, являющемся частью главной процедуры недопустим оператор возврата значения, поскольку главная процедура не является функцией.
Контрастер имеет одну глобальную предопределенную переменную ContrastFunc. Эта переменная должна обязательно быть определена — ей нужно присвоить адрес функции, которая будет вызываться каждый раз после того, как нейронная сеть вычислит градиент после решения одного примера. Функция, адрес которой присваивается переменной ContrastFunc должна быть объявлена следующим образом:
Function MyContrast(TheEnd: Logic): Logic;
Значения аргумента TheEnd имеют следующий смысл: истина — обучение ведется позадачно или закончен просмотр обучающего множества; ложь — обработан еще один пример обучающего множества при обучении по всему задачнику в целом. Следует учесть, что при обучении по всему обучающему множеству в целом, нейронная сеть накапливает градиенты всех примеров, так что при первом вызове функции в сети хранится градиент функции оценки по результатам решения первого примера; при втором — результатам решения первых двух примеров и т. д. Функция возвращает значение ложь, если в ходе ее работы произошла ошибка. В противном случае она возвращает значение истина.
Значение переменной ContrastFunc присваивается оператором присваивания:
ContrastFunc = MyContrast
Если значение переменной ContrastFunc не задано, то она указывает на используемую по умолчанию функцию EmptyContrast, которая просто возвращает значение истина.
Стандарт второго уровня компонента контрастер
Компонента контрастер одновременно работает только с одним контрастером. Запросы к компоненте контрастер можно разбить на следующие группы.
1. Контрастирование сети.
2. Чтение/запись контрастера.
3. Инициация редактора контрастера.
4. Работа с параметрами контрастера.
Контрастирование сети
К данной группе относятся три запроса — контрастировать сеть (ContrastNet), прервать контрастирование (CloseContrast) и контрастировать пример (ContrastExample).
Контрастировать сеть(ContrastNet)Описание запроса:
Pascal:
Function ContrastNet: Logic;
C:
Logic ContrastNet()
Аргументов нет.
Назначение — производит контрастирование сети.
Описание исполнения.
1. Если Error <> 0, то выполнение запроса прекращается.
2. Если в момент получения запроса контрастер не загружен, то возникает ошибка 701 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
3. Выполняется главная процедура загруженного контрастера.
4. Если во время выполнения запроса возникает ошибка, а значение переменной Error равно нулю, то генерируется внутренняя ошибка 705 — ошибка исполнения контрастера, управление передается обработчику ошибок, а обработка запроса прекращается.
5. Если во время выполнения запроса возникает ошибка, а значение переменной Error не равно нулю, то обработка запроса прекращается.
Прервать контрастирование (CloseContrast)Описание запроса:
Pascal:
Function CloseContrast: Logic;
C:
Logic CloseContrast()
Аргументов нет.
Назначение — прерывает контрастирование сети.
Описание исполнения.
1. Если Error <> 0, то выполнение запроса прекращается.
2. Если в момент получения запроса контрастер не загружен, то возникает ошибка 701 — неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
3. Если в момент получения запроса не выполняется запрос ContrastNet, то возникает ошибка 706 — неверное использование запроса на прерывание контрастирования, управление передается обработчику ошибок, а обработка запроса прекращается.
4. Завершается выполнение текущего шага контрастирования сети.
5. Если во время выполнения запроса возникает ошибка, а значение переменной Error равно нулю, то генерируется внутренняя ошибка 705 — ошибка исполнения контрастера, управление передается обработчику ошибок, а обработка запроса прекращается.
6. Если во время выполнения запроса возникает ошибка, а значение переменной Error не равно нулю, то обработка запроса прекращается.
Контрастировать пример (ContrastExample)Описание запроса:
Pascal:
Function ContrastExample(TheEnd: Logic): Logic;
C:
Logic ContrastExample(Logic TheEnd)
Описание аргумента:
TheEnd — значение аргумента имеет следующий смысл: ложь — обработан еще один пример обучающего множества при обучении по всему задачнику в целом.
Назначение — извлекает из сети необходимые для вычисления показателей значимости параметры.
Описание исполнения.
1. Если Error <> 0, то выполнение запроса прекращается.
2. Вызывает функцию, адрес которой хранится в переменной ContrastFunc, передавая ей аргумент TheEnd в качестве аргумента.
3. Если функция ContrastFunc возвращает значение ложь, а значение переменной Error равно нулю, то генерируется внутренняя ошибка 705 — ошибка исполнения контрастера, управление передается обработчику ошибок, а обработка запроса прекращается.
4. Если функция ContrastFunc возвращает значение ложь, а значение переменной Error не равно нулю, то обработка запроса прекращается.
5. Запрос в качестве результата возвращает возвращенное функцией ContrastFunc значение.
Чтение/запись контрастера
В данном разделе описаны запросы позволяющие, загрузить контрастер с диска или из памяти, выгрузить контрастера и сохранить текущего контрастера на диске или в памяти.
Прочитать контрастера (cnAdd)Описание запроса:
Pascal:
Function cnAdd(CompName: PString): Logic;
C:
Logic cnAdd(PString CompName)
Описание аргумента:
CompName — указатель на строку символов, содержащую имя файла компонента или адрес описания компонента.
Назначение — читает контрастера с диска или из памяти.
Описание исполнения.
1. Если в качестве аргумента CompName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя компонента и после пробела имя файла, содержащего компонент. В противном случае считается, что аргумент CompName содержит указатель на область памяти, содержащую описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то допускается включение в текст описания компонента ключевого слова Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.
2. Если в данный момент загружен другой контрастер, то выполняется запрос cnDelete. Контрастер считывается из файла или из памяти.
3. Если считывание завершается по ошибке, то возникает ошибка 702 — ошибка считывания контрастера, управление передается обработчику ошибок, а обработка запроса прекращается.
Удаление контрастера (cnDelete)Описание запроса:
Pascal:
Function cnDelete: Logic;
C:
Logic cnDelete()
Аргументов нет.
Назначение — удаляет загруженного в память контрастера.
Описание исполнения.
1. Если список в момент получения запроса контрастер не загружен, то возникает ошибка 701 — неверное имя контрастера, управление передается обработчику ошибок, а обработка запроса прекращается.
Запись контрастера (cnWrite)Описание запроса:
Pascal:
Function cnWrite(Var FileName: PString): Logic;
C:
Logic cnWrite(PString* FileName)
Описание аргументов:
CompName — указатель на строку символов, содержащую имя контрастера.
FileName — имя файла или адрес памяти, куда надо записать контрастера.
Назначение — сохраняет контрастера в файле или в памяти.
Описание исполнения.
1. Если в момент получения запроса контрастер не загружен, то возникает ошибка 701 — неверное имя контрастера, управление передается обработчику ошибок, а обработка запроса прекращается.
2. Если в качестве аргумента FileName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя файла, для записи компонента. В противном случае FileName должен содержать пустой указатель. В этом случае запрос вернет в нем указатель на область памяти, куда будет помещено описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то в текст будет включено ключевое слово Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.