Python Neurolab - 修正输出范围

1 投票
1 回答
1000 浏览
提问于 2025-04-17 22:00

我正在学习一个基于示例的模型,示例的格式是 ${((x_{i1},x_{i2},....,x_{ip}),y_i)}_{i=1...N}$,我使用的是一种叫做前馈多层感知器的神经网络(newff),这个是用Python库neurolab实现的。我希望这个神经网络的输出在任何进一步的模拟中都是正数。 我该如何确保我训练好的神经网络在模拟时的结果总是正数呢? (在neurolab中我该怎么做?)

1 个回答

0

简单来说,你可以在输出神经元上使用标准的sigmoid(逻辑)激活函数。sigmoid(x)对于所有实数x都是大于0的,这样就能满足你的需求。

默认情况下,很多神经网络库会使用线性输出或者对称的sigmoid输出(这些输出可能会是负数)。

需要注意的是,使用标准sigmoid输出函数训练网络的时间会更长。通常来说,实际操作中让值变成负数是更好的选择,然后在最后把网络的输出转换到[0,1]的范围内(先加上最小值,再除以范围(也就是最大值减去最小值))。

撰写回答