Python中的大数字Sigmoid函数

时间:2016-11-26 14:17:21

标签: python matrix machine-learning neural-network sigmoid

我正在使用Sigmoid激活功能执行神经网络任务。我的网络输入是图像(MNIST数据集),因为每个图像的维度是28*28,当我必须将它们转换为向量时,我将有N*784矩阵。这个大矩阵与权重矩阵的乘法产生权重的大的正数和负数,我必须将它们传递给Sigmoid函数。我使用expit()作为sigmoid函数,我的问题是:

数字直到30,结果在expit()中接近1。例如expit(28)结果0.99999999expit(29)结果1.0,而29结果1也是30。但是我的新作品是1,因为有些人在第一轮学习中得到Sigmoid's和0,实际上根本就没有任何学习。

我该怎么办? 29上限是{{1}}?我不能改变它?我必须改变我的图像尺寸来克服这个问题?

1 个答案:

答案 0 :(得分:1)

正如评论部分所讨论的,真正的问题是使用sigmoid本身,这不适合这种情况。在任何有限精度计算中,将面临所描述的问题,一个系统具有29个,另一个系统具有38个。

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

稍微偏离主题,你可能想要检查如何解决问题,例如tensorflow。它为初学者提供了一些很好的教程。