PyTorch-এ Loss Function এবং Model Training এর ধাপগুলো নিচে আলোচনা করা হলো:
Loss Function
Loss Function হলো মডেলের প্রেডিকশন এবং আসল টার্গেটের মধ্যে পার্থক্য পরিমাপের একটি মেট্রিক্স। মডেল ট্রেনিংয়ের সময়, লস ফাংশন মডেলের আউটপুট এবং টার্গেটের মধ্যে পার্থক্য হিসাব করে, যা মডেল অপ্টিমাইজ করার জন্য প্রয়োজন।
PyTorch-এ Loss Function উদাহরণ:
Mean Squared Error Loss (MSELoss): রিগ্রেশন সমস্যায় ব্যবহৃত হয়।
criterion = nn.MSELoss()
Cross-Entropy Loss: ক্লাসিফিকেশন সমস্যায় ব্যবহৃত হয়।
criterion = nn.CrossEntropyLoss()
Loss function মডেলের আউটপুট এবং টার্গেট আউটপুটের মধ্যে পার্থক্য পরিমাপ করে এবং এই মানটি যত কম হয়, মডেল তত ভালো পারফর্ম করে।
মডেল ট্রেনিং এর ধাপ
মডেল ট্রেনিং মানে হলো মডেলকে ট্রেইনিং ডেটাসেট দিয়ে প্রশিক্ষণ দেওয়া এবং ওজন (weights) আপডেট করা যাতে মডেলটি সঠিকভাবে প্রেডিক্ট করতে পারে। PyTorch-এ মডেল ট্রেনিং করার জন্য নিচের ধাপগুলো অনুসরণ করা হয়:
- Model Initialization: মডেল তৈরি করা।
- Loss Function এবং Optimizer সেট করা: লস ফাংশন এবং optimizer ইনিশিয়ালাইজ করা।
- Forward Pass: ইনপুট ডেটা দিয়ে মডেলের আউটপুট জেনারেট করা।
- Loss Calculation: আউটপুট এবং টার্গেটের মধ্যে লস ফাংশন দিয়ে লস ক্যালকুলেট করা।
- Backward Pass (Backpropagation): লস অনুযায়ী গ্রেডিয়েন্ট ক্যালকুলেট করা এবং ওজন আপডেট করা।
- Optimizer Step: Optimizer ব্যবহার করে মডেলের প্যারামিটার আপডেট করা।
- Iteration: Step 3 থেকে 6 পর্যন্ত লুপ চালিয়ে মডেলকে ট্রেন করা।
PyTorch-এ Model Training উদাহরণ:
import torch
import torch.nn as nn
import torch.optim as optim
# একটি সাধারণ নিউরাল নেটওয়ার্ক তৈরি
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
# মডেল, লস ফাংশন এবং 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], [5.0, 6.0], [7.0, 8.0]])
target = torch.tensor([[0.5], [1.5], [2.5], [3.5]])
# মডেল ট্রেনিং লুপ
for epoch in range(100): # ১০০ এপক পর্যন্ত ট্রেন করা
optimizer.zero_grad() # গ্রেডিয়েন্ট রিসেট করা
output = model(input_data) # Forward Pass
loss = criterion(output, target) # Loss Calculation
loss.backward() # Backward Pass
optimizer.step() # Optimizer Step
# প্রতিটি ১০ এপক পর পর লস প্রিন্ট করা
if (epoch+1) % 10 == 0:
print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')
ট্রেনিং এর প্রতিটি ধাপ ব্যাখ্যা:
- Model Initialization:
SimpleNNক্লাসের মাধ্যমে মডেল তৈরি করা হয়েছে। - Loss Function এবং Optimizer: MSELoss এবং SGD optimizer ব্যবহার করা হয়েছে।
- Forward Pass: ইনপুট ডেটা মডেলের মধ্যে দিয়ে আউটপুট বের করা হয়েছে।
- Loss Calculation:
criterionব্যবহার করে আউটপুট এবং টার্গেটের মধ্যে লস ক্যালকুলেট করা হয়েছে। - Backward Pass:
loss.backward()দিয়ে গ্রেডিয়েন্ট ক্যালকুলেট করা হয়েছে। - Optimizer Step:
optimizer.step()দিয়ে মডেলের প্যারামিটার আপডেট করা হয়েছে।
এভাবে PyTorch ব্যবহার করে মডেল ট্রেনিং এবং লস ফাংশন ম্যানেজ করা হয়।
Read more