टेन्सरबोर्ड ट्यूटोरियल: टेन्सरफ्लो ग्राफ विज़ुअलाइज़ेशन
⚡ स्मार्ट सारांश
TensorBoard, TensorFlow ट्रेनिंग रन के लिए एक विज़ुअल फ्रंट एंड है, जो लॉस कर्व, मॉडल ग्राफ़, वेट हिस्टोग्राम और एम्बेडिंग को प्लॉट करता है। यह वॉकथ्रू एक एस्टीमेटर के साथ इवेंट फ़ाइलें लिखता है, फिर पोर्ट 6006 पर डैशबोर्ड खोलता है।
टेंसरबोर्ड क्या है?
TensorBoard एक इंटरफ़ेस है जिसका उपयोग ग्राफ़ को देखने और मॉडल को समझने, डीबग करने और अनुकूलित करने के लिए अन्य उपकरणों के लिए किया जाता है। यह एक ऐसा उपकरण है जो मशीन लर्निंग वर्कफ़्लो के लिए माप और दृश्य प्रदान करता है। यह मदद करता है track मेट्रिक्स जैसे कि हानि और सटीकता, मॉडल ग्राफ की कल्पना करना, और एम्बेडिंग को निम्न-आयामी स्थानों में प्रोजेक्ट करना।
TensorBoard के साथ निम्नलिखित सुविधाएं उपलब्ध हैं: TensorFlow और यह एक छोटे स्थानीय वेब सर्वर के रूप में चलता है जो प्रशिक्षण कार्य द्वारा डिस्क पर लिखी गई इवेंट फ़ाइलों को पढ़ता है।
TensorBoard का उपयोग करके TensorFlow ग्राफ विज़ुअलाइज़ेशन का उदाहरण
नीचे दी गई छवि इस ट्यूटोरियल में आपके द्वारा बनाए जाने वाले टेंसरबोर्ड ग्राफ से ली गई है। यह मुख्य पैनल है:
नीचे दी गई तस्वीर से, आप TensorBoard ग्राफ़ विज़ुअलाइज़ेशन का पैनल देख सकते हैं। पैनल में अलग-अलग टैब होते हैं, जो मॉडल चलाते समय आपके द्वारा जोड़ी गई जानकारी के स्तर से जुड़े होते हैं।
- स्केलर: मॉडल प्रशिक्षण के दौरान विभिन्न उपयोगी जानकारी प्रदर्शित करें
- रेखांकन: मॉडल दिखाएँ
- हिस्टोग्राम: हिस्टोग्राम के साथ वज़न प्रदर्शित करें
- वितरण: वजन का वितरण प्रदर्शित करें
- प्रोजेक्टर: प्रमुख घटक विश्लेषण और टी-एसएनई एल्गोरिदम दिखाएँ। आयामी कमी के लिए उपयोग की जाने वाली तकनीक।
इस TensorBoard ट्यूटोरियल के दौरान, आप एक सरल प्रोग्राम को प्रशिक्षित करेंगे। ध्यान लगा के पढ़ना या सीखना यह एक मॉडल है, और इसके द्वारा उत्पन्न ग्राफ को नीचे से ऊपर की ओर पढ़ा जाता है।
ग्राफ को देखकर आप समझ सकते हैं कि मॉडल कैसे काम करता है। नीचे दिए गए स्क्रीनशॉट में क्रमांकित बैज इन चार चरणों को दर्शाते हैं:
- मॉडल में डेटा को पंक्तिबद्ध करें: बैच आकार के बराबर डेटा की मात्रा को मॉडल में पुश करें, अर्थात, प्रत्येक पुनरावृत्ति के बाद डेटा फ़ीड की संख्या
- डेटा को टेंसर में फीड करें
- मॉडल को प्रशिक्षित करें
- प्रशिक्षण के दौरान बैचों की संख्या प्रदर्शित करें। मॉडल को डिस्क पर सहेजें।
टेन्सरबोर्ड का मूल विचार यह है कि एक न्यूरल नेटवर्क एक ब्लैक बॉक्स की तरह व्यवहार कर सकता है, और आपको उस बॉक्स के अंदर क्या है, यह जानने के लिए एक उपकरण की आवश्यकता होती है। टेन्सरबोर्ड को नेटवर्क के भीतर गहराई से देखने के लिए एक टॉर्च की तरह समझें।
यह संचालनों के बीच निर्भरता को समझने में मदद करता है, भार की गणना कैसे की जाती है, हानि फ़ंक्शन और बहुत सी अन्य उपयोगी जानकारी प्रदर्शित करता है। जब आप इन सभी सूचनाओं को एक साथ लाते हैं, तो आपके पास डीबग करने और मॉडल को बेहतर बनाने के तरीके खोजने के लिए एक बढ़िया टूल होता है।
टेन्सरबोर्ड ग्राफ कितना उपयोगी हो सकता है, इसका अंदाजा लगाने के लिए नीचे दिए गए दो लॉस कर्व्स को देखें:
एक न्यूरल नेटवर्क यह तय करता है कि विभिन्न न्यूरॉन्स को कैसे जोड़ा जाए और मॉडल द्वारा किसी परिणाम की भविष्यवाणी करने से पहले कितनी परतों की आवश्यकता होती है। एक बार आर्किटेक्चर परिभाषित हो जाने के बाद, आपको न केवल मॉडल को प्रशिक्षित करने की आवश्यकता होती है, बल्कि एक ऐसे मेट्रिक की भी आवश्यकता होती है जो भविष्यवाणी की सटीकता को मापता है। उस मेट्रिक को लॉस फंक्शन कहा जाता है, और उद्देश्य इसे न्यूनतम करना होता है, जिसका सीधा सा मतलब है कि मॉडल कम से कम त्रुटियां करे।
प्रत्येक प्रशिक्षण एल्गोरिदम गणना को कई बार दोहराता है जब तक कि हानि एक सपाट रेखा तक नहीं पहुंच जाती। हानि को न्यूनतम करने के लिए एक लर्निंग रेट की भी आवश्यकता होती है, जो मॉडल के सीखने की गति है। यदि लर्निंग रेट बहुत अधिक निर्धारित कर दिया जाए, तो मॉडल को कुछ भी सीखने का समय नहीं मिलता: यही बाईं ओर का चार्ट है, जहां रेखा ऊपर-नीचे होती रहती है क्योंकि मॉडल अनुमान लगा रहा होता है। दाईं ओर का चार्ट दिखाता है कि पुनरावृत्तियों के दौरान हानि धीरे-धीरे कम होती जाती है जब तक कि वक्र सपाट नहीं हो जाता, जिसका अर्थ है कि मॉडल ने समाधान ढूंढ लिया है।
TensorBoard ऐसे मेट्रिक्स को विज़ुअलाइज़ करने और संभावित समस्याओं को उजागर करने के लिए एक बेहतरीन टूल है। एक न्यूरल नेटवर्क को समाधान खोजने में घंटों या सप्ताह लग सकते हैं, और TensorBoard प्रक्रिया के दौरान ही मेट्रिक्स को अपडेट करता रहता है। इसलिए, मॉडल के सही ढंग से प्रशिक्षित होने या न होने का पता लगाने के लिए आपको अंत तक प्रतीक्षा करने की आवश्यकता नहीं है: TensorBoard खोलें, प्रशिक्षण की प्रगति देखें और यदि आवश्यक हो तो उचित बदलाव करें।
TensorBoard का उपयोग कैसे करें?
इस अनुभाग में, आप सीखेंगे कि टर्मिनल से TensorBoard कैसे खोलें। macOS और कमांड लाइन से Windowsयहां मॉडल के बजाय टूल पर ध्यान केंद्रित किया गया है, इसलिए प्रशिक्षण कोड को जानबूझकर छोटा रखा गया है।
सबसे पहले, आपको उन लाइब्रेरीज़ को इम्पोर्ट करना होगा जिनका उपयोग आप प्रशिक्षण के दौरान करेंगे।
## Import the library import tensorflow as tf import numpy as np
आप डेटा बनाते हैं। यह 10000 पंक्तियों और 5 स्तंभों वाला एक ऐरे है।
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape
उत्पादन
(10000, 5)
नीचे दिया गया कोड डेटा को रूपांतरित करता है और मॉडल बनाता है।
ध्यान दें कि लर्निंग रेट 0.1 के बराबर है। यदि आप इस रेट को अधिक मान पर बदलते हैं, तो मॉडल समाधान नहीं खोज पाएगा। ऊपर दिए गए चित्र के बाईं ओर यही हुआ है।
इस उदाहरण में TensorFlow एस्टीमेटर का उपयोग किया गया है, जो गणितीय गणनाओं को समाहित करने वाला उच्च-स्तरीय API है। एस्टीमेटर TensorFlow 1.x API का हिस्सा हैं, इसलिए नीचे दिए गए दोनों कोड स्निपेट 1.x इंस्टॉलेशन के तहत या इसके माध्यम से चलते हैं। tf.compat.v1 नाम स्थान।
लॉग फ़ाइलें बनाने के लिए, आपको पथ निर्दिष्ट करना होगा। यह आर्गुमेंट का उपयोग करके किया जाता है। model_dir.
नीचे दिए गए TensorBoard उदाहरण में, आप मॉडल को वर्किंग डायरेक्टरी के अंदर स्टोर करते हैं, यानी जहाँ आप नोटबुक या फ़ाइल स्टोर करते हैं। Python इस पथ के अंदर, TensorFlow train नाम का एक फ़ोल्डर बनाएगा और उसके अंदर linreg नाम का एक चाइल्ड फ़ोल्डर होगा।
feature_columns = [
tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file
model_dir='train/linreg',
hidden_units=[500, 300],
optimizer=tf.train.ProximalAdagradOptimizer(
learning_rate=0.1,
l1_regularization_strength=0.001
)
)
उत्पादन
INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}
इस TensorFlow ग्राफ विज़ुअलाइज़ेशन उदाहरण का अंतिम चरण मॉडल को प्रशिक्षित करना है। प्रशिक्षण के दौरान, TensorFlow मॉडल डायरेक्टरी में जानकारी लिखता है।
# Train the estimator train_input = tf.estimator.inputs.numpy_input_fn( x={"x": X_train}, y=y_train, shuffle=False,num_epochs=None) DNN_reg.train(train_input,steps=3000)
उत्पादन
INFO:tensorflow:Calling model_fn. INFO:tensorflow:Done calling model_fn. INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Graph was finalized. INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt. INFO:tensorflow:loss = 40.060104, step = 1 INFO:tensorflow:global_step/sec: 197.061 INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec) INFO:tensorflow:global_step/sec: 172.487 INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec) INFO:tensorflow:global_step/sec: 193.295 INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec) INFO:tensorflow:global_step/sec: 175.378 INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec) INFO:tensorflow:global_step/sec: 209.737 INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec) INFO:tensorflow:global_step/sec: 171.646 INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec) INFO:tensorflow:global_step/sec: 192.269 INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec) INFO:tensorflow:global_step/sec: 198.264 INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec) INFO:tensorflow:global_step/sec: 226.842 INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec) INFO:tensorflow:global_step/sec: 152.929 INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec) INFO:tensorflow:global_step/sec: 166.745 INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec) INFO:tensorflow:global_step/sec: 161.854 INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec) INFO:tensorflow:global_step/sec: 179.074 INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec) INFO:tensorflow:global_step/sec: 202.776 INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec) INFO:tensorflow:global_step/sec: 144.161 INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec) INFO:tensorflow:global_step/sec: 154.144 INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec) INFO:tensorflow:global_step/sec: 151.094 INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec) INFO:tensorflow:global_step/sec: 193.644 INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec) INFO:tensorflow:global_step/sec: 189.707 INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec) INFO:tensorflow:global_step/sec: 176.423 INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec) INFO:tensorflow:global_step/sec: 213.066 INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec) INFO:tensorflow:global_step/sec: 220.975 INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec) INFO:tensorflow:global_step/sec: 219.289 INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec) INFO:tensorflow:global_step/sec: 215.123 INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec) INFO:tensorflow:global_step/sec: 175.65 INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec) INFO:tensorflow:global_step/sec: 206.962 INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec) INFO:tensorflow:global_step/sec: 229.627 INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec) INFO:tensorflow:global_step/sec: 195.792 INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec) INFO:tensorflow:global_step/sec: 176.803 INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec) INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt. INFO:tensorflow:Loss for final step: 10.73032. <tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>
TensorFlow 2 पर यही काम Keras TensorBoard कॉलबैक द्वारा किया जाता है, जो बिना किसी एस्टीमेटर कोड के ग्राफ और प्रति-युग मैट्रिक्स लिखता है:
logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])
रन समाप्त होने के बाद, लॉग डायरेक्टरी में एक चेकपॉइंट फ़ाइल होती है, graph.pbtxt फ़ाइल और एक या अधिक events.out.tfevents फाइलें — बिल्कुल वही जो TensorBoard पढ़ता है।
के लिए macOS उपयोगकर्ताओं
नीचे दिया गया फाइंडर व्यू वर्किंग डायरेक्टरी के अंदर बनाए गए नए ट्रेन/लिनरेग फोल्डर को दिखाता है।
के लिए Windows उपयोगकर्ताओं
On Windows वही फाइलें उसी पथ के अंतर्गत दिखाई देती हैं जिसे आपने model_dir को दिया था, जैसा कि एड्रेस बार में हाइलाइट किया गया है।
समान इवेंट-फ़ाइल प्रारूप द्वारा निर्मित होता है PyTorchइसलिए डैशबोर्ड केवल टेन्सरफ्लो रन तक सीमित नहीं है।
अब जब आपने लॉग इवेंट लिख लिए हैं, तो आप TensorBoard खोल सकते हैं। TensorBoard डिफ़ॉल्ट रूप से पोर्ट 6006 पर चलता है (Jupyter (पोर्ट 8888 का उपयोग करता है)। टर्मिनल का उपयोग करें macOS या एनाकोंडा प्रॉम्प्ट पर Windows.
के लिए macOS उपयोगकर्ताओं
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
नोटबुक /Users/ पाथ में संग्रहीत है।Guru99/ट्यूटो_टीएफ
के लिए Windows उपयोगकर्ताओं
cd C:\Users\Admin\Anaconda3 activate hello-tf
नोटबुक पथ C:\Users\Admin\Anaconda3 में संग्रहीत है
TensorBoard लॉन्च करने के लिए, उस डायरेक्टरी से निम्न कमांड चलाएँ।
के लिए macOS उपयोगकर्ताओं
tensorboard --logdir=./train/linreg
के लिए Windows उपयोगकर्ताओं
tensorboard --logdir=.\train\linreg
इसके बाद TensorBoard को http://localhost:6006 पर उपलब्ध कराया जाता है।
| झंडा | यह क्या नियंत्रित करता है? |
|---|---|
--logdir |
इवेंट फ़ाइलों को रखने वाली निर्देशिका। यही एकमात्र आवश्यक फ़्लैग है। |
--port |
सेवा प्रदान करने के लिए पोर्ट। डिफ़ॉल्ट पोर्ट 6006 है; यदि पहले से चल रहे किसी सत्र में यह पोर्ट पहले से मौजूद है, तो इसे बदल दें। |
--bind_all |
हर नेटवर्क इंटरफ़ेस पर सेवा प्रदान करें। TensorBoard डिफ़ॉल्ट रूप से केवल लोकलहोस्ट से जुड़ता है, इसलिए रिमोट एक्सेस के लिए इस फ़्लैग की आवश्यकता होती है, और इसे इसके साथ संयोजित नहीं किया जा सकता है। --host. |
--reload_interval |
लॉग डायरेक्टरी को नए डेटा के लिए कितनी बार (सेकंडों में) पुनः स्कैन किया जाता है। |
--logdir_spec |
अल्पविराम से अलग किए गए कई पथों को स्वीकार करने वाला लेगेसी फ़ॉलबैक; --logdir अब उस फॉर्म का समर्थन नहीं करता है। |
RSI tensorboard dev सबकमांड अब काम नहीं करता: होस्ट की गई TensorBoard.dev सेवा 1 जनवरी 2024 को बंद हो गई। स्थानीय उपयोग अप्रभावित है।
कुछ मशीनों पर कंसोल लोकलहोस्ट के बजाय होस्ट नाम प्रिंट करता है, जैसा कि नीचे दिए गए एनाकोंडा प्रॉम्प्ट में दिखाया गया है। दोनों ही पते एक ही डैशबोर्ड खोलते हैं।
इस पते को कॉपी करके अपने पसंदीदा ब्राउज़र में पेस्ट करें। आपको नीचे दिखाया गया स्केलर्स डैशबोर्ड दिखाई देगा।
यदि आपको इसके बजाय कुछ इस तरह दिखाई दे:
इसका मतलब है कि TensorBoard लॉग फ़ाइल नहीं ढूंढ पा रहा है। सुनिश्चित करें कि आप सही जगह पर इंगित कर रहे हैं। cd सही मार्ग पर जाने के लिए, या यह दोबारा जांच लें कि लॉग इवेंट वास्तव में बनाया गया था या नहीं। यदि नहीं बनाया गया था, तो प्रशिक्षण कोड को दोबारा चलाएँ।
यदि आप TensorBoard को बंद करना चाहते हैं, तो टर्मिनल विंडो में CTRL+C दबाएं।
सुझाव: वर्तमान वर्किंग डायरेक्टरी के लिए अपने एनाकोंडा प्रॉम्प्ट की जांच करें।
ऊपर दिए गए स्क्रीनशॉट में प्रॉम्प्ट C:\Users\Admin पर स्थित है, इसलिए लॉग फ़ाइल उसी फ़ोल्डर के अंतर्गत बनाई जानी चाहिए।










