PyTorch-এ nn.Module ব্যবহার করে একটি Custom Model তৈরি করতে হয় যা nn.Module class থেকে ইনহেরিট করে। এটি করার জন্য, প্রথমে মডেলের আর্কিটেকচার ডিফাইন করতে হবে এবং এরপরে forward মেথডে ডেটা কিভাবে প্রসেস হবে তা ডিফাইন করতে হবে। নিচে একটি সিম্পল উদাহরণ দেওয়া হল যেখানে একটি কাস্টম নিউরাল নেটওয়ার্ক মডেল তৈরি করা হয়েছে:
import torch
import torch.nn as nn
import torch.nn.functional as F
# Custom Model তৈরি
class CustomModel(nn.Module):
def __init__(self):
super(CustomModel, self).__init__()
# Layers ডিফাইন করা
self.fc1 = nn.Linear(28 * 28, 128) # প্রথম ফুলি কানেক্টেড লেয়ার
self.fc2 = nn.Linear(128, 64) # দ্বিতীয় ফুলি কানেক্টেড লেয়ার
self.fc3 = nn.Linear(64, 10) # আউটপুট লেয়ার, যেখানে ১০ টি ক্লাস আছে
def forward(self, x):
# ইনপুট রিসেপ করে ফ্ল্যাট করা
x = x.view(-1, 28 * 28)
# প্রথম লেয়ার এবং অ্যাক্টিভেশন ফাংশন
x = F.relu(self.fc1(x))
# দ্বিতীয় লেয়ার এবং অ্যাক্টিভেশন ফাংশন
x = F.relu(self.fc2(x))
# আউটপুট লেয়ার
x = self.fc3(x)
return x
# মডেল ইনস্ট্যানশিয়েট করা
model = CustomModel()
# মডেল আউটপুট চেক করা
print(model)
ব্যাখ্যা:
__init__মেথড:- এই মেথডে মডেলের লেয়ারগুলো ডিফাইন করা হয়। এখানে তিনটি লেয়ার ব্যবহার করা হয়েছে:
fc1: ইনপুট লেয়ার (28x28) -> হিডেন ইউনিট 128fc2: হিডেন লেয়ার 128 -> 64fc3: আউটপুট লেয়ার 64 -> 10
- এই মেথডে মডেলের লেয়ারগুলো ডিফাইন করা হয়। এখানে তিনটি লেয়ার ব্যবহার করা হয়েছে:
forwardমেথড:- এই মেথডে ডেটা মডেলের মধ্য দিয়ে কিভাবে যাবে তা ডিফাইন করা হয়।
- ইনপুটকে প্রথমে ফ্ল্যাট করা হয়েছে (এখানে 28x28 পিক্সেলের ইমেজ)।
- এরপর প্রতিটি লেয়ারে ডেটা পাঠানো হয়েছে এবং ReLU অ্যাক্টিভেশন ফাংশন ব্যবহার করা হয়েছে।
ব্যবহার:
এই মডেল তৈরি করার পর, আপনি এটি ট্রেনিং এবং ভ্যালিডেশন করার জন্য PyTorch এর অন্যান্য ফাংশন এবং অপ্টিমাইজার ব্যবহার করতে পারবেন।
Content added By
Read more