如何在多层感知器中使用 sigmoid 函数?
Posted
技术标签:
【中文标题】如何在多层感知器中使用 sigmoid 函数?【英文标题】:How to use a sigmoid function in multi-layer perceptron? 【发布时间】:2017-10-07 01:29:19 【问题描述】:如果我需要对提供给神经网络的对象进行分类,并且有 4 个类可供选择,那么它如何与 sigmoid 函数一起工作?
我应该在隐藏层中有 4 个神经元,每个神经元都应该对应于每个类吗?如果第一个神经元输出最大,比如 0.8,那么它就是第一类?
或者我应该在输出层有一个神经元,它将隐藏层的输出作为输入,将它们传递给激活函数,然后将输出分类为:
if (output < 0.25) return class1;
...
if (output <= 1) return class4;
请帮忙,我已经搜索了很长时间,并且我已经阅读了很多文章和书籍中的一些章节,但从未提出过,这让我发疯了。
【问题讨论】:
【参考方案1】:单热编码
经典方法会为最后一层使用 one-hot 编码,即,如果一个项目属于四个可能的第 3 类,那么你会将它编码为向量 [0 0 1 0],所以你的输出层会有四个神经元。
对于训练,您可能希望将输出归一化,使其总和为 1 - 即,如果它设法返回 [1 2 1 0],那么您会将其视为 [0.5 1 0.5 0]。
这都是指实际的最后一层 - 隐藏层的大小几乎是任意的(并且可能比输出层大得多),并且没有规定其中特定神经元的“含义”,它是从数据中学习的。
【讨论】:
哦,原来如此明显。现在我知道如何使用它了。非常感谢你,伙计!以上是关于如何在多层感知器中使用 sigmoid 函数?的主要内容,如果未能解决你的问题,请参考以下文章
小白学习之pytorch框架-多层感知机(MLP)-(tensorvariable计算图ReLU()sigmoid()tanh())