PyTorch তে টেনসর হল মূল ডেটা স্ট্রাকচার যা NumPy অ্যারে এর মতো কিন্তু GPU তে রান করার ক্ষমতা রাখে। টেনসর ম্যানিপুলেশন, অপারেশন এবং গণনা করা PyTorch এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডিপ লার্নিং মডেল ট্রেনিংয়ে ব্যবহৃত হয়।
নিচে PyTorch এ টেনসর তৈরি, ম্যানিপুলেশন এবং অপারেশন এর বিস্তারিত আলোচনা করা হলো।
১. টেনসর তৈরি করা
PyTorch এ টেনসর তৈরি করতে torch.Tensor() বা torch এর অন্যান্য ফাংশন ব্যবহার করা হয়। নিচে কিছু সাধারণ উপায় দেওয়া হলো:
টেনসর তৈরির পদ্ধতি:
এটা ব্যবহার করে টেনসর তৈরি করা:
torch.tensor()- এটি সাধারণভাবে একটি Python লিস্ট বা অন্য ডেটা স্ট্রাকচার থেকে টেনসর তৈরি করে।
import torch # সাধারণ লিস্ট থেকে টেনসর তৈরি করা data = [1, 2, 3, 4, 5] tensor = torch.tensor(data) print(tensor)নতুন টেনসর তৈরি করা:
torch.zeros()- পুরোপুরি শূন্যে পূর্ণ একটি টেনসর তৈরি করে।torch.ones()- পুরোপুরি একে পূর্ণ একটি টেনসর তৈরি করে।torch.rand()- 0 থেকে 1 এর মধ্যে র্যান্ডম মান নিয়ে একটি টেনসর তৈরি করে।torch.randn()- গাণিতিকভাবে স্বাভাবিক (normal) বিতরণের মান নিয়ে একটি টেনসর তৈরি করে।
# শূন্য দিয়ে টেনসর তৈরি tensor_zeros = torch.zeros(3, 3) # 3x3 মেট্রিক্স print(tensor_zeros) # এক দিয়ে টেনসর তৈরি tensor_ones = torch.ones(2, 2) # 2x2 মেট্রিক্স print(tensor_ones) # র্যান্ডম মান নিয়ে টেনসর তৈরি tensor_rand = torch.rand(2, 3) # 2x3 মেট্রিক্স print(tensor_rand) # স্বাভাবিক বিতরণের মান নিয়ে টেনসর তৈরি tensor_randn = torch.randn(2, 2) print(tensor_randn)স্পেসিফিক শেপ দিয়ে টেনসর তৈরি:
torch.empty()- কোনও ইনিশিয়ালাইজড মান ছাড়াই একটি টেনসর তৈরি করে।
tensor_empty = torch.empty(3, 3) # 3x3 খালি টেনসর print(tensor_empty)অন্য টেনসর থেকে টেনসর তৈরি করা:
torch.tensor()ব্যবহার করে, আপনি আরেকটি টেনসর থেকে নতুন টেনসর তৈরি করতে পারেন।
tensor2 = torch.tensor([1, 2, 3]) tensor_copy = tensor2.clone() # ক্লোন কপি তৈরি print(tensor_copy)
২. টেনসর ম্যানিপুলেশন
PyTorch এ টেনসরগুলির মধ্যে বিভিন্ন ধরনের ম্যানিপুলেশন করা সম্ভব। নিচে কিছু সাধারণ ম্যানিপুলেশন দেওয়া হলো:
টেনসর আকার পরিবর্তন করা:
torch.view(): টেনসর আকার পরিবর্তন করা।tensor = torch.randn(4, 4) # 4x4 টেনসর reshaped_tensor = tensor.view(2, 8) # আকার পরিবর্তন করে 2x8 টেনসর print(reshaped_tensor)torch.flatten(): টেনসর ফ্ল্যাট করা (একটি মাত্রার ভেক্টরে রূপান্তরিত করা)।tensor = torch.randn(3, 3) flattened_tensor = torch.flatten(tensor) print(flattened_tensor)torch.unsqueeze(): টেনসরে একটি নতুন ডাইমেনশন যুক্ত করা।tensor = torch.randn(3, 3) unsqueezed_tensor = torch.unsqueeze(tensor, 0) # প্রথম ডাইমেনশন যুক্ত করা print(unsqueezed_tensor)torch.squeeze(): টেনসর থেকে একক ডাইমেনশন সরানো।tensor = torch.randn(1, 3, 3) squeezed_tensor = torch.squeeze(tensor) # একক ডাইমেনশন সরানো print(squeezed_tensor)
টেনসরকে কনক্যাটেনেট বা স্ট্যাক করা:
torch.cat(): টেনসরগুলিকে একত্রিত করা (concatenate)।tensor1 = torch.randn(2, 3) tensor2 = torch.randn(2, 3) concatenated_tensor = torch.cat((tensor1, tensor2), dim=0) # dim=0 (rows) এ কনক্যাটেনেট করা print(concatenated_tensor)torch.stack(): টেনসরগুলিকে নতুন একটি ডাইমেনশনে স্ট্যাক করা।tensor1 = torch.randn(2, 3) tensor2 = torch.randn(2, 3) stacked_tensor = torch.stack((tensor1, tensor2), dim=0) # নতুন ডাইমেনশনে স্ট্যাক করা print(stacked_tensor)
৩. টেনসর অপারেশন
PyTorch এ টেনসরগুলির ওপর বিভিন্ন ধরনের গাণিতিক অপারেশন করা যায়, যেমন অ্যাডিশন, সাবট্রাকশন, মাল্টিপ্লিকেশন ইত্যাদি।
বেসিক অপারেশন:
অ্যাডিশন:
tensor1 = torch.tensor([1, 2, 3]) tensor2 = torch.tensor([4, 5, 6]) addition_result = tensor1 + tensor2 # অ্যাডিশন অপারেশন print(addition_result)সাবট্রাকশন:
subtraction_result = tensor2 - tensor1 # সাবট্রাকশন অপারেশন print(subtraction_result)মাল্টিপ্লিকেশন:
multiplication_result = tensor1 * tensor2 # এলিমেন্ট-ওয়াইজ মাল্টিপ্লিকেশন print(multiplication_result)ডিভিশন:
division_result = tensor2 / tensor1 # এলিমেন্ট-ওয়াইজ ডিভিশন print(division_result)ম্যাট্রিক্স মাল্টিপ্লিকেশন:
matrix1 = torch.randn(3, 2) matrix2 = torch.randn(2, 3) matrix_multiplication_result = torch.mm(matrix1, matrix2) # ম্যাট্রিক্স মাল্টিপ্লিকেশন print(matrix_multiplication_result)সাইন, কসাইন, লগ ইত্যাদি ফাংশন:
tensor = torch.randn(3, 3) sine_tensor = torch.sin(tensor) # সাইন ফাংশন print(sine_tensor) log_tensor = torch.log(tensor) # লগ ফাংশন print(log_tensor)
৪. GPU তে টেনসর স্থানান্তর করা
PyTorch এ, আপনি সহজেই টেনসরগুলোকে GPU তে স্থানান্তর করতে পারেন যদি আপনার সিস্টেমে CUDA সাপোর্ট থাকে। এজন্য to() অথবা cuda() ব্যবহার করা হয়।
tensor = torch.randn(2, 3)
tensor_gpu = tensor.to('cuda') # GPU তে টেনসর স্থানান্তর
print(tensor_gpu)
এছাড়া আপনি torch.device ব্যবহার করে ডিভাইস নির্বাচন করতে পারেন:
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
tensor = torch.randn(2, 3).to(device)
print(tensor)
সারাংশ
- টেনসর তৈরি:
torch.tensor(),torch.zeros(),torch.ones(),torch.rand()ইত্যাদি ব্যবহার করে সহজেই টেনসর তৈরি করা যায়। - টেনসর ম্যানিপুলেশন:
view(),flatten(),unsqueeze(),squeeze()ইত্যাদি ব্যবহার করে টেনসরের আকার পরিবর্তন, ফ্ল্যাট করা এবং নতুন ডাইমেনশন যোগ করা যায়। - টেনসর অপারেশন: PyTorch এ সাধারণ গাণিতিক অপারেশন যেমন অ্যাডিশন, সাবট্রাকশন, মাল্টিপ্লিকেশন
, ডিভিশন এবং ম্যাট্রিক্স মাল্টিপ্লিকেশন সহজেই করা যায়।
- GPU সমর্থন:
to('cuda')ব্যবহার করে টেনসর GPU তে স্থানান্তর করা যায়, যা ডিপ লার্নিং মডেল ট্রেনিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।
PyTorch এ টেনসর ব্যবহার এবং ম্যানিপুলেশন এর মাধ্যমে ডিপ লার্নিং মডেল তৈরিতে সহায়ক শক্তিশালী এবং নমনীয় টুলস পাওয়া যায়।
Read more