Al depurar información me refiero a lo que muestra TensorFlow en mi terminal sobre bibliotecas cargadas y dispositivos encontrados, etc., no errores de Python.
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
fuente
fuente
import warnings
a continuaciónwarnings.filterwarnings('ignore')
, a continuación, ejecutar sus importaciones y tensorflow y el código que se basa en el código alfa-tensorflow roto, entonces se convierten advertencias de vuelta en víawarnings.resetwarnings()
. Tensorflow no debería anunciar un nombre de versión superior a 0.05 en este momento.Respuestas:
Puede deshabilitar todos los registros de depuración utilizando
os.environ
:Probado en tf 0.12 y 1.0
En detalles,
fuente
2.0 Actualización (08/10/19) Ajuste
TF_CPP_MIN_LOG_LEVEL
debería funcionar (véase más adelante en v0.12 + actualización), pero en la actualidad existe un tema abierto (ver la edición # 31870 ). Si la configuraciónTF_CPP_MIN_LOG_LEVEL
no funciona para usted (nuevamente, vea a continuación), intente hacer lo siguiente para establecer el nivel de registro:Además, consulte la documentación
tf.autograph.set_verbosity
que establece la verbosidad de los mensajes de registro de autógrafos, por ejemplo:v0.12 + Actualización (20/05/17), Trabajando a través de TF 2.0+:
En TensorFlow 0.12+, según este problema , ahora puede controlar el registro a través de la variable de entorno llamada
TF_CPP_MIN_LOG_LEVEL
; el valor predeterminado es 0 (se muestran todos los registros) pero se puede establecer en uno de los siguientes valores debajo de laLevel
columna.Consulte el siguiente ejemplo de sistema operativo genérico con Python:
Para ser exhaustivo, también debe establecer el nivel para el
tf_logging
módulo Python , que se usa, por ejemplo, en operaciones de resumen, tablero de tensor, varios estimadores, etc.Para 1.14, recibirá advertencias si no cambia para usar la API v1 de la siguiente manera:
Para versiones anteriores de TensorFlow o TF-Learn Logging (v0.11.xo inferior):
Vea la página a continuación para obtener información sobre el registro de TensorFlow; con la nueva actualización, que es capaz de establecer el nivel de detalle de registro que sea
DEBUG
,INFO
,WARN
,ERROR
, oFATAL
. Por ejemplo:La página también incluye monitores que se pueden usar con los modelos TF-Learn. Aqui esta la pagina .
Esto no bloquea todo el registro (solo TF-Learn). Tengo dos soluciones; una es una solución 'técnicamente correcta' (Linux) y la otra implica la reconstrucción de TensorFlow.
Para el otro, vea esta respuesta que implica modificar la fuente y reconstruir TensorFlow.
fuente
export TF_CPP_MIN_LOG_LEVEL="3" && python your_code.py
TF_CPP_MIN_LOG_LEVEL="3" python your_code.py
También he tenido este problema (en
tensorflow-0.10.0rc0
), pero no pude solucionar el problema de registro excesivo de las pruebas de nariz a través de las respuestas sugeridas.Logré resolver esto sondeando directamente en el registrador de tensorflow. No es la solución más correcta, pero funciona muy bien y solo contamina los archivos de prueba que importan directa o indirectamente tensorflow:
fuente
tensorflow-gpu 1.14.0
. Recibí este resultado cuando se llamó a la función anterior.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.
Agradable que no hubo advertencias después de estos mensajesPara compatibilidad con Tensorflow 2.0 , puede usar
tf.get_logger
fuente
Como
TF_CPP_MIN_LOG_LEVEL
no funcionó para mí, puedes probar:Me funcionó en tensorflow v1.6.0
fuente
El administrador de registro habitual de python3 funciona para mí con tensorflow == 1.11.0:
fuente
Resolví con esta publicación No se pueden eliminar todas las advertencias # 27045 , y la solución fue:
fuente
Para agregar algo de flexibilidad aquí, puede lograr un control más detallado sobre el nivel de registro escribiendo una función que filtre los mensajes como desee:
donde
my_filter_func
acepta unLogRecord
objeto como entrada [LogRecord
docs ] y devuelve cero si desea que se deseche el mensaje; distinto de ceroAquí hay un filtro de ejemplo que solo guarda cada enésimo mensaje de información (Python 3 debido al uso de
nonlocal
aquí):Todo lo anterior supone que TensorFlow ya ha configurado su estado de registro. Puede asegurarse de esto sin efectos secundarios llamando
tf.logging.get_verbosity()
antes de agregar un filtro.fuente
Sí, estoy usando tf 2.0-beta y quiero habilitar / deshabilitar el registro predeterminado. La variable de entorno y los métodos en tf1.X ya no parecen existir.
Di un paso en PDB y encontré que esto funcionaba:
Luego agrego mi propia API de registrador (en este caso basada en archivos)
fuente
para tensorflow 2.1.0, el siguiente código funciona bien.
fuente
Si solo necesita deshacerse de las salidas de advertencia en la pantalla , es posible que desee borrar la consola pantalla de justo después de importar el flujo de tensor mediante este simple comando (es más efectivo que deshabilitar todos los registros de depuración en mi experiencia):
En windows:
En Linux o Mac:
fuente
Ninguna de las soluciones anteriores pudo resolver mi problema en Jupyter Notebook, por lo que utilizo el siguiente fragmento de código de Cicoria , y los problemas resueltos.
fuente