Optuna ব্যবহার করে Hyperparameter Optimization

Hyperparameter Tuning এবং Optuna - পাইটর্চ লাইটনিং (PyTorch Lightning) - Latest Technologies

244

Optuna হল একটি জনপ্রিয় হাইপারপ্যারামিটার অপটিমাইজেশন লাইব্রেরি যা মেশিন লার্নিং মডেলগুলির জন্য অত্যন্ত কার্যকরী। এটি সহজে এবং কার্যকরভাবে মডেলের হাইপারপ্যারামিটারগুলি টিউন করতে সহায়তা করে। নিচে Optuna ব্যবহার করে হাইপারপ্যারামিটার অপটিমাইজেশন করার প্রক্রিয়া বর্ণনা করা হলো।

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

Optuna ইনস্টল করার জন্য, আপনি নিচের কমান্ডটি ব্যবহার করতে পারেন:

pip install optuna

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

এখানে আমরা একটি সাধারণ PyTorch মডেল তৈরি করব এবং Optuna ব্যবহার করে হাইপারপ্যারামিটার অপটিমাইজেশন করব।

import optuna
import torch
from torch import nn
from torch.utils.data import DataLoader, Dataset
import torch.optim as optim

# Dummy dataset
class MyDataset(Dataset):
    def __init__(self):
        self.data = torch.randn(1000, 10)
        self.targets = torch.randn(1000, 1)

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        return self.data[idx], self.targets[idx]

# Model definition
class MyModel(nn.Module):
    def __init__(self, hidden_size):
        super(MyModel, self).__init__()
        self.fc1 = nn.Linear(10, hidden_size)
        self.fc2 = nn.Linear(hidden_size, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

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

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

def objective(trial):
    # Hyperparameters
    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

    # DataLoader
    dataset = MyDataset()
    dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

    # Model, loss function and optimizer
    model = MyModel(hidden_size)
    criterion = nn.MSELoss()
    optimizer = optim.Adam(model.parameters(), lr=learning_rate)

    # Training loop
    for epoch in range(10):  # Train for a few epochs
        for batch_data, batch_labels in dataloader:
            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 একটি শক্তিশালী এবং কার্যকরী হাইপারপ্যারামিটার অপটিমাইজেশন লাইব্রেরি, যা মডেলের কার্যকারিতা বাড়াতে সহায়তা করে। এটি মেশিন লার্নিং মডেলগুলির জন্য বিভিন্ন হাইপারপ্যারামিটারগুলির উপযুক্ত মান খুঁজে বের করতে সহায়তা করে, যা আপনার মডেলের সঠিকতা এবং কার্যকারিতা বাড়াতে পারে।

Promotion

Are you sure to start over?

Loading...