ParamDefDefaultType -1 1
Connections
InSignals[1..N]<=> In. InSignals[1..N] {Входные сигналы – входному слою}
{Выходные сигналы нейронов - с выходного слоя сети}
OutSignals[1..M]<=> Net. OutSignals[1.. M]
{Параметры сети последовательно всем подсетям}
Parameters[1.. NumberOf( Parameters,In)] <=> In. Parameters[1.. NumberOf( Parameters,In)]
Parameters[ NumberOf( Parameters,In)+1.. NumberOf( Parameters,In)+ NumberOf( Parameters,Net)] <=> Net. Parameters[1.. NumberOf( Parameters,Net)]
{Передача сигналов от слоя к слою}
In. OutSignals[1..M] <=> Net. InSignals[1..M] {От входного к циклу}
Net. OutSignals[1..M] <=> Net. InSignals[1..M] {От первого скрытого слоя}
End
{Нейрон сети Хопфилда из N нейронов}
CascadHopf(N : Long)
ContentsSum(N),Sign_Easy {Сумматор и пороговый элемент}
InSignalsN {Число входных сигналов – N}
OutSignals1 {Число выходных сигналов – 1}
Parameters NumberOf( Parameters,Sum(N)) {Число параметров – N}
Connections
InSignals[1..N] <=> Sum. InSignals[1..N] {Входы нейрона – входы сумматора}
{Выходной сигнал нейрона – выходной сигнал порогового элемета}
OutSignals<=> Sign_Easy. OutSignals
{Параметры нейрона – парамеры сумматора}
Parameters[1.. NumberOf( Parameters,Sum(N))] <=> Sum. Parameters[1.. NumberOf( Parameters,Sum(N))]
{Выход сумматора на вход порогового элемента}
Sum. OutSignals<=> Sign_Easy. InSignals
End
{Слой нейронов Хопфилда}
LayerHLay(N : Long)
ContentsHop: Hopf(N)[N] {В состав слоя входит N нейронов}
InSignalsN * N {N нейронов по N входных сигналов}
OutSignalsN {Один выходной сигнал на нейрон}
ParametersN * 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 нейронов}
UntilHopfield(N : Long) InSignals= OutSignals
ContentsBLay(N,N) ,HLay(N) {Слой точек ветвления и слой нейронов}
InSignalsN {Число входных сигналов – N}
OutSignalsN {Число выходных сигналов – N}
ParametersN * 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
NetWorkHop UsedSubNets; {Сеть Хопфилда на пять нейронов}
MainNetHopfield(5)
Parameters0, 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
Сокращение описания сети
Предложенный в предыдущих разделах язык описания многословен. В большинстве случаев за счет хорошей структуризации сети можно опустить все разделы описания блока кроме раздела состава. В данном разделе описывается генерация по умолчанию разделов описания сигналов и параметров, и описания связей. Использование механизмов умолчания позволяет сильно сократить текст описания сети.
Раздел описания сигналов и параметров
Для всех видов блоков число параметров определяется как сумма чисел параметров всех подсетей, перечисленных в разделе описания состава. Это может приводить к лишним записям, но не повлияет на работу сети. Примером лишней записи может служить генерируемая запись:
Читать дальше