español python tensorflow

python - tensorflow español



Deshabilitar la información de depuración de Tensorflow (9)

Como TF_CPP_MIN_LOG_LEVEL no funcionó para mí, puedes probar:

tf.logging.set_verbosity(tf.logging.WARN)

Me funcionó en tensorflow v1.6.0

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 ...


El administrador de registro habitual de python3 funciona para mí con tensorflow == 1.11.0:

import logging logging.getLogger(''tensorflow'').setLevel(logging.INFO)


Para compatibilidad con Tensorflow 2.0 , puede usar tf.get_logger

import logging tf.get_logger().setLevel(logging.ERROR)


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:

logging.getLogger(''tensorflow'').addFilter(my_filter_func)

donde my_filter_func acepta un objeto LogRecord como entrada [ LogRecord docs ] y devuelve cero si desea que se LogRecord el mensaje; distinto de cero

Aquí hay un filtro de ejemplo que solo guarda cada enésimo mensaje de información (Python 3 debido al uso de nonlocal aquí):

def keep_every_nth_info(n): i = -1 def filter_record(record): nonlocal i i += 1 return int(record.levelname != ''INFO'' or i % n == 0) return filter_record # Example usage for TensorFlow: logging.getLogger(''tensorflow'').addFilter(keep_every_nth_info(5))

Todo lo anterior ha asumido que TensorFlow ya ha configurado su estado de registro. Puede asegurar esto sin efectos secundarios llamando a tf.logging.get_verbosity() antes de agregar un filtro.


Puede deshabilitar todos los registros de depuración utilizando os.environ :

import os os.environ[''TF_CPP_MIN_LOG_LEVEL''] = ''3'' import tensorflow as tf

Probado en tf 0.12 y 1.0

En detalles,

0 = all messages are logged (default behavior) 1 = INFO messages are not printed 2 = INFO and WARNING messages are not printed 3 = INFO, WARNING, and ERROR messages are not printed


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:

# close the TF2 logger tf2logger = tf.get_logger() tf2logger.error(''Close TF2 logger handlers'') tf2logger.root.removeHandler(tf2logger.root.handlers[0])

Luego agrego mi propia API de registrador (en este caso basada en archivos)

logtf = logging.getLogger(''DST'') logtf.setLevel(logging.DEBUG) # file handler logfile=''/tmp/tf_s.log'' fh = logging.FileHandler(logfile) fh.setFormatter( logging.Formatter(''fh %(asctime)s %(name)s %(filename)s:%(lineno)d :%(message)s'') ) logtf.addHandler(fh) logtf.info(''writing to %s'', logfile)


También tuve 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 probando directamente en el registrador de flujo de tensor. 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:

# Place this before directly or indirectly importing tensorflow import logging logging.getLogger("tensorflow").setLevel(logging.WARNING)



v0.12 + Actualización (20/05/17), Trabajando a través de TF 2.0 alfa:

En TensorFlow 0.12+, según este github.com/tensorflow/tensorflow/issues/1258 , ahora puede controlar el registro a través de la variable ambiental 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 en la columna Level .

Level | Level for Humans | Level Description -------|------------------|------------------------------------ 0 | DEBUG | [Default] Print all messages 1 | INFO | Filter out INFO messages 2 | WARNING | Filter out INFO & WARNING messages 3 | ERROR | Filter out all messages

Consulte el siguiente ejemplo de sistema operativo genérico con Python:

import os os.environ[''TF_CPP_MIN_LOG_LEVEL''] = ''3'' # or any {''0'', ''1'', ''2''} import tensorflow as tf

Para ser exhaustivo, también debe establecer el nivel para el módulo Python tf_logging , que se utiliza, por ejemplo, en operaciones de resumen, tablero de tensor, varios estimadores, etc.

# append to lines above tf.logging.set_verbosity(tf.logging.ERROR) # or any {DEBUG, INFO, WARN, ERROR, FATAL}

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, puede establecer la verbosidad del registro en DEBUG , INFO , WARN , ERROR o FATAL . Por ejemplo:

tf.logging.set_verbosity(tf.logging.ERROR)

La página también incluye monitores que se pueden usar con los modelos TF-Learn. Aquí está la página .

Sin embargo, 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.

script -c ''python [FILENAME].py'' | grep -v ''I tensorflow/''

Para el otro, vea esta respuesta que implica modificar la fuente y reconstruir TensorFlow.