Advertisement

MATLAB之BP神经网络

阅读量:
网络名 子对象 属性
net 输入/输出向量、网络层、目标向量、权值向量、阈值向量 range、size、transferFCn

1、生成神经网络

复制代码
复制代码
    <span style="font-size:14px;">net=newff(P,T,[S1 S2 ... S(N-1)],{TF1 TF2 ... TFN1},BTF,BLF,PF,IPF,OPF,DDF);</span><span style="font-size:14px;">
    </span>
复制代码
    <span style="font-size:14px;">P为输入向量(元素数X样本数)  T为输出向量(元素数X样本数)   Si为第i层长度(神经元个数 )             </span><span style="font-size:14px;">TFi为第i层的传递函数    </span><span style="font-size:14px;">BTF为训练函数     BLF为学习算法    PF为性能函数</span>

  • 传递函数

常用传递函数:purelin(); tansig(); logsig()

传递函数求导:

在工作空间输入缀有‘deriv’的指令,找到相应的导数函数

复制代码
    <span style="font-size:14px;font-weight:normal;">logsig('deriv')
    
    ans=
    dlogsig</span>

  • 训练函数

两种方式

(1)先构建网络,并设定训练算法,用批处理训练函数train()

复制代码
    <span style="font-size:14px;">net=newff(P,T,[S1 S2 ... S(N-1)],{TF1 TF2 ... TFN1},BTF,BLF,PF,IPF,OPF,DDF);
    </span><span style="font-size:14px;">
    %先设置好相应的训练参数
    </span><span style="font-size:14px;">%net.trainParam.epochs
    %</span><span style="font-size:14px;">net.trainParam.time
    </span><span style="font-size:14px;">%</span><span style="font-size:14px;">net.trainParam.goal
    </span><span style="font-size:14px;">%...</span><span style="font-size:14px;">
    </span><span style="font-size:14px;">net=train(net,P,T)</span>

(2)直接用相应训练算法的训练函数训练

复制代码
    <span style="font-size:14px;">[net,tr,Ac,El]=traingdm(net,Pd,Tl,Ai,Q,TS,VV,TV)</span>

训练函数 :确定调整的大算法,是全局调整权值和阈值,考虑的是整体误差的最小;

学习函数 :决定调整量怎么确定,是局部调整权值和阈值,考虑的是单个神经元误差的最小。

训练函数是如何让误差最小的一些算法,如梯度下降,共轭梯度,这里强调算法。学习函数是指,权值和阈值的调整规则,或者称更新规则。训练函数求得权值或阈值之后,由学习函数进行调整,然后再由训练函数训练新的权值或阈值,然后再调整,反复下去。

2、权值初始化

newff()可以自动完成,但无法重新赋初值,重新初始化用init()函数

复制代码
    <span style="font-size:14px;">net=init(net);</span>

3、网络仿真

给定网络结构和输入变量p,计算相应的网络输出a

复制代码
    <span style="font-size:14px;">p=[];
    a=sim(net,p)</span>

全部评论 (0)

还没有任何评论哟~