Parameters N * NumberOf(Parameters, Hop)
Connections
{NumberOf(InSignals, Hop) сигналов первому нейрону, и т.д.}
InSignals[1..Sqr(N)] <=> Hop[1..N].InSignals[1..N]
{Выходные сигналы нейронов - выходные сигналы сети}
OutSignals[1..N]<=> Hop[1..N].OutSignals
{Параметы слоя – параметры нейронов}
Parameters[1..N *NumberOf(Parameters, Hop)] <=> Hop[1..N].Parameters[1..NumberOf(Parameters, Hop)]
End
{Сеть Хопфилда из N нейронов}
Until Hopfield(N : Long) InSignals=OutSignals
Contents BLay(N,N),HLay(N) {Слой точек ветвления и слой нейронов}
InSignals N {Число входных сигналов – N}
OutSignals N {Число выходных сигналов – N}
Parameters N * NumberOf(Parameters,HLay(N)) {Число параметров – N*N}
Connections
{Входные сигналы – точкам ветвления}
InSignals[1..N]<=> BLay.InSignals[1..N]
{Выходные сигналы нейронов – выходные сигналы сети}
OutSignals[1..N]<=> HLay.OutSignals[1..N]
Parameters[1..N*NumberOf(Parameters, HLay(N))] <=> HLay.Parameters[1..N*NumberOf(Parameters, HLay(N))]
{Выход точек ветвления на вход нейронов}
BLay.OutSignals[1..Sqr(N)] <=> HLay.InSignals[1..Sqr(N)]
{Замыкаем конец на начало}
HLay.OutSignals[1..N] <=> BLay.InSignals[1..N]
End
End NetLib
NetWork HopUsed SubNets; {Сеть Хопфилда на пять нейронов}
MainNet Hopfield(5)
Parameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
ParamMask -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1;
End NetWork
Предложенный в предыдущих разделах язык описания многословен. В большинстве случаев за счет хорошей структуризации сети можно опустить все разделы описания блока кроме раздела состава. В данном разделе описывается генерация по умолчанию разделов описания сигналов и параметров, и описания связей. Использование механизмов умолчания позволяет сильно сократить текст описания сети.
Для всех видов блоков число параметров определяется как сумма чисел параметров всех подсетей, перечисленных в разделе описания состава. Это может приводить к лишним записям, но не повлияет на работу сети. Примером лишней записи может служить генерируемая запись:
Parameters M * NumberOf(Parameters,Branch(N))
в описании слоя точек ветвления, поскольку точки ветвления не имеют параметров.
Число входных сигналов блока определяется по следующим правилам:
• для слоя число входных сигналов равно сумме числа входных сигналов всех подсетей, перечисленных в разделе описания состава;
• для каскадов всех видов число входных сигналов блока равно числу входных сигналов подсети, стоящей первой в списке подсетей в разделе описания состава.
Число выходных сигналов блока определяется по следующим правилам:
• для слоя число выходных сигналов равно сумме числа выходных сигналов всех подсетей, перечисленных в разделе описания состава;
• для каскадов всех видов число выходных сигналов блока равно числу выходных сигналов подсети, стоящей последней в списке подсетей в разделе описания состава;
Описания всех сетей, приведенные в предыдущем разделе полностью соответствуют правилам генерации. В качестве более общего примера приведем раздел описания сигналов и параметров двух условных блоков.
Layer A
Contents Net1, Net2[K], Net3
InSignals NumberOf(InSignals,Net1)+K*NumberOf(InSignals,Net2) + NumberOf(InSignals,Net3)