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)則沒有。