归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。归一化是为了加快训练网络的收敛性,可以不进行归一化处理

归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布;SVM是以降维后线性划分距离来分类和仿真的,因此时空降维归一化是统一在-1--+1之间的统计坐标分布。

当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。

归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用要好。

但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。


主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。 归一化方法(Normalization Method)

1。把数变为(0,1)之间的小数 主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。

2 。把有量纲表达式变为无量纲表达式归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。

比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。

标准化方法(Normalization Method)

      

关于神经网络(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

矩阵归一化

归一化化定义:我是这样认为的,归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。

在matlab里面,用于归一化的方法共有三中,(1)premnmx、postmnmx、tramnmx(2)prestd、poststd、trastd(3)是用matlab语言自己编程。premnmx指的是归一到[-1 1],prestd归一到单位方差和零均值。(3)关于自己编程一般是归一到[0.1 0.9]

为什么要用归一化呢?首先先说一个概念,叫做奇异样本数据,所谓奇异样本数据数据指的是相对于其他输入样本特别大或特别小的样本矢量。

下面举例:

m=[0.11 0.15 0.32 0.45 30;

0.13 0.24 0.27 0.25 45];

其中的第五列数据相对于其他4列数据就可以成为奇异样本数据(下面所说的网络均值bp)。奇异样本数据存在所引起的网络训练时间增加,并可能引起网络无法收敛,所以对于训练样本存在奇异样本数据的数据集在训练之前,最好先进形归一化,若不存在奇异样本数据,则不需要事先归一化。

一个小程序:

p=[1.3711 1.3802 1.3636 1.3598 1.3502 1.3404 1.3284 1.3160 1.3118 1.3032 1.2989 1.2945 1.2923 1.2923 1.2856 1.2788 1.2742 1.2672 1.2577 1.2279 1.1903 1.0864 0.9956 ];
t=[0 1.38 1.68 1.98 2.08 2.23 2.53 2.83 2.93 3.13 3.23 3.33 3.43 3.53 3.63 3.73 3.83 3.93 4.03 4.13 4.23 4.33 4.43];
u=p;
tt=t;
p=(p-min(p))/(max(p)-min(p));%g归一化
t=(t-min(t))/(max(t)-min(t));
net=newff(minmax(p),[23 1],{'tansig' 'purelin'},'traingdx');
net.trainParam.epochs=1000;
net.trainParam.goal=0.001;
net.trainParam.show=10;
net.trainParam.lr=0.05;
[net,tr,Y,E]=train(net,p,t);
a=sim(net,p);
out=a*(max(tt)-min(tt))+min(tt);%反归一化
x=u;
y=tt;
figure(1)
plot(x,y,'k*',x,y,'-k',u,out,'ko')
title('70°EPDM的压缩永久变形')
legend('*试验数据 o预测结果')
xlabel('压缩变形保持率')
ylabel('时间的对数log10(t)')
grid on