通常,解决XOR的简单神经网络应该有2个输入,隐藏层中有2个神经元,输出层中有1个神经元。
但是,以下示例实现有2个输出神经元,我不明白:
为什么作者在那里放置了2个输出神经元?
编辑:该例子的作者指出他在隐藏层中使用了4个神经元,在输出层中使用了2个神经元。但是我仍然不明白为什么,为什么形状为{4,2}而不是{2,1}?
这称为热编码。这个想法是你每班有一个神经元。每个神经元给出该类的概率。
我不知道为什么他会使用4个隐藏的神经元。 2应该足够了(如果我没记错的话)。
作者最后使用了Evaluation类(对于网络给出正确结果的频率的统计数据)。该类需要每个分类一个神经元才能正常工作,即一个输出神经元为真,一个为假。
想到这样可能会有所帮助:
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]等等。
如果您使用的是两列标签集,则0
和1
对应于true
或false
。
因此,[0,0]正确映射到false,[1,0]正确映射到true,等等。
可以在这里找到一篇略微修改原文的相当好的文章:https://medium.com/autonomous-agents/how-to-teach-logic-to-your-neuralnetworks-116215c71a49