我为AND门实现了一个神经网络,有2个输入单元,2个隐藏单元和1个输出单元 . 我使用40个输入训练神经网络200个时期,学习率为0.03 . 当我尝试为训练的神经网络测试AND输入时,它给出了输出为:
-
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,则神经网络输出每次都是预期的 . 我的问题是: Is applying a threshold to the output of the network necessary in order to generate expected outputs like in my case ?
1 回答
例如,阈值不是必需的,但可以帮助更好地分类 .
在你的情况下,也许你可以设置0.1的阈值为0,0.9为1.当你的输出低于0.1时,我们可以认为它是0,如果输出高于0.9,那么它是1 .
Therefore ,设置一个0.36的阈值只是因为 that 测试示例它起作用,是一个 really bad 的想法 . 因为0.36远离我们想要的输出1 . 并且因为它可能(将)不适用于所有测试数据 .
您应该考虑代码问题 .
这不是最初的问题,但这里有一些想法:
1.看看每个eopch的训练准确性 . 如果它慢慢学习,提高你的学习率,并可能在几个时代后减少它 .
2.如果准确度没有变化,请查看您的Back probagation算法
3.查看数据集并确保输入和输出正确
4.确保您的重量是随机初始化的
5. AND门可以用线性NN求解,没有隐藏层 . Myabe尝试删除隐藏的图层?