1
我正在训练一个简单的前馈模型,每个(隐藏层+非线性)组合之间有3个或4个隐藏层和退出。 有时在几个时代(大约10-11)后,模型开始输出Infs和NaN作为NLL的误差,精度下降到0.0%。当我不使用退出时,这个问题不会发生。这是一个在Theano中退出的已知问题吗?我实现丢失的方式是:为什么Theano会在使用退出时抛出NaN?
def drop(self, input):
mask = self.theano_rng.binomial(n=1, p=self.p, size=input.shape, dtype=theano.config.floatX)
return input * mask
其中输入是我们要应用丢失的特征向量。 我也观察到,如果失落概率(self.p)较高,则NaN的发生发生得更早。 p = 0.5会导致NaN出现在时期1或2附近,但是p = 0.7会导致NaN出现在时期10或11附近。 只有当隐藏层大小较大时才会发生NaN。例如(800,700,700)给出了NaN,而(500,500,500)则没有。