Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
Таблица 22. Ключевые слова языка описания предобработчика.
Идентификатор Краткое описание Connections Начало блока описания распределения входных данных и сигналов. Contents Начало блока описания состава интерпретатора. Data Имя, по которому адресуются входные данные, начало блока описания входных данных Include Предшествует имени файла, целиком вставляемого в это место описания. NumberOf Функция. Возвращает число обрабатываемых частным предобработчиком входных данных или сигналов. Prep Начало заголовка описания частного предобработчика. Preparator Заголовок раздела файла, содержащий описание интерпретатора. Signals Имя, по которому адресуются входные сигналы; начало блока описания сигналов. БНФ языка описания предобработчикаОбозначения, принятые в данном расширении БНФ и описание ряда конструкций приведены в разделе «Описание языка описания компонентов».
<Описание предобработчика>::= <Заголовок> [<Описание функций>] [<Описание частных предобработчиков>] <Описание состава> [<Установление параметров>] [<Описание сигналов>] [<Описание данных>] [<Описание распределения сигналов>] [<Описание распределения данных>] <Конец описания предобработчика>
<Заголовок>::= Preparator <Имя предобработчика> ( <Список формальных аргументов>)
<Имя предобработчика>::= <Идентификатор>
<Описание частных предобработчиков>::= <Описание частного предобработчика> [<Описание частных предобработчиков>]
<Описание частного предобработчика>::= <Заголовок описания предобработчика> [<Описание статических переменных>] [<Описание переменных>] <Тело предобработчика>
<Заголовок описания предобработчика>::= Prep <Имя частного предобработчика> ([(<Список формальных аргументов>)])
<Имя частного интерпретатора>::= <Идентификатор>
<Тело предобработчика>::= Begin <Составной оператор> End
<Описание состава>::= Contents <Список имен предобработчиков>;
<Список имен предобработчиков>::= <Имя предобработчика> [,<Список имен предобработчиков>]
<Имя предобработчика>::= <Псевдоним>: {<Имя ранее описанного интерпретатора> | <Имя стандартного интерпретатора>} [[ <Число экземпляров >]] [(<Список фактических аргументов>)]
<Псевдоним>::= <Идентификатор>
<Число экземпляров >::= <Целое число>
<Имя ранее описанного интерпретатора>::= <Идентификатор>
<Имя стандартного интерпретатора>::= <Идентификатор>
<Установление параметров>::= <Установление параметров Частного предобработчика> [;<Установление параметров>]
<Описание сигналов>::= Signals <Константное выражение типа Long >
<Описание данных>::= Data<Константное выражение типа Long >
<Описание распределения сигналов>::= <Описание распределения Сигналов, Предобработчика, Частного предобработчика, Signals>
<Описание распределения данных>::= <Описание распределения Данных, Предобработчика, Частного предобработчика, Data>
<Конец описания предобработчика>::= End Preparator
Описание языка описания предобработчикаСтруктура описания предобработчика имеет вид: заголовок; описание функций; описание частных предобработчиков; описание состава; установление параметров; описание сигналов; описание данных; описание распределения сигналов; описание распределения данных; конец описания предобработчика.
Заголовок состоит из ключевого слова Preparator и имени предобработчика и служит для обозначения начала описания предобработчика в файле, содержащем несколько компонентов нейрокомпьютера.
Описание функций — фрагмент описания, в котором описаны функции, необходимые для работы предобработчиков.
Описание частного предобработчика — это описание процедуры, вычисляющей входные сигналы нейронной сети по входным данным. Формальные аргументы служат для задания размерностей обрабатываемых векторов. При выполнении частный предобработчик получает в качестве аргументов два вектора — входных данных и входных сигналов. Формально, при исполнении частный предобработчик имеет описание следующего вида:
Pascal:
Procedure Preparator(Data, Signals: PRealArray);
C:
void Preparator(PRealArray Data; PRealArray Signals);
В разделе описания состава перечисляются частные предобработчики, входящие в состав предобработчика. Признаком конца раздела служит символ «;».
В необязательном разделе установления параметров производится задание значений параметров (статических переменных) частных предобработчиков. После ключевого слова SetParameters следует список значений параметров в том порядке, в каком параметры были объявлены при описании частного интерпретатора (для стандартных интерпретаторов порядок параметров соответствует порядку, приведенному в описании стандартных предобработчиков в разделе «Стандартные предобработчики»). При использовании одного оператора задания параметров для задания параметров нескольким экземплярам одного частного предобработчика после ключевого словаsetparameters указывается столько выражений, задающих значения параметров, сколько необходимо для одного экземпляра.
В необязательном разделе «описание сигналов» указывается число сигналов, вычисляемых предобработчиком. Если этот раздел опущен, то полагается, что число вычисляемых предобработчиком сигналов равно сумме сигналов, вычисляемых всеми частными предобработчиками. В константном выражении возможно использование функции NumberOf, аргументом которой является имя частного предобработчика (или его псевдоним) и ключевое слово Signals, в качестве второго аргумента.
В необязательном разделе «описание данных» указывается число входных данных, предобрабатываемых предобработчиком. Если этот раздел опущен, то полагается, что число предобрабатываемых предобработчиком данных равно сумме данных, предобрабатываемых всеми частными предобработчиками. В константном выражении возможно использование функции NumberOf, аргументом которой является имя частного предобработчика (или его псевдоним) и ключевое слово Data, в качестве второго аргумента.
В необязательном разделе описания распределения сигналов (данных) указывается для каждого частного предобработчика какие сигналы (входные данные) из общего вектора сигналов (данных) передаются ему для обработки.
Наиболее часто встречающиеся интерпретаторы объявлены стандартными. Для стандартных интерпретаторов описание частных интерпретаторов отсутствует.
Кроме того, в любом месте описания интерпретатора могут встречаться комментарии, заключенные в фигурные скобки.
Пример описания предобработчикаВ этом разделе приведены два примера описания одного и того же предобработчика для метеорологической задачи. Используется следующий состав предобработчика: первый элемент вектора входных данных (температура воздуха) обрабатывается простейшим предобработчиком (EmptyPrep); второй (облачность) — бинарным предобработчиком (BinaryPrep); третий (направление ветра) — предобработчиком неупорядоченных качественных признаков (UnOrdered); четвертый (осадки) — предобработчиком неупорядоченных качественных признаков (Ordered).
В первом примере приведено описание дубликатов всех стандартных предобработчиков. Во втором — использованы стандартные предобработчики.
Пример 1.
Preparator Meteorology
Function Sigmoid(X Real): Real;
Begin
Sigmoid = X / (1 + Abs(X))
End;
Prep BinaryPrep1() {Предобработка бинарного признака}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";