উদাহরণসহ Transfer Learning প্রয়োগ

Transfer Learning এবং Pre-trained মডেল - চেইনার (Chainer) - Latest Technologies

284

Transfer Learning প্রয়োগ করার জন্য আমরা একটি Pre-trained মডেল যেমন VGG16, ResNet, বা MobileNet ব্যবহার করতে পারি। এই উদাহরণে আমরা VGG16 মডেলকে বেস হিসেবে ব্যবহার করে কাস্টম ইমেজ ক্লাসিফিকেশন মডেল তৈরির প্রক্রিয়া দেখব।

উদাহরণ: VGG16 প্র-trained মডেল ব্যবহার করে কাস্টম ইমেজ ক্লাসিফিকেশন মডেল Training

আমরা নিম্নলিখিত ধাপগুলো অনুসরণ করব:

  1. Pre-trained VGG16 মডেল ইমপোর্ট করা এবং সেটআপ করা।
  2. VGG16 মডেলের কনভোলিউশনাল অংশ ব্যবহার করে নতুন ক্লাসিফিকেশন লেয়ার যোগ করা।
  3. মডেল Training করানো।
  4. (ঐচ্ছিক) মডেলের ফাইন-টিউনিং করা।

ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা

import numpy as np
from tensorflow.keras.applications import VGG16
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import Adam

ধাপ ২: Pre-trained VGG16 মডেল লোড করা

আমরা VGG16 মডেলটি ইমেজনেট ডেটাসেটে Pre-trained হিসেবে লোড করব এবং এর include_top=False দিয়ে শুধুমাত্র কনভোলিউশনাল লেয়ারগুলো নেবো।

# Pre-trained VGG16 মডেল লোড করা
vgg_base = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

ধাপ ৩: Custom মডেল তৈরি করা

এবার Pre-trained VGG16 মডেল থেকে ফিচার এক্সট্র্যাক্ট করে Custom মডেল তৈরি করা হবে। প্রথমে, VGG16-এর কনভোলিউশনাল লেয়ারগুলো ফ্রিজ করে রাখব এবং শেষে নতুন ক্লাসিফিকেশন লেয়ার যোগ করব।

# মডেল তৈরি করা
model = Sequential()
model.add(vgg_base)  # Pre-trained VGG16 মডেলকে বেস হিসেবে ব্যবহার করা
model.add(Flatten())  # ফিচারগুলোকে সমতল করা
model.add(Dense(256, activation='relu'))  # নতুন ডেন্স লেয়ার
model.add(Dense(10, activation='softmax'))  # আউটপুট লেয়ার (১০ ক্যাটেগরিতে ক্লাসিফিকেশন)

# Pre-trained লেয়ারগুলো ফ্রিজ করা
for layer in vgg_base.layers:
    layer.trainable = False

ধাপ ৪: মডেল কম্পাইল করা

# মডেল কম্পাইল করা
model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

ধাপ ৫: ডেটা প্রস্তুত করা

আমরা ImageDataGenerator ব্যবহার করে ডেটা অগমেন্টেশন করব, যা ডেটা বৈচিত্র্য এনে মডেলের পারফরম্যান্স বৃদ্ধি করতে সহায়ক।

# ডেটা প্রসেসিং
train_datagen = ImageDataGenerator(rescale=1.0/255.0, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True)
train_generator = train_datagen.flow_from_directory('path_to_train_data', target_size=(224, 224), batch_size=32, class_mode='categorical')

ধাপ ৬: মডেল Training করা

# মডেল Training করা
model.fit(train_generator, epochs=10)

ধাপ ৭: মডেল ফাইন-টিউনিং (ঐচ্ছিক)

ফাইন-টিউনিংয়ের জন্য আমরা Pre-trained মডেলের কিছু লেয়ার আনফ্রিজ করে নতুন ডেটাসেটের সাথে পুনরায় প্রশিক্ষণ করব। এটি মডেলের পারফরম্যান্স উন্নত করতে সহায়ক।

# কিছু লেয়ার আনফ্রিজ করা
for layer in vgg_base.layers[-4:]:  # শেষের ৪টি লেয়ার আনফ্রিজ
    layer.trainable = True

# কম্পাইল করা (কম লার্নিং রেট ব্যবহার করতে হবে)
model.compile(optimizer=Adam(learning_rate=0.0001), loss='categorical_crossentropy', metrics=['accuracy'])

# পুনরায় Training
model.fit(train_generator, epochs=5)

পুরো প্রক্রিয়া:

  1. Pre-trained মডেল লোড করা: VGG16 বা অন্য কোনো Pre-trained মডেলকে বেস হিসেবে ব্যবহার করা।
  2. Custom লেয়ার যোগ করা: Pre-trained মডেলের আউটপুট ফিচার নিয়ে কিছু ডেন্স লেয়ার যোগ করা।
  3. ফ্রিজ ও আনফ্রিজ করা: প্রথমে Pre-trained মডেলের সব লেয়ার ফ্রিজ করে Training করা। পরে কিছু লেয়ার আনফ্রিজ করে ফাইন-টিউনিং।
  4. ডেটা অগমেন্টেশন ও প্রশিক্ষণ: ImageDataGenerator ব্যবহার করে ডেটা অগমেন্টেশনসহ Training করানো।

এই পদ্ধতিতে Transfer Learning ব্যবহার করে Custom মডেল Training করা যায়, যা কম ডেটাসেটে ভালো ফলাফল দিতে সক্ষম।

Content added By
Promotion

Are you sure to start over?

Loading...