Сокращение описания сети - Функциональные модели универсального нейрокомпьютера
Предложенный в предыдущих разделах язык описания многословен. В большинстве случаев за счет хорошей структуризации сети можно опуСтить все разделы описания блока кроме раздела состава. В данном разделе описывается генерация по умолчанию разделов описания сигналов и параметров, и описания связей. Использование механизмов умолчания позволяет сильно сократить текст описания сети.
Раздел описания сигналов и параметров
Для всех видов блоков число параметров определяется как сумма чисел параметров всех подсетей, перечисленных в разделе описания состава. Это может приводить к лишним записям, но не повлияет на работу сети. Примером лишней записи может служить генерируемая запись:
Parameters M * NumberOf(Parameters, Branch(N))
В описании слоя точек ветвления, поскольку точки ветвления не имеют параметров.
Число входных сигналов блока определяется по следующим правилам:
Для слоя число входных сигналов равно сумме числа входных сигналов всех подсетей, перечисленных в разделе описания состава;
Для каскадов всех видов число входных сигналов блока равно числу входных сигналов подсети, стоящей первой в списке подсетей в разделе описания состава
Число выходных сигналов блока определяется по следующим правилам:
Для слоя число выходных сигналов равно сумме числа выходных сигналов всех подсетей, перечисленных в разделе описания состава;
Для каскадов всех видов число выходных сигналов блока равно числу выходных сигналов подсети, стоящей последней в списке подсетей в разделе описания состава;
Описания всех сетей, приведенные в предыдущем разделе полностью соответствуют правилам генерации. В качестве более общего примера приведем раздел описания сигналов и параметров двух условных блоков.
Layer A
Contents Net1, Net2[K], Net3
InSignals NumberOf(InSignals, Net1)+K*NumberOf(InSignals, Net2)
+NumberOf(InSignals, Net3)
OutSignals NumberOf(OutSignals, Net1)+K*NumberOf(OutSignals, Net2)
+NumberOf(OutSignals, Net3)
Parameters NumberOf(Parameters, Net1)+
K*NumberOf(Parameters, Net2)+NumberOf(Parameters, Net3)
Cascad B
Contents Net1, Net2[K], Net3
InSignals NumberOf(InSignals, Net1)
OutSignals NumberOf(OutSignals, Net3)
Parameters NumberOf(Parameters, Net1)+
K*NumberOf(Parameters, Net2)+NumberOf(Parameters, Net3)
Раздел описания связей
Раздел описания связей может быть разбит на пять подразделов.
Установление связи входных сигналов блока с входными сигналами подсетей.
Установление связи выходных сигналов блока с выходными сигналами подсетей.
Установление связи параметров блока с параметрами подсетей.
Установление связи между выходными сигналами одних подсетей и входными сигналами других подсетей.
Замыкание выхода блока на вход блока.
Для слоя раздел описания связей строится по следующим правилам.
Все подсети получают входные сигналы в порядке перечисления подсетей в разделе описания состава - первая часть массива входных сигналов слоя отдается первой подсети, следующая - второй и т. д. Если какая-либо подсеть в разделе описания состава указана с некоторым не равным единице числом экземпляров, то считается, что экземпляры этой подсети перечислены в списке в порядке возрастания номера.
Выходные сигналы подсетей образуют массив выходных сигналов слоя также в порядке перечисления подсетей в разделе описания состава - первая часть массива выходных сигналов слоя состоит из выходных сигналов первой подсети, следующая - второй и т. д. Если какая-либо подсеть в разделе описания состава указана с некоторым не равным единице числом экземпляров, то считается, что экземпляры этой подсети перечислены в списке в порядке возрастания номера.
Подразделы установления связи между выходными сигналами одних подсетей и входными сигналами других подсетей и замыкания выхода блока на вход для слоя отсутствуют.
Для каскадов раздел описания связей строится по следующим правилам:
Входные сигналы блока связываются с входными сигналами первой подсети в списке подсетей в разделе описания состава. Если для первой подсети указано не единичное число экземпляров, то все входные сигналы связываются с входными сигналами первого экземпляра подсети.
Выходные сигналы блока связываются с выходными сигналами последней подсети в списке подсетей в разделе описания состава. Если для последней подсети указано не единичное число экземпляров, то все выходные сигналы связываются с выходными сигналами последнего (с максимальным номером) экземпляра подсети.
Массив параметров блока образуется из массивов параметров подсетей в порядке перечисления подсетей в разделе описания состава - первая часть массива параметров блока состоит из параметров первой подсети, следующая - второй и т. д. Если какая-либо подсеть в разделе описания состава указана с некоторым не равным единице числом экземпляров, то считается, что экземпляры этой подсети перечислены в списке в порядке возрастания номера.
Выходные сигналы каждой подсети, кроме последней связываются с входными сигналами следующей подсети в списке подсетей в разделе описания состава. Если какая-либо подсеть в разделе описания состава указана с некоторым не равным единице числом экземпляров, то считается, что экземпляры этой подсети перечислены в списке в порядке возрастания номера.
Для блоков типа Cascad замыкание выхода блока на вход блока отсутствует. Для блоков типов Loop и Until замыкание выхода блока на вход блока достигается путем установления связей между выходными сигналами последней подсети в списке подсетей в разделе описания состава с входными сигналами первой подсети в списке подсетей в разделе описания состава. Если какая-либо подсеть в разделе описания состава указана с некоторым не равным единице числом экземпляров, то считается, что экземпляры этой подсети перечислены в списке в порядке возрастания номера.
Описания всех сетей, приведенные в предыдущем разделе полностью соответствуют правилам генерации. В качестве более общего примера приведем раздел описания сигналов и параметров трех условных блоков.
Layer A
Contents Net1, Net2[K], Net3
InSignals[1..NumberOf(InSignals, Net1)+K*NumberOf(InSignals, Net2)
+NumberOf(InSignals, Net3)] <=>
Net1. InSignals[1..NumberOf(InSignals, Net1)],
Net2[1..K].InSignals[1..NumberOf(InSignals, Net2)],
Net3.InSignals[1..NumberOf(InSignals, Net3)]
OutSignals[1..NumberOf(OutSignals, Net1)+
K*NumberOf(OutSignals, Net2)+NumberOf(OutSignals, Net3)] <=>
Net1. OutSignals[1..NumberOf(OutSignals, Net1)],
Net2[1..K].OutSignals[1..NumberOf(OutSignals, Net2)],
Net3.OutSignals[1..NumberOf(OutSignals, Net3)]
Parameters[1..NumberOf(Parameters, Net1)+
K*NumberOf(Parameters, Net2)+NumberOf(Parameters, Net3)] <=>
Net1. Parameters[1..NumberOf(Parameters, Net1)],
Net2[1..K].Parameters[1..NumberOf(Parameters, Net2)],
Net3.Parameters[1..NumberOf(Parameters, Net3)]
Cascad B
Contents Net1, Net2[K], Net3
InSignals[1..NumberOf(InSignals, Net1)] <=>
Net1. InSignals[1..NumberOf(InSignals, Net1)]
OutSignals[1..NumberOf(OutSignals, Net3)] <=>
Net3.OutSignals[1..NumberOf(OutSignals, Net3)]
Parameters[1..NumberOf(Parameters, Net1)+
K*NumberOf(Parameters, Net2)+NumberOf(Parameters, Net3)] <=>
Net1. Parameters[1..NumberOf(Parameters, Net1)],
Net2[1..K].Parameters[1..NumberOf(Parameters, Net2)],
Net[3].Parameters[1..NumberOf(Parameters, Net3)]
Net1. OutSignals[1..NumberOf(OutSignals, Net1)],
Net2[1..K].OutSignals[1..NumberOf(OutSignals, Net2)] <=>
Net2[1..K].InSignals[1..NumberOf(InSignals, Net2)],
Net3.InSignals[1..NumberOf(InSignals, Net3)]
Loop C N
Contents Net1, Net2[K], Net3
InSignals[1..NumberOf(InSignals, Net1)] <=>
Net1. InSignals[1..NumberOf(InSignals, Net1)]
OutSignals[1..NumberOf(OutSignals, Net3)] <=>
Net3.OutSignals[1..NumberOf(OutSignals, Net3)]
Parameters[1..NumberOf(Parameters, Net1)+
K*NumberOf(Parameters, Net2)+NumberOf(Parameters, Net3)] <=>
Net1. Parameters[1..NumberOf(Parameters, Net1)],
Net2[1..K].Parameters[1..NumberOf(Parameters, Net2)],
Net[3].Parameters[1..NumberOf(Parameters, Net3)]
Net1. OutSignals[1..NumberOf(OutSignals, Net1)],
Net2[1..K].OutSignals[1..NumberOf(OutSignals, Net2)] <=>
Net2[1..K].InSignals[1..NumberOf(InSignals, Net2)],
Net3.InSignals[1..NumberOf(InSignals, Net3)]
Net3.OutSignals[1..NumberOf(OutSignals, Net3)] <=>
Net1. InSignals[1..NumberOf(InSignals, Net1)]
Частично сокращенное описание
Если описываемый блок должен иметь связи, устанавливаемые не так, как описано в разд. "Раздел описания связей", то соответствующий раздел описания блока может быть описан явно полностью или частично. Если какой либо раздел описан частично, то действует следующее правило: те сигналы, параметры и их связи, которые описаны явно, берутся из явного описания, а те сигналы, параметры и их связи, которые не фигурируют в явном описании берутся из описания по умолчанию. Так, в приведенном в разд. "Пример описания блоков" описании слоя точек ветвления BLay невозможно использование генерируемого по умолчанию подраздела установления связи выходных сигналов блока с входными сигналами подсетей. Возможно следующее сокращенное описание.
{Слой точек ветвления}
Layer BLay( N, M : Long)
Contents Branch(N)[M] {В состав слоя входит M точек ветвления}
Connections
{Выходные сигналы в порядке первый с каждой точки ветвления, затем второй и т. д. }
OutSignals[1..N * M] <=> Branch[+:1..M].OutSignals[1..N]
End {Конец описания слоя точек ветвления}
Пример сокращенного описания блоков
При описании блоков используются элементы, описанные в библиотеке Elements, приведенной в разд. "Пример описания элементов".
NetBibl SubNets Used Elements;
{Библиотека подсетей, использующая библиотеку Elements}
{Сигмоидный нейрон с произвольным сумматором на N входов}
Cascad NSigm(aSum : Block; N : Long; Char : Real)
{В состав каскада входит произвольный сумматор на N входов и сигмоидный нейрон с необучаемой характеристикой}
Contents aSum(N), S_NotTrain(Char)
End
{Слой сигмоидных нейронов с произвольными сумматорами на N входов}
Layer Lay1(aSum : Block; N, M : Long; Char : Real)
Contents Sigm: NSigm(aSum, N,Char)[M] {В состав слоя входит M нейронов}
End
{Слой точек ветвления}
Layer BLay( N, M : Long)
Contents Branch(N)[M] {В состав слоя входит M точек ветвления}
Connections
{Выходные сигналы в порядке первый с каждой точки ветвления, затем второй и т. д. }
OutSignals[1..N * M] <=> Branch[+:1..M].OutSignals[1..N]
End
{Полный слой сигмоидных нейронов с произвольными сумматорами на N входов}
Cascad FullLay(aSum : Block; N, M : Long; Char : Real)
Contents BLay1(M, N), Lay1(aSum, N,M, Char) {Слой точек ветвления и слой нейронов}
End {Конец описания слоя сигмоидных нейронов с произвольным сумматором}
{Сеть с сигмоидными нейронами и произвольными сумматорами, содержащая
Input - число нейронов на входном слое;
Output - число нейронов на выходном слое (число выходных сигналов);
Hidden - число нейронов на H>0 скрытых слоях;
N - число входных сигналов
Все входные сигналы подаются на все нейроны входного слоя}
Cascad Net1(aSum : Block; Char : Real; Input, Output, Hidden, H, N : Long)
{Под тремя разными псевдонимами используется одна и таже подсеть с разными параметрами. Использование псевдонимов необходимо даже при сокращенном описании}
Contents
In: FullLay(aSum, N,Input, Char),
Hid1: FullLay(aSum, Input, Hidden, Char)
Hid2: FullLay(aSum, Hidden, Hidden, Char)[H-1] {Пусто при H=1}
Out: FullLay(aSum, Hidden, Output, Char)
End
{Полносвязная сеть с M сигмоидными нейронами на К тактов функционирования с невыделенным входным слоем на M сигналов. Все параметры ограничены по абсолютному значению единицей}
Loop Circle(aSum : Block; Char : Real; M, K : Long) K
Contents
FullLay(aSum, M,M, Char)
ParamDef DefaultType -1 1
End
{Полносвязная сеть с М сигмоидными нейронами на К тактов функционирования с выделенным входным слоем на N сигналов.
Cascad Net2: (aSum : Block; Char : Real; M, K, N : Long)
Contents
In: FullLay(aSum, N,M, Char), {Входной слой}
Net: Circle(aSum, Char, M,K) {Полносвязная сеть}
End
Cascad Hopf(N : Long) {Нейрон сети Хопфилда из N нейронов}
Contents Sum(N),Sign_Easy {Сумматор и пороговый элемент}
End
{Слой нейронов Хопфилда}
Layer HLay(N : Long)
Contents Hop: Hopf(N)[N] {В состав слоя входит N нейронов}
End
{Сеть Хопфилда из N нейронов}
Until Hopfield(N : Long) InSignals=OutSignals
Contents BLay(N, N),HLay(N) {Слой точек ветвления и слой нейронов}
End
End NetLib
Похожие статьи
-
Язык описания нейронных сетей предназначен для хранения сетей на диске. Следует отметить, что в отличии от таких компонентов, как предобработчик входных...
-
Установить параметры сети (nwSetData) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function nwSetData(Net : PString; DataType : Integer; Var Data : RealArray) : Logic; C: Logic nwSetData(PString Net, Integer...
-
Запросы к компоненту сеть - Функциональные модели универсального нейрокомпьютера
В данном разделе главы рассмотрены все запросы, исполняемые комп Онентом сеть. Прежде чем приступать к описанию стандарта запросов компонента сеть...
-
Сигналы и параметры - Функциональные модели универсального нейрокомпьютера
При использовании контрастирования для изменения структуры сети и значений обучаемых параметров другим компонентам бывает необходим прямой доступ к...
-
Нормализовать сеть (NormalizeNet) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function NormalizeNet(Net : PString) : Logic; C: Logic NormalizeNet(PString Net) Описание аргумента: Net - указатель на строку...
-
Впервые последовательное описание конструирования нейронных с Етей из элементов было предложено в книге А. Н. Горбаня [65]. Однако за прошедшее время...
-
Элементы самодвойственных сетей - Функциональные модели универсального нейрокомпьютера
Если при обратном функционировании самодвойственной сети на ее выход подать производные некоторой функции F по выходным сигналам сети, то в ходе...
-
Составной предобработчик - Функциональные модели универсального нейрокомпьютера
Поскольку на вход нейронной сети обычно подается несколько входных сигналов, каждый из которых обрабатывается своим предобработчиком, то предобработчик...
-
Единственный запрос первой группы выполняет основную функцию компонента предобработчик - предобрабатывает входные данные, вычисляя вектор входных...
-
Персептрон Розенблатта - Функциональные модели универсального нейрокомпьютера
Персептрон Розенблатта [147, 185] является исторически первой обучаемой нейронной сетью. Существует несколько версий персептрона. Рассмотрим классический...
-
Контрастирование и нормализация сети - Функциональные модели универсального нейрокомпьютера
В последние годы широкое распространение получили различные методы контрастирования или скелетонизации нейронных сетей. В ходе процедуры контрастирования...
-
Рис. 11. Прямое (а) и обратное (б) функционирование нелинейного сигмоидного преобразователя Нелинейный сигмоидный преобразователь или сигмоидный элемент...
-
Поскольку в точке ветвления не происходит преобразования сигнала, то константа Липшица для нее равна единице. Сумматор Производная суммы по любому из...
-
Функционирование сети - Функциональные модели универсального нейрокомпьютера
Таблица 1 Однородные и неоднородные сумматоры Название Однородный сумматор Неоднородный сумматор Обозначение Значение Обозначение Значение Обычный ?...
-
Составные элементы - Функциональные модели универсального нейрокомпьютера
Название "составные элементы" противоречит определению элементов. Это противоречие объясняется соображениями удобства работы. Введение составных...
-
Запросы на изменение параметров - Функциональные модели универсального нейрокомпьютера
К группе запросов на изменение параметров относятся три запроса: XxGetData - получить параметры структурной единицы. xxGetName - получить названия...
-
Описание запроса: Pascal: Function ModifyMask( Net : PString; Tipe : Integer; NewMask: PLogicArray ) : Logic; C: Logic Modify(PString Net, Integer Tipe,...
-
Правила остановки работы сети - Функциональные модели универсального нейрокомпьютера
При использовании сетей прямого распространения (сетей без циклов) вопроса об остановке сети не возникает. Действительно, сигналы поступают на элементы...
-
Способ описания синтаксических конструкций - Функциональные модели универсального нейрокомпьютера
Для описания синтаксиса языков описаний компонентов использ Уется расширенная Бэкусова нормальная форма. Описание синтаксиса языка с помощью БНФ состоит...
-
Создать_вектор В1 Создать_вектор В2 Вычислить_оценку О1 Сохранить_вктор В1 Установить_параметры В1 Случайный_вектор В2 Модификация_вектора В2, 0, 1...
-
Оценить массив сигналов (Estimate) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function Estimate( EstName : PString; Signals, Back, Answers, Reliability: PRealArray; Direv : Logic; Var Estim : Real ) :...
-
Единственный запрос первой группы выполняет основную функцию компонента интерпретатор ответа - интерпретирует массив сигналов. Интерпретировать массив...
-
Построение оценки по интерпретатору - Функциональные модели универсального нейрокомпьютера
Если в качестве ответа нейронная сеть должна выдать число, то естественной оценкой является квадрат разности выданного сетью выходного сигнала и...
-
Уровень уверенности - Функциональные модели универсального нейрокомпьютера
Часто при решении задач классификации с использованием нейронных сетей недостаточно простого ответа "входной вектор принадлежит k-му классу". Хотелось бы...
-
Как уже отмечалось в разделе "Различимость входных данных" числовые сигналы рекомендуется масштабировать и сдвигать так, чтобы весь диапазон значений...
-
Предобработчик - Функциональные модели универсального нейрокомпьютера
Данная глава посвящена компоненту предобработчик [80, 150]. В ней рассматриваются различные аспекты предобработки входных данных для нейронных сетей....
-
Описание запроса: Pascal: Function RandomDirection( Net : PString; Range : Real ) : Logic; C: Logic RandomDirection(PString Net, Real Range) Описание...
-
В этом разделе описаны запросы, выполняемых всеми компонентами, а также типы данных, используемые при описании запросов. Стандарт типов данных При...
-
Выполнить обратное Функционирование (Back) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function Back( Net : PString; BackOutSignals : PRealArray) : Logic; C: Logic Back(PString Net, PRealArray BackOutSignals)...
-
Схема обработки ошибок достаточно проста по своей идее - каждый новый обработчик ошибок может обрабатывать только часть ошибок, а обработку остальных...
-
Функции управления памятью - Функциональные модели универсального нейрокомпьютера
Для создания массивов и освобождения занимаемой ими памяти используются следующие фун Кции: Создание массива. Function NewArray( Type : Integer; Size :...
-
Компонент задачник является необходимой частью нейрокомпьютера вне зависимости от типа применяемых в нем нейронных сетей. Однако в зависимости от...
-
Во всех языках описания компонентов все параметры передаются по ссылке (передается не значение аргумента, а его адрес). Если в качестве фактического...
-
Следующий (Next) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function Next( Handle : Integer ) : Logic; C: Logic Next(Integer Handle) Описание аргументов: Handle - номер сеанса. Назначение...
-
К этой группе запросов относятся два запроса, открывающие и закрывающие сеансы работы с задачником. Начало сеанса (InitSession) Описание запроса: Pascal:...
-
В этом разделе описаны все запросы, выполняемые компонентом задачник в виде процедур и функций. При описании используется синтаксис языков Object Pascal...
-
Предопределенные константы - Функциональные модели универсального нейрокомпьютера
При описании различных компонентов возникает необходимость в использовании некоторого набора стандартизированных констант. Стандартность набора констант...
-
Запросы, однотипные для всех компонентов - Функциональные модели универсального нейрокомпьютера
Таблица 5 Префиксы компонентов Префикс Компонент Запроса Ошибки Ex 0 Исполнитель Tb 1 Задачник Pr 2 Предобработчик Nn 3 Сеть Es 4 Оценка Ai 5...
-
В данный раздел помещены запросы для работы с цветами. Отметим, что цвет примера, возвращаемый запросом GetColor можно получить также с помощью запроса...
-
Описание запроса: Pascal: Function Last( Handle : Integer ) : Logic; C: Logic Last(Integer Handle) Описание аргументов: Handle - номер сеанса. Назначение...
Сокращение описания сети - Функциональные модели универсального нейрокомпьютера