গুগল I / O মে 18-20 মে! স্থান সংরক্ষণ করুন এবং আপনার সময়সূচীটি এখনই নিবন্ধ করুন
This page was translated by the Cloud Translation API.
Switch to English

টেনসরবোর্ড দিয়ে শুরু করুন

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

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

এই কুইকস্টার্টটি টেনসরবোর্ড দিয়ে কীভাবে দ্রুত শুরু করবেন তা দেখায়। এই ওয়েবসাইটের অবশিষ্ট গাইডগুলি সুনির্দিষ্ট ক্ষমতার উপর আরও বিশদ সরবরাহ করে, যার মধ্যে অনেকগুলি এখানে অন্তর্ভুক্ত নেই।

# Load the TensorBoard notebook extension
%load_ext tensorboard
import tensorflow as tf
import datetime
# Clear any logs from previous runs
rm -rf ./logs/

উদাহরণ হিসাবে এমএনআইএসটি ডেটাসেট ব্যবহার করে ডেটাটিকে স্বাভাবিক করুন এবং একটি ফাংশন লিখুন যা চিত্রগুলিকে 10 শ্রেণিতে শ্রেণিবদ্ধ করার জন্য একটি সাধারণ কেরাস মডেল তৈরি করে।

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step

কেরাস মডেল.ফিট () সহ টেনসরবোর্ড ব্যবহার করা হচ্ছে

কেরাসের মডেল.ফিট () এর সাথে প্রশিক্ষণ দেওয়ার সময়, tf.keras.callbacks.TensorBoard কলব্যাক যুক্ত করে লগগুলি তৈরি এবং সংরক্ষণ করা হয়েছে তা নিশ্চিত করে। অতিরিক্তভাবে, হিস্টোগ্রাম গণনা সক্ষম করুন হিস্টোগ্রাম_ফ্রেইক histogram_freq=1 দিয়ে প্রতিটি পর্ব (এটি ডিফল্ট অনুসারে বন্ধ)

বিভিন্ন প্রশিক্ষণের রানের সহজ নির্বাচনের অনুমতি দেওয়ার জন্য লগগুলি একটি টাইমস্ট্যাম্পড সাব-ডিরেক্টরিতে রাখুন।

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

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 15s 246us/sample - loss: 0.2217 - accuracy: 0.9343 - val_loss: 0.1019 - val_accuracy: 0.9685
Epoch 2/5
60000/60000 [==============================] - 14s 229us/sample - loss: 0.0975 - accuracy: 0.9698 - val_loss: 0.0787 - val_accuracy: 0.9758
Epoch 3/5
60000/60000 [==============================] - 14s 231us/sample - loss: 0.0718 - accuracy: 0.9771 - val_loss: 0.0698 - val_accuracy: 0.9781
Epoch 4/5
60000/60000 [==============================] - 14s 227us/sample - loss: 0.0540 - accuracy: 0.9820 - val_loss: 0.0685 - val_accuracy: 0.9795
Epoch 5/5
60000/60000 [==============================] - 14s 228us/sample - loss: 0.0433 - accuracy: 0.9862 - val_loss: 0.0623 - val_accuracy: 0.9823
<tensorflow.python.keras.callbacks.History at 0x7fc8a5ee02e8>

কমান্ড লাইনের মাধ্যমে বা একটি নোটবুকের অভিজ্ঞতার মধ্যে দিয়ে টেনসরবোর্ড শুরু করুন। দুটি ইন্টারফেস সাধারণত এক। নোটবুকগুলিতে, %tensorboard লাইন যাদু ব্যবহার করুন। কমান্ড লাইনে, "%" ছাড়াই একই কমান্ডটি চালান।

%tensorboard --logdir logs/fit

প্রদর্শিত ড্যাশবোর্ডগুলির একটি সংক্ষিপ্ত বিবরণ (শীর্ষস্থানীয় নেভিগেশন বারের ট্যাবগুলি):

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

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

অন্যান্য পদ্ধতির সাথে টেনসরবোর্ড ব্যবহার করা

tf.GradientTape() মতো পদ্ধতির সাথে প্রশিক্ষণ দেওয়ার সময় প্রয়োজনীয় তথ্য লগ করতে tf.summary ব্যবহার করুন।

উপরের মতো একই ডেটাসেট ব্যবহার করুন, তবে ব্যাচিংয়ের সক্ষমতাtf.data.Dataset জন্য এটিtf.data.Dataset রূপান্তর করুন:

train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
test_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test))

train_dataset = train_dataset.shuffle(60000).batch(64)
test_dataset = test_dataset.batch(64)

প্রশিক্ষণ কোডটি উন্নত কুইকস্টার্ট টিউটোরিয়াল অনুসরণ করে তবে টেনসরবোর্ডে কীভাবে মেট্রিকগুলিতে লগ করা যায় তা দেখায়। ক্ষতি এবং অপ্টিমাইজার চয়ন করুন:

loss_object = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()

রাষ্ট্রীয় মেট্রিকগুলি তৈরি করুন যা প্রশিক্ষণের সময় মান সংগ্রহ করতে ব্যবহৃত হতে পারে এবং যে কোনও সময়ে লগইন করা যেতে পারে:

# Define our metrics
train_loss = tf.keras.metrics.Mean('train_loss', dtype=tf.float32)
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('train_accuracy')
test_loss = tf.keras.metrics.Mean('test_loss', dtype=tf.float32)
test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('test_accuracy')

প্রশিক্ষণ এবং পরীক্ষার কার্যগুলি সংজ্ঞায়িত করুন:

def train_step(model, optimizer, x_train, y_train):
  with tf.GradientTape() as tape:
    predictions = model(x_train, training=True)
    loss = loss_object(y_train, predictions)
  grads = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(grads, model.trainable_variables))

  train_loss(loss)
  train_accuracy(y_train, predictions)

def test_step(model, x_test, y_test):
  predictions = model(x_test)
  loss = loss_object(y_test, predictions)

  test_loss(loss)
  test_accuracy(y_test, predictions)

ভিন্ন লগ ডিরেক্টরিতে ডিস্কে সংক্ষিপ্তসারগুলি লিখতে সংক্ষিপ্ত লেখকগুলি সেট আপ করুন:

current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
train_log_dir = 'logs/gradient_tape/' + current_time + '/train'
test_log_dir = 'logs/gradient_tape/' + current_time + '/test'
train_summary_writer = tf.summary.create_file_writer(train_log_dir)
test_summary_writer = tf.summary.create_file_writer(test_log_dir)

প্রশিক্ষণ শুরু করুন। সংক্ষিপ্ত লেখকদের ডিস্কে সংক্ষিপ্তসার লেখার জন্য প্রশিক্ষণ / পরীক্ষার সময় মেট্রিকগুলি (ক্ষতি এবং নির্ভুলতা) লগ করতে tf.summary.scalar() ব্যবহার করুন। কোন মেট্রিকগুলিতে লগ করতে হবে এবং কতবার এটি করা উচিত তা আপনার নিয়ন্ত্রণে রয়েছে। অন্যান্য tf.summary ফাংশন অন্যান্য ধরণের ডেটা লগ করতে সক্ষম করে।

model = create_model() # reset our model

EPOCHS = 5

for epoch in range(EPOCHS):
  for (x_train, y_train) in train_dataset:
    train_step(model, optimizer, x_train, y_train)
  with train_summary_writer.as_default():
    tf.summary.scalar('loss', train_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', train_accuracy.result(), step=epoch)

  for (x_test, y_test) in test_dataset:
    test_step(model, x_test, y_test)
  with test_summary_writer.as_default():
    tf.summary.scalar('loss', test_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', test_accuracy.result(), step=epoch)

  template = 'Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, Test Accuracy: {}'
  print (template.format(epoch+1,
                         train_loss.result(), 
                         train_accuracy.result()*100,
                         test_loss.result(), 
                         test_accuracy.result()*100))

  # Reset metrics every epoch
  train_loss.reset_states()
  test_loss.reset_states()
  train_accuracy.reset_states()
  test_accuracy.reset_states()
Epoch 1, Loss: 0.24321186542510986, Accuracy: 92.84333801269531, Test Loss: 0.13006582856178284, Test Accuracy: 95.9000015258789
Epoch 2, Loss: 0.10446818172931671, Accuracy: 96.84833526611328, Test Loss: 0.08867532759904861, Test Accuracy: 97.1199951171875
Epoch 3, Loss: 0.07096975296735764, Accuracy: 97.80166625976562, Test Loss: 0.07875105738639832, Test Accuracy: 97.48999786376953
Epoch 4, Loss: 0.05380449816584587, Accuracy: 98.34166717529297, Test Loss: 0.07712937891483307, Test Accuracy: 97.56999969482422
Epoch 5, Loss: 0.041443776339292526, Accuracy: 98.71833038330078, Test Loss: 0.07514958828687668, Test Accuracy: 97.5

আবার টেনসরবোর্ড খুলুন, এবার এটি নতুন লগ ডিরেক্টরিতে দেখানো। প্রশিক্ষণের অগ্রগতি হওয়ার সময় নজরদারি করার জন্য আমরা টেনসরবোর্ডও শুরু করতে পারতাম।

%tensorboard --logdir logs/gradient_tape

এটাই! আপনি এখন দেখেছেন কীভাবে কেরাস কলব্যাকের মাধ্যমে এবং আরও কাস্টম tf.summary জন্য tf.summary মাধ্যমে tf.summary ব্যবহার করতে হয়।

টেনসরবোর্ড.দেব: আপনার এমএল পরীক্ষার ফলাফল হোস্ট করুন এবং ভাগ করুন

টেনসরবোর্ড.দেব একটি নিখরচায় পাবলিক সার্ভিস যা আপনাকে আপনার টেনসরবোর্ড লগগুলি আপলোড করতে এবং এমন একটি পারমিলিক পেতে সক্ষম করে যা একাডেমিক কাগজপত্র, ব্লগ পোস্ট, সামাজিক মিডিয়া ইত্যাদিতে সবার সাথে ভাগ করে নেওয়া যায় better এটি আরও ভাল পুনরুত্পাদনযোগ্যতা এবং সহযোগিতা সক্ষম করতে পারে।

টেনসরবোর্ড.দেব ব্যবহার করতে নিম্নলিখিত কমান্ডটি চালান:

!tensorboard dev upload \
  --logdir logs/fit \
  --name "(optional) My latest experiment" \
  --description "(optional) Simple comparison of several hyperparameters" \
  --one_shot

নোট করুন যে এই প্রার্থনাটি কোলাব যাদুটি আহ্বান করতে শতকরা উপসর্গ ( % ) এর চেয়ে শেলটি আহ্বান করার জন্য বিস্ময়কর উপসর্গ ( ! ) ব্যবহার করে। কমান্ড লাইন থেকে এই কমান্ডটি চাওয়ার সময় উভয়ই উপসর্গের প্রয়োজন নেই।

এখানে একটি উদাহরণ দেখুন।

টেনসরবোর্ড.দেব কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য, https://tensorboard.dev/#get- স্টার্ট দেখুন