1

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

直到 30 的数字导致接近 1 in expit()。例如expit(28)结果0.99999999expit(29)results1.0和 upper29也得到1。但是我的新人是上级30的,因此在第一个学习周期中,他们中的一些人得到了一些,而一些人得到1了 0,实际上根本没有任何学习。

我必须做什么?Sigmoid's上限是29?我不能改变它吗?我必须改变我的图像尺寸来克服这个问题?

4

1 回答 1

2

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

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

有点题外话,但您可能想检查问题是如何解决的,例如tensorflow。它为初学者提供了一些不错的教程。

于 2016-11-26T15:55:55.237 回答