Рефераты. Функциональные модели универсального нейрокомпьютера

                            Back.Parameters[N + I] = Back.Parameters[N + I] +

                                                                                                                 Back.OutSignals[1] * Sqr(InSignals[I]);

                            W[I] = W[I] + Back.OutSignals[1] * (Parameters[I] +

                                                                                     2 * Parameters[N + I] * InSignals[I])

                            For J = I + 1 To N Do Begin

                                      Back.Parameters[K] = Back.Parameters[K] +

                                                                  Back.OutSignals[1] * InSignals[I] * InSignals[J];

                                      R = Back.OutSignals[1] * Parameters[K];

                                      W[I] = W[I] + R * InSignals[J];

                                      W[J] = W[J] + R * InSignals[I];

                                      K = K + 1

                            End

                   End;

                   For I = 1 To N Do

                            Back.InSignals[1] = W[I]

         End                                                                              {Конец описания обратного функционирования}

End Square_Sum_Plus {Конец описания адаптивного квадратичного сумматора}

End NetBibl                                                       {Конец библиотеки}

Описание блоков

Описание блока состоит из пяти основных разделов: заголовка описания блока, описания сигналов и параметров, описания состава, описания связей и конца описания блока. Существует два типа блоков – каскад и слой (Layer). Различие между этими двумя типами блоков состоит в том, что подсети, входящие в состав слоя, функционируют параллельно и независимо друг от друга, тогда как составляющие каскад подсети функционируют последовательно, причем каждая следующая подсеть использует результаты работы предыдущих подсетей. В свою очередь существует три вида каскадов – простой каскад (Cascad), цикл с фиксированным числом шагов (Loop) цикл по условию (Until). Различие между тремя видами каскадов очевидно – простой каскад функционирует один раз, цикл Loop функционирует указанное в описании число раз, а цикл Until функционирует до тех пор, пока не выполнится указанное в описании условие. В условии, указываемом в заголовке цикла Until, возможно использование сравнений массивов или интервалов массивов сигналов. Например, запись

InSignals=OutSignals

эквивалентна следующей записи

InSignals[1..N]=OutSignals[1..N]

которая эквивалентна вычислению следующей логической функции:

Function Equal(InSignals, OutSignals : RealArray) : Logic;

    Var Long I;

             Logic L

    Begin

             L = True

             For I = 1 To N Do

                      L = L And (InSignals[I] = OutSignals[I]);

             Equal = L

    End

Раздел описания состава следует сразу после заголовка блока за разделом описания сигналов и параметров и начинается с ключевого слова Contents, за которым следуют имена подсетей (блоков или элементов) со списками фактических аргументов, разделенные запятыми. Все имена подсетей должны предваряться псевдонимами. В дальнейшем указание псевдонима полностью эквивалентно указанию имени подсети со списком фактических аргументов или без, в зависимости от контекста. Признаком конца раздела описания состава подсети служит имя подсети за списком фактических аргументов которого не следует запятая.

Раздел описания сигналов и параметров следует за разделом описания состава и состоит из указания числа входных и выходных сигналов и числа параметров блока. В константных выражениях, указывающих число входных и выходных сигналов и параметров можно использовать дополнительно функцию NumberOf с двумя параметрами. Первым параметром является одно из ключевых слов InSignals, OutSignals, Parameters, а вторым – имя подсети со списком фактических аргументов. Функция NumberOf возвращает число входных или выходных сигналов или параметров (в зависимости от первого аргумента) в подсети, указанной во втором аргументе. Использование этой функции необходимо в случае использования блоком аргументов-подсетей. Концом раздела описания сигналов и параметров служит одно из ключевых слов ParamDef, Static или Connections.

Раздел определения типов параметров является необязательным разделом в описании блока и начинается с ключевого слова ParamDef. В каждой строке этого раздела можно задать минимальную и максимальную границы изменения одного типа параметров. Если в описании сети встречаются параметры неопределенного типа, то этот тип считается совпадающим с типом DefaultType. Описание типа не обязано предшествовать описанию параметров этого типа. Так, например, определение типа параметров может находиться в описании главной сети. Концом этого раздела служит одно из ключевых слов Connections.

Раздел описания связей следует за разделом описания сигналов и параметров и начинается с ключевого слова Connections. В разделе «Описание распределения сигналов» детально описано распределение связей.

Раздел конца описания блока состоит из ключевого слова End, за которым следует имя блока.

Пример описания блоков

При описании блоков используются элементы, описанные в библиотеке Elements, приведенной в разд. «Пример описания элементов».

NetBibl SubNets Used Elements;

{Библиотека подсетей, использующая библиотеку Elements}

{Сигмоидный нейрон с произвольным сумматором на N входов}

Cascad NSigm(aSum : Block; N : Long; Char : Real)

{В состав каскада входит произвольный сумматор на N входов и сигмоидный нейрон с необучаемой характеристикой}

         Contents aSum(N), S_NotTrain(Char)

{Число входных сигналов определяет сумматор}

         InSignals NumberOf(InSignals, aSum(N))

         OutSignals 1                                                                {Один выходной сигнал}

{Число параметров определяет сумматор}

         Parameters NumberOf(Parameters, aSum(N))

         Connections

                            {Входные сигналы нейрона – входные сигналы сумматора}

                   InSignals[1.. NumberOf(InSignals, aSum(N))] <=>

                            aSum.InSignals[1.. NumberOf(InSignals, aSum(N))]

                            {Выход сумматора – вход преобразователя}

                   aSum.OutSignals <=> S_NotTrain.InSignals

                   OutSignals <=> S_NotTrain.OutSignals

                            {Параметры нейрона – параметры сумматора}

                   Parameters[1.. NumberOf(Parameters, aSum(N))] <=>

                            aSum.Parameters[1.. NumberOf(Parameters, aSum(N))]

End            {Конец описания сигмоидного нейрона с произвольным сумматором}

                   {Слой сигмоидных нейронов с произвольными сумматорами на N входов}

Layer Lay1(aSum : Block; N,M : Long; Char : Real)

         Contents Sigm: NSigm(aSum,N,Char)[M]  {В состав слоя входит M нейронов}

{Число входных сигналов определяется как взятое M раз число входных сигналов нейронов. Вместо имени нейрона используем псевдоним}

         InSignals M * NumberOf(InSignals, Sigm)

         OutSignals M                                                              {Один выходной сигнал на нейрон}

         Parameters M * NumberOf(Parameters, Sigm)

{Число параметров определяется как взятое M раз число параметров нейронов}

         Connections

{Первые NumberOf(InSignals, NSigm(aSum,N,Char)) сигналов первому нейрону, и т.д.}

                   InSignals[1..M * NumberOf(InSignals, Sigm)] <=>

                            Sigm[1..M].InSignals[1.. NumberOf(InSignals, Sigm)]

                                      {Выходные сигналы нейронов - выходные сигналы сети}

                   OutSignals[1..M] <=> Sigm[1..M].OutSignals

                                      {Параметры слоя – параметры нейронов}

                   Parameters[1..M * NumberOf(Parameters, Sigm)] <=>

                            Sigm[1..M].Parameters[1.. NumberOf(Parameters, Sigm)]

End   {Конец описания слоя сигмоидных нейронов с произвольным сумматором}

{Слой точек ветвления}

Layer BLay( N,M : Long)

         Contents Branch(N)[M]          {В состав слоя входит M точек ветвления}

         InSignals M                                                        {По одному входному сигналу на точку ветвления}

         OutSignals M * N                                     {N выходных сигналов у каждой точки ветвления}

         Connections

{По одному входу на точку ветвления}

                   InSignals[1..M] <=> Branch[1..M].InSignals

{Выходные сигналы в порядке первый с каждой точки ветвления, затем второй и т.д. }

                   OutSignals[1..N * M] <=> Branch[+:1..M].OutSignals[1..N]

End                                                                                                 {Конец описания слоя Точек ветвления}

{Полный слой сигмоидных нейронов с произвольными сумматорами на N входов}

Cascad FullLay(aSum : Block; N,M : Long; Char : Real)

{Слой точек ветвления и слой нейронов}

         Contents Br: BLay1(M,N), Ne: Lay1(aSum,N,M,Char) 

         InSignals N                                                                  {Число входных сигналов – число точек ветвления}

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.