Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-04-08, 15:14   #1
daybreakqg
初级会员
 
注册日期: 2008-04-07
年龄: 39
帖子: 2
声望力: 0
daybreakqg 正向着好的方向发展
默认 [求助]bp神经网络建立问题

我在用MATLAB做BP神经网络,有两个输入,一个输出。用了以下语句建立神经网络,但是经过
训练不能达到要求,请教给为高手,是哪儿出了问题。
net=newff(minmax(p),[20,1],{'tansig' 'purelin'},'trainlm');

其中P为2X6的矩阵。
daybreakqg 当前离线   回复时引用此帖
旧 2008-04-17, 11:01   #2
wangbaozhi562
初级会员
 
注册日期: 2008-04-17
年龄: 42
帖子: 3
声望力: 0
wangbaozhi562 正向着好的方向发展
默认

有没有指定性能要求和训练次数呢?
wangbaozhi562 当前离线   回复时引用此帖
旧 2008-04-18, 10:27   #3
515825903931
初级会员
 
注册日期: 2008-04-18
年龄: 41
帖子: 27
声望力: 18
515825903931 正向着好的方向发展
默认

net=newff(minmax(p),[20,1],{'tansig' ,'purelin'},'trainlm');
1) 训练前江数据归一化处理
2) 加大训练步数,看你原先的训练步数是不是太少,模型不能充分训练
3) 改变训练精度,不要把精度要求的过于小,这样网络会无法实现
4) 变换一下传递函数与训练函数,用不同的函数效果会有所不同
5) 改变隐节点数目
515825903931 当前离线   回复时引用此帖
旧 2008-05-24, 17:19   #4
lidandan08
初级会员
 
注册日期: 2008-04-15
年龄: 38
帖子: 12
声望力: 18
lidandan08 正向着好的方向发展
默认

如何吧训练前的数据归一化处理啊
lidandan08 当前离线   回复时引用此帖
旧 2008-05-28, 15:18   #5
xs1119
初级会员
 
注册日期: 2008-04-24
年龄: 43
帖子: 21
声望力: 18
xs1119 正向着好的方向发展
默认 关于神经网络(matlab)归一化的整理

[分享]关于神经网络(matlab)归一化的整理
________________________________________
关于神经网络(matlab)归一化的整理
关于神经网络归一化方法的整理
由于采集的各数据单位不一致,因而须对数据进行[-1,1]归一化处理,归一化方法主要有如下几种,供大家参考:(by james)
1、线性函数转换,表达式如下:
y=(x-MinValue)/(MaxValue-MinValue)
说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。
2、对数函数转换,表达式如下:
y=log10(x)
说明:以10为底的对数函数转换。
3、反余切函数转换,表达式如下:
y=atan(x)*2/PI
归一化是为了加快训练网络的收敛性,可以不进行归一化处理
归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布;
当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。
归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用[1 0 0]要好。
但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。
关于用premnmx语句进行归一化:
premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)
其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和最大值。mint和maxt分别为T的最小值和最大值。
premnmx函数用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。
我们在训练网络时如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数据也应该和样本数据接受相同的预处理,这就要用到tramnmx。
下面介绍tramnmx函数:
[Pn]=tramnmx(P,minp,maxp)
其中P和Pn分别为变换前、后的输入数据,maxp和minp分别为premnmx函数找到的最大值和最小值。
(by terry2008)
matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己编程
具体用那种方法就和你的具体问题有关了
(by happy)
pm=max(abs(p(i,)); p(i,=p(i,/pm;

for i=1:27
p(i,=(p(i,-min(p(i,))/(max(p(i,)-min(p(i,));
end 可以归一到0 1 之间
0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分别表示样本最大值和最小值。
这个可以归一到0.1-0.9
xs1119 当前离线   回复时引用此帖
旧 2008-06-10, 20:07   #6
515825903931
初级会员
 
注册日期: 2008-04-18
年龄: 41
帖子: 27
声望力: 18
515825903931 正向着好的方向发展
默认

你的传递函数是purelin,最好不要用这个,试试s型函数
515825903931 当前离线   回复时引用此帖
旧 2008-06-19, 15:04   #7
AL927M
初级会员
 
注册日期: 2008-02-22
年龄: 25
帖子: 2
声望力: 0
AL927M 正向着好的方向发展
默认

呵呵学到了一点知识~归一化~
AL927M 当前离线   回复时引用此帖
旧 2008-08-30, 12:10   #8
未注册
游客
 
帖子: n/a
默认 回复: [求助]bp神经网络建立问题

学到了一点归一化知识~~
  回复时引用此帖
旧 2008-09-03, 10:28   #9
magie
初级会员
 
注册日期: 2008-09-03
年龄: 46
帖子: 10
声望力: 17
magie 正向着好的方向发展
默认 回复: [求助]bp神经网络建立问题

谢谢分享!!
magie 当前离线   回复时引用此帖
旧 2009-12-04, 20:12   #10
jztgmanutdlw
初级会员
 
注册日期: 2009-12-04
年龄: 35
帖子: 2
声望力: 0
jztgmanutdlw 正向着好的方向发展
默认 回复: [求助]bp神经网络建立问题

半懂不懂的,继续学习中···
jztgmanutdlw 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]信道函数ricianchan zhoujoe MATLAB论坛 0 2008-04-29 17:30
[讨论]哥德巴赫猜想-张俊龙的“0+0”全新的数学成果之1-《质因数两种相反的性质》 龙舞山威 数学 0 2008-04-01 15:56
【资料】MATLAB6[1].x信号处理 中少 MATLAB论坛 3 2008-03-10 16:48
【求助】如何在使用nlinfit函数过程中,对参数的取值范围进行限制? tesaxhm MATLAB论坛 0 2008-02-13 14:24


所有时间均为北京时间。现在的时间是 00:01


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.