টেনসর রিসাইজ এবং Reshaping অপারেশন

PyTorch টেনসর ম্যানিপুলেশন - পাইটর্চ (Pytorch) - Machine Learning

305

PyTorch-এ টেনসরের আকার পরিবর্তন করা, বিশেষত রিসাইজ এবং reshaping অপারেশনগুলি, ডিপ লার্নিং মডেল তৈরির সময় খুবই গুরুত্বপূর্ণ। এই অপারেশনগুলি টেনসরগুলির আকার বা মাত্রা পরিবর্তন করতে সাহায্য করে, যাতে ডেটা বা মডেল লেয়ারের জন্য উপযুক্ত আকারে ডেটা ফিড করা যায়।


১. টেনসর রিসাইজ (Resize)

Resize অপারেশন একটি টেনসরের আকার পরিবর্তন করার জন্য ব্যবহৃত হয়। PyTorch এ টেনসরের আকার পরিবর্তন করার জন্য torch.nn.functional.interpolate() বা torch.resize() (ভিন্ন ধরনের আকারের জন্য) ব্যবহার করা হয়।

টেনসর রিসাইজ (Resize) উদাহরণ:

import torch
import torch.nn.functional as F

# 3x3 টেনসর তৈরি
tensor = torch.randn(3, 3)
print("Original Tensor:")
print(tensor)

# টেনসর রিসাইজ
resized_tensor = F.interpolate(tensor.unsqueeze(0).unsqueeze(0), size=(6, 6), mode='bilinear', align_corners=False)
print("Resized Tensor:")
print(resized_tensor.squeeze())

এখানে, unsqueeze(0).unsqueeze(0) দিয়ে ব্যাচ এবং চ্যানেল ডাইমেনশন যোগ করা হয়েছে, যাতে সঠিকভাবে interpolate() অপারেশনটি প্রয়োগ করা যায়। size=(6, 6) দ্বারা আকার ৬x৬ এ পরিবর্তন করা হয়েছে।


২. Reshaping অপারেশন

Reshaping মানে একটি টেনসরের আকারের ডাইমেনশন পরিবর্তন করা, কিন্তু ডেটা অক্ষত রেখে আকার পুনর্গঠন করা। PyTorch এ টেনসর রিসাইজিং এবং reshaping এর জন্য প্রধানত view(), reshape(), এবং flatten() ফাংশনগুলি ব্যবহৃত হয়।

Reshaping এর জন্য view() ফাংশন:

view() ফাংশন ব্যবহার করে টেনসরের আকার পরিবর্তন করা হয়। এটি একটি নতুন আকার ফেরত দেয় যা পূর্ববর্তী আকারের মোট উপাদানের সাথে সামঞ্জস্যপূর্ণ।

উদাহরণ:

import torch

# 4x4 টেনসর তৈরি
tensor = torch.randn(4, 4)
print("Original Tensor:")
print(tensor)

# টেনসর reshape করা (4x4 থেকে 2x8)
reshaped_tensor = tensor.view(2, 8)
print("Reshaped Tensor:")
print(reshaped_tensor)

এখানে view(2, 8) ফাংশনটি টেনসরের আকার ৪x৪ থেকে ২x৮ এ পরিবর্তন করেছে।

reshape() ফাংশন:

PyTorch 1.2 থেকে reshape() ফাংশন ব্যবহারের অনুমতি দেয়, যা view() এর মতোই কাজ করে তবে এটি স্বয়ংক্রিয়ভাবে র্যাঙ্ক ভুল হলে সঠিকভাবে পরিচালনা করতে পারে।

import torch

# 4x4 টেনসর তৈরি
tensor = torch.randn(4, 4)
print("Original Tensor:")
print(tensor)

# reshape ফাংশন ব্যবহার করে টেনসর reshape করা
reshaped_tensor = tensor.reshape(2, 8)
print("Reshaped Tensor using reshape():")
print(reshaped_tensor)

reshape() ফাংশনটি টেনসরের আকার পরিবর্তন করে একইভাবে view() এর মতো কাজ করে, তবে এটি কিছু ক্ষেত্রে একটু বেশি নমনীয়।

flatten() ফাংশন:

flatten() ফাংশন ব্যবহার করে আপনি একটি মাল্টি-ডাইমেনশনাল টেনসরকে একমাত্র ডাইমেনশনে রূপান্তর করতে পারেন। এটি বিশেষত প্রয়োজনীয় যখন আপনি একটি ২D বা ৩D টেনসরকে একক লাইন (vector) আকারে রূপান্তর করতে চান, যেমন নিউরাল নেটওয়ার্কে।

import torch

# 2x3x4 টেনসর তৈরি
tensor = torch.randn(2, 3, 4)
print("Original Tensor:")
print(tensor)

# flatten ফাংশন ব্যবহার করে টেনসর flatten করা
flattened_tensor = tensor.flatten()
print("Flattened Tensor:")
print(flattened_tensor)

এখানে flatten() ফাংশন ৩ডি টেনসরকে ১ডি টেনসরে রূপান্তর করেছে।


৩. unsqueeze() এবং squeeze() অপারেশন

  • unsqueeze(): একটি টেনসরের ডাইমেনশন বাড়ানোর জন্য ব্যবহৃত হয়। সাধারণত এটি ব্যাচ, চ্যানেল বা অন্যান্য অতিরিক্ত ডাইমেনশন যোগ করার জন্য ব্যবহার করা হয়।
  • squeeze(): এটি একটি টেনসরের একক আকারের ডাইমেনশনগুলি অপসারণ করে, যেমন ১ ডাইমেনশন।

উদাহরণ:

import torch

# 2D টেনসর
tensor = torch.randn(3, 4)
print("Original Tensor:")
print(tensor)

# unsqueeze ব্যবহার করে একটি ডাইমেনশন বাড়ানো
unsqueezed_tensor = tensor.unsqueeze(0)
print("Tensor after unsqueeze:")
print(unsqueezed_tensor)

# squeeze ব্যবহার করে 1 আকারের ডাইমেনশন অপসারণ
squeezed_tensor = unsqueezed_tensor.squeeze()
print("Tensor after squeeze:")
print(squeezed_tensor)

এখানে, unsqueeze(0) একাধিক ডাইমেনশন যোগ করেছে এবং squeeze() ব্যবহার করে আবার সেই ডাইমেনশন অপসারণ করা হয়েছে।


৪. সারাংশ

  • Reshaping এবং resize টেনসরের আকার পরিবর্তন করতে ব্যবহৃত হয়, যেখানে reshaping ডেটাকে নতুন আকারে উপস্থাপন করে এবং resize কিছুমাত্রায় সামঞ্জস্যপূর্ণ পরিবর্তন সাধন করে।
  • view(), reshape(), এবং flatten() অপারেশনগুলি টেনসরগুলির আকার পরিবর্তন করতে ব্যবহৃত হয়, যার মাধ্যমে আপনি বিভিন্ন আকারে টেনসর ডেটা নিয়ে কাজ করতে পারেন।
  • unsqueeze() এবং squeeze() অপারেশনগুলি ডাইমেনশন বাড়ানো এবং কমানোর জন্য ব্যবহৃত হয়, যা PyTorch এর অনেক অ্যাপ্লিকেশনে উপকারী।

এই অপারেশনগুলি আপনাকে ডিপ লার্নিং মডেল তৈরির সময় ডেটা প্রিপ্রসেসিং এবং মডেল আর্কিটেকচার ডিজাইন করার জন্য প্রয়োজনীয় নমনীয়তা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...