TensorFlow পরিচিতি

Last updated 3 months ago

যাই হোক TensorFlow কিন্তু Google এর ডেভেলপ করা লাইব্রেরী আর তাই আমি অন্তত এটাকে সুদূরপ্রসারী মনে করি। C/C++ আছে এই লাইব্রেরীর ব্যাকএন্ডে আর ফ্রন্টএন্ড ইন্টারফেইস আছে পাইথন এবং অন্য ল্যাঙ্গুয়েজের জন্য। জটিল নিউমেরিক্যাল ক্যালকুলেশন সম্পন্ন টাস্কগুলোকে সহজ এবং টাইম ইফিসিয়েন্ট করার জন্যই এই লাইব্রেরীর আবির্ভাব। ন্যাটিভ পাইথনে যার একটু ল্যাগ ছিল। আর এই লাইব্রেরী কাজ করে Data Flow Graph স্টাইলে অর্থাৎ ম্যাথেম্যাটিক্যাল অপারেশন নিয়ে নোড (Node) এবং মাল্টিডাইমেনশনাল অ্যারে নিয়ে এইজ (Edge) -এর সমন্বয়ে একটি ডাটা ফ্লো গ্রাফ তৈরি হয়।

আপনি কি আগে জানতেন - বিশেষ ধরনের মাল্টিডাইমেনশনাল অ্যারে টাইপের ডাটা স্ট্রাকচারকেই Tensor বলে? :)

0 ডাইমেনশন মানে কোন ভ্যলুর একটাই অবস্থা/অস্তিত্ব যেমন একটা বিন্দু। 1 ডাইমেনশন মানে শুধু একদিকে গমন করে এরকম কিছু ডাটা পয়েন্ট। যেমন আমাদের অতি পরিচিত সাধারণ একটি 1D অ্যারে - [5, 10, 15, 20] এরকম. 2D ডাইমেনশনের উদাহরণ হতে পারে একটি ম্যাট্রিক্স, যেমন - একটা গ্রে-স্কেল ইমেজের পিক্সেল রিপ্রেজেন্টেশন। সেটা আমরা যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজেই মাঝে মধ্যে ইমপ্লিমেন্ট করে থাকি এভাবে - [[210 100 255], [200 150 160], [210 0 100]]. 3D এর উদাহরণ হতে পারে একটি কালার ফটোর ম্যাট্রিক্স রিপ্রেজেন্টশন যেখানে Red, Green, Blue প্রত্যেকটি কালারের জন্য তিনটি আলাদা আলাদা 2D ম্যাট্রিক্স থাকে এবং সেগুলো একটার উপর আরেকটা বসিয়ে একটি অবস্থানের তিনটি আলাদা ম্যাট্রিক্সের সেল ভ্যালু হিসাব করে কালার তৈরি করে (নিচের মত),

4D এর উদাহরণ হতে পারে যখন একটি 3D ডাটা অবজেক্ট সময়ের সাথে পরিবর্তন হয়। সেই ডাইমেনশনটাকে TimeSpace ডাইমেনশনও বলা হয়ে থাকে।

আমরা TensorFlow দিয়ে উপরে আলোচিত কয়েকটি ডাইমেনশনের ডাটা অবজেক্টকে তৈরি করতে পারি (কোড এখন না বুঝলেও একটু পরেই বুঝতে পারবেন),

import tensorflow as tf
scalar = tf.constant([2])
vector = tf.constant([3, 4, 5])
matrix = tf.constant([[6, 7, 8], [9, 10, 11], [12, 13, 14]])
tensor = tf.constant([ [[6, 7, 8], [9, 10, 11], [12, 13, 14]], [[15, 16, 17], [18, 19, 20], [21, 22, 23]] , [[15, 16, 17], [18, 19, 20], [21, 22, 23]] ])
with tf.Session() as session:
result = session.run(scalar)
print("Scalar Data Example:\n", result)
result = session.run(vector)
print("\nVector Data:\n", result)
result = session.run(matrix)
print("\nMatrix:\n", result)
result = session.run(tensor)
print("\nTensor:\n", result)

আউটপুট,

Scalar Data Example:
[2]
Vector Data:
[3 4 5]
Matrix:
[[ 6 7 8]
[ 9 10 11]
[12 13 14]]
Tensor:
[[[ 6 7 8]
[ 9 10 11]
[12 13 14]]
[[15 16 17]
[18 19 20]
[21 22 23]]
[[15 16 17]
[18 19 20]
[21 22 23]]]

যা হোক, TensorFlow নিয়ে কাজ করার ধাপ দুইটা - উপরে উল্লেখিত স্টাইলে গ্রাফ তৈরি এবং তারপর সেই গ্রাফকে রান বা এক্সিকিউট করা। আবার বলি, গ্রাফের মধ্যে থাকে কিছু ডিফাইন করা অপারেশন।