Algorithm 不同反向传播算法的性能比较

Algorithm 不同反向传播算法的性能比较,algorithm,matlab,neural-network,backpropagation,Algorithm,Matlab,Neural Network,Backpropagation,我正在为同一个数据集实现各种反向传播算法,并尝试比较性能。我从下面的教程中得到了同样的帮助 我试图策划: 每个算法的均方误差与执行时间 与每个算法的均方误差收敛目标相比,收敛所需的时间 我已经使用了下面的代码来创建我的神经网络,并愿意知道如何实现上述两个图 %Data x=0:0.2:6*pi; y=sin(x); p=con2seq(x); t=con2seq(y); % Networks net1=feedforwardnet(20,'trainlm'); net2=feedforwar

我正在为同一个数据集实现各种反向传播算法,并尝试比较性能。我从下面的教程中得到了同样的帮助

我试图策划:

  • 每个算法的均方误差与执行时间
  • 与每个算法的均方误差收敛目标相比,收敛所需的时间
  • 我已经使用了下面的代码来创建我的神经网络,并愿意知道如何实现上述两个图

    %Data
    x=0:0.2:6*pi; y=sin(x);
    p=con2seq(x); t=con2seq(y);
    
    % Networks
    net1=feedforwardnet(20,'trainlm');
    net2=feedforwardnet(20,'traingd');
    net2.iw{1,1}=net1.iw{1,1};  %set the same weights and biases for the networks 
    net2.lw{2,1}=net1.lw{2,1};
    net2.b{1}=net1.b{1};
    net2.b{2}=net1.b{2};
    
    %training and simulation
    net1.trainParam.epochs=1;  % set the number of epochs for the training 
    net2.trainParam.epochs=1;
    net1=train(net1,p,t);   % train the networks
    net2=train(net2,p,t);
    a11=sim(net1,p); a21=sim(net2,p);  % simulate the networks with the input vector p
    
    
    net1.trainParam.epochs=14;
    net2.trainParam.epochs=14;
    net1=train(net1,p,t);
    net2=train(net2,p,t);
    a12=sim(net1,p); a22=sim(net2,p);
    
    net1.trainParam.epochs=985;
    net2.trainParam.epochs=985;
    net1=train(net1,p,t);
    net2=train(net2,p,t);
    a13=sim(net1,p); a23=sim(net2,p);
    
    %plots
    figure
    subplot(3,3,1);
    plot(x,y,'bx',x,cell2mat(a11),'r',x,cell2mat(a21),'g'); % plot the sine function and the output of the networks
    title('1 epoch');
    legend('target','trainlm','traingd');
    subplot(3,3,2);
    postregm(cell2mat(a11),y); % perform a linear regression analysis and plot the result
    subplot(3,3,3);
    postregm(cell2mat(a21),y);
    
    %
    subplot(3,3,4);
    plot(x,y,'bx',x,cell2mat(a12),'r',x,cell2mat(a22),'g');
    title('15 epochs');
    legend('target','trainlm','traingd');
    subplot(3,3,5);
    postregm(cell2mat(a12),y);
    subplot(3,3,6);
    postregm(cell2mat(a22),y);
    
    %
    subplot(3,3,7);
    plot(x,y,'bx',x,cell2mat(a13),'r',x,cell2mat(a23),'g');
    title('1000 epochs');
    legend('target','trainlm','traingd');
    subplot(3,3,8);
    postregm(cell2mat(a13),y);
    subplot(3,3,9);
    postregm(cell2mat(a23),y);
    

    请注意,当未指定错误度量时,默认情况下使用MSE

    在进行培训时,您可以执行以下操作:

    [net tr] = train(net, x, t);
    
    然后绘制
    tr.perf
    tr.tperf
    tr.vperf

    “postregm”函数来自哪个工具箱?