Hamming.mws

Сеть Хэмминга

>    restart;

>    with(LinearAlgebra):

>    f:= (i,j) -> if (i=j) then 1 else -epsilon fi: # Веса 2-го слоя

>    y:=Vector # Распознаваемый образец

>         ([-1,-1,-1, 1,-1]):

>    poslin:=(x) -> if (x<0) then 0 else x fi: # Positiv Linear Function

>    x[1]:=[-1,-1,-1,-1,-1]: # Набор данных

>    x[2]:=[-1, 1,-1,-1,-1]:

>    x[3]:=[-1,-1, 1,-1,-1]:

>    x[4]:=[-1, 1, 1,-1,-1]:

>    m:=4:          # Число данных (число нейронов выхода)

>    N:=nops(x[1]); # Длина вектора (число нейронов входа)

>    epsilon:=1/4:  # Внедиагональный элемент 2-го слоя <1/(m-1)

>    b:=Vector(4,N):# Вектор смещения

>    W1:=Matrix([seq(x[i],i=1..m)]): # Матрица весов 1-го слоя

>    W2:=Matrix(4,f):                # Матрица весов 2-го слоя

N := 5

>    ff:=(x)->1-x/N;

>    РасстояниеНэмминга:=(b-W1.y)/2:

>    p:=map(ff,РасстояниеНэмминга);

ff := x -> 1-x/N

p := Vector(%id = 151907228)

>    p:=evalf(map(poslin,W2.p));#Запустить эту строчку несколько раз

p := Vector(%id = 151765592)