Forward Propagation (Forward Pass)
Forward Propagation হলো Deep Learning মডেলের একটি প্রক্রিয়া যেখানে ইনপুট ডেটা মডেলের মধ্যে দিয়ে প্রবাহিত হয় এবং আউটপুট জেনারেট করে। PyTorch-এ, এটি মডেলের forward মেথডের মাধ্যমে পরিচালিত হয়। মডেল ট্রেইনিং এবং prediction-এর সময় forward propagation হয়।
PyTorch-এ Forward Propagation উদাহরণ:
import torch
import torch.nn as nn
# একটি সাধারণ নিউরাল নেটওয়ার্ক ক্লাস তৈরি
class SimpleNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(SimpleNN, self).__init__()
self.hidden = nn.Linear(input_size, hidden_size)
self.output = nn.Linear(hidden_size, output_size)
def forward(self, x):
x = torch.relu(self.hidden(x))
x = self.output(x)
return x
# মডেল ইনিশিয়ালাইজেশন
model = SimpleNN(input_size=2, hidden_size=5, output_size=1)
# ইনপুট টেন্সর
input_data = torch.tensor([[1.0, 2.0]])
# Forward pass
output = model(input_data)
print(output)
উপরের কোডে, SimpleNN একটি নিউরাল নেটওয়ার্ক মডেল যেখানে forward propagation মেথডে ইনপুট x দিয়ে hidden এবং output লেয়ার দিয়ে আউটপুট পাওয়া যায়।
Model Evaluation
Model Evaluation হলো মডেলের পারফর্ম্যান্স যাচাই করার একটি প্রক্রিয়া। এটি মডেল ট্রেইনিংয়ের পরে অথবা validation/testing dataset-এ মডেল কেমন কাজ করছে তা নির্ধারণের জন্য ব্যবহৃত হয়।
মডেল ইভ্যালুয়েশনের স্টেপসমূহ:
- Loss Function: মডেলের আউটপুট এবং টার্গেট আউটপুটের পার্থক্য পরিমাপ করতে ব্যবহার করা হয়।
- Evaluation Metrics: যেমন Accuracy, Precision, Recall, F1 Score, এবং ROC-AUC।
- Confusion Matrix: ক্লাসিফিকেশন মডেলের পারফর্ম্যান্স বিশ্লেষণ করতে ব্যবহৃত হয়।
PyTorch-এ Model Evaluation উদাহরণ:
import torch
import torch.nn as nn
import torch.optim as optim
# Model, loss function এবং optimizer ইনিশিয়ালাইজ
model = SimpleNN(input_size=2, hidden_size=5, output_size=1)
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# কিছু ডেটাসেট উদাহরণ
input_data = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
target = torch.tensor([[0.5], [1.5]])
# মডেলকে ইভ্যালুয়েট মোডে সেট করা
model.eval()
# আউটপুট জেনারেট করা
with torch.no_grad(): # Gradient না ক্যালকুলেট করার জন্য
output = model(input_data)
loss = criterion(output, target)
print(f'Loss: {loss.item()}')
# মেট্রিক্স অনুযায়ী পর্যালোচনা
accuracy = ((output.round() == target).sum().float() / target.size(0)) * 100
print(f'Accuracy: {accuracy.item()}%')
উপরের উদাহরণে, আমরা মডেলটি ট্রেইন না করেই evaluation mode-এ সেট করেছি এবং টেস্ট ডেটাসেটে আউটপুট এবং টার্গেটের মধ্যে লস পরিমাপ করেছি।
এছাড়াও, মেট্রিক হিসেবে Accuracy পরিমাপ করা হয়েছে।
Read more