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

টেনসরবোর্ডে এম্বেডিং প্রজেক্টর ব্যবহার করে ডেটা ভিজ্যুয়ালাইজ করা

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

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

টেনসরবোর্ড এম্বেডিং প্রজেক্টর ব্যবহার করে, আপনি গ্রাফিকালি উচ্চ মাত্রিক এম্বেডিংগুলি উপস্থাপন করতে পারেন। এটি আপনার এম্বেডিং স্তরগুলি চাক্ষুষ করা, পরীক্ষা করতে এবং বোঝার ক্ষেত্রে সহায়ক হতে পারে।

এম্বেডিং প্রজেক্টরের স্ক্রিনশট

এই টিউটোরিয়ালে, আপনি শিখবেন কীভাবে এই ধরণের প্রশিক্ষিত স্তরটিকে ভিজ্যুয়ালাইজ করা যায়।

সেটআপ

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

 try:
  # %tensorflow_version only exists in Colab.
  %tensorflow_version 2.x
except Exception:
  pass

%load_ext tensorboard
 
 import os
import tensorflow as tf
import tensorflow_datasets as tfds
from tensorboard.plugins import projector

 

আইএমডিবি ডেটা

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

কনভেনশন হিসাবে, "0" নির্দিষ্ট শব্দের পক্ষে দাঁড়ায় না, তবে পরিবর্তে কোনও অজানা শব্দ এনকোড করার জন্য ব্যবহৃত হয়। টিউটোরিয়ালের পরে, আমরা এই সারিটি ভিজ্যুয়ালাইজেশন থেকে মুছে ফেলব।

 (train_data, test_data), info = tfds.load(
    "imdb_reviews/subwords8k",
    split=(tfds.Split.TRAIN, tfds.Split.TEST),
    with_info=True,
    as_supervised=True,
)
encoder = info.features["text"].encoder

# shuffle and pad the data.
train_batches = train_data.shuffle(1000).padded_batch(
    10, padded_shapes=((None,), ())
)
test_batches = test_data.shuffle(1000).padded_batch(
    10, padded_shapes=((None,), ())
)
train_batch, train_labels = next(iter(train_batches))

 

কেরাস এম্বেডিং স্তর

কেরাস এম্বেডিং স্তরটি আপনার ভলক্যাবুলারিতে প্রতিটি শব্দের এম্বেডিং প্রশিক্ষণের জন্য ব্যবহার করা যেতে পারে। প্রতিটি শব্দ (বা এই ক্ষেত্রে উপ-শব্দ) একটি 16-মাত্রিক ভেক্টর (বা এম্বেডিং) এর সাথে যুক্ত হবে যা মডেল দ্বারা প্রশিক্ষিত হবে।

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

 # Create an embedding layer
embedding_dim = 16
embedding = tf.keras.layers.Embedding(encoder.vocab_size, embedding_dim)
# Train this embedding as part of a keras model
model = tf.keras.Sequential(
    [
        embedding, # The embedding layer should be the first layer in a model.
        tf.keras.layers.GlobalAveragePooling1D(),
        tf.keras.layers.Dense(16, activation="relu"),
        tf.keras.layers.Dense(1),
    ]
)

# Compile model
model.compile(
    optimizer="adam",
    loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
    metrics=["accuracy"],
)

# Train model
history = model.fit(
    train_batches, epochs=1, validation_data=test_batches, validation_steps=20
)
 
2500/2500 [==============================] - 13s 5ms/step - loss: 0.5330 - accuracy: 0.6769 - val_loss: 0.4043 - val_accuracy: 0.7800

টেনসরবোর্ডের জন্য ডেটা সংরক্ষণ করা হচ্ছে

টেনসরবোর্ড নির্দিষ্ট log_dir ডিরেক্টরিতে লগগুলি থেকে আপনার টেনসরফ্লো প্রকল্পগুলি থেকে টেনসর এবং মেটাডেটা পড়ে। এই টিউটোরিয়ালটির জন্য, আমরা /logs/imdb-example/

এই ডেটাটি ভিজ্যুয়ালাইজ করার জন্য, কোন স্তরটি ভিজ্যুয়ালাইজ করতে হবে তা বোঝার জন্য আমরা সেই ডিরেক্টরিতে একটি চেকপয়েন্ট সংরক্ষণ করব met

 # Set up a logs directory, so Tensorboard knows where to look for files
log_dir='/logs/imdb-example/'
if not os.path.exists(log_dir):
    os.makedirs(log_dir)

# Save Labels separately on a line-by-line manner.
with open(os.path.join(log_dir, 'metadata.tsv'), "w") as f:
  for subwords in encoder.subwords:
    f.write("{}\n".format(subwords))
  # Fill in the rest of the labels with "unknown"
  for unknown in range(1, encoder.vocab_size - len(encoder.subwords)):
    f.write("unknown #{}\n".format(unknown))


# Save the weights we want to analyse as a variable. Note that the first
# value represents any unknown word, which is not in the metadata, so
# we will remove that value.
weights = tf.Variable(model.layers[0].get_weights()[0][1:])
# Create a checkpoint from embedding, the filename and key are
# name of the tensor.
checkpoint = tf.train.Checkpoint(embedding=weights)
checkpoint.save(os.path.join(log_dir, "embedding.ckpt"))

# Set up config
config = projector.ProjectorConfig()
embedding = config.embeddings.add()
# The name of the tensor will be suffixed by `/.ATTRIBUTES/VARIABLE_VALUE`
embedding.tensor_name = "embedding/.ATTRIBUTES/VARIABLE_VALUE"
embedding.metadata_path = 'metadata.tsv'
projector.visualize_embeddings(log_dir, config)
 
 %tensorboard --logdir /logs/imdb-example/
 

বিশ্লেষণ

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

হিচকক nightmare মতো শব্দের সাথে ঘনিষ্ঠভাবে জড়িত যা সম্ভবত হরর মুভিতে তাঁর কাজের সাথে সম্পর্কিত। যদিও অ্যান্ডারসন heart শব্দটির খুব কাছাকাছি, তাঁর heart স্টাইলকে প্রতিফলিত করে।