2017-12-29 48 views
0

Ich benutze CNN für die Signalklassifizierung (zwei Klassen: Patient und Kontrolle). Mit vorzeitigem Stoppen, Ich möchte mit dem Training aufhören, bis der Validierungsfehler aufhört, zu verbessern. Ich bin nicht in der Lage schreiben Sie den Python-Code, um dies zu implementieren. Ich habe das versucht, konnte aber nicht weiter machen.CNN Training Frühes Stoppen

validation = cross_entropy.eval(feed_dict= {x:valid_x,y_:valid_y,keep_prob:1}) 
validation = np.append(validation,cross_entropy.eval(feed_dict= {x:valid_x,y_:valid_y,keep_prob:1})) 

Kann mir jemand mit dem Code helfen?

Antwort

1

können Sie keras.EarlyStopping verwenden:

from keras.callbacks import EarlyStopping 
early_stopping = EarlyStopping(monitor='val_loss', patience=2) 
model.fit(x, y, validation_split=0.2, callbacks=[early_stopping]) 

Idealerweise ist es ein gutes Training zu stoppen, wenn val_loss erhöht und nicht, wenn val_acc stagniert. Da Kears ein Modell speichert, wenn sich val_acc verbessert, würde ich empfehlen, es laufen zu lassen und nur bei Bedarf zu stoppen.

+0

Danke Ganesh! Ich verstehe nicht, wie man model.fit eingibt. Ich habe Zugdaten: train_x, Zuglabel: train_y, Validierungsdaten: valid_x, und Validierungsetikett: valid_y.Ich habe wie unten in Keras model.fit implementiert, bekomme aber Fehler. Ich verwende Tensorflow im Backend. Bitte hilf mir. model_info = modell.fit (train_x, train_y, validation_data = (valid_x, valid_y), Rückrufe = [early_stopping]) NameError: Name 'Modell' ist nicht definiert –

+0

Gegeben Signale sind zeitbasiert, ich bin kein Experte, aber ich fühle etwas wie RNN mit LSTM wird besser sein, sieh hier: https://philipperemy.github.io/keras-stateful-lstm/. Dann wenn Sie CNN noch benötigen, schauen Sie sich dieses Beispiel an und sehen Sie, ob Sie das gleiche getan haben: https://github.com/keunwoochoi/kapre/blob/master/examples/example_codes.ipynb –

Verwandte Themen