Книга: Учебное пособие по курсу «Нейроинформатика»
Язык описания предобработчика
Разделы на этой странице:
Язык описания предобработчика
Предобработчик является составным объектом. В состав этого объекта входят частные предобработчики, правила распределения входных данных и входных сигналов сети между частными предобработчиками. Предобработчик при выполнении запроса на предобработку вектора входных данных получает на входе вектор исходных данных, а возвращает вектор входных сигналов сети.
Каждый частный интерпретатор ответа получает на входе вектор входных данных, которые он предобрабатывает, а на выходе дает вектор входных сигналов сети. Каждый частный интерпретатор описывается в виде процедурного блока.
В табл. 22 приведен список ключевых слов языка описания предобработчика, дополняющий список ключевых слов, приведенных в разделе «Общий стандарт». Кроме того, ключевыми словами являются имена стандартных предобработчиков, приведенные в табл. 21.
Таблица 21. Стандартные предобработчики
Идентификатор | Параметры | Тип | Описание |
---|---|---|---|
BinaryPrep | MinSignals, MaxSignals: Real; Unknown: Real; Type: Logic. | Binary | Бинарный признак. Предобработка в соответствии с табл. 4 главы «Предобработчик». |
UnOrdered | MinSignals, MaxSignals: Real; Unknown: Real; Num: Long | Unordered | Неупорядоченный качественный признак. Предобработка в соответствии с табл. 5 главы «Предобработчик». |
Ordered | MinSignals, MaxSignals: Real; Unknown: Real; Num: Long | Ordered | Упорядоченный качественный признак. Предобработка в соответствии с табл. 6 главы «Предобработчик». |
EmptyPrep | MinData, MaxData, Unnown, MinSignals, MaxSignals: Real | Number | Простейшая предобработка в соответствии с формулой (1) главы «Предобработчик». |
ModPrep | MinSignals, MaxSignals: Real; Unknown: Real; Y: RealArray | Number | Модулярная предобработка в соответствии с формулой (16) главы «Предобработчик». |
FuncPrep | MinSignals, MaxSignals, Unknown: Real; Y: RealArray; F: FuncType | Number | Функциональная предобработка в соответствии с формулой (17) главы «Предобработчик». |
PositPrep | MinSignals, MaxSignals, Unnown, Y: Real; Num: Long | Number | Позиционная предобработка в соответствии с формулой (19) главы «Предобработчик». |
Таблица 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 "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Logic Type Name "Тип предобработки бинарного признака";
Begin
If TLong(Data[1]) = UnknownLong Then Signals[1] = Unknown
Else Begin
If Type Then Begin
If TLong(Data[1]) = 1 Then Signals[1] = 0 Else Begin
If MaxSignals =0 Then Signals[1] = MinSignals
Else Signals[1] = MaxSignals
End
Else Begin
If TLong(Data[1]) = 1 Then Signals[1] = MinSignals
Else Signals[1] = MaxSignals
End
End
End
{Предобработка упорядоченного качественного признака}
Prep UnOrdered1(Num : Long)
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Var
Integer I;
Begin
If TLong(Data[1]) = UnknownLong Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[I] = MinSignals
Signals[TLong(Data[1])] = MaxSignals
End
End
Prep Ordered1(Num : Long) {Предобработка упорядоченного качественного признака}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Var
Integer I;
Begin
If TLong(Data[1]) = UnknownLong Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To TLong(Data[1]) Do
Signals[I] = MaxSignals
For I = TLong(Data[1])+1 To Num Do
Signals[I] = MinSignals
End
End
Prep EmptyPrep1() {Предобработчик, осуществляющий масштабирование и сдвиг сигнала}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Real MinData Name"Значения нижней границы интервала изменения входных данных";
Real MaxData Name"Значения верхней границы интервала изменения входных данных";
Begin
If Data[1] = UnknownReal Then Signals[1] = Unknown
Else Signals[1] = (Data[1] – MinData) * (MaxSignals – MinSignals) / (MaxData – MinData) + MinSignals
End
Prep ModPrep1(Num : Long) {Модулярный предобработчик}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name "Значение сигнала, если значение входного признака не определено";
RealArray[Num] Y Name "Массив величин, используемых для предобработки"
Var
Integer I;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[I] = (Data[1] RMod Y[I] + Y[I]) * (MaxSignals – MinSignals) / (2 * Y[I]) + MinSignals
End
Prep FuncPrep1(Num : Long; F : FuncType) {Функциональный предобработчик}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name "Значение сигнала, если значение входного " +
"признака не определено";
Real MinData Name "Значения нижней границы интервала изменения значений функции F ";
Real MaxData Name "Значения верхней границы интервала изменения значений функции F";
RealArray[Num] Y Name "Массив величин, используемых для предобработки"
Var
Integer I;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[1] = (F(Data[1] – Y[1] – MinData) * (MaxSignals – MinSignals) / (MaxData – MinData) + MinSignals
End
Prep PositPrep1(Num : Long) {Позиционный предобработчик}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов"
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов"
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Real Y Name "Основание системы счисления"
Var
Integer I;
Real W, Q;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
W = Data[1];
For I = 1 To Num Do Begin
Q = W RMod Y;
Signals[I] = Q * (MaxSignals – MinSignals) / Y + MinSignals;
W = (W - Q) / Y
End;
End
Contents Temp : EmptyPrep1, Cloud : BinaryPrep1, Wind : UnOrdered1(8), Rain : Ordered1(3);
{Для всех предобработчиков приемлемые значения входных сигналов лежат в интервале от -1 до 1. В случае неопределенного значения во входных данных все сигналы данного предобработчика полагаются равными нулю. Входные данные первого предобработчика меняются от 273 до 293}
Temp SetParameters -1, 1, 1E-40, 273, 293;
CloudSetParameters -1, 1, 0, True;
Wind SetParameters -1, 1, 0;
RainSetParameters -1, 1, 0
Signals NumberOf(Signals,Temp) + NumberOf(Signals, Cloud) + NumberOf(Signals, Wind(8)) + NumberOf(Signals, Rain(3))
Data NumberOf(Data,Temp) + NumberOf(Data, Cloud) + NumberOf(Data,Wind(8)) + NumberOf(Data, Rain(3))
Connections
Temp.Data <=> Data[1];
Cloud.Data <=> Data[2];
Wind.Data <=> Data[3];
Rain.Data <=> Data[4];
Temp.Signals <=> Signals[1];
Cloud.Signals <=> Signals[2];
Wind.Signals[1..8] <=> Signals[3..10];
Rain.Signals[1..3] <=> Signals[11..13]
End Preparator
Пример 2.
Preparator Meteorology
Contents Temp : EmptyPrep, Cloud : BinaryPrep, Wind : UnOrdered(8), Rain : Ordered(3);
Temp SetParameters -1, 1, 1E-40, 273, 293
End Preparator
- 8.2. Языки программирования Виды программирований
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Реализация языка SQL
- Дальнейшее развитие языка SQL
- Язык программирования Python
- 2. Визуальный язык знают все Жест с ручкой в руках
- Программирование на языке Пролог для искусственного интеллекта
- 1. Оператор Select – базовый оператор языка структурированных запросов
- 2. Унарные операции на языке структурированных запросов
- 3. Бинарные операции на языке структурированных запросов
- Фишка шестая. «Язык пользы»
- Компилятор языка С