私は、3つまたは4つの隠れ層と各(隠れ層+非直線性)の組み合わせの間のドロップアウトを持つ単純なフィードフォワードモデルを訓練しています。 時々、いくつかのエポック(約10-11)後、モデルはNLLの誤差としてInfsとNaNの出力を開始し、精度は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
ここで、inputはドロップアウトを適用するフィーチャベクタです。 私は、ドロップアウト確率(self.p)が高いほど、NaNの出現が早く起こることも観察しました。 p = 0.5では、エポック1または2の周りにNaNが発生しますが、p = 0.7では、エポック10または11の周りにNaNが発生します。 また、隠れたレイヤーサイズが大きい場合にのみNaNが発生します。たとえば(800,700,700)はNaNを、(500,500,500)はNaNを返します。私の経験、NaNを中