NaN-Verlust beim Training des Regressionsnetzwerks

Ich habe eine Datenmatrix in "One-Hot-Codierung" (alle Einsen und Nullen) mit 260.000 Zeilen und 35 Spalten. Ich benutze Keras, um ein einfaches neuronales Netzwerk zu trainieren, um eine kontinuierliche Variable vorherzusagen. Der Code zum Herstellen des Netzwerks lautet wie folgt:

model = Sequential()
model.add(Dense(1024, input_shape=(n_train,)))
model.add(Activation('relu'))
model.add(Dropout(0.1))

model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.1))

model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.1))
model.add(Dense(1))

sgd = SGD(lr=0.01, nesterov=True);
#rms = RMSprop()
#model.compile(loss='categorical_crossentropy', optimizer=rms, metrics=['accuracy'])
model.compile(loss='mean_absolute_error', optimizer=sgd)
model.fit(X_train, Y_train, batch_size=32, nb_epoch=3, verbose=1, validation_data=(X_test,Y_test), callbacks=[EarlyStopping(monitor='val_loss', patience=4)] )

ährend des Trainings sehe ich jedoch, dass der Verlust deutlich abnimmt, aber in der Mitte der zweiten Epoche geht er an nan:

Train on 260000 samples, validate on 64905 samples
Epoch 1/3
260000/260000 [==============================] - 254s - loss: 16.2775 - val_loss:
 13.4925
Epoch 2/3
 88448/260000 [=========>....................] - ETA: 161s - loss: nan

Ich habe versucht mitRMSProp Anstatt vonSGD, Ich habe es versuchttanh Anstatt vonrelu, Ich habe es mit und ohne Aussetzer versucht, alles ohne Erfolg. Ich habe es mit einem kleineren Modell versucht, d. H. Mit nur einer verborgenen Schicht und demselben Problem (es wird an einer anderen Stelle zu Nan). Es funktioniert jedoch mit weniger Merkmalen, d. H. Wenn nur 5 Spalten vorhanden sind, und liefert ziemlich gute Vorhersagen. Es scheint, als gäbe es eine Art Überlauf, aber ich kann mir nicht vorstellen, warum - der Verlust ist überhaupt nicht unangemessen groß.

Python Version 2.7.11, läuft auf einem Linux-Rechner, nur auf der CPU. Ich habe es mit der neuesten Version von Theano getestet und auch Nans. Deshalb habe ich versucht, Theano 0.8.2 zu verwenden und habe das gleiche Problem. Mit der neusten Version von Keras hat man das gleiche Problem, und auch mit der 0.3.2 Version.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage