Mit dem Debuggen von Informationen meine ich, was TensorFlow in meinem Terminal über geladene Bibliotheken und gefundene Geräte usw. anzeigt, nicht über Python-Fehler.
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:900] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties:
name: Graphics Device
major: 5 minor: 2 memoryClockRate (GHz) 1.0885
pciBusID 0000:04:00.0
Total memory: 12.00GiB
Free memory: 11.83GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:717] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Graphics Device, pci bus id: 0000:04:00.0)
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:51] Creating bin of max chunk size 1.0KiB
...
python
tensorflow
Ghilas BELHADJ
quelle
quelle
import warnings
dannwarnings.filterwarnings('ignore')
Ihre Tensorflow-Importe und den Code aus, der auf dem fehlerhaften Alpha-Tensorflow-Code basiert, und schalten Sie die Warnungen über wieder einwarnings.resetwarnings()
. Tensorflow sollte zu diesem Zeitpunkt keinen Versionsnamen über 0,05 bewerben.Antworten:
Sie können alle Debugging-Protokolle deaktivieren, indem Sie
os.environ
:Getestet auf tf 0.12 und 1.0
Im Detail,
quelle
2.0 Update (08.10.19) Die Einstellung
TF_CPP_MIN_LOG_LEVEL
sollte weiterhin funktionieren (siehe unten in Version 0.12 + Update), es ist jedoch derzeit ein Problem offen (siehe Problem Nr. 31870 ). Wenn die EinstellungTF_CPP_MIN_LOG_LEVEL
für Sie nicht funktioniert (siehe unten), versuchen Sie Folgendes, um die Protokollstufe festzulegen:Weitere Informationen finden Sie in der Dokumentation, in
tf.autograph.set_verbosity
der die Ausführlichkeit von Autogrammprotokollnachrichten festgelegt wird. Beispiel:v0.12 + Update (20.05.17), Durcharbeiten von TF 2.0+:
In TensorFlow 0.12+, pro dieser Ausgabe können Sie nun über die Umgebungsvariable steuern Protokollierung genannt
TF_CPP_MIN_LOG_LEVEL
; Der Standardwert ist 0 (alle Protokolle werden angezeigt), kann jedoch unter derLevel
Spalte auf einen der folgenden Werte gesetzt werden .Siehe das folgende allgemeine Betriebssystembeispiel mit Python:
Um gründlich zu sein, rufen Sie auch die Stufe für das Python-
tf_logging
Modul auf, das beispielsweise in Zusammenfassungsoperationen, Tensorboards, verschiedenen Schätzern usw. verwendet wird.Für 1.14 erhalten Sie Warnungen, wenn Sie die v1-API nicht wie folgt verwenden:
Für frühere Versionen von TensorFlow oder TF-Learn Logging (v0.11.x oder niedriger):
Auf der folgenden Seite finden Sie Informationen zur TensorFlow-Protokollierung. mit dem neuen Update, sind Sie in der Lage , die Protokollierung Ausführlichkeit entweder zu setzen
DEBUG
,INFO
,WARN
,ERROR
, oderFATAL
. Beispielsweise:Die Seite geht zusätzlich über Monitore, die mit TF-Learn-Modellen verwendet werden können. Hier ist die Seite .
Dies blockiert jedoch nicht die gesamte Protokollierung (nur TF-Learn). Ich habe zwei Lösungen; Eine ist eine "technisch korrekte" Lösung (Linux) und die andere beinhaltet die Neuerstellung von TensorFlow.
Die andere Antwort finden Sie in dieser Antwort, bei der die Quelle geändert und TensorFlow neu erstellt wird.
quelle
export TF_CPP_MIN_LOG_LEVEL="3" && python your_code.py
TF_CPP_MIN_LOG_LEVEL="3" python your_code.py
Ich hatte auch dieses Problem (an
tensorflow-0.10.0rc0
), konnte aber das Problem mit der Protokollierung übermäßiger Nasentests nicht über die vorgeschlagenen Antworten beheben.Ich habe es geschafft, dies zu lösen, indem ich direkt in den Tensorflow-Logger gesucht habe. Nicht die korrekteste Korrektur, funktioniert aber hervorragend und verschmutzt nur die Testdateien, die direkt oder indirekt Tensorflow importieren:
quelle
tensorflow-gpu 1.14.0
. Erhielt diese Ausgabe, als die obige Funktion aufgerufen wurde.The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.
WARNING:tensorflow:From C:/.../NN.py:297: The name tf.logging.ERROR is deprecated. Please use tf.compat.v1.logging.ERROR instead.
Erfreulich, dass es nach diesen Nachrichten keine Warnungen gabZur Kompatibilität mit Tensorflow 2.0 können Sie verwenden
tf.get_logger
quelle
Da
TF_CPP_MIN_LOG_LEVEL
es bei mir nicht funktioniert hat kannst du versuchen:Arbeitete für mich in Tensorflow v1.6.0
quelle
Der übliche Python3-Protokollmanager funktioniert bei mir mit Tensorflow == 1.11.0:
quelle
Ich habe mit diesem Beitrag gelöst Kann nicht alle Warnungen # 27045 entfernen , und die Lösung war:
quelle
Um hier etwas Flexibilität zu schaffen, können Sie die Protokollierungsstufe genauer steuern, indem Sie eine Funktion schreiben, die Nachrichten nach Belieben herausfiltert:
Dabei
my_filter_func
akzeptiert einLogRecord
Objekt als Eingabe [LogRecord
docs ] und gibt Null zurück, wenn die Nachricht verworfen werden soll. sonst ungleich Null.Hier ist ein Beispielfilter, der nur jede n-te Infomeldung speichert (Python 3 aufgrund der Verwendung von
nonlocal
hier):Bei alledem wurde davon ausgegangen, dass TensorFlow seinen Protokollierungsstatus bereits eingerichtet hat. Sie können dies ohne Nebenwirkungen sicherstellen, indem Sie
tf.logging.get_verbosity()
vor dem Hinzufügen eines Filters aufrufen .quelle
Ja, ich verwende tf 2.0-beta und möchte die Standardprotokollierung aktivieren / deaktivieren. Die Umgebungsvariable und Methoden in tf1.X scheinen nicht mehr zu existieren.
Ich bin in PDB herumgetreten und habe festgestellt, dass dies funktioniert:
Ich füge dann meine eigene Logger-API hinzu (in diesem Fall dateibasiert).
quelle
Für Tensorflow 2.1.0 funktioniert der folgende Code einwandfrei.
quelle
Wenn Sie nur die Warnausgaben auf dem Bildschirm entfernen müssen , können Sie den Konsolenbildschirm direkt nach dem Importieren des Tensorflows mit diesem einfachen Befehl löschen (meiner Erfahrung nach ist dies effektiver als das Deaktivieren aller Debugging-Protokolle):
In Fenstern:
Unter Linux oder Mac:
quelle