RNN3: bus driver 问题

%% bus driver  
%  
clc
clear
close all

%% net config
X = [   1,0,0,0;
        0,1,0,0;
        0,0,1,0;
        0,0,0,1;    ] ;
label = 0;
f = @(x) 1./(1+exp(-x));
getx = @() X(:,randi([1,4])); 
delta = @(i,j) i==j;
alpha = 5.0;
p1 = zeros(2,7);
p2 = zeros(2,7);
w = 1 - 2*rand(2,7);

%% train
x = getx();
y = zeros(2,1);
z = [y;x;1];
s = w*z;
y = f(s);
error = [ ];
n = 0;
% figure;
% hold on ;
for n = 1:5000                
    x = getx();
    z = [y;x;1];
    d = 0;
    if(x(1) == 1)
        label = 1;
    end;
    if(label && x(2) == 1)
            d = 1 ;
            label = 0;
    end; 
    s = w*z;
    y = f(s);
    for i = 1:2
        for j = 1:7
        q1 = f(s(1))*(1-f(s(1)))*(w(1,1)*p1(i,j)+w(1,2)*p2(i,j)+delta(1,i)*z(j));
        q2 = f(s(2))*(1-f(s(2)))*(w(2,1)*p1(i,j)+w(2,2)*p2(i,j)+delta(2,i)*z(j));
        p1(i,j) = q1;
        p2(i,j) = q2;
        end;
    end;
    err = (d - y(2));
    error = [error,1/2*(err*err)];
%     plot(error,'-b');
%     pause(0.00001);
    w = w + alpha*err*p2;
end;
plot(error,'-b')

%% test 
pass = 0;
y = zeros(2,1);
x = getx();
z = [y;x;1];
s = w*z;
y = f(s);
for n = 1:1000
    x = getx();
    z = [y;x;1];
    s = w*z;    
    y = f(s);
    d = 0;
    if(x(1) == 1)
        label = 1;
    end; 
    if(label && x(2) == 1)
           d = 1;
           label = 0;
    end;
    if ( abs(d - y(2))<0.5 )
            pass = pass + 1;
    else
        x 
        d
        n
    end; 
end;
pass
w

%% Note:
%1.使用 动态画图,查看err达到查看更新是否收敛的目的
%   画图的运算速度回很慢,可以不动态画图,而是最后查看误差的plot,查看是否收敛
%2.ab 和 a****b的问题:
%   自己读论文得到的理解仅仅是ab的问题,而不是a**b的问题的思考;
%   默认是思考  简单的情况
%3.对test程序的理解
%   可以加入作者的weight测试自己的test程序是否正确
%   如果用作者的weight都不通过,test程序肯定有错
%4.对err图的思考:
%   当err图显示不收敛的时候test的错误率就大
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值