newelm函数详解及Elman神经网络数据预测实例

第一次发表文章,如有侵权请通知我,谢谢!
newelm函数的使用格式为:
net = newelm(P,T, [S1…SN] , {TF1…TFN},BTF,BLF,PF,IPF,OPF)
输入参数如下:
P , RQ1矩阵,包含Q1个长度为R的典型输入向量。
T , SN
Q2矩阵,包含Q2个长度为SN的典型目标向量,SN决定了输出向量的长度。
Si,N-1个隐含层包含的神经元个数,默认值为[]。
TFi,第i层传递函数,用字符串表示。对于输出层,默认值为‘purelin’,对于隐含层,默认值为‘tansig’。
BTF,反向传播网络的训练函数,默认值为‘traingdx’,可取值还有‘traingd’、‘traingdm’、‘traingda’。
BLF,反向传播权值/阙值学习函数,默认值为‘learndm’,可取值还有‘’learngd’等函数。
PF,性能函数,默认值为‘mse’,可取值还有‘msereg’。
IPR, 输入处理函数,默认值为‘{‘fixunknowns’,‘removeconstantrows’,‘mapminmax’}’。
OPF,输处处理函数,默认值为‘{‘removeconstantrows’,‘mapminmax’}’。

elmannet函数的使用格式如下:
elmannet(layerdelays,hiddenSizes,trainFcn)
layerdelays,表示网络层延迟的行向量,可取值为0或者正数,默认值为1:2;
hiddenSizes,隐含层大小,是一个行向量,默认值为10;
trainFcn,表示训练函数的字符串,默认值为‘trainlm’。

程序代码:
Elman1.m



load data;
a=data;

%% 选取训练数据和测试数据

for i=1:6
    p(i,:)=[a(i,:),a(i+1,:),a(i+2,:)];
end
% 训练数据输入
i_train=p(1:5,:);
% 训练数据输出
o_train=a(4:8,:);
% 测试数据输入
i_test=p(6,:);
% 测试数据输出
o_test=a(9,:);

% 为适应网络结构 做转置

i_train=i_train';
o_train=o_train';
i_test=i_test';

%% 网络的建立和训练
% 利用循环,设置不同的隐藏层神经元个数
nn=[8 11 14 17];
for i=1:4
    threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
    % 用两种不同的函数建立Elman神经网络 隐藏层为nn(i)个神经元
    net=newelm(threshold,[nn(i),3],{
     'tansig','purelin'});
    %net = elmannet(1:2,nn(i),'trainlm');
    % 设置网络训练参数
    net.trainparam.epochs=1000;
    net.trainparam.show=20;
    % 初始化网络
    net=init(net);
    % Elman网络训练
    net=train(net,i_train,o_train);
    % 预测数据
    y=sim(net,i_test);
    % 计算误差
    error(i,:)=y'-t_test;
end

你可能感兴趣的:(神经网络)