PyTorch এর torch.nn মডিউল ব্যবহার

PyTorch দিয়ে মডেল তৈরি করা - পাইটর্চ (Pytorch) - Machine Learning

334

PyTorch এর torch.nn মডিউল ডিপ লার্নিং মডেল তৈরি এবং ট্রেনিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। এটি নিউরাল নেটওয়ার্কের বিভিন্ন উপাদান এবং টুলস সরবরাহ করে, যেমন লেয়ার (layers), লস ফাংশন (loss functions), অপটিমাইজার (optimizers), এবং আরও অনেক কিছু।

এখানে torch.nn মডিউলের ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হলো।


১. torch.nn.Module ক্লাস

torch.nn.Module হল PyTorch এর মূল ক্লাস যা সকল নিউরাল নেটওয়ার্ক মডেল তৈরি করতে ব্যবহার করা হয়। আপনার মডেল যখন nn.Module থেকে উত্তরাধিকারী (inherit) হয়, তখন আপনি forward() মেথডের মাধ্যমে ফিডফরোয়ার্ড প্রক্রিয়া নির্দিষ্ট করেন।

কাস্টম মডেল তৈরি করা:

  1. nn.Module কাস্টম ক্লাস তৈরি: আপনার মডেলটি একটি কাস্টম ক্লাস হিসেবে তৈরি করতে হবে যা nn.Module ক্লাস থেকে উত্তরাধিকারী হবে।
  2. __init__() মেথডে লেয়ার নির্ধারণ: মডেলের লেয়ারগুলি __init__() মেথডে সংজ্ঞায়িত করা হয়।
  3. forward() মেথডে ইনপুটের মাধ্যমে আউটপুট নির্ধারণ: forward() মেথডে ইনপুট ডেটা গ্রাফের মাধ্যমে প্রবাহিত হয় এবং মডেলের আউটপুট তৈরি হয়।

উদাহরণ: কাস্টম নিউরাল নেটওয়ার্ক মডেল

import torch
import torch.nn as nn

class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        # লেয়ারগুলির সংজ্ঞা
        self.fc1 = nn.Linear(10, 50)  # ইনপুট সাইজ 10, আউটপুট সাইজ 50
        self.fc2 = nn.Linear(50, 2)   # ইনপুট সাইজ 50, আউটপুট সাইজ 2
        self.relu = nn.ReLU()         # ReLU অ্যাক্টিভেশন ফাংশন

    def forward(self, x):
        # ফিডফরোয়ার্ড প্রক্রিয়া
        x = self.fc1(x)      # প্রথম লেয়ার
        x = self.relu(x)     # ReLU অ্যাক্টিভেশন
        x = self.fc2(x)      # দ্বিতীয় লেয়ার
        return x

এখানে, SimpleNN একটি কাস্টম নিউরাল নেটওয়ার্ক মডেল যা nn.Linear লেয়ারগুলি ব্যবহার করে এবং ReLU অ্যাক্টিভেশন ফাংশন ব্যবহার করছে।


২. নিউরাল নেটওয়ার্ক লেয়ার

torch.nn মডিউল বিভিন্ন ধরণের লেয়ার প্রদান করে, যেমন:

  1. nn.Linear(in_features, out_features): একটি লিনিয়ার ট্রান্সফরমেশন (fully connected layer) তৈরি করে।
    • উদাহরণ: nn.Linear(10, 5) – 10 ইনপুট ফিচার থেকে 5 আউটপুট ফিচার।
  2. nn.Conv2d(in_channels, out_channels, kernel_size): কনভোলিউশনাল লেয়ার, যা চিত্র প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
    • উদাহরণ: nn.Conv2d(1, 32, kernel_size=3) – 1 ইনপুট চ্যানেল থেকে 32 আউটপুট চ্যানেল।
  3. nn.MaxPool2d(kernel_size): ম্যাক্স পুলিং লেয়ার, যা কনভোলিউশনাল নিউরাল নেটওয়ার্কে চিত্র কম্প্রেশন করতে ব্যবহৃত হয়।
    • উদাহরণ: nn.MaxPool2d(kernel_size=2) – 2x2 পুলিং উইন্ডো।
  4. nn.ReLU(): রেক্টিফায়েড লিনিয়ার ইউনিট (ReLU) অ্যাক্টিভেশন ফাংশন।
    • উদাহরণ: nn.ReLU() – ইনপুটে নেতিবাচক মানকে শূন্যে রূপান্তরিত করে।
  5. nn.Softmax(dim): আউটপুটকে সম্ভাবনা রূপে পরিবর্তন করতে ব্যবহৃত হয় (সাধারণত শ্রেণীবিভাগ সমস্যা জন্য)।
    • উদাহরণ: nn.Softmax(dim=1) – ক্লাসের জন্য সম্ভাবনা নির্ধারণ।

৩. লস ফাংশন (Loss Functions)

PyTorch এর torch.nn মডিউলে বিভিন্ন লস ফাংশন রয়েছে, যা মডেলের ত্রুটি পরিমাপ করতে ব্যবহৃত হয়।

  • nn.CrossEntropyLoss(): ক্লাসিফিকেশন সমস্যা সমাধানে ব্যবহৃত হয়।
  • nn.MSELoss(): রিগ্রেশন সমস্যায় ব্যবহৃত হয়।
  • nn.BCELoss(): বাইনারি ক্লাসিফিকেশন সমস্যায় ব্যবহৃত হয়।

উদাহরণ: Loss Function ব্যবহার

# লস ফাংশন সংজ্ঞায়িত করা
loss_fn = nn.CrossEntropyLoss()

# উদাহরণ ইনপুট এবং টার্গেট
inputs = torch.randn(3, 5)  # 3 উদাহরণ, 5 শ্রেণি
targets = torch.tensor([1, 0, 4])  # টার্গেট শ্রেণি

# লস হিসাব করা
loss = loss_fn(inputs, targets)
print(f"Loss: {loss.item()}")

৪. অপটিমাইজার (Optimizers)

অপটিমাইজার মডেলের প্যারামিটারগুলো আপডেট করতে ব্যবহৃত হয়। PyTorch এর torch.optim মডিউল বিভিন্ন অপটিমাইজার প্রদান করে, যেমন:

  1. SGD (Stochastic Gradient Descent): সাধারণ গ্র্যাডিয়েন্ট ডেসেন্ট অপটিমাইজার।
  2. Adam: জনপ্রিয় অপটিমাইজার যা অ্যাডাপটিভ গ্র্যাডিয়েন্টের মাধ্যমে কাজ করে।
  3. RMSprop: অ্যাডাপটিভ গ্র্যাডিয়েন্ট অপটিমাইজার।

উদাহরণ: Optimizer ব্যবহার

# অপটিমাইজার সংজ্ঞায়িত করা
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# অপটিমাইজার স্টেপ
optimizer.zero_grad()  # গ্র্যাডিয়েন্ট শূন্য করা
loss.backward()        # ব্যাকপ্রোপাগেশন
optimizer.step()       # অপটিমাইজার স্টেপ

৫. মডেল ট্রেনিং সাইকেল

PyTorch-এ মডেল ট্রেনিং প্রক্রিয়া সাধারণত নিচের স্টেপগুলো অনুসরণ করে:

  1. ডেটা লোড করা: DataLoader ব্যবহার করে ডেটা লোড করা।
  2. ফরওয়ার্ড পাস: ইনপুট ডেটা মডেল দিয়ে ফিডফরওয়ার্ড করা।
  3. লস ফাংশন ব্যবহার করা: মডেলের আউটপুট এবং টার্গেটের মধ্যে ত্রুটি পরিমাপ করা।
  4. ব্যাকপ্রোপাগেশন: ত্রুটি পরিমাপ করার পর ব্যাকপ্রোপাগেশন এবং গ্র্যাডিয়েন্ট ক্যালকুলেশন করা।
  5. অপটিমাইজার দ্বারা ওজন আপডেট করা: অপটিমাইজারের মাধ্যমে মডেলের প্যারামিটার আপডেট করা।

সারাংশ

PyTorch এর torch.nn মডিউল ডিপ লার্নিং মডেল তৈরির জন্য বিভিন্ন টুলস এবং ফাংশন সরবরাহ করে। nn.Module ব্যবহার করে কাস্টম মডেল তৈরি করা হয় এবং নিউরাল নেটওয়ার্ক লেয়ার, লস ফাংশন, অপটিমাইজার ইত্যাদি সহজে ব্যবহার করা যায়। এটি ডিপ লার্নিং মডেল ট্রেনিং এবং অপ্টিমাইজেশনের জন্য খুবই কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...