টেনসরফ্লো ডিবাগিংয়ের তথ্য অক্ষম করুন


189

ডিবাগিং তথ্যের দ্বারা আমি বোঝাতে চাইছি বোঝানো লাইব্রেরি এবং সন্ধানকারী ডিভাইস ইত্যাদি সম্পর্কে টেনসরফ্লো আমার টার্মিনালে কী দেখায় Py পাইথনের ত্রুটিগুলি নয়।

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

5
ট্র্যাকিংয়ের সমস্যা: github.com/tensorflow/tensorflow/issues/1258
ইয়ারোস্লাভ

টেনসরফ্লো এখনও আলফা কোডের প্রারম্ভিক এবং তারা এখনও ন্যালি এবং পান্ডার সাথে বেসিক সামঞ্জস্যের জন্য বাগগুলি কাজ করছে। সুতরাং এই সতর্কতাগুলিকে এক ধাক্কায় ছুঁড়ে ফেলার জন্য, import warningsতখনই করুনwarnings.filterwarnings('ignore') , তারপর আপনার tensorflow আমদানির চালানো এবং কোডটি ভাঙ্গা আলফা-tensorflow কোডের উপর নির্ভরশীল, তারপর চালু সতর্কবার্তা মাধ্যমে ফিরে warnings.resetwarnings()। টেনসরফ্লো এই সময়ে 0.05 এর চেয়ে বেশি কোনও সংস্করণের নামের বিজ্ঞাপন দেওয়া উচিত নয়।
এরিক লেসচিনস্কি

উত্তর:


211

আপনি সমস্ত ডিবাগিং লগগুলি ব্যবহার করে অক্ষম করতে পারেন os.environ:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' 
import tensorflow as 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

এটি কাজ করে তবে লগগুলির সামনে টাইমস্ট্যাম্পটি সরিয়ে দেয় - এটি কীভাবে আবার চালু করা যায়?
ড্রিমফ্ল্যাশার

এই স্তরগুলি (0, 1, 2, 3) এর অর্থ কী?
ডায়রালিক

2
টেনস্রোফ্লো আমদানির আগেও 1.13 এবং অজগর 3 এর জন্য কাজ করছেন না
লি হ্যানান

145

2.0 আপডেট (10/8/19) সেটিং TF_CPP_MIN_LOG_LEVELএখনও কাজ (v0.12 + + আপডেটে নিচে দেখুন) উচিত, কিন্তু বর্তমানে একটি বিষয় খোলা (দেখুন আছে ইস্যু # 31870 )। যদি সেটিংস আপনার TF_CPP_MIN_LOG_LEVELপক্ষে কাজ না করে (আবার নীচে দেখুন), লগ স্তরটি নির্ধারণ করতে নিম্নলিখিতগুলি করার চেষ্টা করুন:

import tensorflow as tf
tf.get_logger().setLevel('INFO')

এছাড়াও, দয়া করে যে ডকুমেন্টেশনটি tf.autograph.set_verbosityঅটোগ্রাফ লগ বার্তাগুলির ভার্বোসিটি সেট করে - দেখুন:

# Can also be set using the AUTOGRAPH_VERBOSITY environment variable
tf.autograph.set_verbosity(1)

v0.12 + আপডেট (5/20/17), টিএফ 2.0+ এর মাধ্যমে কাজ করা:

এই ইস্যুটি অনুসারে টেনসরফ্লো 0.12+ তে আপনি এখন পরিবেশগত ভেরিয়েবলের মাধ্যমে লগিং নিয়ন্ত্রণ করতে পারবেন TF_CPP_MIN_LOG_LEVEL; এটি 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      

পাইথন ব্যবহার করে নিম্নলিখিত জেনেরিক ওএস উদাহরণটি দেখুন:

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

পুঙ্খানুপুঙ্খভাবে বলা যায়, আপনি পাইথন tf_loggingমডিউলটির স্তর নির্ধারণের কথাও বলেছেন যা উদাহরণস্বরূপ অপ্স, টেনসরবোর্ড, বিভিন্ন অনুমানক ইত্যাদিতে ব্যবহৃত হয় etc.

# 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}


টেনসরফ্লো বা টিএফ-শিখুন লগিংয়ের পূর্ববর্তী সংস্করণগুলির জন্য (v0.11.x বা নিম্ন):

টেনসরফ্লো লগিং সম্পর্কিত তথ্যের জন্য নীচের পৃষ্ঠাটি দেখুন; নতুন আপডেট সঙ্গে, আপনি লগিং ভারবোসিটি সেট করতে পারবেন পারেন DEBUG, INFO, WARN, ERROR, অথবাFATAL । উদাহরণ স্বরূপ:

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

পৃষ্ঠাটি অতিরিক্তভাবে মনিটরের উপরে চলে যায় যা টিএফ-শিখুন মডেলগুলির সাথে ব্যবহার করা যেতে পারে। পৃষ্ঠাটি এখানে

এটা হয় না সমস্ত লগিংকে অবরুদ্ধ , যদিও (কেবলমাত্র টিএফ-শিখুন)। আমার দুটি সমাধান আছে; এর মধ্যে একটি 'প্রযুক্তিগতভাবে সঠিক' সমাধান (লিনাক্স) এবং অন্যটি টেনসরফ্লো পুনর্নির্মাণের সাথে জড়িত।

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

অন্যটির জন্য, দয়া করে এই উত্তরটি দেখুন যার মধ্যে উত্স সংশোধন এবং টেনসরফ্লো পুনর্নির্মাণ জড়িত।


"আমি টেনসরফ্লো" বার্তাগুলি বিরক্তিকর হতে পারে, টিএফকে পুনর্নির্মাণের পরিবর্তে এপিআই ব্যবহার করে চুপ করে যাওয়ার কিছু উপায় সরবরাহ করা উচিত
পদার্থবিজ্ঞানী

2
এটি কমান্ড লাইন থেকেও করা যেতে পারে:export TF_CPP_MIN_LOG_LEVEL="3" && python your_code.py
অ্যান্ড্রু হান্ড

এটি হিসাবে চালানো যেতে পারেTF_CPP_MIN_LOG_LEVEL="3" python your_code.py
ক্রাইমাইকেল

টেনসরফ্লো সতর্কতা / ত্রুটিগুলিকে ত্রুটিগুলিতে পরিণত করার কোনও উপায় আছে কি?
সিএমসিডিগ্রাঙ্কাই

1
tf.logging.set_verbosity (tf.logging.ERROR) # বা যে কোনও {DEBUG, INFO, WARN, ERROR, FATAL} আমার পক্ষে কাজ করেছে
আমির মোঃ আমিরুজ্জামান

16

আমারও এই সমস্যাটি ছিল (চালু) tensorflow-0.10.0rc0 ), তবে প্রস্তাবিত উত্তরের মাধ্যমে অতিরিক্ত নাক পরীক্ষার লগিং সমস্যাটি ঠিক করতে পারিনি।

আমি টেনসরফ্লো লগারে সরাসরি অনুসন্ধান করে এটি সমাধান করতে সক্ষম হয়েছি। সংশোধনগুলির মধ্যে সবচেয়ে সঠিক নয়, তবে দুর্দান্ত কাজ করে এবং কেবলমাত্র পরীক্ষা ফাইলগুলিকে দূষিত করে যা প্রত্যক্ষ বা অপ্রত্যক্ষভাবে টেনসরফ্লো আমদানি করে:

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

1
TF_CPP_MIN_LOG_LEVEL সমাধান না করায় আমার পক্ষে কাজ করেছে। ভাল চিন্তা!
দোষ-সহনশীল

টেনস্রোফ্লো 1.12 দিয়ে কেবল আমার জন্য কাজ করা সমাধান।
বিবি

ব্যবহার tensorflow-gpu 1.14.0। এই আউটপুটটি যখন 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. এই বার্তাগুলির পরে কোনও সতর্কবার্তা ছিল না বলে উপরের ফাংশনটি বলা হয় তখন এটি
পুনরুদ্ধার

15

টেনসরফ্লো ২.০ এর সাথে সামঞ্জস্যের জন্য , আপনি ব্যবহার করতে পারেনtf.get_logger

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

3
টেনস্রোফ্লো 1.13.1 নিয়ে আমার জন্য কাজ করেছেন
আব্রামোদজ

1
1.13.1 নিয়ে আমার জন্য কাজ করেছেন। নমুনা কোড
ব্যবহারকারী 1857492

10

হিসাবে TF_CPP_MIN_LOG_LEVELআমার জন্য আপনি চেষ্টা করতে পারেন কাজ করে নি:

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

টেনসরফ্লো v1.6.0 এ আমার জন্য কাজ করেছেন


6

সাধারন পাইথন 3 লগ ম্যানেজার টেনসরফ্লো == 1.11.0 নিয়ে আমার জন্য কাজ করে:

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

4

আমি এই পোস্টটি দিয়ে সমাধান করেছি # 27045 সমস্ত সতর্কতাগুলি সরাতে পারছি না , এবং সমাধানটি ছিল:

import logging
logging.getLogger('tensorflow').disabled = True

3
টিএফ আমদানির সময় ফিউচার ওয়ার্নিংয়ের জন্য কাজ করছেন না, tf = 1.13.1 py3

2
এটি কেবল আমার জন্য কাজ করে! আমার কনফিগারেশন: কেরাস '২.২.৪' (যা টিএফ ১.১৫.০ ব্যবহার করে) এবং পাইথন ৩.7.৪
মোহামাদ কাউহি মোগাদাম

2

এখানে কিছুটা নমনীয়তা যুক্ত করতে, আপনি লগিংয়ের স্তরের উপর আরও সূক্ষ্ম নিয়ন্ত্রণ অর্জন করতে পারেন এমন কোনও ফাংশন লিখে যা আপনার বার্তাগুলিকে ফিল্টার করে তবে আপনি চান:

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

যেখানে my_filter_funcকোনও LogRecordবস্তুকে ইনপুট [ LogRecordডক্স ] হিসাবে গ্রহণ করে এবং যদি আপনি বার্তাটি ছুঁড়ে দিতে চান তবে শূন্য ফিরে আসে; অন্যথায় ননজারো

এখানে এমন একটি ফিল্টার রয়েছে যা কেবলমাত্র প্রতিটি নবম তথ্য বার্তা রাখে ( nonlocalএখানে ব্যবহারের কারণে পাইথন 3 ):

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

উপরের সমস্তই ধরে নিয়েছে যে টেনসরফ্লো ইতিমধ্যে ইতিমধ্যে তার লগিং অবস্থা সেট আপ করেছে। আপনি tf.logging.get_verbosity()একটি ফিল্টার যোগ করার আগে কল করে পার্শ্ব প্রতিক্রিয়া ছাড়াই এটি নিশ্চিত করতে পারেন ।


2

হ্যাঁ, আমি tf 2.0-বিটা ব্যবহার করছি এবং ডিফল্ট লগিং সক্ষম / অক্ষম করতে চাই। Tf1.X এ পরিবেশের পরিবর্তনশীল এবং পদ্ধতিগুলির আর অস্তিত্ব নেই বলে মনে হয়।

আমি পিডিবিতে পা রেখেছিলাম এবং এটি কাজ করতে পেলাম:

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

আমি তারপরে আমার নিজস্ব লগার এপিআই যুক্ত করব (এই ক্ষেত্রে ফাইল-ভিত্তিক)

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)

2

টেনসরফ্লো ২.১.০ এর জন্য, নিম্নলিখিত কোডটি সূক্ষ্মভাবে কাজ করে।

import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

2

আপনার যদি কেবলমাত্র পর্দার সতর্কতা আউটপুটগুলি থেকে মুক্তি পেতে হয় তবে আপনি কনসোলটি সাফ করতে চাইতে পারেন এই সাধারণ কমান্ডটি ব্যবহার করে টেনসরফ্লো আমদানির পরে ঠিক স্ক্রিনটি (এটি আমার অভিজ্ঞতাতে সমস্ত ডিবাগিং লগগুলি অক্ষম করার চেয়ে কার্যকর):

উইন্ডোতে:

import os
os.system('cls')

লিনাক্স বা ম্যাকে:

import os
os.system('clear')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.