Multiple Inputs এবং Outputs এর জন্য মডেল তৈরি করা

Machine Learning - কেরাস (Keras) - Functional API দিয়ে Complex মডেল তৈরি
251

Multiple Inputs এবং Multiple Outputs মডেল তৈরি করা এমন একটি কৌশল, যেখানে আপনার মডেল একাধিক ইনপুট থেকে তথ্য গ্রহণ করে এবং একাধিক আউটপুট প্রদান করে। এটি বিশেষভাবে ব্যবহৃত হয় যখন আপনি বিভিন্ন ধরনের ডেটা বা একাধিক টাস্ক নিয়ে কাজ করছেন। Keras এ, Functional API ব্যবহার করে এমন মডেল তৈরি করা সম্ভব যা একাধিক ইনপুট এবং আউটপুট পরিচালনা করতে পারে।

Keras এ Multiple Inputs এবং Outputs এর জন্য মডেল তৈরি

ধরা যাক, আমাদের একটি মডেল প্রয়োজন, যা দুটি আলাদা ইনপুট (যেমন: ছবি এবং টেক্সট) গ্রহণ করবে এবং দুটি আলাদা আউটপুট (যেমন: ইমেজ ক্লাসিফিকেশন এবং টেক্সট রিগ্রেশন) প্রদান করবে। এখানে আমরা Functional API ব্যবহার করব, কারণ এটি অনেক বেশি নমনীয় এবং একাধিক ইনপুট এবং আউটপুট সমর্থন করে।


উদাহরণ: Multiple Inputs এবং Outputs এর জন্য কাস্টম মডেল

এখানে আমরা দুটি ইনপুটের জন্য একটি মডেল তৈরি করব:

  1. ইমেজ ইনপুট - CNN ব্যবহার করে।
  2. টেক্সট ইনপুট - LSTM ব্যবহার করে।

এবং দুইটি আউটপুট:

  1. ইমেজ ক্লাসিফিকেশন আউটপুট - 10 ক্লাসে শ্রেণীবিভাগ।
  2. টেক্সট রিগ্রেশন আউটপুট - একটি রিগ্রেশন ভ্যালু।
from tensorflow.keras.layers import Input, Dense, LSTM, Embedding, Conv2D, MaxPooling2D, Flatten, GlobalAveragePooling2D
from tensorflow.keras.models import Model

# Image Input (CNN)
image_input = Input(shape=(224, 224, 3), name="image_input")
x = Conv2D(32, (3, 3), activation='relu')(image_input)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(64, (3, 3), activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Flatten()(x)
image_output = Dense(10, activation='softmax', name="image_output")(x)  # 10 class classification

# Text Input (LSTM)
text_input = Input(shape=(100,), name="text_input")  # Assuming a maximum length of 100 words
y = Embedding(input_dim=10000, output_dim=128, input_length=100)(text_input)  # Embedding layer
y = LSTM(128)(y)
text_output = Dense(1, activation='linear', name="text_output")(y)  # Regression output

# Multiple Inputs and Outputs Model
model = Model(inputs=[image_input, text_input], outputs=[image_output, text_output])

# Compile the model
model.compile(optimizer='adam', loss=['categorical_crossentropy', 'mean_squared_error'], metrics=['accuracy'])

# Model summary
model.summary()

ব্যাখ্যা:

  1. Image Input (CNN):
    • এখানে, image_input ইনপুট একটি ইমেজের ফিচার বের করতে Conv2D এবং MaxPooling2D লেয়ার ব্যবহার করে CNN মডেল তৈরি করা হয়েছে।
    • Flatten লেয়ারটি ইনপুটের আউটপুটকে একরেখী (vectorized) আকারে পরিণত করে, যাতে এটি পূর্ণসংখ্যায় পরিণত হতে পারে এবং ক্লাসিফিকেশন লেয়ার (Dense) এর জন্য প্রস্তুত হয়।
    • ইমেজ ইনপুটের আউটপুটটি ১০টি ক্লাসের মধ্যে শ্রেণীবদ্ধ করবে, তাই Softmax অ্যাক্টিভেশন ফাংশন ব্যবহার করা হয়েছে।
  2. Text Input (LSTM):
    • text_input একটি টেক্সট ইনপুট। এখানে, আমরা Embedding লেয়ারটি ব্যবহার করছি যা ইনপুট টেক্সটকে ভেক্টরে রূপান্তর করে এবং একটি LSTM (Long Short-Term Memory) লেয়ার দিয়ে টেক্সটের ফিচার বের করা হচ্ছে।
    • আউটপুটটি একটি রিগ্রেশন ভ্যালু প্রদান করবে, যার জন্য Linear অ্যাক্টিভেশন ফাংশন ব্যবহার করা হয়েছে।
  3. Multiple Outputs:
    • এই মডেলে দুটি আউটপুট রয়েছে:
      1. image_output: এটি একটি ক্লাসিফিকেশন আউটপুট (যেমন: ১০টি ক্লাস)।
      2. text_output: এটি একটি রিগ্রেশন আউটপুট (যেমন: একটি স্কোর বা পরিমাণ)।
  4. Loss Function:
    • categorical_crossentropy ব্যবহার করা হয়েছে ইমেজ ক্লাসিফিকেশনের জন্য, কারণ এটি মাল্টি-ক্লাস শ্রেণীবিভাগের জন্য উপযুক্ত।
    • mean_squared_error ব্যবহার করা হয়েছে টেক্সট রিগ্রেশন আউটপুটের জন্য, কারণ এটি রিগ্রেশন সমস্যায় সাধারণত ব্যবহৃত হয়।

২. Multiple Inputs এবং Outputs এর ব্যবহারিক ক্ষেত্রে উদাহরণ

  • মাল্টি-মোডাল ডেটা: যেখানে একাধিক ইনপুট যেমন ইমেজ, টেক্সট, সাউন্ড ইত্যাদি ব্যবহার করা হয়। উদাহরণস্বরূপ, ইমেজ ক্যাপশনিং মডেলগুলি, যেখানে একটি ইমেজ ইনপুট হিসেবে গ্রহণ করা হয় এবং তার থেকে সংশ্লিষ্ট একটি টেক্সট আউটপুট (ক্যাপশন) প্রদান করা হয়।
  • বহু টাস্ক লার্নিং: যেখানে একটি মডেল একাধিক টাস্ক শিখতে পারে, যেমন একই মডেলটি একদিকে ছবি শ্রেণীবিভাগ (ইমেজ ক্লাসিফিকেশন) এবং অন্যদিকে কিছু সংখ্যার পূর্বাভাস (রিগ্রেশন) করতে সক্ষম।

সারাংশ

Keras এ Multiple Inputs এবং Multiple Outputs মডেল তৈরি করা একটি খুবই শক্তিশালী কৌশল, বিশেষ করে যখন আপনার কাছে একাধিক ডেটা সোর্স থাকে এবং আপনি একটি মডেল থেকে একাধিক আউটপুট চান। Functional API ব্যবহার করে আপনি সহজেই এই ধরনের মডেল তৈরি করতে পারেন, যেখানে প্রতিটি ইনপুট এবং আউটপুট আলাদাভাবে কাস্টমাইজ এবং একত্রিত করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...