Как подавить многословное ведение журнала Tensorflow?

Я тестирую свой код Tensorflow с помощью тестов носа, но он выдает такой подробный вывод, что делает его бесполезным.

Следующий тест

import unittest
import tensorflow as tf

class MyTest(unittest.TestCase):

    def test_creation(self):
        self.assertEquals(True, False)

когда бегать с nosetests создает огромное количество бесполезной регистрации:

FAIL: test_creation (tests.test_tf.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/cebrian/GIT/thesis-nilm/code/deepmodels/tests/test_tf.py", line 10, in test_creation
    self.assertEquals(True, False)
AssertionError: True != False
-------------------- >> begin captured logging << --------------------
tensorflow: Level 1: Registering Const (<function _ConstantShape at 0x7f4379131c80>) in shape functions.
tensorflow: Level 1: Registering Assert (<function no_outputs at 0x7f43791319b0>) in shape functions.
tensorflow: Level 1: Registering Print (<function _PrintGrad at 0x7f4378effd70>) in gradient.
tensorflow: Level 1: Registering Print (<function unchanged_shape at 0x7f4379131320>) in shape functions.
tensorflow: Level 1: Registering HistogramAccumulatorSummary (None) in gradient.
tensorflow: Level 1: Registering HistogramSummary (None) in gradient.
tensorflow: Level 1: Registering ImageSummary (None) in gradient.
tensorflow: Level 1: Registering AudioSummary (None) in gradient.
tensorflow: Level 1: Registering MergeSummary (None) in gradient.
tensorflow: Level 1: Registering ScalarSummary (None) in gradient.
tensorflow: Level 1: Registering ScalarSummary (<function _ScalarShape at 0x7f4378f042a8>) in shape functions.
tensorflow: Level 1: Registering MergeSummary (<function _ScalarShape at 0x7f4378f042a8>) in shape functions.
tensorflow: Level 1: Registering AudioSummary (<function _ScalarShape at 0x7f4378f042a8>) in shape functions.
tensorflow: Level 1: Registering ImageSummary (<function _ScalarShape at 0x7f4378f042a8>) in shape functions.
tensorflow: Level 1: Registering HistogramSummary (<function _ScalarShape at 0x7f4378f042a8>) in shape functions.
tensorflow: Level 1: Registering HistogramAccumulatorSummary (<function _ScalarShape at 0x7f4378f042a8>) in shape functions.
tensorflow: Level 1: Registering Pack (<function _PackShape at 0x7f4378f047d0>) in shape functions.
tensorflow: Level 1: Registering Unpack (<function _UnpackShape at 0x7f4378f048c0>) in shape functions.
tensorflow: Level 1: Registering Concat (<function _ConcatShape at 0x7f4378f04938>) in shape functions.
tensorflow: Level 1: Registering ConcatOffset (<function _ConcatOffsetShape at 0x7f4378f049b0>) in shape functions.

......

в то время как использование tenorflow из консоли ipython не кажется таким подробным:

$ ipython
Python 2.7.11+ (default, Apr 17 2016, 14:00:29) 
Type "copyright", "credits" or "license" for more information.

IPython 4.2.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally

In [2]:

Как я мог подавить прежнее ведение журнала при проведении тестов носа?

3 ответа

1.0 Обновление (20.05.17):

В TensorFlow 1.0 для этой проблемы теперь вы можете контролировать ведение журнала с помощью переменной среды, называемой TF_CPP_MIN_LOG_LEVEL; по умолчанию он равен 0 (показаны все журналы), но может быть установлен в 1 для фильтрации INFO журналы, 2 для дополнительной фильтрации WARNING журналы и 3 для дополнительной фильтрации ERROR журналы. Смотрите следующий общий пример ОС с использованием Python:

import os
import tensorflow as tf

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

Предыдущие версии журналов TensorFlow или TF-Learn см. В следующих статьях:

Посмотрите страницу ниже для получения информации о ведении журнала TensorFlow; с новым обновлением вы можете установить подробность ведения журнала либо DEBUG, INFO, WARN, ERROR, или же FATAL, Например:

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

На странице дополнительно отображаются мониторы, которые можно использовать с моделями TF-Learn. Вот эта страница.

Это не блокирует всю регистрацию, хотя (только TF-Learn). У меня есть два решения; одно - "технически правильное" решение (Linux), а другое - перестройка TensorFlow.

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

Для другого, пожалуйста, посмотрите этот ответ, который включает изменение исходного кода и перестройку TensorFlow.

Запуск тестов с nosetests --nologcapture отключит отображение этих логов. Дополнительная информация о ведении журнала для тестов носа: https://nose.readthedocs.io/en/latest/plugins/logcapture.html

Вот пример этого. К сожалению, это требует изменения источника и перестройки. Вот ошибка отслеживания, чтобы упростить

Другие вопросы по тегам