matlab 神经网络一直训练不好。

训练出网络以后,把样本输入带进去,OUT输出不是样本的输出。是不是证明网络训练失败了?还有,我查了些资料说要对数据进行归一化。我没看明白怎么样对数据进行归一化。请大神指教... 训练出网络以后,把样本输入带进去,OUT输出不是样本的输出。是不是证明网络训练失败了?还有,我查了些资料说要对数据进行归一化。我没看明白怎么样对数据进行归一化。请大神指教! 展开
 我来答
meng2235
2015-01-04 · TA获得超过1.4万个赞
知道大有可为答主
回答量:4585
采纳率:74%
帮助的人:3015万
展开全部
归一化:使用Matlab自带的mapminmax函数。

mapminmax按行逐行地对数据进行标准化处理,将每一行数据分别标准化到区间[ymin, ymax]内,其计算公式是:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。如果某行的数据全部相同,此时xmax=xmin,除数为0,则Matlab内部将此变换变为y = ymin。

(1) [Y,PS] = mapminmax(X,YMIN,YMAX)——将数据X归一化到区间[YMIN,YMAX]内,YMIN和YMAX为调用mapminmax函数时设置的参数,如果不设置这两个参数,这默认归一化到区间[-1, 1]内。标准化处理后的数据为Y,PS为记录标准化映射的结构体。
【例1】Matlab命令窗口输入:X=12+8*randn(6,8); [Y,PS] = mapminmax(X,0,1),则将随机数矩阵X按行逐行标准化到区间[0,1]内,并返回标准矩阵Y和结构体PS(至于它的作用,将在后面介绍到),它记录了X的行数、X中各行的最大值与最小值等信息。这里:
PS =
name: 'mapminmax'
xrows: 6
xmax: [6x1 double]
xmin: [6x1 double]
xrange: [6x1 double]
yrows: 6
ymax: 1
ymin: 0
yrange: 1
no_change: 0
gain: [6x1 double]
xoffset: [6x1 double]

(2) [Y,PS] = mapminmax(X,FP) ——将YMIN和YMAX组成的结构体FP作为映射参数(FP.ymin和FP.ymax.)对进行标准化处理。
【例2】Matlab命令窗口输入:XX=12+8*randn(6,8); FP.ymin=-2; FP.ymax=2; [YY,PSS] = mapminmax(XX,FP),则将随机数矩阵X按行逐行标准化到区间[-2,2]内,并返回标准矩阵YY和结构体PSS。

(3) Y = mapminmax('apply',X,PS) ——根据已有给定的数据标准化处理映射PS,将给定的数据X标准化为Y。
【例3】在例1的基础上,Matlab命令窗口输入:XXX=23+11*randn(6,8); YYY= mapminmax('apply',XXX,PS),则根据例1的标准化映射,将XXX标准化(结果可能不全在先前设置的[YMIN,YMAX]内,这取决于XXX中数据相对于X中数据的最大值与最小值的比较情况)。注意:此时,XXX的行数必须与X的行数(PS中已记录)相等,否则无法进行;列数可不等。

(4) X = mapminmax('reverse',Y,PS) ——根据已有给定的数据标准化处理映射PS,将给定的标准化数据Y反标准化。
【例4】在例1的基础上,Matlab命令窗口输入:YYYY=rand(6,8); XXXX = mapminmax('reverse', YYYY,PS),则根据例1的标准化映射,将YYYY反标准化。注意:此时,YYYY的行数必须与X的行数(PS中已记录)相等,否则无法进行;列数可不等。

(5) dx_dy = mapminmax('dx_dy',X,Y,PS) ——根据给定的矩阵X、标准化矩阵Y及映射PS,获取逆向导数(reverse derivative)。如果给定的X和Y是m行n列的矩阵,那么其结果dx_dy是一个1×n结构体数组,其每个元素又是一个m×n的对角矩阵。这种用法不常用,这里不再举例。

对于另一个问题:使用sim函数来得到输出,一般来说会有误差,不可能与预计输出完全相等的。
theeeeeo
推荐于2017-10-10 · TA获得超过619个赞
知道小有建树答主
回答量:219
采纳率:100%
帮助的人:157万
展开全部
有以下几种归一化方法(x、y分别为原数据、归一化后的值):

1、线性函数转换,表达式如下:
y=(x-MinValue)/(MaxValue-MinValue)
说明:MaxValue、MinValue分别为训练样本的最大值和最小值。
2、对数函数转换,表达式如下:
y=log10(x)
说明:以10为底的对数函数转换。
3、反余切函数转换,表达式如下:
y=atan(x)*2/PI
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式