Machine Learning RNN/LSTM দিয়ে Sequence Prediction তৈরি গাইড ও নোট

412

Recurrent Neural Networks (RNNs) এবং Long Short-Term Memory (LSTM) নেটওয়ার্কগুলি সিকোয়েন্স ডেটা (যেমন, সময়সীমার ডেটা, ভাষা ডেটা, বা অন্য ক্রম) মডেল করতে ব্যবহৃত হয়। RNNs একটি সিকোয়েন্সের মধ্যে একেবারে পূর্বের ইনপুটের তথ্য মেমরি হিসেবে রাখে, যা পরবর্তী ইনপুটের জন্য সহায়ক হয়। LSTM একটি উন্নত ধরনের RNN যা দীর্ঘ সময়কালীন সিকোয়েন্সের মধ্যে তথ্য সংরক্ষণ করতে সক্ষম, এবং এটি সাধারণ RNNs থেকে অধিক কার্যকরী।

এখানে RNN এবং LSTM ব্যবহার করে একটি Sequence Prediction প্রজেক্ট তৈরি করার উদাহরণ দেওয়া হলো, যেখানে আমরা সিম্পল সিকোয়েন্স ডেটা দিয়ে একটি পরবর্তী ভ্যালু পূর্বাভাস (prediction) করতে যাচ্ছি।


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

pip install tensorflow numpy matplotlib

ধাপ ২: ডেটাসেট তৈরি করা

এই উদাহরণে আমরা sin ফাংশনের সিকোয়েন্স ব্যবহার করব এবং পূর্ববর্তী মান ব্যবহার করে পরবর্তী মানের পূর্বাভাস দিব।

import numpy as np
import matplotlib.pyplot as plt

# ডেটা তৈরি করা (sin ফাংশন)
x = np.linspace(0, 100, 1000)
y = np.sin(x)

# ডেটার প্রথম 900টি মান ট্রেনিং এবং বাকি 100টি টেস্টিং হিসেবে ব্যবহার হবে
train_size = 900
train_x = x[:train_size]
train_y = y[:train_size]
test_x = x[train_size:]
test_y = y[train_size:]

# ডেটার আকার চেক করা
print(train_x.shape, train_y.shape)

ধাপ ৩: ডেটা প্রিপ্রসেসিং (Reshape)

আমরা সিকোয়েন্স প্রেডিকশন করার জন্য ডেটাকে একটি সিকোয়েন্স আকারে পরিবর্তন করব। এটি নিশ্চিত করতে হবে যে, প্রতিটি ইনপুট পয়েন্ট তার পূর্ববর্তী কিছু ভ্যালুর ওপর ভিত্তি করে পরবর্তী ভ্যালু প্রেডিক্ট করবে।

# সিকোয়েন্সের লেন্থ (অর্থাৎ, পরবর্তী মান পূর্বাভাস দিতে কীভাবে 10 পয়েন্টের ওপর ভিত্তি করে প্রেডিক্ট করা হবে)
sequence_length = 10

# ডেটাকে reshape করা যাতে পূর্ববর্তী 10 পয়েন্ট দিয়ে পরবর্তী পয়েন্ট প্রেডিক্ট করা যায়
def create_sequences(data, seq_length):
    xs, ys = [], []
    for i in range(len(data) - seq_length):
        x = data[i:i+seq_length]
        y = data[i+seq_length]
        xs.append(x)
        ys.append(y)
    return np.array(xs), np.array(ys)

train_x_seq, train_y_seq = create_sequences(train_y, sequence_length)
test_x_seq, test_y_seq = create_sequences(test_y, sequence_length)

# ডেটার আকার চেক করা
print(train_x_seq.shape, train_y_seq.shape)

ধাপ ৪: RNN/LSTM মডেল তৈরি করা

এখন আমরা LSTM মডেল তৈরি করব। LSTM এর জন্য keras.layers.LSTM লেয়ার ব্যবহার করা হবে।

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

# LSTM মডেল তৈরি করা
model = Sequential([
    LSTM(50, return_sequences=False, input_shape=(train_x_seq.shape[1], 1)),  # LSTM লেয়ার
    Dense(1)  # আউটপুট লেয়ার
])

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

# মডেল সংক্ষিপ্ত বিবরণ
model.summary()

ধাপ ৫: মডেল ট্রেনিং

এখন আমরা মডেলটিকে ট্রেনিং ডেটাতে প্রশিক্ষিত করব।

# ডেটাকে 3D আকারে reshape করা (LSTM এর জন্য)
train_x_seq = np.reshape(train_x_seq, (train_x_seq.shape[0], train_x_seq.shape[1], 1))
test_x_seq = np.reshape(test_x_seq, (test_x_seq.shape[0], test_x_seq.shape[1], 1))

# মডেল ট্রেনিং করা
history = model.fit(train_x_seq, train_y_seq, epochs=10, batch_size=64, validation_data=(test_x_seq, test_y_seq))

ধাপ ৬: মডেল মূল্যায়ন

এখন আমরা মডেলটির পারফরম্যান্স মূল্যায়ন করব এবং পূর্বাভাস (Prediction) করতে পারব।

# মডেলটি টেস্ট ডেটাতে মূল্যায়ন করা
test_loss = model.evaluate(test_x_seq, test_y_seq)
print(f"Test Loss: {test_loss}")

# পূর্বাভাস করা
predictions = model.predict(test_x_seq)

# ফলাফল ভিজ্যুয়ালাইজেশন
plt.plot(test_y_seq, label='True Data')
plt.plot(predictions, label='Predictions')
plt.legend()
plt.show()

ধাপ ৭: ফলাফল বিশ্লেষণ

আমরা মডেলটির loss এবং predictions চিত্রায়িত করেছি, যেখানে আপনি দেখতে পাবেন, মডেলটি কতটা সঠিকভাবে পরবর্তী মান পূর্বাভাস করেছে। সাধারণত, loss কম হওয়া এবং predictions এর পরিসংখ্যান সঠিক হওয়া গুরুত্বপূর্ণ।


সারাংশ

এখানে আমরা RNN এবং LSTM ব্যবহার করে একটি Sequence Prediction প্রজেক্ট তৈরি করেছি। আমরা sin ফাংশন ব্যবহার করে একটি সিকোয়েন্স ডেটাসেট তৈরি করেছি এবং সেই ডেটা দিয়ে পরবর্তী ভ্যালু পূর্বাভাস (prediction) করতে LSTM মডেলটি প্রশিক্ষিত করেছি।

  • RNN এবং LSTM সিকোয়েন্স ডেটার জন্য বিশেষভাবে কার্যকরী।
  • LSTM সিকোয়েন্সের দীর্ঘস্থায়ী সম্পর্কগুলো স্মরণ রাখতে সক্ষম, যা সাধারণ RNNs থেকে বেশি কার্যকরী।

এই ধরনের সিকোয়েন্স প্রেডিকশন মডেলগুলি সময় সিরিজ বিশ্লেষণ, ভাষা প্রক্রিয়াকরণ, এবং অন্য সিকোয়েন্স ডেটার ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...