2017-12-04 3 views
-2

Ich trainiere ein CNN in Keras mit Tensorflow Backend,Keras: Geschichte nicht zugänglich für den Verlust oder Genauigkeit

mod1=gmodel.fit(images, train_labels, 
     batch_size=100, 
     epochs=2, 
     verbose=1, 
     validation_data=(test_images, test_labels)) 

und in jeder Epoche kann ich in der Ausgabe der Genauigkeit und Verlust siehe gedruckt (bis hier scheint alles in Ordnung).

Epoch 1/10 
1203/1203 [==============================] - 190s - loss: 0.7600 - acc: 0.5628 
- val_loss: 0.5592 - val_acc: 0.6933 
Epoch 2/10 
1203/1203 [==============================] - 187s - loss: 0.5490 - acc: 0.6933 
- val_loss: 0.4589 - val_acc: 0.7930 
Epoch 3/10 
.... 

Am Ende möchte ich die Validierung Verlust plotten so in früheren Projekten ich die Validierung Verlust über

zugegriffen haben
mod1.history['val_loss'] 

aber ich bin immer einen Fehler, als ob .history() leer war.

TypeError         Traceback (most recent call last) 
<ipython-input-23-ecdd306e9232> in <module>() 
----> 1 modl.history() 
TypeError: 'History' object is not callable 

EDIT (nach Antwort unten): Wenn ich versuche, den Verlust zuzugreifen, zum Beispiel:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-34-06fcc6efb374> in <module>() 
----> 1 mod1.history['val_loss'] 

TypeError: 'History' object is not subscriptable 

ich nicht so etwas wie dieses Problem vor gefunden habe, so bin ich verloren, was könnte passieren oder wie zu debuggen.

Alle Hinweise oder Ideen werden sehr geschätzt.

+1

"History" Objekt ist nicht aufrufbar. Es ist klar, dass Sie '()' nicht verwenden sollten. Klammern "rufen" eine Funktion auf. –

+0

1) wenn Sie Ihre Frage bearbeiten * nachdem * eine Antwort veröffentlicht wurde, ist es eine gute Übung, dies anzugeben ("BEARBEITEN"), damit der Befragte nicht wie ein Idiot aussieht 2) wenn jemand die Frage so beantwortet hat, wie Sie sie hatten anfangs beschrieben, Upvoting ist eine nette Höflichkeit 3) Ich habe tatsächlich den Fall für 'mod1.history ['val_loss']' unten gezeigt; Probieren Sie einfach 'mod1.history' und' type (mod1.history) 'aus - wenn Sie kein richtiges Wörterbuch erhalten, stimmt etwas an Teilen des Codes nicht, die Sie hier nicht anzeigen (sogar jetzt, Sie zeigen Snippets an mit beiden 'modl' ('l') &' mod1' ('1') - man muss ein Tippfehler sein ... – desertnaut

Antwort

0

Obwohl Sie sagen, Sie mod1.history['val_loss'], Ihre Fehlermeldung erzählt eine andere Geschichte genannt haben - höchstwahrscheinlich hat, haben Sie in der Tat so etwas wie mod1.history() (das heißt mit Klammern) verwendet, wie Daniel Moller bereits kommentiert. Hier ist, was ich bekommen (Python 3.5):

mod1.history() 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-20-67bafe3187cc> in <module>() 
----> 1 mod1.history() 

TypeError: 'dict' object is not callable 

mod1.history ist keine Funktion mit () genannt zu werden, aber ein Python-Wörterbuch:

mod1.history 
# result: 
{'acc': [0.82374999999999998, 
    0.94294999999999995, 
    0.95861666666666667, 
    ...], 
'loss': [0.62551526172161098, 
    0.18810810926556587, 
    0.13734668906728426, 
    ...], 
'val_loss': [12.05395287322998, 
    11.584557554626464, 
    10.949809835815429, 
    ...]} 

mod1.history['val_loss'] 
# result: 
[12.05395287322998, 
11.584557554626464, 
10.949809835815429, 
...] 
+0

Danke für den Hinweis, dass mod1.history() sowieso nicht funktioniert. Was ich jedoch wirklich anstrebte, nämlich mod1.history ['val_loss'], gibt mir einen "nicht einklagbaren" Fehler. Ich bin kein Keras-Experte, aber ich habe den Verlust und die Genauigkeit vorher schon erreicht, und ich bin sehr verwirrt, warum ich dieses Mal nicht so gut kann. – user3177938

+0

@ user3177938 Dies war nicht der Fehler, den Sie ursprünglich gemeldet haben! – desertnaut

+0

Ich dachte, vielleicht irrtümlich, dass, weil ich diesen Fehler auf mod1.history ['val_loss'] bekommen habe, weil es kein Wörterbuch in der Geschichte gab. Also, deshalb habe ich versucht, mod1.history() – user3177938

Verwandte Themen