Пример 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
% Также как в 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% распознование
% задачи требуют разного подхода, порой вам придется чисто эксперементально выяснять какая сеть вам подойдет
% Сеть - 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% распознование
Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!
←Предыдущая LVQ сеть програмный код |
---|