Keras ausführlicher Trainingsfortschrittsbalken, der bei jeder Batch-Ausgabe eine neue Zeile schreibt

8

in Keras ein dichtes Feed-Forward-Netzwerk laufen. Es gibt class_weights für zwei Ausgaben und sample_weights für eine dritte Ausgabe. Aus irgendeinem Grund druckt es die fortlaufende ausführliche Anzeige für jede berechnete Charge, und aktualisiert den Druck nicht in der gleichen Zeile wie es sein soll ... Ist dir das jemals passiert? Wie ist es behoben? Aus der Shell:

%Vor%     
Natanel Davidovits 03.01.2017, 11:17
quelle

3 Antworten

1

Ich hatte ein ähnliches Problem, aber ich hatte nicht die Zeit, es weiter zu untersuchen. Das Problem scheint mit der Klasse Progbar in generic_utils.py von keras zusammenzuhängen, siehe link und vielleicht Python & gt; = 3.3.

Die folgenden Zeilen werden in der Update-Funktion der Klasse gefunden:

Zeile 107: sys.stdout.write('\b' * prev_total_width)
Zeile 108: sys.stdout.write('\r')

Ich habe Zeile 107 einfach als Schnellkorrektur entfernt. Anstatt die vorherige Zeile zurückzusetzen und dann zum Anfang der Zeile zu wechseln, führe ich nur die Verschiebung aus. Ich denke, es gibt bessere Möglichkeiten, als den Quellcode zu ändern.

    
androst 04.01.2017 10:55
quelle
1

Dies scheint ein konsistentes Problem mit Keras zu sein. Ich habe versucht, die Zeilen zu finden

sys.stdout.write('\b' * prev_total_width)

sys.stdout.write('\r')

in der Keras / utils / generic_utils.py Datei und sie sind (in der aktuellen Version) bei 258 und 259 entsprechend. Ich habe wie 258 kommentiert, aber das scheint das Problem nicht zu lösen. Ich schaffte es, den Fortschrittsbalken zu funktionieren, indem ich die Zeile kommentierte:

Zeile 303: sys.stdout.write(info)

Es scheint so, als ob die Info die Leiste zu lang für das Terminal macht und so zu einer neuen Zeile springt.

Also habe ich das Problem endlich gelöst. Es scheint, als wäre es am Ende ziemlich einfach ....

  

Einfach das Terminal breiter machen ...

Hinweis: Getestet unter Linux Ubuntu 16.04 | Keras Version 2.0.5

    
Panos 13.06.2017 08:37
quelle
0

Es wurde bereits erwähnt, aber ich werde es umschreiben, damit es für zukünftige Benutzer besser sichtbar ist.

Sie haben ein zu schmales Terminal, um all diese Werte zu drucken - setzen Sie einfach width Argument von Progbar Konstruktor auf eine kleinere Zahl oder entfernen / benennen Sie einige der angegebenen Werte um.

    
tomwesolowski 16.11.2017 11:12
quelle