MXNet ডিপ লার্নিং ফ্রেমওয়ার্কের মাধ্যমে আপনি সহজেই বিভিন্ন ধরনের ডেটা লোড করতে পারেন, যেমন CSV ফাইল এবং ইমেজ ডেটা। এখানে CSV ফাইল এবং ইমেজ ডেটা লোড করার জন্য কিছু উদাহরণ দেওয়া হলো।
১. CSV ফাইল থেকে ডেটা লোড করা
CSV ফাইলগুলি সাধারণত টেবিল আকারে ডেটা সংরক্ষণ করে এবং এটি মেশিন লার্নিং প্রশিক্ষণের জন্য খুবই জনপ্রিয়। MXNet-এর mxnet.gluon.data মডিউল ব্যবহার করে আপনি সহজেই CSV ফাইল থেকে ডেটা লোড করতে পারেন।
1.1 CSV ফাইল লোড করার জন্য কোড উদাহরণ:
ধরা যাক, আমাদের কাছে একটি CSV ফাইল রয়েছে যার মধ্যে কিছু ফিচার এবং লেবেল (target) রয়েছে। এখানে আমরা pandas লাইব্রেরি ব্যবহার করব CSV ফাইলটি পড়তে এবং mxnet.gluon.data দিয়ে তা লোড করব।
প্রথমে pandas এবং MXNet ইমপোর্ট করুন:
import pandas as pd import mxnet as mx from mxnet.gluon.data import Dataset, DataLoader from mxnet import ndCSV ফাইল পড়ুন: ধরুন আমাদের CSV ফাইলের নাম
data.csv, যা এইভাবে পড়া যাবে:# CSV ফাইল লোড করা df = pd.read_csv('data.csv')ডেটাসেট ক্লাস তৈরি করা: CSV ফাইল থেকে ডেটা লোড করার জন্য আমরা একটি কাস্টম ডেটাসেট ক্লাস তৈরি করব যা ডেটা এবং লেবেল রিটার্ন করবে:
class MyDataset(Dataset): def __init__(self, csv_data): self.data = csv_data.iloc[:, :-1].values # ফিচারগুলো (সব কলাম বাদে শেষ কলাম) self.labels = csv_data.iloc[:, -1].values # লেবেল (শেষ কলাম) def __len__(self): return len(self.data) def __getitem__(self, idx): return nd.array(self.data[idx]), nd.array(self.labels[idx])ডেটাসেট এবং DataLoader তৈরি করা: এখন আমরা আমাদের কাস্টম ডেটাসেট ব্যবহার করে ডেটা লোড করতে পারব:
dataset = MyDataset(df) dataloader = DataLoader(dataset, batch_size=32, shuffle=True)ডেটা লোডিং: এবার আমরা ডেটা লোড করতে পারি:
for data, label in dataloader: print(data.shape, label.shape)
এটি আমাদের CSV ফাইল থেকে ডেটা লোড এবং ব্যাচ আকারে পরবর্তী প্রক্রিয়াকরণের জন্য প্রস্তুত করবে।
২. ইমেজ ডেটা লোড করা
MXNet ইমেজ ডেটা লোড করার জন্য ImageRecordIter এবং gluon.data.vision মডিউল ব্যবহার করে। এতে আপনি সহজেই বিভিন্ন ফর্ম্যাটের ইমেজ লোড করতে পারেন।
2.1 ইমেজ ডেটা লোড করার জন্য কোড উদাহরণ:
gluon.data.visionব্যবহার করে ইমেজ ডেটা লোড: MXNet এ ইমেজ ডেটা লোড করতেgluon.data.visionব্যবহার করা হয়, যা ইমেজ ডেটা প্রক্রিয়াকরণের জন্য বিভিন্ন সহায়তা প্রদান করে।ইমেজ ডেটাসেট লোডিং: এখানে আমরা একটি সাধারণ কেস দেখাচ্ছি যেখানে আপনার ইমেজ ডেটাসেট একটি ডিরেক্টরির মধ্যে রয়েছে এবং আপনি ইমেজ ডেটা লোড করবেন।
- গ্লুয়ন ভিশন ডেটা সেট ইমপোর্ট করুন:
from mxnet.gluon.data.vision import datasets, transforms from mxnet.gluon.data import DataLoader- ইমেজ ট্রান্সফর্মস তৈরি করুন: ইমেজ লোড করার আগে ট্রান্সফর্মস (যেমন রিসাইজ, নরমালাইজেশন) প্রক্রিয়া করা হয়:
transform_fn = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ])- ডেটাসেট লোড করুন: ধরুন, আমাদের কাছে
data/trainনামে একটি ফোল্ডার রয়েছে, যেখানে ইমেজ ফাইল আছে:
train_dataset = datasets.ImageFolderDataset('data/train', transform=transform_fn) train_dataloader = DataLoader(train_dataset, batch_size=32, shuffle=True)ডেটা লোডিং: এখন, ডেটা লোড করার জন্য আমরা নিম্নলিখিত কোড ব্যবহার করতে পারি:
for data, label in train_dataloader: print(data.shape, label.shape)
এটি আপনাকে একটি ব্যাচের ইমেজ এবং তাদের লেবেল প্রদান করবে। আপনি এতে বিভিন্ন ধরনের ইমেজ প্রক্রিয়া যেমন রোটেশন, ফ্লিপিং, রিসাইজিং ইত্যাদি যুক্ত করতে পারেন।
৩. ImageRecordIter ব্যবহার করা
MXNet এ ইমেজ ডেটা লোড করতে ImageRecordIter ব্যবহার করা হয়, বিশেষ করে যখন আপনার ডেটাসেট RecordIO ফরম্যাটে থাকে।
3.1 ImageRecordIter ব্যবহার করে ইমেজ লোড করা:
from mxnet.io import ImageRecordIter
# ইমেজ ডেটা লোড
batch_size = 32
dataiter = ImageRecordIter(
path_imgrec="data/train.rec", # ইমেজ ফাইলের RecordIO ফরম্যাটের পথ
data_shape=(3, 224, 224), # ইমেজের আকার (Channels, Height, Width)
batch_size=batch_size,
shuffle=True
)
# ব্যাচের ডেটা দেখুন
for batch in dataiter:
data = batch.data[0]
print(data.shape) # (batch_size, channels, height, width)
এটি RecordIO ফরম্যাটে সংরক্ষিত ইমেজ ডেটা ব্যাচ আকারে লোড করে।
সারাংশ
- CSV ফাইল লোড: MXNet-এর
Gluon Datasetব্যবহার করে আপনি CSV ফাইল থেকে ডেটা লোড করতে পারেন, যা সোজা ফিচার এবং লেবেল রিটার্ন করে। - ইমেজ লোড: gluon.data.vision বা ImageRecordIter ব্যবহার করে আপনি ইমেজ ডেটা লোড করতে পারেন, এবং ট্রান্সফর্মস প্রক্রিয়া করে ইমেজ আকার পরিবর্তন এবং নরমালাইজেশন করতে পারেন।
এই পদ্ধতিগুলি আপনাকে সহজেই CSV ফাইল এবং ইমেজ ডেটা লোড করতে সহায়তা করবে MXNet ব্যবহার করে।
Read more