PyTorch-এ একটি মডেল ট্রেনিং লুপ এবং ডেটা ব্যবস্থাপনা করা একটি মৌলিক পদক্ষেপ। নিচে একটি সাধারণ উদাহরণ সহ এই প্রক্রিয়াটি কীভাবে করা যায় তা বিশদভাবে বর্ণনা করা হলো।
১. প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
২. ডেটাসেট তৈরি করা
ধরা যাক, আমাদের কাছে কিছু কৃত্রিম ডেটা আছে যা আমরা ব্যবহার করব। এখানে, আমরা একটি সাধারণ টেন্সর ডেটাসেট তৈরি করছি।
# ডেটা তৈরি
x_train = torch.randn(100, 10) # 100টি উদাহরণ, প্রতিটির 10টি বৈশিষ্ট্য
y_train = torch.randn(100, 1) # লক্ষ্য পরিবর্তনশীল
# TensorDataset তৈরি
train_dataset = TensorDataset(x_train, y_train)
# DataLoader তৈরি
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True) # ব্যাচ সাইজ 32
৩. মডেল তৈরি করা
এখন একটি সরল নিউরাল নেটওয়ার্ক মডেল তৈরি করা যাক।
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(10, 5) # ইনপুট সাইজ 10, আউটপুট সাইজ 5
self.fc2 = nn.Linear(5, 1) # ইনপুট সাইজ 5, আউটপুট সাইজ 1
def forward(self, x):
x = torch.relu(self.fc1(x)) # ReLU অ্যাক্টিভেশন ফাংশন
x = self.fc2(x) # আউটপুট লেয়ার
return x
# মডেল তৈরি
model = SimpleNN()
৪. অপটিমাইজার এবং লস ফাংশন সেট করা
# লস ফাংশন এবং অপটিমাইজার নির্ধারণ
criterion = nn.MSELoss() # গড় বর্গ ত্রুটি (MSE)
optimizer = optim.Adam(model.parameters(), lr=0.001) # Adam অপটিমাইজার
৫. ট্রেনিং লুপ তৈরি করা
এখন আমরা একটি ট্রেনিং লুপ তৈরি করব যা আমাদের ডেটা প্রশিক্ষণ দেবে।
num_epochs = 10 # প্রশিক্ষণের জন্য এপোক সংখ্যা
# প্রশিক্ষণ প্রক্রিয়া
for epoch in range(num_epochs):
for batch_idx, (inputs, targets) in enumerate(train_loader):
# গ্রেডিয়েন্ট শূন্য করা
optimizer.zero_grad()
# ফরওয়ার্ড পাস
outputs = model(inputs)
# লস হিসাব করা
loss = criterion(outputs, targets)
# ব্যাকওয়ার্ড পাস
loss.backward()
# অপটিমাইজার আপডেট করা
optimizer.step()
# প্রতি 10 ব্যাচে লস প্রিন্ট করা
if batch_idx % 10 == 0:
print(f'Epoch [{epoch + 1}/{num_epochs}], Batch [{batch_idx + 1}/{len(train_loader)}], Loss: {loss.item():.4f}')
৬. ইনফারেন্স
মডেল প্রশিক্ষণের পরে, নতুন ডেটার উপর ইনফারেন্স করতে পারেন।
# ইনফারেন্স করার জন্য নতুন ডেটা
test_data = torch.randn(5, 10) # 5টি নতুন উদাহরণ
# মডেল ব্যবহার করে ইনফারেন্স
with torch.no_grad(): # গ্রেডিয়েন্ট হিসাব না করার জন্য
predictions = model(test_data)
print(f'Predictions: {predictions}')
উপসংহার
এই উদাহরণটি PyTorch-এ একটি মডেল ট্রেনিং লুপ এবং ডেটা ব্যবস্থাপনার একটি সাধারণ পদ্ধতি প্রদর্শন করে। এই প্রক্রিয়াটি আপনাকে একটি কাস্টম মডেল তৈরি করতে, প্রশিক্ষণ দেওয়ার জন্য ডেটা লোড করতে, এবং ইনফারেন্স করতে সাহায্য করবে।
Read more