> For the complete documentation index, see [llms.txt](https://dl.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dl.howtocode.dev/tf-intro/tf-hello-world.md).

# TensorFlow ব্যাসিক

যেহেতু এটা পাইথন লাইব্রেরী ব্যতীত আর কিছুই না। তাই এর ইন্সটলেশন আর দশটা স্বাভাবিক পাইথন লাইব্রেরীর মতই। অর্থাৎ, আপনার পছন্দের মেশিনে বা পাইথন রিয়েল/ভার্চুয়াল এনভায়রনমেন্টে pip ইন্সটলার দিয়ে সহজেই ইন্সটল করে নিতে পারেন নিচের কমান্ড ইস্যু। করে।

```python
pip3 install --upgrade tensorflow #I only know what modern Python is. No idea what 2 vs 3 means.
```

এর ইন্সটলেশন নিয়ে অযথাই প্যাঁচানোর মানে হয় না। যেখানে ইচ্ছা এই লাইব্রেরী ইন্সটল দিবেন। Anaconda, Miniconda হাবিযাবি আপাতত ভুলে জান। আপনার কম্পিউটার আছে, সেই কম্পিউটারে পাইথন ইন্সটলড অবস্থায় আছে। সাথে ধরে নিচ্ছি pip ইন্সটল্ড আছে। ব্যস pip দিয়ে TensorFlow ইন্সটল করে নিবেন আর নিচের মত প্রোগ্রাম লিখে রান করতে থাকবেন স্ক্রিপ্ট (বা মডিউল) মুডে।

নিচের প্রোগ্রামে আমরা TensorFlow দিয়ে একটি খুব সহজ কম্পিউটেশন করেছি যাতে আমরা ব্যাসিক অপারেশন এর ধাপটা সম্বন্ধে পরিষ্কার ধারনা পাই।

```python
import tensorflow as tf

a = tf.constant([2])
b = tf.constant([3])

c = tf.add(a,b)

session = tf.Session()

result = session.run(c)
print(result)

session.close()
```

প্রথমেই লাইব্রেরীকে ইম্পরট করা হয়েছে। তারপর দুটো Source Operation (যে অপারেশনের বাইরে থেকে ইনপুট দরকার নাই বা Source Ops) ডিফাইন করা হয়েছে। এই ধরনের সোর্স অপ্স, অন্য অপারেশনের কাছে তাদের তথ্য পাঠায় যেখানে মুল কম্পিউটেশনটা ঘটে। এখানে a, b তে দুটো সোর্স অপ্স tf.constant(\[2]) এবং tf.constant(\[3]) এর আউটপুট জমা হচ্ছে। এরপরে লাইনে আমরা আরেকটি কম্পিউটেশনাল অপারেশন tf.add(a,b) ডিফাইন করেছি (এটা কিন্তু ইনপুট পায়)।

এরপর আছে Session. এটা জেনে রাখা গুরুত্বপূর্ণ। যখন বিভিন্ন অপারশন মিলিয়ে একটি গ্রাফ ডিজাইন করা হয় তখন সেটার রান করানোর আগে পুরো গ্রাফকে একটি সেশনে স্টোর করতে হয়। সেশনটি সব অপেরাশন গুলোকে ট্রান্সলেট করে এবং যে ডিভাইসে এই কম্পিউটেশনটা ঘটবে তার কাছে পাঠিয়ে দেয়। একারণেই আমরা আমাদের গ্রাফকে সেশনে স্টোর করার জন্য একটি Session অবজেক্ট তৈরি করছি। এরপর ওই সেশনকে রান করিয়ে আমরা একটু আগে ডিফাইন করা c অপারশনের আউটপুট দেখতে চাচ্ছি। শেষ লাইনের মাধ্যমে সেশনটি ক্লোজ করা হয়। (ফাইল অপারেশনের কথা মনে পরছে?)

বার বার সেশন তৈরি করা এবং কাজ শেষে সেশন ক্লোজ করার ঝামেলা থেকে মুক্তি পেতে আমরা পাইথনের with ব্লকের সাহায্য নিতে পারি নিচের মত,

```python
import tensorflow as tf

a = tf.constant([2])
b = tf.constant([3])

c = tf.add(a,b)

with tf.Session() as session:
    result = session.run(c)
    print(result)
```

দুটো প্রোগ্রামের আউটপুট একই আসবে \[5]. এ অবস্থায় হয়ত মনে হচ্ছে নর্মাল একটা যোগ করতে এতো কাহিনী? আসলে এটার মাধ্যমে আপনি বুঝতে পারলেন TensorFlow কিভাবে কাজ করে। কিন্তু এই লেভেলের সস্থা কাজ নিশ্চয়ই আপনি TensorFlow দিয়ে করাবেন না, তাই না? অতি জটিল কম্পিউটেশন সহজ করার সাথে সাথে এই লাইব্রেরীর আরও কিছু সুবিধার মধ্যে আছে - আপনি একই গ্রাফ যেকোনো রকম হার্ডওয়্যার প্ল্যাটফর্মে রান করাতে পারবেন। CPU, GPU, Cluster বা Android, iOS. যাই হোক। বলে নেয়া ভালো Google I/O 17 এ Google কিন্তু নতুন এক ধরনের হার্ডওয়্যার TPU (Tensor Processing Unit) রিলিজ দিয়েছে যা স্পেশালি Tensor ভিত্তিক কম্পিউটেশনের জন্য ইফেক্টিভলি ডিজাইন করা।

আরেকবার আমরা TensoFlow এর একটা এক লাইনের সংজ্ঞা লিখে ফেলি - “একটি কম্পিউটেশন গ্রাফে বিভিন্ন অপারেশনের মধ্যে টেনসর ফর্মে ডাটা আদান প্রদান করে একবারে পুরো কম্পিউটেশন যেকোনো হার্ডওয়্যারে সম্পন্ন করার জন্য একটি মডেল বা লাইব্রেরী হচ্ছে TensorFlow.” আর এতো লম্বা মনে না থাকলে শুধু এটুকু মনে রাখুন এটা একটা “কম্পিউটেশনাল লাইব্রেরী” :D
