为什么这个XOR神经网络有2个输出?

时间:2017-05-11 23:22:46

标签: neural-network artificial-intelligence deep-learning xor deeplearning4j

通常,解决XOR的简单神经网络应该有2个输入,隐藏层中有2个神经元,输出层中有1个神经元。

但是,以下示例实现有2个输出神经元,我不明白:

https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/feedforward/xor/XorExample.java

为什么作者在其中放置了2个输出神经元?

修改: 该例子的作者指出,他在隐藏层使用4个神经元,在输出层使用2个神经元。但是我仍然没有理解为什么,为什么形状为{4,2}而不是{2,1}?

3 个答案:

答案 0 :(得分:3)

这称为一个热门编码。这个想法是你每班有一个神经元。每个神经元都给出了该类的概率。

我不知道为什么他会使用4个隐藏的神经元。 2应该足够了(如果我没记错的话)。

答案 1 :(得分:1)

作者最后使用Evaluation类(有关网络给出正确结果的频率的统计数据)。该类需要每个分类一个神经元才能正常工作,即一个输出神经元为真,一个为假。

答案 2 :(得分:0)

这样思考可能会有所帮助:

Training Set        Label Set

    0 | 1               0 | 1
0 | 0 | 0          0 |  0 | 1
1 | 1 | 0          1 |  1 | 0
2 | 0 | 1          2 |  1 | 0
3 | 1 | 1          3 |  0 | 1

因此,训练集的[[0,0],0],[[0,1],0]等。

如果您使用两列标签集,则01对应于truefalse

因此,[0,0]正确映射为false,[1,0]正确映射为true,等等。

可以在这里找到一篇不错的文章,对文章的原始内容稍作修改:https://medium.com/autonomous-agents/how-to-teach-logic-to-your-neuralnetworks-116215c71a49