সাহায্য Kaggle উপর TensorFlow সঙ্গে গ্রেট বেরিয়ার রিফ রক্ষা চ্যালেঞ্জ যোগদান

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

TensorFlow.org এ দেখুন Google Colab-এ চালান GitHub-এ উৎস দেখুন নোটবুক ডাউনলোড করুন

ওভারভিউ

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

এই টিউটোরিয়ালটি কীভাবে গ্রাফ ডায়াগনস্টিক ডেটা তৈরি করতে হয় এবং টেনসরবোর্ডের গ্রাফ ড্যাশবোর্ডে এটিকে কল্পনা করতে হয় তার একটি দ্রুত ওভারভিউ উপস্থাপন করে। আপনি ফ্যাশন-MNIST ডেটাসেটের জন্য একটি সাধারণ কেরাস সিকোয়েন্সিয়াল মডেল সংজ্ঞায়িত করবেন এবং প্রশিক্ষণ দেবেন এবং কীভাবে আপনার মডেল গ্রাফগুলি লগ এবং পরীক্ষা করবেন তা শিখবেন। এছাড়াও আপনি একটি ট্রেসিং API ব্যবহার নতুন ব্যবহার করে তৈরি করা কাজগুলির জন্য গ্রাফ তথ্য জেনারেট করতে হবে 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

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

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

# 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 শুরু করুন এবং UI লোড হওয়ার জন্য কয়েক সেকেন্ড অপেক্ষা করুন। উপরে "গ্রাফ" ট্যাপ করে গ্রাফ ড্যাশবোর্ড নির্বাচন করুন।

%tensorboard --logdir logs

এছাড়াও আপনি একটি হোস্ট করা, শেয়ার করার যোগ্য পরীক্ষা তৈরি করতে ঐচ্ছিকভাবে TensorBoard.dev ব্যবহার করতে পারেন।

!tensorboard dev upload \
  --logdir logs \
  --name "Sample op-level graph" \
  --one_shot

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

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

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

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

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

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

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


tf.ফাংশনের গ্রাফ

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

আপনি একটি পরিস্থিতির সম্মুখীন হতে পারে যেখানে আপনি ব্যবহার করতে হবে tf.function জন্য টীকা "অটোগ্রাফ" , অর্থাত্, একটি উচ্চ ক্ষমতা সম্পন্ন TensorFlow গ্রাফ রুপান্তর, একটি পাইথন গণনার ফাংশন। এই পরিস্থিতিতে, আপনি TensorBoard মধ্যে ঠাহর জন্য autographed ফাংশন লগ ইন করার TensorFlow সারাংশ ট্রেস API ব্যবহার করুন।

সারাংশ ট্রেস API ব্যবহার করতে:

  • নির্ধারণ করুন এবং একটি ফাংশন টীকা tf.function
  • ব্যবহার করুন tf.summary.trace_on() অবিলম্বে আপনার ফাংশন কল সাইটে আগে।
  • পাশ দিয়ে গ্রাফ থেকে প্রোফাইলের তথ্য (মেমরি, CPU- র সময়) যোগ 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

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