MATLAB神经网络建模中的归一化与非归一化

MATLAB神经网络建模中的归一化与非归一化,matlab,neural-network,normalization,Matlab,Neural Network,Normalization,我有一个数据集,有5个输入和一个输出。我想用MATLAB中的神经网络建模来训练这个数据集。当我在没有标准化的情况下输入数据时,MSE在1e+3附近非常大。但是,当我规范化输入数据时,输出错误大约变成1e-4。因此,据我所知,规范化是一项重要任务 我的两个问题: 1-在训练过程之前,我的实际目标(输出)在[0 1000]或[50 800]范围内,但在标准化后,由于标准化,神经网络给我的值在[0 1]范围内。我的意思是,我不能在我的实际范围内得到任何值[0 1000]或[50 800]。如何将神经网

我有一个数据集,有5个输入和一个输出。我想用MATLAB中的神经网络建模来训练这个数据集。当我在没有标准化的情况下输入数据时,MSE在
1e+3
附近非常大。但是,当我规范化输入数据时,输出错误大约变成
1e-4
。因此,据我所知,规范化是一项重要任务

我的两个问题:

1-在训练过程之前,我的实际目标(输出)在
[0 1000]
[50 800]
范围内,但在标准化后,由于标准化,神经网络给我的值在
[0 1]
范围内。我的意思是,我不能在我的实际范围内得到任何值
[0 1000]
[50 800]
。如何将神经网络的输出转换为
[0 1000]
[50 800]
范围内的正确目标?这样做合乎逻辑吗?当我的实际(目标)输出应该是
[0 1000]
[50 800]
时,如何处理
[0 1]
范围内的值


2-我想用一个新的输入模式测试经过训练的神经网络。当我在训练阶段规范化输入数据时,这个新的输入模式应该被规范化。对怎么用?我的意思是,我在训练阶段的输入数据大约是1000个数据,我用
(x-min)/(max-min)
标准化了它们。我应该在这个
min
max
范围内规范化我的一个新输入模式吗?

好吧,假设规范化是线性的(可能是线性的),你可以将输出乘以1000,然后四舍五入


您还可以使用不同的传递函数。Sigmoid有许多可取的特性,但它不能产生大于1的任何东西(如果输出达到1000,这是必要的)。我认为最后一层通常具有线性传递函数-但由于您的输出如此之大,在这种特殊情况下可能不够。

几乎所有激活函数都在
[01]
[-11]
范围内工作。我的意思是,数据应该在这些范围内标准化。如果我的实际目标介于
[50 800]
之间,如何将NN输出更改为此范围?我想,我应该在这两个不同的范围之间做一个映射,
[01]
从NN到实际范围
[50 800]
。我说得对吗?是的,我相信你是对的。