在PyBrain中的_convertToOneOfMany函数

7
我遵循PyBrain教程前馈神经网络分类并想要构建自己的分类器。
我不明白_convertToOneOfMany如何修改输出。
为什么初始操作alldata.addSample(input, [klass])会为每个类创建多个输出神经元?

1
你好,你忘记将你的问题标记为已解决。 - Framester
我自己回答了这个问题,所以也许我会跳过它。 - user425720
即使你自己回答了问题,也应该将其标记为已回答。这样人们就知道这个问题对你来说已经解决了。 - Martin Thoma
3个回答

6

1
谢谢您的回答,但我不太理解文档中“许多算法在每个类别编码为一个输出单元时效果更好”的含义。请问什么是“每个类别一个输出单元”? - hihell
哇,那是多年前的事了,我几乎记不清了 - 它与神经网络结构有关吗? 因此,一个神经元可以向另一层中的一个或多个神经元发出输出? - user425720
是的,它与NT结构有关。实际上我自己想出来了,“每个类别一个输出单元”意味着如果你有3个类别,最好也有3个输出单元。而_convertToOneOfMany会通过扩展/缩小输出单元到目标类别数量来为您完成此操作。 - hihell

2

目标数字为[0,1,2],此函数将它们翻译成(001,010,100)。这是因为许多算法在每个类别的输出单元中编码时效果更好。


1
在文档中相关的部分是页面使用数据集:分类 - 用于监督式分类训练的数据集

在进行分类时,许多算法如果将类别编码为每个类别一个输出单元,则效果更好,该单元在类别存在时取特定值。作为高级功能,ClassificationDataSet可以自动执行此转换:

然而,这并不是一个令人满意的答案,因为我不明白为什么首先应该有超过一个输出神经元来表示一个类。

更新:我建议使用{{link2:keras}}。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接