我为AND门实现了一个神经网络,有2个输入单元,2个隐藏单元和1个输出单元。 我使用40个输入训练神经网络200个时期,学习率为0.03。 当我尝试为训练的神经网络测试AND输入时,它给出了输出:
这不是网络预期的输出。但我 f我将阈值设置为0.36并将所有值设置为高于0.36为1并且保持为0,神经网络输出就像预期的一样。 我的问题是:是否为网络输出应用了一个阈值,以便像我的情况那样生成预期的输出?
答案 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尝试删除您的隐藏层吗?