Tensorflow 디버깅 정보 비활성화
디버깅 정보는 Python 오류가 아닌 로드된 라이브러리와 발견된 디바이스 등에 대해 TensorFlow가 내 단말기에 표시하는 것을 의미합니다.
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
...
할 수 .os.environ
:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import tensorflow as tf
tf 0.12 및 1.0에서 테스트 완료
자세한 것은,
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
2.0 업데이트(10/8/19) 설정TF_CPP_MIN_LOG_LEVEL
는 아직 동작합니다(아래 버전 0.12+ 업데이트에서는 참조).단, 2.4 이후 버전 2.0에서 2.3.z가 수정될 수 있습니다.IfTF_CPP_MIN_LOG_LEVEL
기능을 ).레벨을 , 다음의 을 실시해 .로그 레벨을 설정하려면 , 다음의 조작을 실시해 주세요.
import tensorflow as tf
tf.get_logger().setLevel('INFO')
또한 사인 로그 메시지의 상세 내용을 설정하는 문서를 참조하십시오. 예를 들어 다음과 같습니다.
# Can also be set using the AUTOGRAPH_VERBOSITY environment variable
tf.autograph.set_verbosity(1)
v0.12+ 업데이트 (5/20/17), TF 2.0+에서 작업:
TensorFlow 0.12+에서는 이 문제에 따라 환경변수를 통해 로깅을 제어할 수 있습니다.TF_CPP_MIN_LOG_LEVEL
; 은 0 표시이지만, "0(모든 로그 표시)", "0( 로그 표시)"에서 "0(모든 로그 표시)" 중 할 수 있습니다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
Python 을 사용하는 다음의 범용 OS 의 예를 참조해 주세요.
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # or any {'0', '1', '2'}
import tensorflow as tf
스크립트를 실행하는 환경에서 이 환경 변수를 설정할 수 있습니다.를 들어 "bash"에 있습니다.~/.bashrc
,/etc/environment
,/etc/profile
또는 실제 셸에서 다음과 같이 처리됩니다.
TF_CPP_MIN_LOG_LEVEL=2 python my_tf_script.py
또한 요약 연산, 텐서보드, 다양한 추정기 등에 사용되는 Python 모듈의 레벨 설정도 호출합니다.
# append to lines above
tf.logging.set_verbosity(tf.logging.ERROR) # or any {DEBUG, INFO, WARN, ERROR, FATAL}
1.14의 경우 다음과 같이 v1 API 사용을 변경하지 않으면 경고가 표시됩니다.
# append to lines above
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR) # or any {DEBUG, INFO, WARN, ERROR, FATAL}
**For Prior Versions of TensorFlow or TF-Learn Logging (v0.11.x or lower):**
로깅에 대한 내용은 업데이트를를 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 재구축과 관련된 이 답변을 참조하십시오.
Tensorflow 2.0과의 호환성을 위해 다음을 사용할 수 있습니다.
import logging
tf.get_logger().setLevel(logging.ERROR)
이 .tensorflow-0.10.0rc0
단, 한 코 로깅 할 수 .) 단, 제시된 답변으로는 과도한 코 테스트 로깅 문제를 해결할 수 없었습니다.
텐서플로 로거에 직접 접속하여 이 문제를 해결할 수 있었습니다.가장 올바른 수정은 아니지만 매우 효과적이며 텐서플로우를 직간접적으로 Import하는 테스트 파일만 오염시킵니다.
# Place this before directly or indirectly importing tensorflow
import logging
logging.getLogger("tensorflow").setLevel(logging.WARNING)
이 게시물 Cannot remove all warnings #27045로 해결했습니다.해결 방법은 다음과 같습니다.
import logging
logging.getLogger('tensorflow').disabled = True
get the the the the를os.environ
이전과 같이 기능하기 위한 솔루션, Import하기 전에 이 솔루션이 배치되어 있는지 확인하십시오.tensorflow
mwweb의 .
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # or any {'0', '1', '2'}
import tensorflow as tf
~로TF_CPP_MIN_LOG_LEVEL
효과가 없었습니다.해 보세요.
tf.logging.set_verbosity(tf.logging.WARN)
Tensorflow v1.6.0에서 나를 위해 일했다.
저는 Tensorflow 버전 2.3.1을 사용하고 있으며 위의 솔루션 중 어느 것도 완전히 효과가 없었습니다.
이 소포를 찾을 때까지요
다음과 같이 설치합니다.
아나콘다랑
python -m pip install silence-tensorflow
IDE,
pip install silence-tensorflow
그리고 코드의 첫 번째 줄에 다음을 추가합니다.
from silence_tensorflow import silence_tensorflow
silence_tensorflow()
바로 그거야!
일반적인 python3 로그 관리자는 tensorflow==1.11.0:
import logging
logging.getLogger('tensorflow').setLevel(logging.INFO)
Tensorflow 2.1.0의 경우 다음 코드가 정상적으로 작동합니다.
import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
여기에 유연성을 더하기 위해 메시지를 원하는 대로 필터링하는 함수를 작성하여 로깅 수준을 보다 세밀하게 제어할 수 있습니다.
logging.getLogger('tensorflow').addFilter(my_filter_func)
서 ''는my_filter_func
LogRecord
object는 LogRecord
입력 [docs]로 지정합니다.메시지를 출력할 경우 0을 반환하고, 그렇지 않을 경우 0을 반환하지 않습니다.
모든 메시지만입니다(Python 3은 Python 3을 합니다.nonlocal
: 기기) :
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))
위의 모든 것은 TensorFlow가 로깅 상태를 이미 설정했다고 가정하고 있습니다. 이 수 있습니다.tf.logging.get_verbosity()
필터를 추가하기 전에.
네, tf 2.0-beta를 사용하고 있으며 기본 로깅을 활성화/비활성화합니다.tf1의 환경변수와 메서드.X는 더 이상 존재하지 않는 것 같다.
PDB를 찾아보니 이게 효과가 있더군요.
# close the TF2 logger
tf2logger = tf.get_logger()
tf2logger.error('Close TF2 logger handlers')
tf2logger.root.removeHandler(tf2logger.root.handlers[0])
그런 다음 자신의 logger API를 추가합니다(이 경우 파일 기반).
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)
했지만, 을 시도해 , 할 수 .TF 1.14
는 여러 해결책을 해 보았습니다 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
import os
import logging
import sys
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # FATAL
stderr = sys.stderr
sys.stderr = open(os.devnull, 'w')
import tensorflow as tf
tf.get_logger().setLevel(tf.compat.v1.logging.FATAL)
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
logging.getLogger('tensorflow').setLevel(tf.compat.v1.logging.FATAL)
sys.stderr = stderr
import absl.logging
logging.root.removeHandler(absl.logging._absl_handler)
absl.logging._warn_preinit_stderr = False
디버깅 정보는 아직 표시되지만, 최종적으로 도움이 된 것은 PC를 재기동하는 것입니다(커널을 재기동하면 동작합니다).따라서 누군가 유사한 문제를 가지고 있는 경우 환경 변수를 설정한 후 커널을 재시작해 보십시오. 단순하지만 생각나지 않을 수 있습니다.
화면에서 경고 출력만 삭제할 필요가 있는 경우 텐서플로우를 Import한 직후 콘솔 화면을 클리어할 수 있습니다(내 경험으로 모든 디버깅로그를 무효로 하는 것보다 효과적입니다).
창:
import os
os.system('cls')
Linux 또는 Mac의 경우:
import os
os.system('clear')
위의 어떤 솔루션도 Jupyter Notebook에서 제 문제를 해결할 수 없었기 때문에 저는 Cicoria의 아래 코드 스니펫을 사용하여 문제를 해결했습니다.
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore",category=FutureWarning)
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer
print('Done')
언급URL : https://stackoverflow.com/questions/35911252/disable-tensorflow-debugging-information
'itsource' 카테고리의 다른 글
내 항아리의 명세서 읽기 (0) | 2022.09.17 |
---|---|
ORDER BY RAND() Maria가 아닌 랜덤 행을 가져옵니다.DB (0) | 2022.09.17 |
Github 페이지의 VueJS 앱 공백 페이지 (0) | 2022.09.17 |
PHP가 숫자 문자열에서 쉼표 제거 (0) | 2022.09.17 |
mysql에서 해당 달의 첫날을 얻는 방법은 무엇입니까? (0) | 2022.09.17 |