
গভীর শিক্ষা এবং নিউরাল নেটওয়ার্কের দ্রুত বিকশিত বিশ্বে, লাইব্রেরি এবং কাঠামো উন্নয়ন প্রক্রিয়াকে সহজীকরণ এবং ত্বরান্বিত করার জন্য অপরিহার্য। PyTorch Lightning বহুল জনপ্রিয় PyTorch এর উপরে নির্মিত এমনই একটি শক্তিশালী লাইব্রেরি। লাইটনিং ডিজাইন করা হয়েছে ডেটা সায়েন্টিস্ট এবং এমএল ইঞ্জিনিয়ারদের সহজেই তাদের মডেল স্কেল করতে, বয়লারপ্লেট কোড এড়াতে এবং সামগ্রিক পঠনযোগ্যতা উন্নত করতে। যাইহোক, PyTorch Lightning এর সাথে কাজ করার সময়, আপনি প্রায়ই নিজেকে 'pytorch_lightning.metrics' বৈশিষ্ট্য ত্রুটির মতো সমস্যার সম্মুখীন হতে পারেন। এই নিবন্ধে, আমরা সমস্যাটি মোকাবেলা করব এবং আরও ভালভাবে বোঝার জন্য কোডটি ভেঙে এর সমাধানের মাধ্যমে আপনাকে নিয়ে যাব। তদুপরি, আমরা এই সমস্যাটি সমাধানের সাথে জড়িত সম্পর্কিত লাইব্রেরি এবং ফাংশনগুলি নিয়ে আলোচনা করব।
সমস্যার সমাধান
'%27pytorch_lightning%27-এর কোনো অ্যাট্রিবিউট নেই %27metrics%27' ত্রুটির সাথে সম্পর্কিত একটি প্রধান সমস্যা হল আপনি হয়তো PyTorch Lightning এর পুরোনো সংস্করণটি ইনস্টল করেছেন যা মেট্রিক্স মডিউল অন্তর্ভুক্ত করেনি। এটি ঠিক করতে, আপনি নিম্নলিখিত কমান্ডটি চালিয়ে আপনার পাইটর্চ লাইটনিংকে সাম্প্রতিক সংস্করণে আপগ্রেড করতে পারেন:
pip install --upgrade pytorch-lightning
কোডের ধাপে ধাপে ব্যাখ্যা
একবার আপনি লাইব্রেরি আপডেট করলে, আমরা PyTorch Lightning-ভিত্তিক মেট্রিক্সের সাথে কাজ শুরু করতে পারি। প্রথম ধাপ হল PyTorch Lightning থেকে প্রয়োজনীয় মডিউল আমদানি করা। আমরা এই নিবন্ধে দৃষ্টান্তের উদ্দেশ্যে যথার্থতা মেট্রিক ব্যবহার করব।
import torch from pytorch_lightning import LightningModule from pytorch_lightning.metrics.functional import accuracy
এর পরে, আসুন বেস ক্লাস হিসাবে LightningModule ব্যবহার করে আমাদের নিউরাল নেটওয়ার্ককে সংজ্ঞায়িত করি। 'training_step' এবং 'validation_step' পদ্ধতির ভিতরে, আমরা আমাদের ভবিষ্যদ্বাণী এবং গ্রাউন্ড ট্রুথ টেনসর গণনা করব এবং PyTorch Lightning দ্বারা প্রদত্ত 'নির্ভুলতা' মেট্রিক ফাংশন ব্যবহার করে নির্ভুলতা গণনা করব।
class Classifier(LightningModule):
def __init__(self):
super().__init__()
self.layer1 = torch.nn.Linear( 32, 128)
self.layer2 = torch.nn.Linear(128, 10)
def forward(self, x):
x = torch.relu(self.layer1(x))
x = self.layer2(x)
return x
def training_step(self, batch, batch_idx):
x, y = batch
y_hat = self(x)
loss = torch.nn.functional.cross_entropy(y_hat, y)
acc = accuracy(y_hat, y) # Compute accuracy using PyTorch Lightning
self.log('train_loss', loss)
self.log('train_acc', acc, prog_bar=True)
return loss
def validation_step(self, batch, batch_idx):
x, y = batch
y_hat = self(x)
loss = torch.nn.functional.cross_entropy(y_hat, y)
acc = accuracy(y_hat, y) # Compute accuracy using PyTorch Lightning
self.log('val_loss', loss, prog_bar=True)
self.log('val_acc', acc, prog_bar=True)
return loss
অবশেষে, এই কোড কাঠামো অনুসরণ করে, আপনি উল্লেখিত বৈশিষ্ট্য ত্রুটির সম্মুখীন না হয়েই PyTorch Lightning-metrics-এর সাথে মসৃণভাবে কাজ করতে সক্ষম হবেন।
সম্পর্কিত লাইব্রেরি: টর্চমেট্রিক্স
- আরেকটি লাইব্রেরি উল্লেখ করার মতো টর্চমেট্রিক্স, একটি PyTorch ভিত্তিক লাইব্রেরি যা গভীর শিক্ষার মডেলের মূল্যায়নের জন্য মেট্রিক্স প্রদানে বিশেষ। টর্চমেট্রিক্স লাইব্রেরি PyTorch Lightning-এর মতো একই ডেভেলপারদের দ্বারা তৈরি করা হয়েছে, সামঞ্জস্যতা নিশ্চিত করে এবং একটি সহজ এবং সামঞ্জস্যপূর্ণ API প্রদান করে।
- টর্চমেট্রিক্স বিভিন্ন মেট্রিক্স যেমন যথার্থতা, যথার্থতা, স্মরণ, F1 স্কোর এবং আরও অনেক কিছু অফার করে। এটি ম্যানুয়ালি এই মেট্রিক্স বাস্তবায়নের চাপ কমায় এবং আপনাকে আপনার প্রকল্পের অন্যান্য দিকগুলিতে ফোকাস করার অনুমতি দেয়।
PyTorch লাইটনিং দিয়ে কোড পঠনযোগ্যতা বৃদ্ধি করা
PyTorch Lightning ব্যবহার করার মূল সুবিধাগুলির মধ্যে একটি হল এটি উল্লেখযোগ্যভাবে প্রশিক্ষণ লুপ গঠনকে সরল করে এবং কোডটিকে আরও পাঠযোগ্য করে তোলে। LightningModule একটি নিউরাল নেটওয়ার্কের মূল উপাদানগুলিকে অন্তর্ভুক্ত করে, যেমন মডেল আর্কিটেকচার, প্রশিক্ষণ লজিক, এবং বৈধতা লজিক, যা আপনাকে এই উপাদানগুলিকে একটি মডুলার উপায়ে পরিচালনা করার ক্ষমতা দেয়৷ ফলস্বরূপ, আপনি আপনার মডেলগুলিকে আরও দক্ষতার সাথে বিকাশ এবং স্কেল করতে পারেন, আপনাকে আপনার কোড সম্পর্কে আরও ভাল বোঝার পাশাপাশি দলের সদস্যদের মধ্যে সহযোগিতার উন্নতি করতে পারে।