Сокращение описания сети - Функциональные модели универсального нейрокомпьютера

Предложенный в предыдущих разделах язык описания многословен. В большинстве случаев за счет хорошей структуризации сети можно опуСтить все разделы описания блока кроме раздела состава. В данном разделе описывается генерация по умолчанию разделов описания сигналов и параметров, и описания связей. Использование механизмов умолчания позволяет сильно сократить текст описания сети.

Раздел описания сигналов и параметров

Для всех видов блоков число параметров определяется как сумма чисел параметров всех подсетей, перечисленных в разделе описания состава. Это может приводить к лишним записям, но не повлияет на работу сети. Примером лишней записи может служить генерируемая запись:

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

Похожие статьи




Сокращение описания сети - Функциональные модели универсального нейрокомпьютера

Предыдущая | Следующая