Showing posts with label MATLAB,神经网络. Show all posts
Showing posts with label MATLAB,神经网络. Show all posts

Wednesday, February 11, 2009

MATLAB工具箱BP神经网络应用介绍(3)

  • MATLAB工具箱BP神经网络应用介绍(2)

  • MATLAB工具箱BP神经网络应用介绍(1)


  • 在MATLAB工具箱bp神经网络(1)和(2)中介绍了两个BP神经网络的训练函数,这里接着介绍第三个人工神经网络训练函数traingdx函数。
    traingdx函数
    traingdx函数结合了自适应改变学习速率和动量法,和traingda函数完全相同,只是增加了一个动量因子参数mc。
    net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingdx');
    net.trainParam
    ans =
    epochs: 100
    goal: 0
    lr: 0.0100 %学习速率基值
    lr_dec: 0.7000 %学习速率减少率
    lr_inc: 1.0500 %学习速率增加率
    max_fail: 5
    max_perf_inc: 1.0400
    mc: 0.9000 %动量因子
    min_grad: 1.0000e-006
    show: 25
    time: Inf
    MATLAB命令行窗口中输入:
    net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingdx');
    net.trainParam.show = 50;
    net.trainParam.lr = 0.1;
    net.trainParam.lr_inc = 1.05;
    net.trainParam.lr_dec = 0.85;
    net.trainParam.mc = 0.9;
    net.trainParam.epochs = 300;
    net.trainParam.goal = 0.01;
    [net,tr]=train(net,P,T);
    %回代检验
    A=sim(net,P);
    %测试样本检验
    a=sim(net,p);
    下图所示为traingdx函数bp神经网络训练过程曲线,测试样本的输出结果为:
    TRAINGDX-calcgrad, Epoch 0/300, MSE 5.70591/0.01, Gradient 7.94678/1e-006
    TRAINGDX-calcgrad, Epoch 50/300, MSE 0.0185869/0.01, Gradient 0.0617651/1e-006
    TRAINGDX-calcgrad, Epoch 72/300, MSE 0.00997184/0.01, Gradient 0.0194848/1e-006
    TRAINGDX, Performance goal met.
    a =
    0.5880 0.6223 0.5236




    More details could be found in my published book:
    MATLAB编程基础与典型应用
    北京人民邮电出版社,2008
    ISBN:978-7-115-17932-6/TP

    Pls contact me with Email:lhd06@mails.tsinghua.edu.cn

    更多MATLAB资源,欢迎访问:
  • MATLAB工具箱BP神经网络应用介绍(2)

  • MATLAB工具箱BP神经网络应用介绍(1)

  • Solve nonlinear least-squares (nonlinear data-fitt...

  • 非线性最小二乘曲线拟和问题

  • Visual C++中创建MAT文件

  • Visual C++中使用MATLAB语言C,C++数学函数库

  • Visual C++中调用MATLAB引擎配置

  • MATLAB引擎技术介绍

  • MATLAB里关于集合运算和二进制数的运算的函数

  • 在Matlab图形中怎样输入特殊符号

  • 怎么把Matlab中数组元素写入到文本文档中

  • 在同一个M文件中,怎样实现参数的传递
  • Tuesday, February 10, 2009

    MATLAB工具箱BP神经网络应用介绍(2)

  • MATLAB工具箱bp神经网络应用介绍(1)



  • 在上一篇MATLAB工具箱bp神经网络应用介绍中,已经介绍了traingd函数的使用。这一节将继续介绍MATLABBP神经网络训练函数。

    (2)traingda函数
    BP神经网络使用traingd函数和traingdm函数训练时,学习速率在训练过程中保持恒定不变,那么训练结果对学习速率的灵敏度大,不同的学习速率对网络的训练结果影响大,如果学习速率过大,那么网络将变得不稳定,如果学习速率过小,那么网络收敛速度慢,训练时间大大加长。因此,对于给定训练样本和目标样本,必须首先确定最优的学习速率。而traingda函数在人工神经网络训练中采用变学习速率的网络训练算法,可以有效地克服学习速率难以确定的缺点,在训练过程中自适应改变学习速率的大小。
    net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingda');
    net.trainParam
    ans =
    epochs: 100
    goal: 0
    lr: 0.0100 %学习速率基值
    lr_inc: 1.0500 %学习速率增加率为1.05
    lr_dec: 0.7000 %学习速率减少率为0.7
    max_fail: 5
    max_perf_inc: 1.0400
    min_grad: 1.0000e-006
    show: 25
    time: Inf
    MATLAB命令行窗口中输入以下程序段:
    net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingda');
    net.trainParam.show = 50;
    net.trainParam.lr = 0.1;
    net.trainParam.lr_inc = 1.05;
    net.trainParam.lr_dec = 0.85;
    net.trainParam.epochs = 300;
    net.trainParam.goal = 0.01;
    [net,tr]=train(net,P,T);
    %回代检验
    A=sim(net,P);
    %测试样本检验
    a=sim(net,p);
    下图所示为traingda函数bp神经网络训练过程曲线,BP神经网络对测试样本的输出结果为:
    TRAINGDA-calcgrad, Epoch 0/300, MSE 0.784702/0.01, Gradient 1.98321/1e-006
    TRAINGDA-calcgrad, Epoch 36/300, MSE 0.00993732/0.01, Gradient 0.0156508/1e-006
    TRAINGDA, Performance goal met.
    a =
    0.4192 0.5750 0.7746


    More details could be found in my published book:
    MATLAB编程基础与典型应用
    北京:人民邮电出版社,2008
    ISBN:978-7-115-17932-6/TP

    Pls contact me with Email:lhd06@mails.tsinghua.edu.cn

    更多MATLAB交流,欢迎访问:
  • MATLAB工具箱BP神经网络应用介绍(1)

  • Solve nonlinear least-squares (nonlinear data-fitt...

  • 非线性最小二乘曲线拟和问题

  • Visual C++中创建MAT文件

  • Visual C++中使用MATLAB语言C,C++数学函数库

  • Visual C++中调用MATLAB引擎配置

  • MATLAB引擎技术介绍

  • MATLAB里关于集合运算和二进制数的运算的函数

  • 在Matlab图形中怎样输入特殊符号

  • 怎么把Matlab中数组元素写入到文本文档中

  • 在同一个M文件中,怎样实现参数的传递
  • Monday, February 9, 2009

    MATLAB工具箱BP神经网络应用介绍(1)

    MATLAB神经网络工具箱中包含了许多BP神经网络相关函数,本文主要将主要介绍BP神经网络创建函数newff函数,重点介绍BP神经网络的训练函数。
    1.BP网络创建函数newff函数
    MATLAB神经网络工具箱中,使用newff函数创建一个反向传播算法的BP网络。其调用格式如下:
    net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
    在输入参数中,PR为R维的输入元素的R×2最大最小值矩阵;Si为第i层网络神经元的个数,共有N1层;TFi为第i层网络的转移函数,默认为tansig函数;BTF为神经网络的训练函数,默认为trainlm函数;BLF为神经网络权值/偏差的学习函数;PF为性能评价函数,默认为mse函数。在BP网络中原理介绍中,介绍了几种不同的转移函数及它们的曲线特性,在下面章节中,将详细地介绍BP神经网络不同的训练函数。在这里同样使用例14.3中蠓虫分类问题的数据,建立BP神经网络,使用不同的训练函数进行网络训练。
    % 输入样本
    P=[1.24 1.36 1.38 1.38 1.38 1.4 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.3;
    1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96];
    % 目标样本
    T=[1 1 1 1 1 1 1 1 1 0 0 0 0 0 0];
    %检验样本
    p=[1.24,1.28,1.4;1.8,1.84,2.04];
    %创建一个两层的BP神经网络,转移函数分别为logsig函数和purelin函数
    net=newff(minmax(P),[5,1],{'logsig','purelin'});
    A = sim(net,P);
    没有经过训练的神经网络输出情况为:
    A =
    Columns 1 through 8
    1.2514 0.7697 0.7263 0.7536 0.6203 0.5283 0.4206 0.2528
    Columns 9 through 15
    0.4334 1.2217 0.6259 0.8826 0.5589 0.5563 0.5717
    可以发现,此时网络的输出与目标样本的误差非常大。
    2.BP网络训练函数
    MATLAB神经网络工具箱提供了大量的BP网络训练函数,包括反向传播算法函数、自适应学习速率算法函数、共扼梯度算法函数、线性搜索函数和拟牛顿法函数等。
    (1)traingd函数
    traingd函数使用梯度下降算法训练神经网络,通过net.trainParam可以查看traingd函数网络训练的相关参数。
    net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingd');
    >> net.trainParam
    ans =
    epochs: 100 %最大的迭代次数
    goal: 0 %训练目标
    lr: 0.0100 %学习速率
    max_fail: 5
    min_grad: 1.0000e-010
    show: 25
    time: Inf
    使用traingd函数进行蠓虫分类,在MATLAB命令行窗口中输入:
    net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingd');
    net.trainParam.show = 50;
    net.trainParam.lr = 0.2;
    net.trainParam.epochs = 300;
    net.trainParam.goal = 0.01;
    [net,tr]=train(net,P,T);
    %回代检验
    A=sim(net,P);
    %测试样本检验
    a=sim(net,p);

    训练过程及测试样本检验结果如下:
    TRAINGD-calcgrad, Epoch 0/300, MSE 1.26821/0.01, Gradient 4.27366/1e-010
    TRAINGD-calcgrad, Epoch 50/300, MSE 0.0224145/0.01, Gradient 0.0415513/1e-010
    TRAINGD-calcgrad, Epoch 100/300, MSE 0.0123293/0.01, Gradient 0.0241917/1e-010
    TRAINGD-calcgrad, Epoch 125/300, MSE 0.0099568/0.01, Gradient 0.0194082/1e-010
    TRAINGD, Performance goal met.
    a =
    0.5978 0.6097 0.3808
    网络训练过程均方差下降曲线如下图所示。为了比较各种不同训练函数的特点,在后面的实例中,将统一使用蠓虫分类问题的训练样本数据和测试样本数据。


    More details could be found in my published book:
    MATLAB编程基础与典型应用
    北京:人民邮电出版社,2008
    ISBN:978-7-115-17932-6/TP

    Pls contact me with Email:lhd06@mails.tsinghua.edu.cn

    更多MATLAB交流资源,欢迎访问:
  • Solve nonlinear least-squares (nonlinear data-fitt...

  • 非线性最小二乘曲线拟和问题

  • Visual C++中创建MAT文件

  • Visual C++中使用MATLAB语言C,C++数学函数库

  • Visual C++中调用MATLAB引擎配置

  • MATLAB引擎技术介绍

  • MATLAB里关于集合运算和二进制数的运算的函数

  • 在Matlab图形中怎样输入特殊符号

  • 怎么把Matlab中数组元素写入到文本文档中

  • 在同一个M文件中,怎样实现参数的传递

  • SimPowerSystem工具箱使用注意事项

  • 在MATLAB/Simulink环境中编辑Scope中的图形方法