কম্পিউটার টিউটোরিয়াল

পাইথনে টেনসরফ্লো দিয়ে ট্রেনিং রেজাল্ট ভিজ্যুয়ালাইজ করা


ট্রেনিং রেজাল্ট টেনসরফ্লো দিয়ে পাইথনে ভিজ্যুয়ালাইজ করা যায় 'matplotlib' লাইব্রেরি ব্যবহার করে। 'plot' মেথড ব্যবহার করে ডেটা কনসোলে প্লট করা হয়।

আরও পড়ুন: টেনসরফ্লো কী এবং কেরাস কীভাবে টেনসরফ্লোর সাথে কাজ করে নিউরাল নেটওয়ার্ক তৈরির জন্য?

আমরা কেরাস সিকুয়েনশিয়াল API ব্যবহার করব, যা একটি সিকুয়েনশিয়াল মডেল বানাতে সাহায্য করে যেখানে প্রতিটি লেয়ারের ঠিক একটি ইনপুট টেনসর এবং একটি আউটপুট টেনসর থাকে।

কমপক্ষে একটি লেয়ার থাকা নিউরাল নেটওয়ার্ককে কনভোল্যুশনাল লেয়ার বলা হয়। আমরা কনভোল্যুশনাল নিউরাল নেটওয়ার্ক ব্যবহার করে লার্নিং মডেল বানাতে পারি।

একটি ইমেজ ক্লাসিফায়ার keras.Sequential মডেল দিয়ে তৈরি করা হয়, এবং ডেটা preprocessing.image_dataset_from_directory দিয়ে লোড করা হয়। ডেটা ডিস্ক থেকে দক্ষতার সাথে লোড হয়। ওভারফিটিং চিহ্নিত করা হয় এবং সেটি কমানোর টেকনিকগুলো প্রয়োগ করা হয়। এই টেকনিকগুলো হলো ডেটা অগমেন্টেশন (data augmentation) এবং ড্রপআউট (dropout)। ৩৭০০ টি ফুলের ইমেজ রয়েছে। এই ডেটাসেটে ৫টি সাব-ডাইরেক্টরি রয়েছে, প্রতিটি ক্লাসের জন্য একটি করে। সেগুলো হলো: ডেইজি (daisy), ডান্ডেলিয়ন (dandelion), রোজ (roses), সানফ্লাওয়ার (sunflowers), এবং টিউলিপ (tulips)।

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

উদাহরণ

print("Calculating the accuracy")
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
print("Calculating the loss")
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs_range = range(epochs)
print("The results are being visualized")
plt.figure(figsize=(8, 8))
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training Accuracy')
plt.plot(epochs_range, val_acc, label='Validation Accuracy')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')
plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='Training Loss')
plt.plot(epochs_range, val_loss, label='Validation Loss')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')
plt.show()

কোড ক্রেডিট: https://www.tensorflow.org/tutorials/images/classification

আউটপুট

Calculating the accuracy
Calculating the loss
The results are being visualized

পাইথনে টেনসরফ্লো দিয়ে ট্রেনিং রেজাল্ট ভিজ্যুয়ালাইজ করা

ব্যাখ্যা

  • উপরোক্ত প্লটগুলো ইঙ্গিত দেয় যে ট্রেনিং একুরেসি ও ভ্যালিডেশন একুরেসি সিঙ্কে (in sync) নয়।

  • মডেলটি ভ্যালিডেশন ডেটাসেটে প্রায় ৬০% একুরেসি অর্জন করেছে।

  • এটিকে ওভারফিটিং (overfitting) বলা হয়।

  • ট্রেনিং একুরেসি সময়ের সাথে লিনিয়ার বাড়েছে, কিন্তু ভ্যালিডেশন একুরেসি ট্রেনিং প্রক্রিয়ায় প্রায় ৬০%-এ আটকে যাচ্ছে।

  • ট্রেনিং উদাহরণ কম হলে মডেল নয়েজ বা অনবাঙ্ক্ষিত ডিটেইল থেকে শিখে।

  • এটি নতুন উদাহরণগুলোর ওপর মডেলের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলে।

  • ওভারফিটিংয়ের কারণে মডেল নতুন ডেটাসেটে ভালো জেনেরালাইজ করতে পারবে না।

  • ওভারফিটিং এড়ানোর অনেক উপায় রয়েছে। আমরা ডেটা অগমেন্টেশন ব্যবহার করব ওভারফিটিং উল্টিয়ে দেয়ার জন্য।

  1. টেনসরফ্লো (TensorFlow) কীভাবে পাইথনে CNN মডেল ইভ্যালুয়েট (evaluate) করতে ব্যবহৃত হয়?

  2. টেনসরফ্লোতে ফ্লাওয়ার ডেটাসেট ভিজ্যুয়ালাইজ করা

  3. TensorFlow ব্যবহার করে Fashion MNIST ডেটা প্রিপ্রসেস করা

  4. পাইথনে টেনসরফ্লো ব্যবহার করে দুটি ম্যাট্রিক্স গুণ করার পদ্ধতি