【问题标题】:MATLAB - gradient in neural network starting from NaN?MATLAB - 从 NaN 开始的神经网络中的梯度?
【发布时间】:2015-02-12 09:07:49
【问题描述】:

我尝试在 MATLAB 2011 中使用神经网络工具。

我遇到了一个非常奇怪的问题。

我只是使用神经网络的 GUI 来提供我的输入和所有内容。

我的神经网络在初始化时的梯度是 NaN。

神经网络在 1 次迭代中停止。 (我猜这是因为梯度是 NaN)。

就我对 NN 的理解而言,梯度不应该是 NaN。

我确实使用脚本模式进行了检查。

隐藏层大小为25。(尝试更改此,没有效果。没想到会这样,但以防万一。)

正在使用 trainlm 的默认功能。

训练/验证/测试设置为 80/10/10 拆分。 (也玩过这个。)

最大停止周期设置为 1000。 需要的验证迭代(对于连续检查,默认设置为 6)。

所以有什么想法,为什么我的梯度会变成 NaN?非常感谢任何帮助!

【问题讨论】:

  • 考虑 0 除法和 inf 乘法

标签: matlab neural-network


【解决方案1】:

检查输入数据中是否没有NaN

any(isnan(inputData(:)))

还要确保您的预处理步骤(例如数据规范化)不会引入NaN(例如除以零)

【讨论】:

  • 是的。但这真的很重要吗?大约 40 人中有 1 人。
  • 是的,这很重要,你看NaN 倾向于传播:nan*rand(10,1)
  • 哦,好吧。其次,我为我在 MATLAB 中的天真感到抱歉,但我目前正在从文件中读取一些值,计算一些统计值,然后使用 GUI 工具。因此,当您看到预处理时,您是指我编写的任何代码,还是在工具中完成了一些我可以检查的内部规范化?
  • 处理缺失数据(NaN)的一些常用方法:替换为均值、插补、...
  • @Sylar:主要是你的代码(老实说,我不记得 NN 是否在内部进行了一些规范化,但我对此表示怀疑。文档会确定是否有)
猜你喜欢
  • 2011-08-24
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 2018-06-11
相关资源
最近更新 更多