PyTorch Lightning ব্যবহার করে একটি মৌলিক ইমেজ ক্লাসিফিকেশন মডেল তৈরি করা খুব সহজ। এখানে আমরা MNIST ডেটাসেট ব্যবহার করে একটি সিম্পল নিউরাল নেটওয়ার্ক তৈরি এবং প্রশিক্ষণের প্রক্রিয়া আলোচনা করব। এই উদাহরণটি আপনাকে কিভাবে PyTorch Lightning ব্যবহার করে একটি ইমেজ ক্লাসিফিকেশন মডেল তৈরি করতে হয়, তা দেখাবে।
ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইন্সটল করা
প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে PyTorch এবং PyTorch Lightning ইন্সটল করা আছে। নিচের কমান্ড ব্যবহার করে ইন্সটল করতে পারেন:
pip install torch torchvision pytorch-lightning
ধাপ ২: ডেটা লোডার তৈরি করা
MNIST ডেটাসেট থেকে ইমেজ ডেটা লোড করার জন্য একটি ডেটা লোডার তৈরি করুন।
import torchvision.transforms as transforms
from torchvision import datasets
from torch.utils.data import DataLoader
def get_data_loaders(batch_size=32):
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,)) # Normalizing to [-1, 1]
])
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
val_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False)
return train_loader, val_loader
ধাপ ৩: Lightning Module তৈরি করা
এখন আমরা একটি Lightning Module তৈরি করব, যেখানে নিউরাল নেটওয়ার্কের আর্কিটেকচার এবং প্রশিক্ষণ পদ্ধতি থাকবে।
import pytorch_lightning as pl
import torch
from torch import nn
import torch.nn.functional as F
class SimpleNN(pl.LightningModule):
def __init__(self):
super(SimpleNN, self).__init__()
self.layer1 = nn.Linear(28 * 28, 128) # 28x28 input (e.g., MNIST images)
self.layer2 = nn.Linear(128, 10) # 10 output classes
def forward(self, x):
x = x.view(x.size(0), -1) # Flatten the image
x = F.relu(self.layer1(x))
x = self.layer2(x)
return x
def training_step(self, batch, batch_idx):
x, y = batch
y_hat = self(x) # Forward pass
loss = F.cross_entropy(y_hat, y) # Calculate loss
self.log('train_loss', loss) # Log the training loss
return loss
def validation_step(self, batch, batch_idx):
x, y = batch
y_hat = self(x)
val_loss = F.cross_entropy(y_hat, y)
self.log('val_loss', val_loss) # Log the validation loss
def configure_optimizers(self):
optimizer = torch.optim.Adam(self.parameters(), lr=0.001)
return optimizer
ধাপ ৪: মডেল প্রশিক্ষণ করা
এখন আমরা ডেটা লোডার তৈরি করব এবং মডেলটি প্রশিক্ষণ দেব।
from pytorch_lightning import Trainer
# Get data loaders
train_loader, val_loader = get_data_loaders()
# Create the model
model = SimpleNN()
# Create a Trainer
trainer = Trainer(max_epochs=5)
# Train the model
trainer.fit(model, train_loader, val_loader)
উপসংহার
এভাবে, আপনি PyTorch Lightning ব্যবহার করে একটি মৌলিক ইমেজ ক্লাসিফিকেশন মডেল তৈরি এবং প্রশিক্ষণ দিতে পারেন। এই প্রক্রিয়া সহজ এবং কার্যকরী, এবং আপনি PyTorch Lightning-এর সুবিধাগুলো ব্যবহার করে মডেল তৈরির সময় কোডের পাঠযোগ্যতা এবং সংগঠন উন্নত করতে পারেন। MNIST ডেটাসেটের মাধ্যমে এটি করা হয়েছে, কিন্তু আপনি অন্যান্য ডেটাসেটের জন্যও একই কাঠামো ব্যবহার করতে পারেন।
Read more