Ich trainiere ein einfaches Feed-Forward-Modell mit 3 oder 4 versteckten Layern und Dropouts zwischen jeder Kombination (versteckte Ebene + Nichtlinearität). Manchmal beginnt das Modell nach einigen Epochen (etwa 10-11) mit der Ausgabe von Infs und NaNs als Fehler der NLL und die Genauigkeit fällt auf 0,0%. Dieses Problem tritt nicht auf, wenn ich keine Dropouts verwende. Ist das ein bekanntes Problem mit Aussteigern in Theano? Die Art, wie ich Aussetzer implementieren ist:Warum wirft Theano NaNs, wenn ich Dropouts verwende?
def drop(self, input):
mask = self.theano_rng.binomial(n=1, p=self.p, size=input.shape, dtype=theano.config.floatX)
return input * mask
wo Eingang das Feature-Vektor, auf dem wir Aussetzer anwenden möchten. Ich habe auch beobachtet, dass das Auftreten von NaNs früher auftritt, wenn die Dropout-Wahrscheinlichkeit (self.p) höher ist. p = 0,5 würde bewirken, dass NaNs um die Epochen 1 oder 2 herum auftreten, aber p = 0,7 würde dazu führen, dass NaNs um die Epochen 10 oder 11 herum auftreten. Das Auftreten von NaNs tritt auch nur auf, wenn die Größe der versteckten Schichten groß ist. Zum Beispiel (800,700,700) ergibt NaNs, während (500,500,500) nicht.