神经网络的阈值处理

时间:2018-05-17 04:45:48

标签: neural-network threshold perceptron

我为AND门实现了一个神经网络,有2个输入单元,2个隐藏单元和1个输出单元。 我使用40个输入训练神经网络200个时期,学习率为0.03。 当我尝试为训练的神经网络测试AND输入时,它给出了输出:

  1. 0,0 = 0.295(预期0)
  2. 0,1 = 0.355(预期0)
  3. 1,0 = 0.329(预期0)
  4. 1,1 = 0.379(预期1)
  5. 这不是网络预期的输出。但我 f我将阈值设置为0.36并将所有值设置为高于0.36为1并且保持为0,神经网络输出就像预期的一样。 我的问题是:是否为网络输出应用了一个阈值,以便像我的情况那样生成预期的输出?

1 个答案:

答案 0 :(得分:0)

阈值不是必需的,但是可以帮助更好地进行分类。

在您的情况下,也许您可​​以将0的阈值设置为0.1,将1的阈值设置为0.9。当您的输出低于0.1时,我们可以认为它是0,如果输出高于0.9,则它是1

因此,将阈值设置为0.36只是因为测试示例有效,这是真的很糟糕的想法。 因为0.36离我们想要的输出1很远。而且因为它可能(将)无法使用您的所有测试数据。

您应该考虑自己的代码有问题。

这不是最初的问题,但这是一些想法:
    1.看看您在每个时期的训练准确性。如果学习速度较慢,请提高学习率,甚至可能在短时期后降低学习率。
    2.如果准确性没有变化,请查看您的Back打包算法
    3.查看您的数据集,并确保输入和输出正确
    4.确保您的权重是随机初始化的
    5. AND门可以使用线性NN求解,而没有隐藏层。 Myabe尝试删除您的隐藏层吗?