Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
Для каскадов раздел описания связей строится по следующим правилам:
1. Входные сигналы блока связываются с входными сигналами первой подсети в списке подсетей в разделе описания состава. Если для первой подсети указано не единичное число экземпляров, то все входные сигналы связываются с входными сигналами первого экземпляра подсети.
2. Выходные сигналы блока связываются с выходными сигналами последней подсети в списке подсетей в разделе описания состава. Если для последней подсети указано не единичное число экземпляров, то все выходные сигналы связываются с выходными сигналами последнего (с максимальным номером) экземпляра подсети.
3. Массив параметров блока образуется из массивов параметров подсетей в порядке перечисления подсетей в разделе описания состава — первая часть массива параметров блока состоит из параметров первой подсети, следующая — второй и т. д. Если какая-либо подсеть в разделе описания состава указана с некоторым не равным единице числом экземпляров, то считается, что экземпляры этой подсети перечислены в списке в порядке возрастания номера.
4. Выходные сигналы каждой подсети, кроме последней связываются с входными сигналами следующей подсети в списке подсетей в разделе описания состава. Если какая-либо подсеть в разделе описания состава указана с некоторым не равным единице числом экземпляров, то считается, что экземпляры этой подсети перечислены в списке в порядке возрастания номера.
5. Для блоков типа 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),