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

问题描述 投票:2回答:3

通常,解决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}?

neural-network artificial-intelligence deep-learning xor deeplearning4j
3个回答
3
投票

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

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


1
投票

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


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

© www.soinside.com 2019 - 2024. All rights reserved.