Time Series Data এবং Text Data এর জন্য RNN ব্যবহার

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

397

Recurrent Neural Networks (RNN) এমন একটি নিউরাল নেটওয়ার্ক আর্কিটেকচার যা সিকোয়েন্সাল ডেটা বা টাইম সিরিজ ডেটা পরিচালনা করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে। RNN এর একক স্তর বা ইউনিটের মধ্যে একটি "feedback loop" থাকে, যা মডেলকে পূর্ববর্তী স্টেট এবং ইনপুট ডেটার উপর ভিত্তি করে ভবিষ্যতের পূর্বাভাস তৈরি করতে সহায়তা করে। এই বিশেষত্বের কারণে, RNN টাইম সিরিজ ডেটা এবং টেক্সট ডেটার মতো সিকোয়েন্সিয়াল ডেটার জন্য অত্যন্ত কার্যকরী।

Time Series Data এর জন্য RNN

টাইম সিরিজ ডেটা হল এমন ডেটা যা একটি সময়সীমার মধ্যে পরপর সংগ্রহ করা হয়, যেমন স্টক মার্কেটের দাম, আবহাওয়ার পূর্বাভাস, বা জনসংখ্যার প্রবৃদ্ধি। টাইম সিরিজ ডেটার জন্য RNN ব্যবহার করতে, আপনাকে একটি সিরিজের পেছনের তথ্যকে বর্তমান ভবিষ্যদ্বাণী করার জন্য কাজে লাগাতে হয়।

Time Series Data এর জন্য RNN ব্যবহারের উদাহরণ:

ধরা যাক, আমাদের কাছে একটি টাইম সিরিজ ডেটা রয়েছে (যেমন গত এক বছরের স্টক মার্কেটের দাম), এবং আমরা এটি ব্যবহার করে পরবর্তী দিনের দাম পূর্বাভাস করতে চাই। এজন্য RNN ব্যবহার করা যেতে পারে।

import numpy as np
import pandas as pd
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense
from sklearn.preprocessing import MinMaxScaler
import matplotlib.pyplot as plt

# টাইম সিরিজ ডেটা তৈরি করা (এটি উদাহরণের জন্য)
data = np.sin(np.linspace(0, 100, 200))  # সাইন ওয়েভ ডেটা (উদাহরণ)
data = data.reshape(-1, 1)

# ডেটা নরমালাইজ করা
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

# ডেটা স্লাইডিং উইন্ডো ব্যবহার করে প্রস্তুত করা
def create_dataset(data, time_step=1):
    X, y = [], []
    for i in range(len(data) - time_step - 1):
        X.append(data[i:(i + time_step), 0])
        y.append(data[i + time_step, 0])
    return np.array(X), np.array(y)

time_step = 10
X, y = create_dataset(scaled_data, time_step)

# ইনপুট ডেটা আকার পরিবর্তন করা (প্রতিটি টাইম স্টেপের জন্য একটি ইনপুট ফিচার)
X = X.reshape(X.shape[0], X.shape[1], 1)

# RNN মডেল তৈরি করা
model = Sequential()
model.add(SimpleRNN(units=50, return_sequences=False, input_shape=(X.shape[1], 1)))
model.add(Dense(1))

# মডেল কম্পাইল এবং প্রশিক্ষণ
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X, y, epochs=100, batch_size=32)

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

# ফলাফল ভিজ্যুয়ালাইজ করা
plt.plot(scaler.inverse_transform(scaled_data), label='Original Data')
plt.plot(np.arange(time_step, time_step + len(predictions)), scaler.inverse_transform(predictions), label='Predicted Data')
plt.legend()
plt.show()

এখানে:

  • MinMaxScaler ব্যবহার করা হয়েছে যাতে ডেটার মান 0 থেকে 1 এর মধ্যে স্কেল করা হয়।
  • Sliding window কৌশল ব্যবহার করে ইনপুট এবং আউটপুট সিকোয়েন্স তৈরি করা হয়েছে।
  • SimpleRNN ব্যবহার করে RNN মডেল তৈরি করা হয়েছে।

এটি টাইম সিরিজ ডেটার জন্য একটি সাধারণ RNN মডেল তৈরি করে, যা ভবিষ্যৎ মান পূর্বাভাস করতে পারে।

Text Data এর জন্য RNN

Text data সাধারণত সিকোয়েন্স বা টোকেনগুলির একটি সিরিজ হিসেবে থাকে। RNN টেক্সট ডেটা প্রক্রিয়া করার জন্য উপযুক্ত, কারণ এটি শব্দ বা বাক্যের একটি সিরিজকে একটি নির্দিষ্ট কাঠামোয় প্রক্রিয়া করে এবং পূর্ববর্তী শব্দগুলোর উপর ভিত্তি করে পরবর্তী শব্দ বা বাক্য তৈরি করতে পারে।

Text Data এর জন্য RNN ব্যবহারের উদাহরণ:

এখানে, আমরা একটি সিকোয়েন্সের মধ্যে শব্দ বা ক্যারেক্টারের ভিত্তিতে একটি পরবর্তী শব্দ বা ক্যারেক্টার পূর্বাভাস করতে RNN ব্যবহার করব।

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, SimpleRNN, Dense
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences

# টেক্সট ডেটা (এটি উদাহরণের জন্য)
texts = ['hello world', 'world hello', 'hello from the other side', 'hello world from tensorflow']

# টোকেনাইজেশন
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)

# প্যাডিং (ইনপুট ডেটার দৈর্ঘ্য সমান করার জন্য)
X = pad_sequences(sequences, padding='post')

# RNN মডেল তৈরি করা
model = Sequential()
model.add(Embedding(input_dim=len(tokenizer.word_index) + 1, output_dim=10, input_length=X.shape[1]))
model.add(SimpleRNN(units=50, return_sequences=False))
model.add(Dense(len(tokenizer.word_index) + 1, activation='softmax'))

# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# মডেল প্রশিক্ষণ
model.fit(X, X, epochs=100, batch_size=32)

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

# পূর্বাভাসের ফলাফল
print(predictions)

এখানে:

  • Tokenizer ব্যবহার করে টেক্সট ডেটার টোকেনাইজেশন করা হয়েছে, যা টেক্সটকে সংখ্যায় রূপান্তরিত করে।
  • Pad_sequences ব্যবহার করা হয়েছে যাতে ইনপুট ডেটা সমান দৈর্ঘ্যের হয়।
  • Embedding স্তরটি টেক্সট ডেটাকে ভেক্টরে রূপান্তর করে এবং SimpleRNN স্তরটি সিকোয়েন্সের তথ্য প্রক্রিয়া করে।

RNN টেক্সট ডেটার মধ্যে সিকোয়েন্স তৈরি এবং ভবিষ্যৎ শব্দ বা ক্যারেক্টার পূর্বাভাস করতে সাহায্য করে। এটি প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) কাজের জন্য বিশেষভাবে ব্যবহৃত হয়, যেমন শব্দ জেনারেশন, ভাষা অনুবাদ এবং অনুভূতি বিশ্লেষণ।

সারাংশ

  • Time Series Data: টাইম সিরিজ ডেটার জন্য RNN এমন সিকোয়েন্স ডেটা মডেল করার ক্ষমতা প্রদান করে যা পূর্ববর্তী মানের উপর ভিত্তি করে পরবর্তী মানের পূর্বাভাস করতে সক্ষম।
  • Text Data: RNN টেক্সট ডেটার জন্যও কার্যকরী, যেখানে সিকোয়েন্সের পূর্ববর্তী তথ্যের উপর ভিত্তি করে পরবর্তী শব্দ বা ক্যারেক্টার পূর্বাভাস করা হয়।

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

Content added By
Promotion

Are you sure to start over?

Loading...