উদাহরণসহ Model Evaluation এবং Inference

Model Evaluation এবং Inference - পাইটর্চ লাইটনিং (PyTorch Lightning) - Latest Technologies

211

মডেল মূল্যায়ন (Model Evaluation) এবং ইনফারেন্স (Inference) হল মেশিন লার্নিং প্রকল্পের গুরুত্বপূর্ণ অংশ। এই প্রক্রিয়াগুলি মডেলের কার্যকারিতা যাচাই করতে এবং নতুন ডেটার উপর পূর্বাভাস করতে ব্যবহৃত হয়। নিচে PyTorch ব্যবহার করে একটি মডেল মূল্যায়ন এবং ইনফারেন্স করার প্রক্রিয়া উদাহরণসহ আলোচনা করা হলো।

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

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
from sklearn.metrics import mean_squared_error

২. ডেটাসেট তৈরি করা

এখানে আমরা একটি কৃত্রিম ডেটাসেট তৈরি করছি।

# ডেটা তৈরি
x_train = torch.randn(1000, 10)  # 1000 টির মধ্যে 10টি বৈশিষ্ট্য
y_train = torch.randn(1000, 1)    # লক্ষ্য পরিবর্তনশীল
x_test = torch.randn(200, 10)      # 200টি টেস্ট উদাহরণ
y_test = torch.randn(200, 1)        # টেস্ট লক্ষ্য পরিবর্তনশীল

# TensorDataset তৈরি
train_dataset = TensorDataset(x_train, y_train)
test_dataset = TensorDataset(x_test, y_test)

# DataLoader তৈরি
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)

৩. মডেল তৈরি করা

একটি সরল নিউরাল নেটওয়ার্ক মডেল তৈরি করা যাক।

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 inputs, targets in train_loader:
        # গ্রেডিয়েন্ট শূন্য করা
        optimizer.zero_grad()

        # ফরওয়ার্ড পাস
        outputs = model(inputs)

        # লস হিসাব করা
        loss = criterion(outputs, targets)

        # ব্যাকওয়ার্ড পাস এবং অপটিমাইজার আপডেট করা
        loss.backward()
        optimizer.step()

৬. মডেল মূল্যায়ন

মডেলটি মূল্যায়ন করুন টেস্ট ডেটার উপর।

model.eval()  # মডেলকে মূল্যায়ন মোডে নিয়ে আসা

# টেস্ট ডেটার উপর পূর্বাভাস নেওয়া
predictions = []
with torch.no_grad():  # গ্রেডিয়েন্ট হিসাব না করার জন্য
    for inputs, targets in test_loader:
        output = model(inputs)
        predictions.append(output)

# পূর্বাভাস এবং সত্যের মধ্যে মেট্রিকস গণনা
predictions = torch.cat(predictions)  # টেন্সরগুলোকে একত্রিত করা
mse = mean_squared_error(y_test, predictions.numpy())
print(f'Mean Squared Error on Test Data: {mse:.4f}')

৭. ইনফারেন্স

নতুন ডেটার উপর ইনফারেন্স করুন।

# ইনফারেন্স করার জন্য নতুন ডেটা
new_data = torch.randn(5, 10)  # 5 টি নতুন উদাহরণ

# মডেল ব্যবহার করে ইনফারেন্স
with torch.no_grad():
    inference_predictions = model(new_data)

print(f'Inference Predictions: {inference_predictions.numpy()}')

উপসংহার

এই উদাহরণটি PyTorch ব্যবহার করে মডেল মূল্যায়ন এবং ইনফারেন্স করার একটি সম্পূর্ণ প্রক্রিয়া প্রদর্শন করে। আপনি একটি কাস্টম নিউরাল নেটওয়ার্ক তৈরি করেছেন, প্রশিক্ষণ দিয়েছেন, মূল্যায়ন করেছেন, এবং নতুন ডেটার উপর ইনফারেন্স করেছেন।

Promotion

Are you sure to start over?

Loading...