টেনসরফ্লো দিয়ে ফিচার এক্সট্রাক্টর তৈরি করা যায় বাফারড প্রিফেচিং (buffered prefetching) ব্যবহার করে। এটি trainable=False সেট করে করা হয়।
আরও পড়ুন: টেনসরফ্লো কী এবং কেরাস কীভাবে টেনসরফ্লোর সাথে কাজ করে নিউরাল নেটওয়ার্ক তৈরির জন্য?
কমপক্ষে একটি লেয়ার থাকা নিউরাল নেটওয়ার্ককে কনভোল্যুশনাল লেয়ার বলা হয়। আমরা কনভোল্যুশনাল নিউরাল নেটওয়ার্ক ব্যবহার করে লার্নিং মডেল বানাতে পারি।
ইমেজ ক্লাসিফিকেশনের জন্য ট্রান্সফার লার্নিং-এর ভিত্তি হলো, যদি একটি মডেল বড় ও সাধারণ ডেটাসেটে ট্রেন করা হয়, তবে সেই মডেলটি ভিজ্যুয়াল ওয়ার্ল্ডের জন্য একটি জেনেরিক মডেল হিসেবে কার্যকরভাবে কাজ করতে পারে। এতে ফিচার ম্যাপগুলো শিখে নেয়া থাকবে, অর্থাৎ ইউজারকে বড় মডেল বড় ডেটাসেটে ট্রেন করে স্ক্র্যাচ থেকে শুরু করতে হবে না।
টেনসরফ্লো হাব হলো প্রি-ট্রেনড টেনসরফ্লো মডেলের একটি রিপোজিটরি। টেনসরফ্লো দিয়ে লার্নিং মডেল ফাইন-টিউন করা যায়।
আমরা বুঝব কীভাবে tf.keras সহ টেনসরফ্লো হাব থেকে মডেল ব্যবহার করতে হয়, একটি ইমেজ ক্লাসিফিকেশন মডেল ব্যবহার করতে হয়। একবার এটি হলে, ট্রান্সফার লার্নিং ব্যবহার করে কাস্টম ইমেজ ক্লাসের জন্য একটি মডেল ফাইন-টিউন করা যায়। এটি একটি প্রি-ট্রেনড ক্লাসিফায়ার মডেল ব্যবহার করে একটি ইমেজ लेकर সেটি কী তা প্রেডিক্ট করে। এটি কোনো ট্রেনিং ছাড়াই করা যায়।
নিচের কোড চালানোর জন্য আমরা গুগল কোলাবরেটরি ব্যবহার করছি। গুগল কোল্যাব বা কোলাবরেটরি ব্রাউজারের ওপর পাইথন কোড চালাতে সাহায্য করে এবং জিরো কনফিগারেশন ও ফ্রি জিপিইউ (GPU) অ্যাক্সেস দেয়। কোলাবরেটরি জুপিটার নোটবুকের ওপর বিল্ড করা হয়েছে।
উদাহরণ
AUTOTUNE = tf.data.AUTOTUNE
train_ds = train_ds.cache().prefetch(buffer_size=AUTOTUNE)
print("The dimensions of data")
for image_batch, labels_batch in train_ds:
print(image_batch.shape)
print(labels_batch.shape)
break
কোড কרדিট: https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
আউটপুট
The dimensions of data (32, 224, 224, 3) (32,)
ব্যাখ্যা
- TFHub টপ ক্লাসিফিকেশন লেয়ার ছাড়া মডেল বিতরণ করে।
- এগুলো ট্রান্সফার লার্নিং-এর জন্য ব্যবহার করা যায়।
- tfhub.dev থেকে যেকোনো কম্প্যাটিবল ইমেজ ফিচার ভেক্টর মডেল ব্যবহার করা যায়।
- একটি ফিচার এক্সট্রাক্টর তৈরি করা যায় trainable=False দিয়ে।
- এটি ফিচার এক্সট্রাক্টর লেয়ারের ভেরিয়েবলগুলো ফ্রিজ (freeze) করতে সাহায্য করে।
- এটি করা হয় যাতে ট্রেনিং শুধু নতুন ক্লাসিফায়ার লেয়ারকে মডিফাই করে।
- প্রতি ইমেজের জন্য ১২৮০-দৈর্ঘ্যের ভেক্টর রিটার্ন করবে।