我正在用Sigmoid激活函数做神经网络任务。我的网络输入是图像(MNIST数据集),因为每个图像的维数是28*28,所以当我必须将它们转换成向量时,我将得到N*784矩阵。这个大矩阵与权矩阵的乘积产生了权值的正负数,我必须把它们传递给Sigmoid函数。我使用expit()作为乙状结肠函数,我的问题是:
30岁以下的数字在expit()中接近1。例如,expit(28)结果0.99999999和expit(29)结果1.0和高级29也得到1。但是,我的新设备是高级30,正因为如此,他们中的一些人在第一个学习周期中获得了1和一些0,实际上根本就没有任何学习。
我要做什么?Sigmoid's上界是29吗?我不能改吗?我必须改变我的形象维度来克服这一点?
发布于 2016-11-26 15:55:55
正如注释部分所讨论的,真正的问题是使用sigmoid本身,这不适合这种情况。在任何有限精度的计算中,都会遇到描述的问题,一个系统有29个,另一个系统有38个。
解决这一问题的一种方法是使用softmax激活函数,它不太容易受到此类问题的影响。请注意,使用成本功能,您可能会遇到类似的挑战。
稍微有点离题,ut你可能想看看问题是如何用tensorflow解决的。它为初学者提供了一些很好的教程。
https://stackoverflow.com/questions/40819269
复制相似问题