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)
还没有任何评论哟~
