利用recurrent network 解决xor的分类问题
%% 3 units recurrent,2 circle delay
clc
clear
close all
%% net config
f = @(x) 1./(1+exp(-x));
delta = @(i,j) i==j;
alpha = 4;
p1 = zeros(3,6);
p2 = zeros(3,6);
p3 = zeros(3,6);
%% train
x = randi([0,1],[2,1]);
y = zeros(3,1); % t = 0;
z = [y;x;1];
%w = -1 + 2 * rand(3, 6); %权值为何要初始化为负值?
w = rand(3,6);
y = f(w*z); % t=1
d = xor(x(1),x(2));
maxIter = 1000;
for n = 1:maxIter
x = randi([0,1],[2,1]);
z = [y;x;1];
y = f(w*z); % t=2,3 .... n
for i = 1:3
for j = 1:6
q1 = y(1)*(1-y(1))*(w(1,1)*p1(i,j)+w(1,2)*p2(i,j)+w(1,3)*p3(i,j)+delta(1,i)*z(j));
q2 = y(2)*(1-y(2))*(w(2,1)*p1(i,j)+w(2,2)*p2(i,j)+w(2,3)*p3(i,j)+delta(2,i)*z(j));
q3 = y(3)*(1-y(3))*(w(3,1)*p1(i,j)+w(3,2)*p2(i,