Optuna ব্যবহার করে Hyperparameter Tuning প্রোজেক্ট

প্র্যাকটিস প্রোজেক্টস - পাইটর্চ লাইটনিং (PyTorch Lightning) - Latest Technologies

257

Optuna ব্যবহার করে Hyperparameter Tuning প্রোজেক্ট তৈরি করা একটি কার্যকরী এবং সহজ প্রক্রিয়া। এখানে একটি স্টেপ-বাই-স্টেপ গাইড দেওয়া হলো যাতে আপনি একটি সাধারণ PyTorch মডেলের জন্য হাইপারপ্যারামিটার টিউনিং করতে পারেন।

প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে torch, torchvision, এবং optuna ইনস্টল করা আছে। নিচের কমান্ডগুলি ব্যবহার করুন:

pip install torch torchvision optuna

ধাপ ১: ডেটাসেট তৈরি করা

এখানে আমরা একটি সিম্পল ডেটাসেট ব্যবহার করব। উদাহরণস্বরূপ, MNIST ডেটাসেট ব্যবহার করা হবে।

import torchvision.transforms as transforms
from torchvision import datasets

# ডেটা লোডার তৈরি করুন
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))
])

train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True)

ধাপ ২: মডেল তৈরি করা

এখানে একটি সহজ নিউরাল নেটওয়ার্ক তৈরি করা হয়েছে।

import torch
import torch.nn as nn
import torch.nn.functional as F

class SimpleNN(nn.Module):
    def __init__(self, hidden_size):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(28 * 28, hidden_size)
        self.fc2 = nn.Linear(hidden_size, 10)

    def forward(self, x):
        x = x.view(-1, 28 * 28)  # Flatten the input
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x

ধাপ ৩: Objective Function তৈরি করা

Optuna-তে একটি objective function তৈরি করুন যা হাইপারপ্যারামিটারগুলি গ্রহণ করে এবং মডেল প্রশিক্ষণের জন্য ক্ষতি (loss) ফেরত দেয়।

import optuna

def objective(trial):
    hidden_size = trial.suggest_int('hidden_size', 16, 128)  # Hidden layer size
    learning_rate = trial.suggest_loguniform('learning_rate', 1e-5, 1e-1)  # Learning rate

    model = SimpleNN(hidden_size)
    criterion = nn.CrossEntropyLoss()
    optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

    # Training loop
    model.train()
    for epoch in range(3):  # Just a few epochs for quick testing
        for batch_data, batch_labels in train_loader:
            optimizer.zero_grad()
            outputs = model(batch_data)
            loss = criterion(outputs, batch_labels)
            loss.backward()
            optimizer.step()

    return loss.item()  # Return the loss for optimization

ধাপ ৪: Optuna স্টাডি তৈরি করা

Optuna স্টাডি তৈরি করুন এবং অপটিমাইজেশন চালান।

# Create a study and optimize the objective function
study = optuna.create_study(direction='minimize')  # Minimize the loss
study.optimize(objective, n_trials=50)  # Run for 50 trials

ধাপ ৫: ফলাফল বিশ্লেষণ

Optuna-তে ট্রেইন করা মডেলগুলির সেরা হাইপারপ্যারামিটারগুলি দেখতে পারেন।

print('Best hyperparameters: ', study.best_params)
print('Best trial: ', study.best_trial)

উপসংহার

Optuna ব্যবহার করে Hyperparameter Tuning একটি শক্তিশালী এবং কার্যকরী পদ্ধতি। এটি মডেলের কার্যকারিতা বাড়াতে এবং হাইপারপ্যারামিটারগুলির জন্য সঠিক মান খুঁজে বের করতে সাহায্য করে।

Promotion

Are you sure to start over?

Loading...