Sequential Data মডেল Train এবং Evaluate করা

Recurrent Neural Networks (RNN) - কেরাস (Keras) - Machine Learning

401

Sequential Data বা Time Series Data মডেল প্রশিক্ষণ এবং মূল্যায়ন করার জন্য Keras একটি শক্তিশালী এবং সহজে ব্যবহারযোগ্য প্ল্যাটফর্ম সরবরাহ করে। Sequential Data মডেলগুলির মধ্যে সাধারণত Recurrent Neural Networks (RNNs), LSTMs (Long Short-Term Memory), GRUs (Gated Recurrent Units) বা 1D Convolutional Networks (CNNs) ব্যবহৃত হয়।

এখানে, আমরা Keras/TensorFlow ব্যবহার করে Sequential Data মডেল তৈরি, প্রশিক্ষণ এবং মূল্যায়ন করার প্রক্রিয়া দেখাবো।


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

যেহেতু আমরা Keras/TensorFlow ব্যবহার করব, প্রথমে আপনি নিম্নলিখিত কমান্ড দিয়ে TensorFlow ইনস্টল করতে পারেন:

pip install tensorflow

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

আমরা একটি সাধারণ LSTM মডেল তৈরি করব যা সময়সীমার ডেটা (sequential data) প্রশিক্ষণ করতে সক্ষম।

২.১ ডেটা প্রস্তুতি:

এখানে আমরা একটি সহজ ডেটাসেট তৈরি করব, যা একটি সিমুলেটেড টাইম সিরিজ ডেটা। আসল ডেটার ক্ষেত্রে, আপনি ডেটাসেট পছন্দমতো লোড করতে পারেন, যেমন CSV বা অন্য কোনো ফাইল থেকে।

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator

# সিমুলেটেড টাইম সিরিজ ডেটা তৈরি করা
data = np.sin(np.linspace(0, 100, 1000))  # 1000 পয়েন্টের সাইন ওয়েভ
target = np.roll(data, shift=-1)  # পরবর্তী ভ্যালু টার্গেট হিসেবে ব্যবহার করা

# ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, shuffle=False)

# TimeseriesGenerator ব্যবহার করে ডেটা প্রস্তুতি
sequence_length = 50  # 50 টা পয়েন্টের এক সিকোয়েন্স হবে
train_generator = TimeseriesGenerator(X_train, y_train, length=sequence_length, batch_size=32)
test_generator = TimeseriesGenerator(X_test, y_test, length=sequence_length, batch_size=32)

২.২ LSTM মডেল তৈরি করা:

এখন, আমরা একটি LSTM মডেল তৈরি করব, যা Sequential Data প্রশিক্ষণ করতে পারে।

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout

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

# LSTM লেয়ার
model.add(LSTM(50, activation='relu', input_shape=(sequence_length, 1)))

# Dropout লেয়ার
model.add(Dropout(0.2))

# আউটপুট লেয়ার
model.add(Dense(1))

# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='mean_squared_error')

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

এখানে:

  • LSTM(50): 50 ইউনিটের একটি LSTM লেয়ার।
  • Dropout(0.2): 0.2 ড্রপআউট রেট সহ একটি ড্রপআউট লেয়ার, যা মডেল ওভারফিটিং এড়াতে সাহায্য করবে।
  • Dense(1): আউটপুট লেয়ার, যা একটি একক নিউরাল নেটওয়ার্ক আউটপুটের জন্য ব্যবহৃত হবে।

২.৩ মডেল প্রশিক্ষণ (Train):

এখন, আমরা মডেলটি ট্রেন করব:

# মডেল প্রশিক্ষণ
history = model.fit(train_generator, epochs=10, validation_data=test_generator)

এখানে, train_generator এবং test_generator হল ডেটাসেট যা আমরা আগে প্রস্তুত করেছি। epochs=10 এর মানে হল যে মডেলটি 10 বার ডেটা প্রসেস করবে।

২.৪ মডেল মূল্যায়ন (Evaluate):

মডেল ট্রেনিং শেষ হওয়ার পর, মডেলটির কার্যকারিতা মূল্যায়ন করা প্রয়োজন। এটি আপনি model.evaluate() ব্যবহার করে করতে পারেন।

# মডেল মূল্যায়ন
test_loss = model.evaluate(test_generator)
print(f'Test Loss: {test_loss}')

এটি মডেলটির টেস্ট সেটের উপর ভিত্তি করে loss প্রিন্ট করবে।


৩. মডেল এর পূর্বাভাস (Prediction):

প্রশিক্ষিত মডেলটি দিয়ে পূর্বাভাস করা খুবই সহজ। আপনি model.predict() ব্যবহার করে এটি করতে পারেন:

# নতুন ডেটা দিয়ে পূর্বাভাস তৈরি করা
predictions = model.predict(test_generator)

# পূর্বাভাসের কিছু ভ্যালু দেখানো
print(predictions[:5])

এটি মডেল দ্বারা ভবিষ্যৎ মানের পূর্বাভাস প্রদান করবে।


৪. মডেল মূল্যায়ন এবং বিশ্লেষণ:

প্রশিক্ষণ এবং মূল্যায়ন শেষে, মডেলটির loss এবং accuracy এর ওপর ভিত্তি করে বিশ্লেষণ করা প্রয়োজন। আপনি প্রশিক্ষণের ইতিহাস দেখতে পারেন এবং মডেলটির উন্নতি মূল্যায়ন করতে পারেন:

import matplotlib.pyplot as plt

# প্রশিক্ষণ এবং ভ্যালিডেশন লস প্লট করা
plt.plot(history.history['loss'], label='train')
plt.plot(history.history['val_loss'], label='test')
plt.title('Model Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()

এটি প্রশিক্ষণ এবং টেস্ট সেটের loss এর পরিবর্তন দেখাবে যা মডেলটির কার্যকারিতা মূল্যায়নে সাহায্য করবে।


সারাংশ

  1. ডেটা প্রস্তুতি: Sequential Data বা Time Series Data প্রস্তুত করতে TimeseriesGenerator ব্যবহার করা হয়।
  2. মডেল তৈরি: LSTM বা অন্যান্য RNN আর্কিটেকচার ব্যবহার করে Sequential Data মডেল তৈরি করা হয়।
  3. মডেল প্রশিক্ষণ: fit() ফাংশন ব্যবহার করে মডেল ট্রেনিং করা হয় এবং evaluate() ফাংশন ব্যবহার করে মডেল মূল্যায়ন করা হয়।
  4. পূর্বাভাস: predict() ফাংশন ব্যবহার করে মডেল থেকে পূর্বাভাস তৈরি করা হয় এবং পরবর্তীতে বিশ্লেষণ করা হয়।

এটি Keras ব্যবহার করে Sequential Data মডেল ট্রেন এবং মূল্যায়ন করার একটি মৌলিক গাইডলাইন।

Content added By
Promotion

Are you sure to start over?

Loading...