2016-05-10 14 views
5

Ich erhalte immer ein paar NaN-Ausgänge von meinem neuronalen Netzwerk mit Keras. Ich bekomme nur etwa ein NaN pro 10.000 Ergebnisse. Ursprünglich hatte ich eine Aktivierungsschicht, die in die finale Softmax-Schicht einlief. Dies erzeugte mehr NaN-Ergebnisse. Ich änderte die Aktivierungsfunktion für die letzten beiden dichten Schichten im konstitutionellen Netzwerk von Reluz nach Sigmoid. Das machte das Problem besser, aber ich bekomme immer noch NaN. Irgendwelche Ratschläge wie ich Nan komplett eliminieren kann?Keras Neuronale Netze, Wie NaN-Werte in der Ausgabe zu entfernen?

model = Sequential() 
model.add(InputLayer((1, IMG_H, IMG_W))) 

model.add(Convolution2D(32, 3, 3, activation = 'relu')) 
model.add(Convolution2D(32, 3, 3, activation = 'relu')) 
model.add(MaxPooling2D(pool_size = (2, 2))) 

model.add(Dropout(0.3)) 

model.add(Convolution2D(64, 3, 3, activation = 'relu')) 
model.add(Convolution2D(64, 3, 3, activation = 'relu')) 
model.add(MaxPooling2D(pool_size = (2, 2))) 

model.add(Dropout(0.3)) 

model.add(Flatten()) 
model.add(Dense(256, activation = 'sigmoid')) 
model.add(Dropout(0.3)) 
model.add(Dense(64, activation = 'sigmoid')) 
model.add(Dropout(0.3)) 
model.add(Dense(categories, activation = 'softmax')) 
+1

NaNs in Ihrer Ausgabe/Verluste sind immer ein sehr schlechtes Zeichen. Hast du deine Eingabe vorverarbeitet/normalisiert? Ist Ihre Lernrate klein genug? NaNs sollten niemals auftreten, wenn Daten korrekt vorverarbeitet werden. [This] (http://cs231n.github.io/neural-networks-2/) könnte helfen. – sascha

+0

Ich normalisierte meine Eingabe zwischen 1 und 0. Ich verwendete eine kleine Lernrate zwischen 0,01 und 0,001. Gerade jetzt füge ich Gewichtsregularisierung hinzu, um zu sehen, ob das hilft. – chasep255

+0

Normalisieren zwischen 0-1 ist nicht unbedingt was Sie wollen. Das klingt wie MinMax-Scaler in Sklearn. Sie möchten den Mittelwert und die Varianzen aka StandardScaler in sklearn normalisieren. Dies ist sehr wichtig bei der Verwendung von SGD-basierten Algorithmen! In Ihrem Fall wird der Mittelwert >> 0,0 und ich denke, dass Sie die Varianz nicht geändert haben. – sascha

Antwort

2

Sieht aus wie Sie das Problem gelöst haben, aber für die Zukunft gibt es eine nice question, die unter anderem die Überprüfung empfiehlt, ob Sie nan Eingänge haben.

Verwandte Themen