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
plot in Schleife beenden
@pyzip: Schau Dir mal in der Matplotlib-Dokumentation die Beispiele für Animationen an.
@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.
@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.
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.
@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
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