Sequential মডেল তৈরি করা

Keras তে বেসিক Neural Network তৈরি - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

415

Keras তে Sequential মডেল তৈরি করা সহজ এবং এটি নিউরাল নেটওয়ার্কের এমন একটি মডেল যেখানে লেয়ারগুলো একে অপরের পর পর সাজানো থাকে। এটি সবচেয়ে সাধারণ এবং সরল মডেল যা প্রতিটি লেয়ার পূর্ববর্তী লেয়ারের আউটপুটের উপর ভিত্তি করে কাজ করে।

Sequential মডেল তৈরির জন্য আমরা Keras এর Sequential ক্লাস ব্যবহার করি এবং এর মধ্যে বিভিন্ন ধরনের লেয়ার (যেমন Dense, Flatten, Dropout, ইত্যাদি) যুক্ত করি।

এখানে একটি সাধারণ Fully Connected Neural Network তৈরি করার উদাহরণ দেওয়া হলো, যা MNIST ডেটাসেট ব্যবহার করে সংখ্যা চিহ্নিত করবে।

১. প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

প্রথমে, যদি আপনি TensorFlow ইনস্টল না করে থাকেন, তবে এটি ইনস্টল করতে পারেন:

pip install tensorflow

২. ডেটাসেট লোড এবং প্রক্রিয়া করা

এখানে আমরা MNIST ডেটাসেট ব্যবহার করছি, যা Keras এর মধ্যে ডিফল্টভাবে রয়েছে।

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# MNIST ডেটাসেট লোড করা
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# ডেটাকে স্কেল করা (0-255 এর মধ্যে স্কেল করে 0-1 এর মধ্যে নিয়ে আসা)
x_train = x_train / 255.0
x_test = x_test / 255.0

# আউটপুট (y) ভ্যালুগুলোকে ক্যাটাগরিকাল ডেটায় রূপান্তর করা
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

৩. Sequential মডেল তৈরি করা

এখন আমরা Sequential মডেল তৈরি করবো, যেখানে একটি Flatten লেয়ার ইনপুট হিসেবে গ্রহন করবে এবং তারপরে একটি Dense লেয়ার আছেঃ

# Sequential মডেল তৈরি করা
model = Sequential()

# ইনপুট লেয়ার এবং প্রথম হিডেন লেয়ার
model.add(Flatten(input_shape=(28, 28)))  # ইনপুট লেয়ার: 28x28 পিক্সেল (MNIST ইমেজের সাইজ)
model.add(Dense(128, activation='relu'))  # হিডেন লেয়ার: 128 ইউনিট, 'relu' অ্যাক্টিভেশন ফাংশন

# আউটপুট লেয়ার
model.add(Dense(10, activation='softmax'))  # আউটপুট লেয়ার: 10 ইউনিট (0-9 সংখ্যার জন্য), 'softmax' অ্যাক্টিভেশন ফাংশন

# মডেল কম্পাইল করা
model.compile(optimizer='adam', 
              loss='categorical_crossentropy', 
              metrics=['accuracy'])
  • Flatten লেয়ার: ইনপুট ডেটাকে ১ডি (১ ভেক্টর) আকারে রূপান্তর করে যাতে তা নিউরাল নেটওয়ার্কে দেয়া যায়।
  • Dense লেয়ার: এই লেয়ারটি ফিডফরওয়ার্ড লেয়ার, যেখানে প্রতিটি ইউনিট পূর্ববর্তী লেয়ার থেকে ইনপুট নেয় এবং একটি অ্যাক্টিভেশন ফাংশন প্রয়োগ করে আউটপুট দেয়। এখানে আমরা ReLU (Rectified Linear Unit) অ্যাক্টিভেশন ফাংশন ব্যবহার করছি।
  • আউটপুট লেয়ার: Softmax অ্যাক্টিভেশন ফাংশন ব্যবহৃত হচ্ছে, যা একটি ক্যালাসিফিকেশন সমস্যা সমাধান করতে সহায়তা করে, যেমন এখানে MNIST এর মধ্যে 10টি শ্রেণি (0-9)।

৪. মডেল প্রশিক্ষণ

এখন, আমরা আমাদের মডেলটি প্রশিক্ষণ (training) করব:

# মডেল প্রশিক্ষণ করা
model.fit(x_train, y_train, epochs=5, batch_size=32, validation_data=(x_test, y_test))
  • epochs: মডেলটি কতবার পুরো ডেটাসেটের উপর প্রশিক্ষিত হবে (এখানে ৫ বার)।
  • batch_size: প্রতি ব্যাচে কতটি স্যাম্পল প্রক্রিয়া করা হবে (এখানে ৩২টি)।
  • validation_data: টেস্ট ডেটা যেটা প্রশিক্ষণের পর মডেলটির সঠিকতা যাচাই করতে ব্যবহৃত হবে।

৫. মডেল মূল্যায়ন

প্রশিক্ষণের পর, আমরা মডেলটি টেস্ট ডেটা দিয়ে মূল্যায়ন করবো:

# মডেল মূল্যায়ন
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"Test accuracy: {test_acc}")

৬. পূর্বাভাস করা

প্রশিক্ষণ শেষে, আপনি নতুন ডেটার উপর পূর্বাভাস করতে পারেন। উদাহরণস্বরূপ:

# একটি নমুনা ইমেজ দিয়ে পূর্বাভাস করা
import numpy as np
import matplotlib.pyplot as plt

# একটি নমুনা চিত্র
plt.imshow(x_test[0], cmap='gray')
plt.show()

# পূর্বাভাস করা
prediction = model.predict(np.expand_dims(x_test[0], axis=0))
predicted_class = np.argmax(prediction)
print(f"Predicted class: {predicted_class}")

এখানে:

  • np.expand_dims: আমরা ইনপুট ইমেজের আকারে পরিবর্তন করছি যাতে এটি মডেল গ্রহণ করতে পারে।
  • np.argmax: আউটপুট থেকে সর্বোচ্চ সম্ভাব্য শ্রেণি চিহ্নিত করছি।

সারাংশ

এই টিউটোরিয়ালে, আমরা Keras ব্যবহার করে একটি বেসিক Sequential মডেল তৈরি করেছি যা MNIST ডেটাসেট থেকে ডিজিট চিহ্নিত করতে সক্ষম। এই মডেলটি তৈরি করার জন্য:

  1. আমরা Flatten লেয়ার ব্যবহার করেছি ইনপুট ডেটাকে ১ডি ভেক্টরে রূপান্তর করতে।
  2. Dense লেয়ার ব্যবহার করেছি নিউরাল নেটওয়ার্কের বিভিন্ন স্তরে সংযোগ তৈরি করতে।
  3. Softmax অ্যাক্টিভেশন ফাংশন ব্যবহার করেছি শ্রেণি-ক্লাসিফিকেশনের জন্য।

এটি ছিল Keras তে Sequential মডেল তৈরি করার প্রক্রিয়া।

Content added By
Promotion

Are you sure to start over?

Loading...