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

367

Gluon API ব্যবহার করে আপনি সহজেই Recurrent Neural Networks (RNN) এবং Long Short-Term Memory (LSTM) মডেল তৈরি করতে পারেন। এই মডেলগুলো সময়ভিত্তিক ডেটা (যেমন টেক্সট বা টাইম সিরিজ ডেটা) বিশ্লেষণ করতে কার্যকরী হয়। নিচে Gluon API দিয়ে RNN এবং LSTM তৈরি করার জন্য ধাপে ধাপে নির্দেশনা দেওয়া হয়েছে।


১. RNN তৈরি করা

Recurrent Neural Networks (RNNs) মূলত টেক্সট, ভাষা, বা টাইম সিরিজ ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়। RNN সাধারণত পূর্ববর্তী ইনপুটের তথ্য মনে রাখে এবং বর্তমান ইনপুটের সাথে একত্রে কাজ করে ভবিষ্যৎ পূর্বাভাস করতে সহায়তা করে।

RNN মডেল তৈরি করা:

import mxnet as mx
from mxnet.gluon import nn

# RNN মডেল তৈরি
net = nn.Sequential()
net.add(
    nn.Embedding(10, 32),  # ভোকাবুলারি সাইজ: 10, এমবেডিং ডাইমেনশন: 32
    nn.RNN(64, activation='tanh', num_layers=2, dropout=0.2),  # 64 ইউনিটের RNN, 2 লেয়ার, ড্রপআউট 0.2
    nn.Dense(10)  # আউটপুট লেয়ার
)

# মডেল ইনিশিয়ালাইজ করা
net.initialize(ctx=mx.cpu())

# ইনপুট ডেটা তৈরী (batch_size, seq_len)
data = mx.nd.random.uniform(shape=(32, 10))  # 32 ব্যাচ, 10 সিকোয়েন্স লেন্থ
output = net(data)

# আউটপুট দেখানো
print(output.shape)  # আউটপুটের শেইপ

এখানে:

  • nn.Embedding: এটি একটি এমবেডিং লেয়ার যা টোকেন বা ইনডেক্সড ইনপুট ভ্যালুকে ভেক্টরে রূপান্তর করে।
  • nn.RNN: এটি RNN লেয়ার, যা 64 ইউনিট নিয়ে কাজ করে। আমরা এখানে দুটি লেয়ার এবং ড্রপআউট (overfitting কমাতে) ব্যবহার করেছি।
  • nn.Dense: এটি আউটপুট লেয়ার যা RNN এর আউটপুট থেকে ক্লাসিফিকেশন বা পেডিকশন করবে।

২. LSTM তৈরি করা

Long Short-Term Memory (LSTM) RNN এর একটি উন্নত সংস্করণ। এটি দীর্ঘমেয়াদী নির্ভরশীলতা শেখার ক্ষমতা রাখে, যা সাধারণ RNN এর তুলনায় আরও কার্যকরী। LSTM ফিচারগুলি forget, input, এবং output gate ব্যবহারের মাধ্যমে দীর্ঘমেয়াদী স্মৃতি সংরক্ষণ করে।

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

import mxnet as mx
from mxnet.gluon import nn

# LSTM মডেল তৈরি
net = nn.Sequential()
net.add(
    nn.Embedding(10, 32),  # ভোকাবুলারি সাইজ: 10, এমবেডিং ডাইমেনশন: 32
    nn.LSTM(64, activation='tanh', num_layers=2, dropout=0.2),  # 64 ইউনিটের LSTM, 2 লেয়ার, ড্রপআউট 0.2
    nn.Dense(10)  # আউটপুট লেয়ার
)

# মডেল ইনিশিয়ালাইজ করা
net.initialize(ctx=mx.cpu())

# ইনপুট ডেটা তৈরী (batch_size, seq_len)
data = mx.nd.random.uniform(shape=(32, 10))  # 32 ব্যাচ, 10 সিকোয়েন্স লেন্থ
output = net(data)

# আউটপুট দেখানো
print(output.shape)  # আউটপুটের শেইপ

এখানে:

  • nn.LSTM: এটি LSTM লেয়ার, যা 64 ইউনিট এবং 2 লেয়ার নিয়ে কাজ করছে। activation='tanh' দিয়ে প্রতিটি লেয়ার ট্যানজেন্ট হাইপারবোলিক অ্যাক্টিভেশন ফাংশন ব্যবহার করছে।
  • nn.Dense: এটি আউটপুট লেয়ার, যেখানে আউটপুট ক্লাসিফিকেশন বা পেডিকশন এর জন্য প্রাপ্ত হবে।

৩. মডেল প্রশিক্ষণ এবং মূল্যায়ন

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

RNN এবং LSTM মডেলের প্রশিক্ষণ করার জন্য আপনার ডেটাসেট এবং লস ফাংশন প্রয়োজন হবে। সাধারণত cross-entropy loss ব্যবহার করা হয় ক্লাসিফিকেশন সমস্যার জন্য।

from mxnet.gluon import loss as gloss
from mxnet.gluon import Trainer
from mxnet import autograd

# লস ফাংশন এবং ট্রেনার তৈরি
loss_fn = gloss.SoftmaxCrossEntropyLoss()
trainer = Trainer(net.collect_params(), 'adam', {'learning_rate': 0.001})

# dummy লেবেলস
y_true = mx.nd.random.randint(0, 10, shape=(32,))

# প্রশিক্ষণ লুপ
for epoch in range(10):
    with autograd.record():
        output = net(data)
        loss = loss_fn(output, y_true)
    
    loss.backward()
    trainer.step(data.shape[0])  # ব্যাচ সাইজ অনুযায়ী আপডেট
    print(f"Epoch {epoch+1}, Loss: {loss.mean().asscalar()}")

এখানে:

  • loss_fn: Softmax Cross-Entropy Loss ব্যবহার করা হয়েছে, যা ক্লাসিফিকেশন সমস্যা সমাধানে সাধারণত ব্যবহৃত হয়।
  • Trainer: মডেলের প্যারামিটার আপডেট করার জন্য Adam optimizer ব্যবহার করা হয়েছে।
  • autograd.record(): এটি MXNet-এর অটো-গ্র্যাডিয়েন্ট ফিচার, যা প্রশিক্ষণ প্রক্রিয়ায় ব্যাকপ্রপাগেশন করতে সহায়তা করে।

মডেল মূল্যায়ন:

পরীক্ষার জন্য আপনি সাধারণভাবে accuracy, precision, recall এবং F1-score ব্যবহার করবেন। যেমন:

from sklearn.metrics import accuracy_score

y_pred = mx.nd.argmax(output, axis=1)  # সর্বোচ্চ স্কোর সহ ক্লাস নির্বাচন
accuracy = accuracy_score(y_true.asnumpy(), y_pred.asnumpy())
print(f"Accuracy: {accuracy}")

সারাংশ

  • RNN এবং LSTM মডেলগুলি Gluon API ব্যবহার করে খুব সহজে তৈরি করা যায়। Gluon API দিয়ে আপনি nn.RNN এবং nn.LSTM লেয়ার ব্যবহার করে বিভিন্ন ধরনের রিকারেন্ট নিউরাল নেটওয়ার্ক তৈরি করতে পারেন।
  • RNN সাধারণত সহজ সমস্যাগুলির জন্য ব্যবহার করা হয়, যেখানে LSTM দীর্ঘমেয়াদী নির্ভরশীলতাগুলি শিখতে সাহায্য করে।
  • মডেল প্রশিক্ষণ এবং মূল্যায়ন করতে softmax loss, Adam optimizer, এবং accuracy metrics ব্যবহার করা হয়।
Content added By
Promotion

Are you sure to start over?

Loading...