1.我有一个问题不太明白,神经网络在训练时,先对数据进行归一化处理,按照
常理训练完之后应该对数据再进行反归一化啊,可是再很多资料上根本就看不出
有反归一化这个步骤,而且很多时候训练效果不是很好。请问,哪个大侠能帮帮
我啊
2.看一下 MATLAB 里的 premnmx 函数和 postmnmx 函数.它们一个是归一一个是反
归一
3.并不是归一化的数据训练效果就好
4.我也遇到过类似的问题,有篇论文就是用 postmnmx 函数.效果不好可能是样本
数据不太准.
5.可以采用标准化 PRESTD,效果很好。
6.样本数据和测试数据是否放在一起归一化?
7.应该将样本数据和测试数据放在一起归一化,不然如果测试数据中有的值比样
本数据最大值还大,岂不是超过 1 了?
神经网络训练的时候,应该考虑极值情况,即归一化的时候要考虑你所需要
识别参数的极值,以极值作分母,这样可能效果更好一点。
8.激发函数如果选用的是倒 s 型函数,应不存在归一化的问题吧
9.我想问大家一下:在神经网络中,只有一个函数即:purelin 这个函数对训练的
输出数据不用归一化,而象 logsig 和 tansig 函数都要归一化(如果数据范围不
在[-1,1]或[0,1]之间).那既然用 purelin 函数可以不用归一化,为何又是还用
归一化呢?
用神经网络里的 PRESTD, PREPCA, POSTMNMX, TRAMNMX 等函数归一化和直接用
purelin 这个函数有什么区别啊? 我作负荷预测时,象不用归一化的效果很好呀!
10.purelin 没有作归一化啊,你用 logsig 和 tansig 作为神经元激励函数,输出
范围自然限制在[-1,1]或[0,1]之间了
11.
我所知道的关于归一化:
归一化化定义:我是这样认为的,归一化化就是要把你需要处理的数据经过处理
后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处
理的方便,其次是保正程序运行时收敛加快。
在 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)。奇异样本数据存在所引起的网络训练时间增加,并可能引起网络
无法收敛,所以对于训练样本存在奇异样本数据的数据集在训练之前,最好先进
形归一化,若不存在奇异样本数据,则不需要事先归一化。