基于Matlab工具箱的神经网络设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)训练网络 fpd=100; % 学习过程显示频率 mne=20000;% 最大训练步数 sse=0.001; % 误差平方和指标 lr =0.01; % 学习率 tp=[fpd, mne, sse, lr]; [W1,b1,W2,b2,te,tr] = trainbp(W1,b1,'tansig',W2,b2,'purelin',X,T,tp); pause %按任意键看误差相对训练步数曲线图
Elman递归网络、径向基函数网络、Hopfield网络,自映射网 络。
由于BP网络应用广泛,本章只介绍BP网络各工具函数的 使用。
1、BP网络的训练 BP网络的训练,可高度归纳为右图三
大步骤。
其中权值初始化、训练网络、检验网 络都可调用相应的工具函数。调用时, 只需将这些工具函数视为黑箱,知道 输入什么得到什么即可。
结论:在结果不理想时(如训练误差过大),不要急着改变运行参数, 多运行几遍。
(2) 采用trainbp/trainbpx/trainlm的效果不一样,
最大训练步数 mne=1000,学习率lr=0.01时,给定累计误差SSE=0.01, 隐节点数n1=6
采用trainbp: 实际训练步数ps=1000 实际累计误差sse=0.56
第六章
基于Matlab工具箱的神经网络设计
1、BP网络的训练 2、训练BP网络的M文件 3、数据归一化时训练BP网络的框图 4、训练好的BP网络的再利用
对于一般的神经网络设计,Matlab的神经网络工具箱完全
能满足用户的需要。 目前,Matlab主要有四大工具箱和30多个附属工具箱,神
经网络工具箱属于附属工具箱的内容。 在神经网络工具箱中,设有感知器、线性网络、BP网络,
1 s1 f(·) y1
w x1 1 j1
· ·
·
xi xn
w i · · ji w·
n · jn ·
·
j sj f(·) yj
· · ·
m sm f(·) ym
n
s j w ji xi j
i 1
n
X
T[WyXj]
f(
Y
i1
w ji
xi
j )
计算中涉及到(权a) 值,必须给出一个初(始b) 权值。初始权值是程序中随机 生成的,故每次权值不一样。
1)网络结构
采用1×5×1的单隐层BP网络。
2)M文件
(1)输入数据
clf
clc X= -1:0.1:1;
T= [-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609 0.1336 –
0.2013 -0.4344 -0.5000 -0.3930 -0.1647 0.0988 0.3072 0.3960 0.3499 0.1816 -0.0312 -0.2189 -0.3201];
开始
输入已知参数
权值初始化 训练网络 检验网络 结束
1)初始化函数(initff) 前馈网络权值和偏置的初始化。
调用格式(以单隐层BP网络为例): [W1,b1,W2,b2] = initff(X, n1, 'tansig', T, 'purelin')
第第 一一 层层 权偏 值置
初 输 隐 正切型S 输
始 入结

化 向 点 函数 向
函 量数



对数型S 函数
1V
W
1 fz(·)
s1
z1
1 fy(·)
s1
y1
x1 i
xi xn n
vk1 vki
vkn
k
sk
fz(·)
zk
q
wj1
wjk
j
fy(·)
sj
yj
wjq
s z fz(·)
q
q
sm fy(·) m
ym
2)训练函数( trainbp来自百度文库) 根据样本训练网络(即修改权值)。
(2)绘X-T图 plot(X,T,'+'); title('Training vectors'); xlabel('Input vector X'); ylabel('Target vector T'); pause %按任意键看初始化及训练网络
( 3)初始化网络 n1=5; [W1,b1,W2,b2] = initff(X,n1,'tansig',T,'purelin');
(4)学习率对训练误差的影响 采用trainbp 最大训练步数 mne=1000,给定累 计误差SSE=0.01, n1=6
当lr=0.002 实际训练步数ps=1000 实际累计误差sse= 0.3960 指定点(x=0.5)的误差err=0.05
当lr=0.01 实际训练步数ps=1000 实际累计误差sse= 0.021
当lr=0.02 实际训练步数ps=1000 实际累计误差sse= 0.016
当lr=0.03 实际训练步数ps=1000 实际累计误差sse= 0.011
结论:学习率太小,收敛太慢; 学习率太大,收敛快,但波动;
3、数据归一化时训练BP网络的M文件
开始
输入已知参数
数据归一化处理
调用unify.m
以一个例子来说明。 例:设计一BP网络,使之完成下面的非线性映射。已知训练样本集为:
输入向量X=-1:0.1:1; 目标向量T= [-0.9602 -0.577 0.0729 0.3771
0.6405 0.6600 0.4609 -0.2013
-0.4344 -0.5 -0.3930 0.1647
0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2183 -0.32] 用plot(X,T,’*’)可打印这些样本点。
采用trainbpx: 实际训练步数ps=1000 实际累计误差sse=0.01
采用trainlm: 实际训练步数ps=22 实际累计误差sse=0.01
结论: trainlm最快, trainbp最慢
(3)隐节点数对训练误差的影响 采用trainbp 最大训练步数 mne=1000,学习率lr=0.01时,给定累计误差SSE=0.01
权值初始化 训练网络 检验网络
存储权值和偏值 结束
save Wbfdata W1 W2 b1 b2 f1 f2 (将权值、偏置、转移函数存于文 件名为Wbfdata 的文件中)
save MiMadata XMi XMa TMi Tma(将样本的输入/输出最小最大 值存于文件名为MiMadata的文件 中)
echo off
3)Matlab的运行
实际训练次数
te=2070次
实际误差平方和 pe=0.00999232
给定点的逼近误差 err=-0.0093
(每次运行结果不一样)
讨论:
(1) 每次运行结果不一样 ANN的训练过程(即权值的修改)是:正向传播计算实际输出,反向传播修
改权值。
以单层BP网络为例,在正向传播时,净输入、实际输出分别为:
(5)绘误差平方和相对训练步数曲线图
ploterr(tr,sse)
pause
%按任意键看函数逼近
(7)函数逼近 x=0.5; % 训练样本的一个输入 t=0.3960 % 训练样本的对应目标
y = simuff(x,W1,b1,'tansig',W2,b2,'purelin') err=y-t % 检查网络对训练样本的逼近误差





3)仿真函数(simuff ) 根据输入值计算BP网络的输出值。 利用该函数即可计算检验样本点上的误差,从而检测网络
的推广能力。 调用格式(以单隐层BP网络为例):
y = simuff(x,W1,b1,'tansig',W2,b2,'purelin')
2、训练BP网络的M文件
完成一个BP网络的训练,除了前面介绍的三大步骤,尚须进行数据 的输入输出,打印误差曲线等辅助工作,所有这些命令放在一个M文件中 来完成。
当 n1=2,实际累计误差sse=1.60703 指定点(x=0.5)的误差err=0.3960
n1=6, 实际累计误差sse=0.02 指定点(x=0.5)的误差err=0.05
n1=10, 实际累计误差sse=0.01 指定点(x=0.5)的误差err=0.03
结论是:隐节点数越多,训练误差越小。
4、训练好的BP网络的再利用
开始
清除工作空间的变量及函数
clear
将权值、偏置、转移函数、 最小最大值读入内存
读入工作数据或直接赋值
load Wbfdata load MiMadata
工作数据归一化处理
调用unifyw
计算归一化的输出
输出数据还原处理 结束
调用returnw
trainbp-利用BP算法训练前馈网络 trainbpx-利用快速BP算法训练前馈网络 trainlm-利用L-M规则训练前馈网络 调用格式(以单隐层BP网络为例):
[W1,b1,W2,b2,te,tr] = trainbp(W1,b1,'tansig',W2,b2,'purelin', X, T, tp)
修 改 后 第 一 层
实训 际练 训步 练数 次与 数对
修 改 前 第 一 层
tp=[tp 1, tp 2, tp 3, tp 4]; tp 1 =100 (学习过程显示频率) tp 2 =20000 (最大训练步数) tp 3 =0.001 (误差平方和指标) tp 4 =0.01 (学习率)


相关文档
最新文档