1

我最近实现了一个典型的 3 层神经网络(输入 -> 隐藏 -> 输出),我正在使用 sigmoid 函数进行激活。到目前为止,宿主程序有3种模式:

  1. 创造,这似乎工作正常。它创建一个具有指定数量的输入、隐藏和输出神经元的网络,将权重初始化为随机值或零。
  2. 训练加载数据集,计算网络的输出,然后反向传播误差并更新权重。据我所知,这行得通。在对数据集进行训练之后,权重会发生变化,但不会非常大。
  3. 处理,这似乎工作正常。但是,用于训练的数据集或任何其他数据集的数据输出非常糟糕。它通常只是一个连续的 1 流,偶尔会出现 0.999999,或者每个输入的每个输出值都是 0.9999,最后一个数字在输入之间是不同的。据我所知,最后 2 位数字与应该输出的内容之间没有相关性。

我应该如何去弄清楚什么是不正常的?

4

1 回答 1

1

您需要找到一组参数(神经元数量、学习率、训练迭代次数),这些参数可以很好地对以前看不见的数据进行分类。人们通常通过将他们的数据分成三组来实现这一点:训练、验证和测试。

无论您决定做什么,请记住,在与您训练的相同数据上进行测试确实没有意义,因为任何接近合理的分类方法都应该在这样的设置下得到 100% 正确。

于 2013-05-20T04:48:51.490 回答