This page was translated by the Cloud Translation API.
Switch to English

টেনসরফ্লো গ্রাফ পরীক্ষা করা হচ্ছে

টেনসরফ্লো.আর.জে দেখুন গুগল কোলাবে চালান গিটহাবের উত্স দেখুন

সংক্ষিপ্ত বিবরণ

টেনসরবোর্ডের গ্রাফগুলি ড্যাশবোর্ড আপনার টেনসরফ্লো মডেলটি পরীক্ষা করার জন্য একটি শক্তিশালী সরঞ্জাম। আপনি দ্রুত আপনার মডেলের কাঠামোর একটি ধারণাগত গ্রাফ দেখতে পারেন এবং এটি আপনার উদ্দেশ্যযুক্ত ডিজাইনের সাথে মেলে তা নিশ্চিত করতে পারেন। টেনসরফ্লো আপনার প্রোগ্রামটি কীভাবে বোঝে তা বুঝতে আপনি একটি অপ-স্তরের গ্রাফও দেখতে পারেন। অপ-লেভেল গ্রাফ পরীক্ষা করা আপনাকে কীভাবে আপনার মডেলটি পরিবর্তন করবেন সে সম্পর্কে অন্তর্দৃষ্টি দিতে পারে। উদাহরণস্বরূপ, যদি প্রশিক্ষণ প্রত্যাশার চেয়ে ধীর গতিতে এগিয়ে চলেছে তবে আপনি আপনার মডেলটি আবার ডিজাইন করতে পারেন।

এই টিউটোরিয়ালটি গ্রাফ ডায়াগনস্টিক ডেটা কীভাবে উত্পন্ন করতে হবে এবং এটি টেনসরবোর্ডের গ্রাফ ড্যাশবোর্ডে ভিজ্যুয়ালাইজ করা যায় তার একটি দ্রুত ওভারভিউ উপস্থাপন করে। আপনি ফ্যাশন-এমএনআইএসটি ডেটাসেটের জন্য একটি সাধারণ কেরাস সিক্যুয়াল মডেলকে সংজ্ঞায়িত এবং প্রশিক্ষণ দেবেন এবং কীভাবে আপনার মডেল গ্রাফগুলিতে লগিন এবং পরীক্ষা করবেন তা শিখবেন। আপনি নতুন tf.function টীকাটি ব্যবহার করে তৈরি ফাংশনগুলির জন্য গ্রাফ ডেটা উত্পন্ন করতে একটি ট্রেসিং এপিআই ব্যবহার করবেন।

সেটআপ

 # Load the TensorBoard notebook extension.
%load_ext tensorboard
 
 from datetime import datetime
from packaging import version

import tensorflow as tf
from tensorflow import keras

print("TensorFlow version: ", tf.__version__)
assert version.parse(tf.__version__).release[0] >= 2, \
    "This notebook requires TensorFlow 2.0 or above."
 
TensorFlow version:  2.2.0

 import tensorboard
tensorboard.__version__
 
'2.2.1'
 # Clear any logs from previous runs
!rm -rf ./logs/ 
 

একটি কেরাস মডেল সংজ্ঞায়িত করুন

এই উদাহরণে, শ্রেণিবদ্ধকারী একটি সাধারণ চার-স্তর সিক্যুয়াল মডেল।

 # Define the model.
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(32, activation='relu'),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation='softmax')
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])
 

প্রশিক্ষণ ডেটা ডাউনলোড করুন এবং প্রস্তুত করুন।

 (train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data()
train_images = train_images / 255.0
 

মডেল এবং লগ ডেটা প্রশিক্ষণ

প্রশিক্ষণের আগে, কেরাস টেনসরবোর্ড কলব্যাক সংজ্ঞা দিন , লগ ডিরেক্টরিটি উল্লেখ করে। মডেল.ফিট () এ এই কলব্যাকটি পাস করার মাধ্যমে, আপনি টেনসরবোর্ডে ভিজ্যুয়ালাইজেশনের জন্য গ্রাফ ডেটা লগড করে থাকা নিশ্চিত করেছেন।

 # Define the Keras TensorBoard callback.
logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

# Train the model.
model.fit(
    train_images,
    train_labels, 
    batch_size=64,
    epochs=5, 
    callbacks=[tensorboard_callback])
 
Epoch 1/5
938/938 [==============================] - 2s 2ms/step - loss: 0.6955 - accuracy: 0.7618
Epoch 2/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4877 - accuracy: 0.8296
Epoch 3/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4458 - accuracy: 0.8414
Epoch 4/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4246 - accuracy: 0.8476
Epoch 5/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4117 - accuracy: 0.8508

<tensorflow.python.keras.callbacks.History at 0x7f656ecc3fd0>

অপ-লেভেল গ্রাফ

টেনসরবোর্ড শুরু করুন এবং ইউআই লোড হওয়ার জন্য কয়েক সেকেন্ড অপেক্ষা করুন। শীর্ষে "গ্রাফগুলি" আলতো চাপ দিয়ে গ্রাফগুলি ড্যাশবোর্ড নির্বাচন করুন।

 %tensorboard --logdir logs
 

ডিফল্টরূপে, টেনসরবোর্ড অপ-লেভেল গ্রাফ প্রদর্শন করে। (বাম দিকে, আপনি নির্বাচিত "ডিফল্ট" ট্যাগটি দেখতে পারেন)) লক্ষ করুন যে গ্রাফটি উল্টানো হয়েছে; ডেটা নীচে থেকে উপরে প্রবাহিত হয়, তাই কোডের সাথে তুলনা করে এটি উল্টো দিকে। তবে, আপনি দেখতে পাচ্ছেন যে অন্যান্য গণনা নোডগুলিতে অতিরিক্ত প্রান্ত সহ গ্রাফটি কেরাস মডেল সংজ্ঞাটির সাথে খুব ঘনিষ্ঠভাবে মিলছে।

গ্রাফগুলি প্রায়শই খুব বড় হয়, তাই আপনি গ্রাফের দৃশ্যায়নটি পরিচালনা করতে পারেন:

  • জুম ইন এবং আউট করতে স্ক্রোল করুন
  • প্যানে টানুন
  • টগল নোড প্রসারণ ডাবল ক্লিক করা (একটি নোড অন্যান্য নোডের জন্য ধারক হতে পারে)

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

ধারণাগত গ্রাফ

এক্সিকিউশন গ্রাফের পাশাপাশি টেনসরবোর্ড একটি ধারণামূলক গ্রাফও প্রদর্শন করে। এটি কেবল কেরাস মডেলের একটি দৃশ্য। আপনি যদি কোনও সংরক্ষিত মডেল পুনরায় ব্যবহার করছেন এবং আপনি এর গঠনটি পরীক্ষা বা বৈধ করতে চান তবে এটি কার্যকর হতে পারে।

ধারণাগত গ্রাফ দেখতে, "কেরাস" ট্যাগটি নির্বাচন করুন। এই উদাহরণের জন্য, আপনি একটি ধসে পড়া সিক্যুয়াল নোডটি দেখতে পাবেন। মডেলের কাঠামোটি দেখতে নোডকে ডাবল ক্লিক করুন:


Tf.funitions এর গ্রাফ

উদাহরণগুলি এখনও পর্যন্ত কেরাস মডেলগুলির গ্রাফগুলি বর্ণনা করেছে, যেখানে কেরাস স্তরগুলি সংজ্ঞায়িত করে এবং মডেল.ফিট () কল করে গ্রাফগুলি তৈরি করা হয়েছে।

আপনি এমন একটি পরিস্থিতির মুখোমুখি হতে পারেন যেখানে আপনাকে "অটোগ্রাফ" , অর্থাৎ রূপান্তরকরণ, একটি পাইথন কম্পিউটেশন ফাংশনটিকে একটি উচ্চ-কর্মক্ষমতা টেনসরফ্লো গ্রাফে রূপান্তর করতে tf.function টিকা ব্যবহার করতে হবে to এই পরিস্থিতিতে, আপনি টেনসরবোর্ডে ভিজ্যুয়ালাইজেশনের জন্য অটোগ্রাফ করা ফাংশনগুলিতে লগ করতে টেনসরফ্লো সংক্ষিপ্তসার ট্রেস এপিআই ব্যবহার করেন।

সংক্ষিপ্তসার ট্রেস এপিআই ব্যবহার করতে:

  • tf.function সহ একটি ফাংশন সংজ্ঞায়িত করুন এবং tf.function
  • আপনার ফাংশন কল সাইটের ঠিক আগে tf.summary.trace_on() ব্যবহার করুন।
  • profiler=True দিয়ে পাস করে গ্রাফটিতে প্রোফাইল তথ্য (মেমরি, সিপিইউ সময়) যুক্ত করুন
  • সংক্ষিপ্ত ফাইল লেখক সহ, লগ ডেটা সংরক্ষণ করতে tf.summary.trace_export() কল করুন

তারপরে আপনার ফাংশনটি কীভাবে আচরণ করে তা দেখতে আপনি টেনসরবোর্ড ব্যবহার করতে পারেন।

 # The function to be traced.
@tf.function
def my_func(x, y):
  # A simple hand-rolled layer.
  return tf.nn.relu(tf.matmul(x, y))

# Set up logging.
stamp = datetime.now().strftime("%Y%m%d-%H%M%S")
logdir = 'logs/func/%s' % stamp
writer = tf.summary.create_file_writer(logdir)

# Sample data for your function.
x = tf.random.uniform((3, 3))
y = tf.random.uniform((3, 3))

# Bracket the function call with
# tf.summary.trace_on() and tf.summary.trace_export().
tf.summary.trace_on(graph=True, profiler=True)
# Call only one tf.function when tracing.
z = my_func(x, y)
with writer.as_default():
  tf.summary.trace_export(
      name="my_func_trace",
      step=0,
      profiler_outdir=logdir)
 
 %tensorboard --logdir logs/func
 

টেন্সরবোর্ডের দ্বারা বোঝা হিসাবে আপনি এখন আপনার ফাংশনটির কাঠামো দেখতে পারবেন। সিপিইউ এবং মেমরির পরিসংখ্যানগুলি দেখতে "প্রোফাইল" রেডিও বোতামে ক্লিক করুন।