我正在执行具有Sigmoid激活功能的神经网络任务。我的网络输入是image(MNIST数据集),并且由于每个图像的尺寸都是28*28,因此当我不得不将它们转换为矢量时,我将具有N*784矩阵。将此大型矩阵与权重矩阵相乘会产生较大的正负数,因此我必须将其传递给Sigmoid函数。我使用expit()作为S型函数,而我的问题是:

数字直到30,结果在expit()中接近1。例如,expit(28)结果0.99999999expit(29)结果1.0以及上层29也会得到1。但是我的新手是上级30,因此在学习的第一个周期中有些人得到1,另一些人得到0,实际上根本没有任何学习经验。

我该怎么办? Sigmoid's上限是29吗?我不能改变吗?我必须更改图像尺寸才能克服此问题?

最佳答案

如评论部分所述,真正的问题原来是使用sigmoid本身,不适用于此类情况。在任何有限精度计算中,一个系统都会面对所描述的问题,一个系统有29个系统,另一个系统有38个系统。

解决该问题的一种方法是使用softmax激活功能,该功能不太容易受到此类问题的影响。注意,使用成本函数可能会遇到类似的挑战。

有点偏离主题,例如,您可能想检查问题的解决方式。 tensorflow。它为初学者提供了一些不错的教程。

关于python - Sigmoid函数用于Python中的大量数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40819269/

10-09 20:16