| 查看: 1138 | 回复: 3 | ||
kathy2836铁杆木虫 (小有名气)
|
[求助]
BP神经网络进行水质评价遇到问题已有1人参与
|
|
用BP神经网络进行水质评价,选取6个水质因子进行评价,通过rand函数在水质标准各等级标准值区间分别随机生成400个数值。因为标准中添加了劣五类水质,所以共随机生成2400组数据,其中每个等级区间内选取300个用作训练样本,其余100个为测试样本。输出目标格式为: T=[1 0 0 0 0 0;0 1 0 0 0 0;0 0 1 0 0 0;0 0 0 1 0 0;0 0 0 0 1 0;0 0 0 0 0 1]’。 输入神经元为6个,输出神经元为6个。通过试错法得到隐含层神经元数量为10的时候误差最小。训练网络的时候也能达到设定的目标误差,但是再用水质标准值归一化后通过训练好的网络得到的输出却和预计输出差很远。代码如下,请高手指点一下问题出在哪里,十分感谢! **************************************************************************************************** % 6个因子的水质标准,包含劣五类水质 P=[7.5 15 2 0.015 0.2 0.01;6 15 4 0.5 0.5 0.025;5 20 6 1 1 0.05; 3 30 10 1.5 1.5 0.1;2 40 15 2 2 0.2;0 200 25 8 40 1]'; %随机生成训练样本 P1=[(15-P(1,1))*rand(1,400)+P(1,1);P(2,1)*rand(1,400);P(3,1)*rand(1,400); P(4,1)*rand(1,400);P(5,1)*rand(1,400);P(6,1)*rand(1,400)]; P2=[(P(1,1)-P(1,2))*rand(1,400)+P(1,2);P(2,2)*rand(1,400);(P(3,2)-P(3,1))*rand(1,400)+P(3,1); (P(4,2)-P(4,1))*rand(1,400)+P(4,1);(P(5,2)-P(5,1))*rand(1,400)+P(5,1);(P(6,2)-P(6,1))*rand(1,400)+P(6,1)]; P3=[(P(1,2)-P(1,3))*rand(1,400)+P(1,3);(P(2,3)-P(2,2))*rand(1,400)+P(2,2);(P(3,3)-P(3,2))*rand(1,400)+P(3,2); (P(4,3)-P(4,2))*rand(1,400)+P(4,2);(P(5,3)-P(5,2))*rand(1,400)+P(5,2);(P(6,3)-P(6,2))*rand(1,400)+P(6,2)]; P4=[(P(1,3)-P(1,4))*rand(1,400)+P(1,4);(P(2,4)-P(2,3))*rand(1,400)+P(2,3);(P(3,4)-P(3,3))*rand(1,400)+P(3,3); (P(4,4)-P(4,3))*rand(1,400)+P(4,3);(P(5,4)-P(5,3))*rand(1,400)+P(5,3);(P(6,4)-P(6,3))*rand(1,400)+P(6,3)]; P5=[(P(1,4)-P(1,5))*rand(1,400)+P(1,5);(P(2,5)-P(2,4))*rand(1,400)+P(2,4);(P(3,5)-P(3,4))*rand(1,400)+P(3,4); (P(4,5)-P(4,4))*rand(1,400)+P(4,4);(P(5,5)-P(5,4))*rand(1,400)+P(5,4);(P(6,5)-P(6,4))*rand(1,400)+P(6,4)]; P6=[(P(1,5)-P(1,6))*rand(1,400)+P(1,6);(P(2,6)-P(2,5))*rand(1,400)+P(2,5);(P(3,6)-P(3,5))*rand(1,400)+P(3,5); (P(4,6)-P(4,5))*rand(1,400)+P(4,5);(P(5,6)-P(5,5))*rand(1,400)+P(5,5);(P(6,6)-P(6,5))*rand(1,400)+P(6,5)]; %随机生成的样本矩阵(6*2400) PP=[P1 P2 P3 P4 P5 P6]; %各选取300个做为训练样本 PI=[P1(:,1:300) P2(:,1:300) P3(:,1:300) P4(:,1:300) P5(:,1:300) P6(:,1:300)]; %其余100个做为测试样本 PT=[P1(:,301:400) P2(:,301:400) P3(:,301:400) P4(:,301:400) P5(:,301:400) P6(:,301:400)]; %读取目标输出矩阵文件(6*2400) T=xlsread('C:\Users\Kathy\Desktop\ANN\T.xlsx','Sheet1'); %对应训练样本和测试样本的输出矩阵 TI=[T(:,1:300) T(:,401:700) T(:,801:1100) T(:,1201:1500) T(:,1601:1900) T(:,2001:2300)]; TTEST=[T(:,301:400) T(:,701:800) T(:,1101:1200) T(:,1501:1600) T(:,1901:2000) T(:,2301:2400)]; %将训练样本归一化至[-1,1]区间 [PN,ps]=mapminmax(PI); %建立训练网络。这里我开始用的是tansig激活函数,但是三条线的收敛效果很差,所以改成了logsig。不知道有没有问题?是不是归一化区间为[-1,1]要对应使用tansig函数? net6=newff(minmax(PN),TI,[10,6],{'logsig','purelin'},'trainlm'); %设定输入层权重和阈值 inputWeight6=net6.IW{1,1}; inputbias6=net6.b{1}; %设定当前层权重和阈值 layerWeight6=net6.LW{2,1}; layerbias6=net6.b{2}; % 设定训练参数 net6.trainParam.show=5; net6.trainParam.lr=0.05; net6.trainParam.mc=0.95; net6.trainParam.epochs=3000; net6.trainParam.goal=0.0001; %对网络进行训练 net6=train(net6,PN,TI); A6=sim(net6,PN); E6=TI-A6; MSE6=mse(E6); ****************************************************************************** 通过以上步骤之后,得到的A6矩阵很满意,和预计输出差不多,但是当我用这个网络对水质标准值(就是上面代码中的P矩阵)归一化之后进行操作时,得到的结果却和预计输出差很多, 对30个站位的水质监测值进行同样操作,结果也是有一些站位的值异常。 请高手给予指点,问题出在哪里呢?困扰我很久了,十分感谢! |
» 猜你喜欢
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
物理学I论文润色/翻译怎么收费?
已经有83人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有23人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
» 本主题相关价值贴推荐,对您同样有帮助:
BP神经网络的数据反演求解
已经有8人回复
请教个最简单的BP神经网络matlab仿真
已经有9人回复
人工神经网络BP算法源代码与演示程序
已经有222人回复
非线性神经网络模型的模型预测控制 程序问题
已经有4人回复
请高手指教如何提高这个BP神经网络的预测精度
已经有7人回复
利用matlab 编写BP神经网络的代码
已经有9人回复
遗传算法优化BP神经网络权值阈值
已经有6人回复
求高手帮我修改BP神经网络的代码
已经有8人回复
matlab 的 bp神经网络 预测 问题..小作业..
已经有9人回复
如何用MATLAB实现 BP神经网络
已经有11人回复
【求助】BP神经网络怎么画出关系图?
已经有5人回复
【求助】运用BP神经网络训练材料本构模型的一个问题
已经有12人回复
【求助】MATLAB中BP神经网络的训练算法具体是怎么样的?
已经有5人回复
hakuna
木虫 (知名作家)
- 应助: 82 (初中生)
- 金币: 8735.9
- 散金: 158
- 红花: 126
- 帖子: 5599
- 在线: 1367.2小时
- 虫号: 167622
- 注册: 2006-01-15
- 专业: 考古理论
2楼2014-02-06 20:29:51

3楼2015-07-15 17:12:14
4楼2018-01-28 07:25:49













回复此楼