【问题标题】:normalization and non-normalization in Neural Network modeling in MATLABMATLAB中神经网络建模中的归一化和非归一化
【发布时间】:2014-02-03 18:08:34
【问题描述】:

我有一个包含 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- 我想用一种新的输入模式测试经过训练的 NN。当我在训练阶段对输入数据进行归一化时,应该对这个新的输入模式进行归一化。是的?如何?我的意思是,我在训练阶段的输入数据大约是 1000 个数据,我用(x-min)/(max-min) 对它们进行了归一化。我应该在这个minmax 范围内标准化我的一个新输入模式吗?

【问题讨论】:

    标签: matlab neural-network normalization


    【解决方案1】:

    好吧,假设归一化是线性的(可能是),您可以将输出乘以 1000 并四舍五入。

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

    【讨论】:

    • 几乎所有激活函数都在[0 1][-1 1] 范围内工作。我的意思是,数据应该在这些范围内标准化。如果我的真正目标在[50 800] 之间,我怎样才能将 NN 输出更改为这个范围?我想,我应该在这两个不同的范围之间做一个映射,来自 NN 的[0 1] 和真正的范围[50 800]。我说的对吗?
    • 是的,我相信你是。
    猜你喜欢
    • 2013-11-19
    • 2014-01-01
    • 2015-07-10
    • 2018-09-10
    • 2014-08-17
    • 2018-10-17
    • 2015-12-23
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多