其它神经网络

【测试】InitElman的测试Demo

作者 : 老饼 发表日期 : 2023-08-06 07:56:25 更新日期 : 2023-08-08 05:32:01
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



本代码用于测试自写Elman神经网络初始化代码《InitElman》与matlab工具箱的初始化结果是否一致




    代码简要解说    


DEMO代码主要干的事情如下:
 👉1. 先用工具箱进行初始化一个两隐层的Elman神经网络              
👉2. 再用自写代码InitElman初始化一个两隐层的Elman神经网络

然后分别打印工具箱的初始化结果,与InitElman的初始化结果

 


    InitElman的测试DEMO    


% ------------输入输出数据---------------------
X = [-1:0.2:1;-1:0.2:1]*10;
Y = sin (X(1,:)*10)+X(2,:);
% 将输入数据进行归一化(因为matlab工具箱会默认以归一化数据进行初始化)
X = 2*(X-min(X,[],2))./(max(X,[],2)-min(X,[],2))-1;

%-------- 调用工具箱初始化elman神经网络 ------------- 
rand('seed',888);
net  = newelm(X,Y,[4 2], {'tansig','tansig','purelin'});  % 新建一个elman网络

disp('------matlab工具箱初始化的权重和阈值-------')
w21  =  net.iw{1,1}        % 第1层(输入层)到第2层(隐层)的权值
wd2  =  net.lw{1,1}        % 第2层(隐层)的延迟权重
b2   =  net.b{1}           % 第2层(隐层)的阈值
w32  =  net.lw{2,1}        % 第2层到第3层的权值
wd3  =  net.lw{2,2}        % 第3层的延迟权重
b3   =  net.b{2}           % 第3层的阈值
w43  =  net.lw{3,2}        % 第3层(输入层)到第4层(输出层)的权值
b4   =  net.b{3}           % 第4层(输出层)的阈值

%------- 调用自写函数初始化BP神经网络 ----------------------
rand('seed',888);
[W,B]=InitElman(X,Y,[4 2], {'tansig','tansig','purelin'});
disp('-------自写代码初始化的权重和阈值-------')
W21 = W{1,2}                 % 第1层(输入层)到第2层(隐层)的权值
Wd2 = W{2,2}                 % 第2层(隐层)的延迟权重
B2  = B{2}                   % 第2层(隐层)的阈值
W32 = W{2,3}                 % 第2层到第3层的权值
Wd3 = W{3,3}                 % 第3层(隐层)的延迟权重
B3  = B{3}                   % 第3层的阈值
W43 = W{3,4}                 % 第3层(输入层)到第4层(输出层)的权值
B4  = B{4}                   % 第4层(输出层)的阈值

版本:matlab 2018a



    代码运行结果   


代码运行结果如下 
     
从结果可以看到,两者的初始化结果是一致的
说明InitElman成功复现了matlab神经网络工具的初始化逻辑








 End 






联系老饼