PyTorch-এ মডেল লোড করা এবং পুনরায় ব্যবহার করার জন্য torch.save() এবং torch.load() ফাংশনগুলো ব্যবহার করা হয়। সাধারণত মডেল ট্রেনিংয়ের পর মডেলের ওজন (weights) সংরক্ষণ করা হয়, এবং পরে এটি পুনরায় লোড করে ব্যবহার করা হয়। নিচে মডেল সেভ এবং লোড করার একটি উদাহরণ দেওয়া হল:
মডেল সেভ এবং লোড করার উদাহরণ
১. মডেল সেভ করা
import torch
# মডেল ইনস্ট্যানশিয়েট করা
model = CustomModel()
# ট্রেনিং কোড (মডেল ট্রেনিং করার পর)
# ...
# মডেলের স্টেট ডিকশনারি (ওজন) সেভ করা
torch.save(model.state_dict(), 'custom_model.pth')
torch.save()ফাংশনটি ব্যবহার করে মডেলের ওজন (weights) সংরক্ষণ করা হয়।'custom_model.pth'নামক একটি ফাইলে ওজন সংরক্ষণ করা হয়েছে।
২. মডেল লোড করা এবং পুনরায় ব্যবহার করা
# মডেলের স্ট্রাকচার তৈরি করা
model = CustomModel()
# সেভ করা ওজন লোড করা
model.load_state_dict(torch.load('custom_model.pth'))
# মডেলকে ইভালুয়েশন মোডে সেট করা
model.eval()
# মডেলের মাধ্যমে প্রেডিকশন করা
# একটি ডামি ইনপুট তৈরি করা (১ টি ইমেজের ব্যাচ সাইজ ধরে)
dummy_input = torch.randn(1, 1, 28, 28) # ব্যাচ সাইজ, চ্যানেল, হাইট, উইডথ
# মডেলের মাধ্যমে আউটপুট পাওয়া
output = model(dummy_input)
print(output)
ব্যাখ্যা:
মডেল সেভ করা:
torch.save(model.state_dict(), 'custom_model.pth')দ্বারা মডেলের ওজন একটি.pthফাইলে সংরক্ষণ করা হয়েছে।- এটি শুধু মডেলের ওজন সংরক্ষণ করে, পুরো মডেল নয়। এটি করলে মডেল ফাইলটি ছোট থাকে এবং পরে লোড করা সহজ হয়।
মডেল লোড করা:
- মডেলের স্ট্রাকচার প্রথমে তৈরি করা হয় (
model = CustomModel()) এবং তারপরmodel.load_state_dict(torch.load('custom_model.pth'))দিয়ে সংরক্ষিত ওজন লোড করা হয়। - মডেলকে ইভালুয়েশন মোডে (
model.eval()) সেট করা হয়, যাতে এটি ড্রপআউট বা ব্যাচ নরমালাইজেশন লেয়ারের মত কিছু মডিফিকেশন অ্যাপ্লাই না করে।
প্রেডিকশন করা:
- একটি ডামি ইনপুট তৈরি করা হয় (
dummy_input), যা মডেলের ইনপুট আকারের সাথে ম্যাচ করে। এরপর মডেলকে ইনপুট দিয়ে আউটপুট প্রেডিক্ট করা হয়।
টিপস:
- মডেল ট্রেনিংয়ের পরে মডেল ইভালুয়েশন বা প্রেডিকশনের জন্য
model.eval()এবং ট্রেনিংয়ের জন্যmodel.train()ব্যবহার করা উচিৎ। - মডেল ও ওজন লোড করার সময় মডেলের স্ট্রাকচার ও ওজনের ফাইল একসাথে ম্যাচ করা প্রয়োজন।
Content added By
Read more