我正在执行具有Sigmoid
激活功能的神经网络任务。我的网络输入是image(MNIST
数据集),并且由于每个图像的尺寸都是28*28
,因此当我不得不将它们转换为矢量时,我将具有N*784
矩阵。将此大型矩阵与权重矩阵相乘会产生较大的正负数,因此我必须将其传递给Sigmoid
函数。我使用expit()
作为S型函数,而我的问题是:
数字直到30,结果在expit()
中接近1。例如,expit(28)
结果0.99999999
和expit(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/