matlab 神经网络一直训练不好。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 神经网络一直训练不好。相关的知识,希望对你有一定的参考价值。
参考技术A 归一化:使用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函数来得到输出,一般来说会有误差,不可能与预计输出完全相等的。
以上是关于matlab 神经网络一直训练不好。的主要内容,如果未能解决你的问题,请参考以下文章