থিয়ানো (Theano) ব্যবহার করে ফাংশন তৈরি করা একটি গুরুত্বপূর্ণ পদক্ষেপ, বিশেষত যখন আপনি কম্পিউটেশনাল গ্রাফ তৈরি করতে চান এবং সেগুলি কার্যকরভাবে পরিচালনা করতে চান। থিয়ানো ফাংশন তৈরি করতে আপনাকে theano.tensor এর সাহায্যে টেনসর তৈরি করতে হবে এবং তারপরে একটি থিয়ানো ফাংশন theano.function ব্যবহার করতে হবে।
এখানে থিয়ানো ফাংশন তৈরি করার কিছু উদাহরণ দেওয়া হলো, যাতে আপনি অ্যারিথমেটিক অপারেশন, গ্রেডিয়েন্ট ক্যালকুলেশন, এবং কম্পিউটেশনাল গ্রাফ কীভাবে কাজ করে তা দেখতে পারবেন।
ধাপ ১: থিয়ানো ফাংশন তৈরি
ফাংশন তৈরি করতে আপনি theano.tensor ব্যবহার করে গাণিতিক টেনসর অপারেশন করতে পারেন এবং তারপর theano.function ব্যবহার করে একটি কার্যকরী ফাংশন তৈরি করতে পারেন।
বেসিক ফাংশন তৈরি:
import theano
import theano.tensor as T
import numpy as np
# ইনপুট টেনসর
x = T.dmatrix('x')
y = T.dmatrix('y')
# অপারেশন
z = x + y
# ফাংশন তৈরি করা
f = theano.function([x, y], z)
# ইনপুট ডেটা
input_x = np.array([[1, 2], [3, 4]])
input_y = np.array([[5, 6], [7, 8]])
# ফাংশন কল করা
result = f(input_x, input_y)
print(result)
এখানে:
- x এবং y হল theano.tensor থেকে তৈরি করা টেনসর যা ইনপুট হবে।
z = x + yঅপারেশনটি ফাংশন তৈরি করতে ব্যবহৃত গাণিতিক কাজ।theano.function([x, y], z)এটি একটি ফাংশন তৈরি করবে যা x এবং y ইনপুট নেবে এবংzরিটার্ন করবে।
ফলাফল:
[[ 6. 8.]
[10. 12.]]
ধাপ ২: গ্রেডিয়েন্ট ক্যালকুলেশন ফাংশন তৈরি
আপনি গ্রেডিয়েন্ট ক্যালকুলেশন বা ডিফারেনশিয়েশন করতে পারেন। উদাহরণস্বরূপ:
# টেনসর তৈরি
x = T.dscalar('x')
# ফাংশন: f(x) = x^2 + 3*x + 2
f = x**2 + 3*x + 2
# গ্রেডিয়েন্ট ক্যালকুলেশন
dfdx = T.grad(f, x)
# ফাংশন তৈরি
grad_f = theano.function([x], dfdx)
# গ্রেডিয়েন্ট পরীক্ষার জন্য ইনপুট
input_x = np.array(5)
# গ্রেডিয়েন্ট রিটার্ন করা
gradient = grad_f(input_x)
print(gradient)
এখানে:
T.grad(f, x)ফাংশনটিf(x)এর গ্রেডিয়েন্ট রিটার্ন করবে।- গ্রেডিয়েন্ট ক্যালকুলেশন সম্পাদন করে ফাংশনটি ইনপুট দেওয়া হলে সেই পয়েন্টের গ্রেডিয়েন্ট রিটার্ন করবে।
ফলাফল:
13.0
(এটি এর ফলাফল, যেখানে )।
ধাপ ৩: ফাংশনে কাস্টম অপটিমাইজেশন (Optimization)
থিয়ানোতে আপনি কাস্টম অপটিমাইজেশনও করতে পারেন। উদাহরণস্বরূপ:
# টেনসর তৈরি
x = T.dscalar('x')
# ফাংশন: f(x) = (x-3)^2 + 2
f = (x - 3)**2 + 2
# গ্রেডিয়েন্ট ক্যালকুলেশন
dfdx = T.grad(f, x)
# ফাংশন তৈরি
optimize = theano.function([x], f)
# অপটিমাইজড ইনপুট (যে বিন্দুতে ফাংশনটি মিনিমাম)
min_value = optimize(3)
print(min_value)
এখানে:
- ফাংশন
f(x) = (x-3)^2 + 2তৈরি করা হয়েছে, যা 3 এর কাছাকাছি মিনিমাম পয়েন্টে পৌঁছাবে। - থিয়ানো আপনাকে গ্রেডিয়েন্ট ক্যালকুলেশন ও অপটিমাইজেশন করার সুবিধা দেয়।
ফলাফল:
2.0
এটি মিনিমাম ভ্যালু ৩ এর পয়েন্টে পেয়ে f(x) = 2।
ধাপ ৪: ম্যাট্রিক্স অপারেশন ফাংশন
ধরা যাক, আপনি একটি ম্যাট্রিক্স মাল্টিপ্লিকেশন ফাংশন তৈরি করতে চান:
# টেনসর তৈরি
A = T.dmatrix('A')
B = T.dmatrix('B')
# অপারেশন: A * B
C = T.dot(A, B)
# ফাংশন তৈরি
matrix_multiply = theano.function([A, B], C)
# ইনপুট ডেটা
input_A = np.array([[1, 2], [3, 4]])
input_B = np.array([[5, 6], [7, 8]])
# ফাংশন কল করা
result = matrix_multiply(input_A, input_B)
print(result)
এখানে:
- T.dot(A, B) ব্যবহার করা হয়েছে ম্যাট্রিক্স মাল্টিপ্লিকেশন করার জন্য।
ফলাফল:
[[19. 22.]
[43. 50.]]
এটি দুটি ম্যাট্রিক্সের মাল্টিপ্লিকেশন প্রদর্শন করবে।
সারাংশ:
- থিয়ানো ফাংশন তৈরি করতে, প্রথমে
theano.tensorথেকে টেনসর তৈরি করুন এবং তারপরtheano.functionব্যবহার করে সেই টেনসরগুলির সাথে গাণিতিক অপারেশন করতে পারেন। - গ্রেডিয়েন্ট ক্যালকুলেশন, ম্যাট্রিক্স মাল্টিপ্লিকেশন এবং অপটিমাইজেশন এর মতো কাজগুলি থিয়ানো ফাংশন ব্যবহার করে করতে পারেন।
Read more