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

Functional API দিয়ে Complex মডেল তৈরি - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

306

Keras এ multiple inputs এবং multiple outputs মডেল তৈরি করা সম্ভব এবং এটি বেশ কার্যকরী হতে পারে, যখন আপনার ডেটা একাধিক উৎস থেকে আসে বা আপনার মডেল একাধিক প্রেডিকশন আউটপুট করবে। এটি সাধারণত মাল্টি-টাস্ক লার্নিং বা মাল্টি-ইনপুট, মাল্টি-আউটপুট মডেল তৈরির জন্য ব্যবহৃত হয়।

নিচে একটি উদাহরণ দেওয়া হলো, যেখানে একটি Keras মডেল তৈরি করা হচ্ছে multiple inputs এবং multiple outputs এর জন্য:

Multiple Inputs এবং Outputs এর মডেল উদাহরণ

ধরা যাক, আমাদের দুটি ভিন্ন ধরনের ইনপুট রয়েছে:

  1. একটি সংখ্যার ইনপুট, যা স্কেলার (single value) হবে।
  2. একটি চিত্র ইনপুট।

এবং আমাদের দুইটি আউটপুট থাকতে হবে:

  1. একটি রিগ্রেশন আউটপুট।
  2. একটি কেটেগোরিকাল ক্লাসিফিকেশন আউটপুট।

এই প্রেক্ষিতে, কিভাবে আমরা এই ধরনের মডেল তৈরি করতে পারি তা দেখব।

মডেল তৈরি করার জন্য কোড:

from tensorflow.keras import layers, models
from tensorflow.keras.models import Model

# ১. ইনপুট তৈরি
# প্রথম ইনপুট (সংখ্যা)
input_1 = layers.Input(shape=(1,), name='input_1')

# দ্বিতীয় ইনপুট (চিত্র)
input_2 = layers.Input(shape=(64, 64, 3), name='input_2')  # চিত্র ইনপুট (64x64 RGB)

# ২. প্রথম ইনপুটের জন্য নেটওয়ার্ক
x1 = layers.Dense(64, activation='relu')(input_1)
x1 = layers.Dense(32, activation='relu')(x1)

# ৩. দ্বিতীয় ইনপুটের জন্য নেটওয়ার্ক
x2 = layers.Conv2D(32, (3, 3), activation='relu')(input_2)
x2 = layers.MaxPooling2D((2, 2))(x2)
x2 = layers.Flatten()(x2)
x2 = layers.Dense(64, activation='relu')(x2)

# ৪. দুইটি অংশ একত্রিত করা
x = layers.concatenate([x1, x2])

# ৫. আউটপুট অংশ
output_1 = layers.Dense(1, name='output_1')(x)  # রিগ্রেশন আউটপুট
output_2 = layers.Dense(10, activation='softmax', name='output_2')(x)  # ক্লাসিফিকেশন আউটপুট (10 ক্লাস)

# ৬. মডেল তৈরি
model = Model(inputs=[input_1, input_2], outputs=[output_1, output_2])

# ৭. মডেল কম্পাইল
model.compile(optimizer='adam', 
              loss={'output_1': 'mse', 'output_2': 'categorical_crossentropy'},
              metrics={'output_1': 'mae', 'output_2': 'accuracy'})

# মডেল সারাংশ
model.summary()

কোড ব্যাখ্যা:

  1. ইনপুট লেয়ার:
    • input_1: এটি স্কেলার (সংখ্যা) ইনপুট যা shape=(1,) হবে। এটি একটি একক মানের জন্য যেমন বয়স বা মূল্য হতে পারে।
    • input_2: এটি একটি চিত্র ইনপুট যা shape=(64, 64, 3) হবে, যা 64x64 পিক্সেল এবং 3 চ্যানেল (RGB) এর একটি চিত্র ইনপুট নেয়।
  2. প্রথম ইনপুটের জন্য নেটওয়ার্ক:
    • input_1 এর জন্য আমরা dense লেয়ারের মাধ্যমে লুকানো স্তরের তৈরি করি।
  3. দ্বিতীয় ইনপুটের জন্য নেটওয়ার্ক:
    • input_2 এর জন্য আমরা Convolutional এবং MaxPooling লেয়ার ব্যবহার করি এবং শেষে ফ্ল্যাটেন করে dense লেয়ার যোগ করি।
  4. মাল্টি-ইনপুট একত্রিত করা:
    • x তে আমরা দুটি ইনপুটকে concatenate করে একত্রিত করি, যাতে আমরা তাদের সব বৈশিষ্ট্য একত্রিত করে একটি সাধারণ নেটওয়ার্কে পাস করতে পারি।
  5. আউটপুট লেয়ার:
    • প্রথম আউটপুট output_1: এটি একটি regression আউটপুট যা একটি একক মান (যেমন: ভবিষ্যদ্বাণী করা সংখ্যার মান) দেয়।
    • দ্বিতীয় আউটপুট output_2: এটি একটি classification আউটপুট যা softmax অ্যাকটিভেশন ফাংশন ব্যবহার করে 10 ক্লাসের মধ্যে একটি ক্লাস নির্বাচন করে।
  6. মডেল কম্পাইল:
    • মডেলটি কম্পাইল করার সময় আমরা দুটি আলাদা লস ফাংশন ব্যবহার করি:
      • output_1 এর জন্য mean squared error (mse) ব্যবহার করা হচ্ছে, যা রিগ্রেশন সমস্যার জন্য উপযুক্ত।
      • output_2 এর জন্য categorical crossentropy ব্যবহার করা হচ্ছে, যা মাল্টি-ক্লাস শ্রেণীবিভাজন সমস্যার জন্য উপযুক্ত।
  7. মডেল সারাংশ:
    • model.summary() এর মাধ্যমে মডেলটির সারাংশ দেখতে পারি, যেখানে লেয়ারের আকার, প্যারামিটার সংখ্যা ইত্যাদি দেখানো হবে।

প্রশিক্ষণ

মডেলটি প্রশিক্ষণের জন্য:

# ডেটা তৈরি (ধরা যাক X1 এবং X2 ইনপুট, Y1 এবং Y2 আউটপুট)
X1_train = np.random.rand(1000, 1)  # স্কেলার ইনপুট
X2_train = np.random.rand(1000, 64, 64, 3)  # চিত্র ইনপুট
Y1_train = np.random.rand(1000, 1)  # রিগ্রেশন আউটপুট
Y2_train = np.random.randint(0, 10, size=(1000,))  # ক্লাসিফিকেশন আউটপুট (10 ক্লাস)

# মডেল প্রশিক্ষণ
model.fit([X1_train, X2_train], [Y1_train, Y2_train], epochs=10, batch_size=32)

সারাংশ

এখানে, multiple inputs এবং multiple outputs সহ একটি Keras মডেল তৈরি করা হয়েছে যেখানে দুটি ভিন্ন ধরনের ইনপুট (সংখ্যা এবং চিত্র) রয়েছে এবং দুটি আউটপুট (একটি রিগ্রেশন এবং একটি ক্লাসিফিকেশন)। Keras এর Model ক্লাস ব্যবহার করে একাধিক ইনপুট এবং আউটপুট সহ একটি কাস্টম মডেল তৈরি করা যায় এবং প্রশিক্ষণ দেওয়া হয়। এই ধরনের মডেলগুলি মাল্টি-টাস্ক লার্নিং, মাল্টি-ইনপুট এবং মাল্টি-আউটপুট প্রেডিকশন ক্ষেত্রে অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...