极度基础的神经网络无法学习

我已经学习了一些CNTK Python教程,并且尝试编写一个极度基础的单层神经网络来计算逻辑与运算。我的代码是可以运行的,但是网络无法学习——实际上,每训练一个小批次,损失值就变得越来越糟糕。

训练输出示例

Minibatch: 0, Loss: -164.9998, Error: 0.75Minibatch: 20, Loss: -166.0998, Error: 0.75Minibatch: 40, Loss: -167.1997, Error: 0.75Minibatch: 60, Loss: -168.2997, Error: 0.75Minibatch: 80, Loss: -169.3997, Error: 0.75Minibatch: 100, Loss: -170.4996, Error: 0.75Minibatch: 120, Loss: -171.5996, Error: 0.75Minibatch: 140, Loss: -172.6996, Error: 0.75Minibatch: 160, Loss: -173.7995, Error: 0.75Minibatch: 180, Loss: -174.8995, Error: 0.75Minibatch: 200, Loss: -175.9995, Error: 0.75Minibatch: 220, Loss: -177.0994, Error: 0.75Minibatch: 240, Loss: -178.1993, Error: 0.75

我实在不明白这是怎么回事。错误率一直卡在0.75,我想这意味着网络的表现和随机猜测一样。我不确定是否是自己误解了人工神经网络架构的要求,还是误用了这个库。

任何帮助都将不胜感激。


回答:

你正在尝试用softmax作为最终层来解决一个二元分类问题。softmax层在这里并不合适,它只适用于多类别(类别数>=3)的问题。

对于二元分类问题,你应该进行以下两个修改:

  • 在输出层添加一个sigmoid层(这将使你的输出看起来像一个概率)
  • 使用binary_cross_entropy作为你的评判标准(你需要至少使用这个版本

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注