• [matlab]bp神经网络工具箱学习笔记


    基本就三个函数:

    newff():创建一个bp神经网络

    train():训练函数

    sim():仿真函数

    同时具有可视化界面,但目前不知道可视化界面如何进行仿真,且设置不太全

    工具箱:Neural net fitting

    textread使用方法:http://blog.sina.com.cn/s/blog_9e67285801010bju.html

     ex1.

    clear; 
    clc;
    %注意P矩阵,matlab默认将一列作为一个输入
    P=[0.5152	0.8173	1.0000 ;
         0.8173	1.0000	0.7308;
         1.0000	0.7308	0.1390;
         0.7308	0.1390	0.1087;
         0.1390	0.1087	0.3520;
         0.1087	0.3520	0.0000;]';
    %以第四个月的销售量归一化处理后作为目标向量
    T=[0.7308 0.1390 0.1087 0.3520 0.0000 0.3761];
    %创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有5个神经元,输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,训练函数为梯度下降函数,即标准学习算法
    net=newff([0 1;0 1;0 1],[5,1],{'tansig','logsig'},'traingd');%minmax(P)
    net.trainParam.epochs=1500;%最大迭代次数.
    net.trainParam.goal=0.01; %训练的误差精度
    %设置学习速率为0.1
    LP.lr=0.1;
    net=train(net,P,T); 
    a=[0.1;0.2;0.3];
    a=premnmx(a);
    b=sim(net,a);
    b=postmnmx(b,0,1);
    b
    

    ex2.

    P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2 3.2 3.9 3.1 3.2;
    9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2 9.5 9 9.5 9.7;
    3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5 3.4 3.1 3.6 3.45;
    2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1 2.15 2 2.1 2.15;
    140 120 140 150 80 130 130 100 130 140 115 80 90 130;
    2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5 2.8 2.2 2.7 4.6;
    11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11 11.9 13 11.1 10.85;
    50 70 50 80 50 60 65 40 65 50 50 50 70 70];
    T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24 2.24 2.2 2.2 2.35];
    [p1,minp,maxp,t1,mint,maxt]=premnmx(P,T);
    
    %创建网络
    net=newff(minmax(P),[8,6,1],{'tansig','tansig','purelin'},'trainlm');%此时的minmax函数是正确的,minmax是在每一行取最大最小值,而这也是有意义的
    %设置训练次数
    net.trainParam.epochs = 5000;
    %设置收敛误差
    net.trainParam.goal=0.0000001;
    %训练网络
    [net,tr]=train(net,p1,t1);
    %TRAINLM, Epoch 0/5000, MSE 0.533351/1e-007, Gradient 18.9079/1e-010
    %TRAINLM, Epoch 24/5000, MSE 8.81926e-008/1e-007, Gradient 0.0022922/1e-010
    %TRAINLM, Performance goal met.
     
    %输入数据
    a=[3.0;9.3;3.3;2.05;100;2.8;11.2;50];
    %将输入数据归一化
    a=premnmx(a);
    %放入到网络输出数据
    b=sim(net,a);
    %将得到的数据反归一化得到预测数据
    c=postmnmx(b,mint,maxt);
    c
    

      

    ex3.

    close all;
    clear;
    clc;
    %读取训练数据
    [f1,f2,f3,f4,class] = textread('Train.txt','%f%f%f%f%d',75,'delimiter',',');
    %特征值归一化
    [input,minI,maxI] = premnmx( [f1,f2,f3,f4 ]')  ;
    %构造输出矩阵
    s=length(class) ;
    output=zeros(s,3) ;
    for i=1:s 
       output(i,class(i)) = 1 ;
    end
    %output=class';
    %创建神经网络
    net = newff( minmax(input),[10 3],{ 'logsig','purelin' },'traingdx' ); 
    %设置训练参数
    net.trainparam.show=50 ;
    net.trainparam.epochs=500 ;
    net.trainparam.goal=0.01 ;
    net.trainParam.lr=0.01 ;
    %开始训练
    net=train(net,input,output') ;
     
    
    %读取测试数据
    [t1 t2 t3 t4 c]=textread('Test.txt','%f%f%f%f%d',75,'delimiter',',');
    %测试数据归一化
    testInput=tramnmx([t1,t2,t3,t4]',minI,maxI);
    %仿真
    Y = sim(net,testInput)
    %统计识别正确率
    [s1,s2]=size( Y ) ;
    hitNum=0 ;
    for i=1:s2
        [m,Index]=max( Y(:,i));
        if(Index==c(i)) 
            hitNum=hitNum+1;
        end
    end
    sprintf('识别率是 %3.3f%%',100*hitNum/s2)
    

      

    拟合曲线:

      

  • 相关阅读:
    博客园侧边栏添加QQ链接
    通俗易懂的理解 Redux(知乎)
    Redux生态系统
    ReactNative环境搭建
    cordova插件开发
    java类初始化
    Cordova指令
    安卓中如何调用jni
    JNI开发的常见错误
    JNI-java native interface(java本地接口)
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7215536.html
Copyright © 2020-2023  润新知