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

টেনসরফ্লো ও পাইথনে ডেটা অগমেন্টেশন (augmentation) ব্যবহার করে ওভারফিটিং (overfitting) কমানো


অগমেন্টেশন (augmentation) ব্যবহার করে ওভারফিটিং কমানো যায় অতিরিক্ত ট্রেনিং ডেটা যোগ করে। এটি করা হয় একটি সিকুয়েনশিয়াল মডেল তৈরি করে যাতে 'RandomFlip' লেয়ার থাকে।

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

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

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

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

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

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

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

এটি মডেলকে ডেটার অধিক দিক দেখাতে সাহায্য করে, ফলে মডেল ভালো জেনেরালাইজ করতে পারে। নিচে একটি উদাহরণ দেওয়া হলো:

উদাহরণ

print("Using data augmentation to eliminate overfitting")
data_augmentation = keras.Sequential(
    [
        layers.experimental.preprocessing.RandomFlip("horizontal", input_shape=(img_height,
                                                                                  img_width, 3)),
        layers.experimental.preprocessing.RandomRotation(0.1),
        layers.experimental.preprocessing.RandomZoom(0.1),
    ]
)

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

আউটপুট

Using data augmentation to eliminate overfitting

ব্যাখ্যা

  • ডেটা অগমেন্টেশন tf.keras.layers.experimental.preprocessing-এ থাকা লেয়ারগুলো ব্যবহার করে ইমপ্লিমেন্ট করা যায়।

  • এই লেয়ারগুলো অন্যান্য লেয়ারের মতো মডেলের ভিতরে ইনক্লুড করা হয় এবং জিপিইউ (GPU)-তে চলে।

  • এটি ওভারফিটিং এলিমিনেট বা কমাতে করা হয়।

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

  2. টেনসরফ্লো (TensorFlow) কীভাবে পাইথনে ডেটা ভিজুয়ালাইজ (visualize) করতে ব্যবহৃত হয়?

  3. TensorFlow ব্যবহার করে পাইথনে লিনিয়ার মডেল ট্রেন করা

  4. Python-এ Keras ব্যবহার করে মডেল প্লট কীভাবে করা যায়?