Disclaimer: I only use the GPU version of TensorFlow v2.0.0-rc1, so I don’t know if this works with other versions.
When writing the TensorFlow code in Python scripts and running the scripts in a terminal, we usually get a bunch of messages in stdout. The messages log the information of the initialization stage of TensorFlow. These messages are annoying to many people. The messages come from both the underlying C++ code and the Python code of TensorFlow. So we need to disable the two sources of the messages in different ways.
If we install TensorFlow through
pip, then the C++ code is already compiled, and we don’t have any way to modify the C++ source code. Fortunately, the messages coming from this source can be controlled by an environment variable,
TF_CPP_MIN_LOG_LEVEL. In Linux, before running Python scripts, we can simply do something like
$ export TF_CPP_MIN_LOG_LEVEL=2. But I prefer to hard code this environment variable in my Python scripts because I’m lazy. I add the following code in my Python scripts before the code uses any TensorFlow object or function:
import os os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
This code does not necessarily need to be placed before
import tensorflow. But it must be placed before the code encounters any object or function coming from TensorFlow. I think the initialization of the TensorFlow package does not happen before this point.
The second source of the messages can be turned off by the standard Python logging system:
import logging logging.getLogger("tensorflow").setLevel(logging.ERROR) logging.getLogger("tensorflow").addHandler(logging.NullHandler(logging.ERROR))