Pre-trained মডেল ব্যবহার করে Custom মডেল Training

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

401

Pre-trained মডেল ব্যবহার করে Custom মডেল Training করার পদ্ধতিকে Transfer Learning বলা হয়, যেখানে আমরা একটি Pre-trained মডেল (যেমন VGG, ResNet, BERT) ব্যবহার করে নতুন ডেটাসেটে প্রশিক্ষণ দেই। এটি মূলত দুই ধাপে কাজ করে: Pre-trained মডেল থেকে ফিচার এক্সট্র্যাকশন এবং ফাইন-টিউনিং।

নিচে উদাহরণসহ Custom মডেল Training-এর জন্য ধাপে ধাপে গাইড দেওয়া হলো।

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

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 মডেলকে Pre-trained মডেল হিসেবে ব্যবহার করব, যেটি ইমেজনেট ডেটাসেটে প্রশিক্ষিত। আমরা শুধু এর কনভোলিউশনাল লেয়ারগুলো নেব এবং শেষের ক্লাসিফিকেশন লেয়ার বাদ দেব।

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

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

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

# মডেল তৈরি করা
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. ডেটা অগমেন্টেশন ও প্রশিক্ষণ: ডেটা অগমেন্টেশনসহ Training করানো, যা মডেলের জেনারালাইজেশনের জন্য সহায়ক।

এই পদ্ধতিতে, Pre-trained মডেল ব্যবহার করে Custom মডেল তৈরি ও Training করতে পারবেন, যা কম ডেটাসেটে ভালো পারফরম্যান্স দিতে সক্ষম।

Content added By
Promotion

Are you sure to start over?

Loading...