У меня проблема с нейронной сетью проекта. Эта сеть должна решить проблему шахматной доски, показанную на изображении № 1 .
x = [0 0 0 1 1 1 2 2 2]; % coordinate x - input
y = [0 1 2 0 1 2 0 1 2]; % coordinate y - input
p = [x; y]; % input matrix
d = [1 0 1 0 1 0 1 0 1]; % true value ( + its 1, o its 0)
Разделение области в первом слое (вертикальные и горизонтальные линии на рисунке). В конце дня я хочу ввести вектор p в нейронную сеть и получить ответ типа d.
Я нашел только одно решение (вы можете начать читать с% второго уровня).
figure
hold on
plotpv(p,d);
%%% first layer
%neuronx1
neuronx1 = perceptron;
neuronx1 = configure(neuronx1,minmax(p),1);
neuronx1.iw{1,1} = [1 0];
neuronx1.b{1} = -0.5;
plotpc(neuronx1.iw{1,1},neuronx1.b{1})
%neuronx2
neuronx2 = perceptron;
neuronx2 = configure(neuronx2,minmax(p),1);
neuronx2.iw{1,1} = [1 0];
neuronx2.b{1} = -1.5;
plotpc(neuronx2.iw{1,1},neuronx2.b{1})
%neurony1
neurony1 = perceptron;
neurony1 = configure(neurony1,minmax(p),1);
neurony1.iw{1,1} = [0 1];
neurony1.b{1} = -0.5;
plotpc(neurony1.iw{1,1},neurony1.b{1})
%neurony2
neurony2 = perceptron;
neurony2 = configure(neurony2,minmax(p),1);
neurony2.iw{1,1} = [0 1];
neurony2.b{1} = -1.5;
plotpc(neurony2.iw{1,1},neurony2.b{1})
wy1 = sim(neuronx1, p);
wy2 = sim(neuronx2, p);
wy3 = sim(neurony1, p);
wy4 = sim(neurony2, p);
p = [wy1; wy2; wy3; wy4];
%%%%% second layer
neuron1 = perceptron;
neuron1 = train(neuron1, p, d);
p = sim(neuron1, d);
%%% third layer
p = [p;d]; % including true value to input
neuron2 = perceptron;
neuron2 = train(neuron2, p, d);
output = sim(neuron2, p) % output
Вывод, он показывает истинное значение, но, по моему мнению, использование действительного значения (d) как части ввода в третий слой - неправильная идея.
Не могли бы вы дать мне несколько советов или мнений по поводу использования истинного значения в качестве вход?
Это мой первый проект нейронной сети, спасибо в адвенсе.