Chinaunix首页 | 论坛 | 博客
  • 博客访问: 806955
  • 博文数量: 87
  • 博客积分: 2571
  • 博客等级: 少校
  • 技术积分: 726
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-19 15:04
个人简介

重新开始,做回自我,爱拼的男人最牛!

文章分类
文章存档

2021年(2)

2020年(3)

2019年(17)

2014年(1)

2011年(1)

2010年(63)

我的朋友

分类: 信息化

2010-06-14 16:06:12

看过论坛上有些人的意见,我做了一些实践,下面附上两个例子,来说明如何通过保存网络权值和阈值来使网络每次结果都保持一致。
例一
load inputdata;
load tardata;
p1=inputdata
t1=tardata
pause
n=4
[pn,minp,maxp,tn,mint,maxt] = premnmx(p1,t1); %数据归一化处理,
load net;%加载网络,之前需要保存
net.iw{1,1}=[-0.758343.89321.6326
0.476972.521-3.5032
1.40913.3253-2.597
-3.33092.73061.0965
];
net.b{1}=[4.659
-1.3414
1.5612
-4.4187
];
net.lw{2,1}=[0.317641.9731.7567-3.0237
-3.3405-1.1758-3.382-2.0439
-3.0972-0.211712.23292.4666
-2.3821.02471.17043.552
-1.5409-3.85771.981-0.54623
-0.169732.1569-2.66952.9891
2.58942.9169-0.49674-2.2608
];
net.b{2}=[-4.1166
5.1424
-0.083322
-1.6465
0.11892
-2.6711
0.834
];
pause
a1=sim(net,pn);
pause;
[a1n]=postmnmx(a1,mint,maxt);%反归一化得到所要数据
例二
load inputdata;
load tardata;
p1=inputdata
t1=tardata
pause
n=4
[pn,minp,maxp,tn,mint,maxt] = premnmx(p1,t1); %数据归一化处理,
net=newff(minmax(pn),[n,7],{'logsig','tansig'},'traingd');
pause
%以下是将训练好的网络权值和阈值保存起来之后,把较好性能的网络用作最终网络,此时无须再进行训练,直接加载网络权值和阈值即可
net.iw{1,1}=[-0.758343.89321.6326
0.476972.521-3.5032
1.40913.3253-2.597
-3.33092.73061.0965
];
net.b{1}=[4.659
-1.3414
1.5612
-4.4187
];
net.lw{2,1}=[0.317641.9731.7567-3.0237
-3.3405-1.1758-3.382-2.0439
-3.0972-0.211712.23292.4666
-2.3821.02471.17043.552
-1.5409-3.85771.981-0.54623
-0.169732.1569-2.66952.9891
2.58942.9169-0.49674-2.2608
];
net.b{2}=[-4.1166
5.1424
-0.083322
-1.6465
0.11892
-2.6711
0.834
];
a1=sim(net,pn);
pause;
[a1n]=postmnmx(a1,mint,maxt);%反归一化得到所要数据
这两个例子的不同之处在于,网络可以调用已经保存好的,亦可以自己在建立一个,结果是一样的。

训练好的权值、阈值的输出方法是:
输入到隐层权值:w1=net.iw{1,1}
隐层阈值:theta1=net.b{1}
隐层到输出层权值:w2=net.lw{2,1};
输出层阈值:theta2=net.b{2}

阅读(2259) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~