Пример LVQ нейронной сети


Создадим LVQ нейронную сеть, эти сети являются развитием самоорганизующихся сетей Кохонена

 

% Знать разные способы создания нейросети вам крайне необходимо, так как разные задачи

% требуют разного подхода, порой вам придется чисто экспериментально выяснять какая сеть вам подойдет.

% Сеть - LVQ сеть (Learning Vector Quantization)

% Количество нейронов - 5

% Размерность базы знаний - 2х200

% База знаний - z

% Зададим пять множеств значений кластеров,

% следовательно мы будем использовать 5 кластеров

%  Центры кластеров будут в следующих точках:

% 1. [0;3]

% 2. [0;-3]

% 3. [3;0]

% 4. [-3;0]

% 5. [0;0]

y0=0+rand(1,40)

x0=0+rand(1,40)

y1=0+rand(1,40)

x1=3+rand(1,40)

y2=0+rand(1,40)

x2=-3+rand(1,40)

y3=3+rand(1,40)

x3=0+rand(1,40)

y4=-3+rand(1,40)

x4=0+rand(1,40)

% Вот так выглядит распределение всех точек множества нейросети

figure (1)

hold on

plot(x0,y0,'o')

plot(x1,y1,'ob')

plot(x2,y2,'or')

plot(x3,y3,'og')

plot(x4,y4,'oy')

grid on

hold off

 

распределение пяти кластеров lvq сети

% Также как в feedforward сети зададим цели наших пяти кластеров

T0(1:40)=5;

T3(1:40)=4;

T4(1:40)=3;

T1(1:40)=1;

T2(1:40)=2;

% Также как в примере про feed forward сети, соединим все цели кластеров

T(1:40)=T1;

T(41:80)=T2;

T(81:120)=T3;

T(121:160)=T4;

T(161:200)=T0;

% Перед тек подавать это на вход нейросети,

% нам необходимо соединить всю базу знаний для нейронной

% системы в одну матрицу, а именно соедимим x и y и все

% это присвоим в переменную z

x(1:40)=x1;

x(41:80)=x2;

x(81:120)=x3;

x(121:160)=x4;

x(161:200)=x0;

y(1:40)=y1;

y(41:80)=y2;

y(81:120)=y3;

y(121:160)=y4;

y(161:200)=y0;

z(1,1:200)=x;

z(2,1:200)=y;

Tc = ind2vec(T);

net = newlvq(z,5,[.2 .2 .2 .2 .2]);

net = train(net,z,Tc);

объяснение кода lvq сети

nntraintool при обучение сети lvq


% Проверим на тех спектрах, которые участвовали в обучении

a = sim(net,z)

% Вывод: 100% распознование

% Проверим на спектрах, к примеру с погрешностью 0.1, которые как вы понимаете не участвовали в обучении

a = sim(net,(z+0.1))

% Вывод: 100% распознование

 

% Знать разные способы создания нейросети вам крайне необходимо, так как разные задачи
% задачи требуют разного подхода, порой вам придется чисто эксперементально выяснять какая сеть вам подойдет


% Сеть - LVQ сеть
% Колличество нейронов - 4
% Размерность базы знаний - 2х200
% База знаний - z

% Зададим пять множеств значений кластеров,
% следовательно мы будем использовать 5 кластеров

% % Центром кластер кластеров будут в следующих точках:
% 1. [0;5]
% 2. [0;-5]
% 3. [5;0]
% 4. [-5;0]
% 5. [0;0]


y0=0+rand(1,40)
x0=0+rand(1,40)
y1=0+rand(1,40)
x1=3+rand(1,40)
y2=0+rand(1,40)
x2=-3+rand(1,40)
y3=3+rand(1,40)
x3=0+rand(1,40)
y4=-3+rand(1,40)
x4=0+rand(1,40)


% Вот так выглядит распределение всех точек множества нейросети
figure (1)
hold on
plot(x0,y0,'o')
plot(x1,y1,'ob')
plot(x2,y2,'or')
plot(x3,y3,'og')
plot(x4,y4,'oy')
grid on
hold off

% Также как в feedforward сети зададим цели наших пяти кластеров

T0(1:40)=5;
T3(1:40)=4;
T4(1:40)=3;
T1(1:40)=1;
T2(1:40)=2;

% Также как в примере про feed forward сети, соединим все цели кластеров
T(1:40)=T1;
T(41:80)=T2;
T(81:120)=T3;
T(121:160)=T4;
T(161:200)=T0;

% Перед тек подавать это на вход нейросети,
% нам необходимо соединить всю базу знаний для нейронной
% системы в одну матрицу, а именно соедимим x и y и все
% это присвоим в переменную z
x(1:40)=x1;
x(41:80)=x2;
x(81:120)=x3;
x(121:160)=x4;
x(161:200)=x0;
y(1:40)=y1;
y(41:80)=y2;
y(81:120)=y3;
y(121:160)=y4;
y(161:200)=y0;
z(1,1:200)=x;
z(2,1:200)=y;


Tc = ind2vec(T);
net = newlvq(z,5,[.2 .2 .2 .2 .2]);
net = train(net,z,Tc);

% Проверим на тех спектрах, которые участвовали в обучении
a = sim(net,z)
% Вывод: 100% распознование


% Проверим на спектрах, к примеру с погрешностью 0.1, которые как вы понимаете не участвовали в обучении
a = sim(net,(z+0.1))
% Вывод: 100% распознование

Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!


Добавить комментарий


Защитный код
Обновить

Сайт создан в Seo-Dubna.ru