作者HOPEHOPE (new life)
看板MATLAB
标题[问题]nntool执行BPN解预测运算
时间Tue May 15 00:16:54 2012
我要用Matbla里的nntool建构一个BPN network求解预测问题
遇到一些问题,请各位先进指导
>求解问题说明
一个制程品质的预测问题,希望由输入项8个变数预测输出项3项变数,求解预测值。
>事前自学的参考资料
1.ANN&BPN 手上有好几本跟找了一些网路上的论文资料看,主要是看叶怡诚(儒林)跟张斐章(沧海)这两本。
2.Matblab主要是参考罗强华(高立图书)这本
>不懂要发问的问题
Q1:在念ANN跟BPN的时後,原先没有使用动量的情形下有学习速率这个参数。但是nntool里我找不到有设定学习速率的地方。
Q2:网路训练完以後,要再做测试。用测试後误差最小的网路来做预测网路。误差会用MSE跟MPE分别计算。但是调整不同网路参数後的测试结果并不会呈现出来。看起来是要自行依Test的误差值去计算?该怎去得到MSE跟MPE?
Q2:执行ANN的目地,主要是要做预测。我有两组指定的参数组合,要用测试後最佳的网路去做预测,如何得到预测值? 想到的方法是在Q2的步骤里做完测试後,再做一次Testing,但是输入资料改成指定的参数组合,但不输入Testing Target(因为未知),但是感觉逻辑有误的是,这样执行还是可以得到误差值,但Targets既然未知,也就没法加上误差值得到model的预测值。
以下是我执行BPN的相关设定,感谢各位前辈协助!
>MATLAB版本
2011b
>资料
Training 48笔资料 (输入资料格式8*48,输出资料格式3*48)
Testing 24笔资料 (输入资料格式8*48,输出资料格式3*24)
>做法
1.先在Excel里把资料做正规化,然後用转置的方式存在excel後,贴到
MATLAB里定义四个变数
Training_Input:训练网路时的输入资料
Training_Target:训练网路时的输出资料目标(实验的实际值做为训练目标)
Testing_Input:网路测试时的输入资料
Testing_Target:网路测试时的输出资料
2.执行nntool
用import把上个步骤里的四个变数分别定义到input/target资料
3.Create Network,设定如下
Name:network1
Network Type:free-forward backprop
Input data:由自定义变数Training_Input输入
Target data:由自定义变数Training_Target输入
Training function:TRAINLM (内定)
Adaption learning function:LEARNGDM(内定)
Performance function:MSE(内定)
Number of layer:2 (一层隐藏层+一层输出层)
Properties for :Layer1(隐藏层设定)
Number of neuron:6 (欲解的预测问题是8个输入变数,3个输出变数,所以用(8+3)/2=5.5取6)
Transfer Function:LOGSIG
Properties for :Layer2(输出层设定)
Transfer Function:LOGSIG
4.接着点选network1用open打开设定BPN设定细项
Train'Training Data
Inputs:点选自定义变数Training_Input
Targets:点选自定义变数Training_Target
Train'Training Parameters维持原设定,
mu=0.001 (内定)
Mu_dec=0.1(内定)
Mu_inc=10(内定)
执行训练,得到结果
Epoch=15 iterations
Performance =0.224
Gradient = 0.0293
Mu=0.001
Validation Checs= 6
Simulate'Simulation Data
Inputs:点选自定义变数Testing_Input
Supply Targets勾选後,Targets点选自定义变数Testing_TARGETS
右边Outputs变更输出档名为TE,按右下Simulate Network执行网路测试
--
年轻人的感受特别强,他们就像一棵小树
身上若被刻一刀,刀痕会随着树的成长而更加深刻.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.254.240.248