Neural network 神经网络的阈值化

Neural network 神经网络的阈值化,neural-network,threshold,perceptron,Neural Network,Threshold,Perceptron,我用2个输入单元、2个隐藏单元和1个输出单元为与门实现了一个神经网络。 我以0.03的学习率,用40个输入训练神经网络,共200个时代。 当我尝试测试经过训练的神经网络的数据和输入时,它会给我以下输出: 0,0=0.295(预计为0) 0,1=0.355(预计为0) 1,0=0.329(预计为0) 1,1=0.379(预计为1) 这不是网络预期的输出。但是,如果我将阈值设置为0.36,并将0.36以上的所有值设置为1,其余值设置为0,则每次神经网络输出都与预期一样。 我的问题是:是否需要对网络的

我用2个输入单元、2个隐藏单元和1个输出单元为与门实现了一个神经网络。 我以0.03的学习率,用40个输入训练神经网络,共200个时代。 当我尝试测试经过训练的神经网络的数据和输入时,它会给我以下输出:

  • 0,0=0.295(预计为0)
  • 0,1=0.355(预计为0)
  • 1,0=0.329(预计为0)
  • 1,1=0.379(预计为1)
  • 这不是网络预期的输出。但是,如果我将阈值设置为0.36,并将0.36以上的所有值设置为1,其余值设置为0,则每次神经网络输出都与预期一样。
    我的问题是:是否需要对网络的输出应用阈值,以生成预期的输出,如我的情况?

    阈值不是必需的,但可以帮助更好地分类,例如

    在您的情况下,您可以为0设置阈值0.1,为1设置阈值0.9。当你的输出低于0.1时,我们可以认为它是0,如果输出高于0.9,那么它是1。p> 因此将阈值设置为0.36,仅仅因为使用测试示例它有效,这是一个非常糟糕的想法。 因为0.36远不是我们想要的输出1。因为它可能(不会)与您的所有测试数据一起工作。

    你应该考虑你的代码的问题。

    这不是最初的问题,但这里有一些想法:
    1.看看你在每一次eopch中的训练准确性。如果学习速度较慢,请提高学习速度,并在几年后降低学习速度。
    2.如果准确度不变,请查看您的背部验证算法
    3.查看数据集,确保输入和输出正确
    4.确保随机初始化权重

    5.与门可以用线性神经网络求解,不需要隐藏层。Myabe是否尝试删除隐藏层?

    您好,您不应该对网络的输出应用阈值。您必须将所有权重设置为随机(包括每个神经元的阈值),然后给它年代/假设结果并计算误差(假设结果和网络输出之间的差异),然后根据该误差,您必须使用反向传播()来调整网络的每个权重。经过一段时间后,每个神经元将调整其权重(包括阈值),以从给定的输入中提供正确的输出。抱歉,重复评论,没有足够的空间,但这里是一个完整的数学反向传播演示,您应该能够通过代码再现: