plot in Schleife beenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

Hallo, bitte verschieben, falls ich im falschen Forum frage. Danke.
Ich habe mir zur Übung eine Klasse für ein einfaches neuronales Netz kopiert und möchte nun den Netzfehler nach jeder Epoche plotten. Nun ist Plot ja eine blockierende Funktion, d.h. ich muß das Fenster per Mausklick schließen, damit das Skript weiter läuft. Wie kann ich das Fenster - nach z.B. "time.sleep" - aus dem Skript heraus schließen?
Ich habe hier im Forum eine ähnliche Frage gefunden, habe die Lösung aber nicht wirklich verstanden. Für einen Hinweis wäre ich sehr dankbar!
Gruß Rainer
BlackJack

@pyzip: Schau Dir mal in der Matplotlib-Dokumentation die Beispiele für Animationen an.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@BlackJack,
danke und ich habe es befürchtet. Finde die PLOT-Geschichten sehr kompliziert und hatte gehoft, dass man den "schließ Fenster Klick" vom Script aus senden kann. Ok, dann ran an die Doku.
Gruß Rainer
BlackJack

@pyzip: Fenster schliessen und wieder neu anzeigen bedeutet letztendlich das die Fensterverwaltung das neue Fenster auch woanders anzeigen kann als das alte. Selbst wenn das Fenster immer an der gleichen Stelle wieder auftaucht, wäre das IMHO schon ziemlich nervig anzusehen. Und dann gibt's ja noch die Benutzer die für das Anzeigen/Schliessen von Fenstern irgendwelche grafischen Effekte eingestellt haben.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@BlackJack,

ich weiß jetzt natürlich nicht, was alles passiert, wenn das plot-fenster geschlossen wird. Aber in meinem Fall ist das Aufpoppen des nächsten Fensters kein Problem. Wenn ich das alte Fenster schließe, dann dauert es lange bis ganz lang - je nach Trainingssatz - bis das nächste Fenster aufgeht. Und zum Schluß habe ich ja eh den Plot mit allen Errorwerten. Wäre halt schön, die Entwicklung schon während der Rechnerei sehen zu können.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@BlackJack,
bin gestern noch zufällig auf "plt.ion()" mit "plt.draw()" gestossen und habe es einfach mal eingebaut. Funktioniert bei Epochenzeiten im Minutenbereich. Am Ende des Skripts habe ich noch " eingabe = input("Ihre Eingabe? ") ", damit der vollständige Plot sichtbar bleibt, bis man eine Taste drückt. Gestern Abend habe ich dann noch eine mehrstündige Epochenzeit gestartet und heute morgen war das Skript samt IDE geschlossen. Habe dasselbe dann erneut gestartet und gerade war wieder alles weg. Nun weiß ich natürlich nicht, ob das an meinem Plot-Konstrukt liegt oder ob das Programm aussteigt.
Meine Frage ist: ist .ion() der richtige Weg oder passiert hier was ganz anderes, als ich denke?? Verstanden habe ich, dass .ion() die Plotfunktion interaktiv macht und damit die Blockierung von plot.show() aufhebt. Aber was passiert, wenn ich das Interaktive nicht nutze, finde ich nirgenwo beschrieben. Bin ich schwer auf dem Holzweg??
Gruß Rainer
Antworten