TensorFlow হল Google প্রদত্ত একটি মেশিন লার্নিং ফ্রেমওয়ার্ক। এটি একটি ওপেন-সোর্স ফ্রেমওয়ার্ক যা পাইথনের সাথে মিলে অ্যালগরিদম, গভীর শিক্ষার অ্যাপ্লিকেশন এবং আরও অনেক কিছু ইমপ্লিমেন্ট করতে ব্যবহৃত হয়। এটি গবেষণা এবং প্রোডাকশন উদ্দেশ্যে ব্যবহৃত হয়।
'tensorflow' প্যাকেজটি উইন্ডোজে নিচের কমান্ড দিয়ে ইনস্টল করা যায়:
pip install tensorflow
Tensor হল TensorFlow-এ ব্যবহৃত একটি ডেটা স্ট্রাকচার। এটি ফ্লো ডায়াগ্রামের এজগুলো কানেক্ট করতে সাহায্য করে। এই ফ্লো ডায়াগ্রামকে 'Data flow graph' বলা হয়। টেনসরগুলো আর কিছু নয় বহু-মাত্রিক অ্যারে বা লিস্ট।
Keras ONEIROS (Open ended Neuro-Electronic Intelligent Robot Operating System) প্রকল্পের গবেষণার অংশ হিসেবে বিকশিত হয়েছিল। Keras একটি গভীর শিক্ষার API, যা পাইথনে লেখা হয়েছে। এটি একটি উচ্চ-স্তরের API যার একটি উৎপাদনশীল ইন্টারফেস রয়েছে যা মেশিন লার্নিং সমস্যা সমাধান করতে সাহায্য করে। এটি TensorFlow ফ্রেমওয়ার্কের উপরে চলে। এটি দ্রুত পরীক্ষা-নিরীক্ষা করতে সাহায্য করার জন্য তৈরি করা হয়েছিল। এটি মেশিন লার্নিং সমাধান বিকাশ এবং ক্যাপসুলেট করার জন্য প্রয়োজনীয় বিমূর্তি এবং বিল্ডিং ব্লক প্রদান করে।
Keras ইতিমধ্যেই TensorFlow প্যাকেজের ভিতরে রয়েছে। নিচের কোড লাইন ব্যবহার করে এটিকে অ্যাক্সেস করা যায়:
import tensorflow from tensorflow import keras
Keras ফাংশনাল API সিকোয়েনশিয়াল API-র তুলনায় আরও নমনীয় মডেল তৈরি করতে সাহায্য করে। ফাংশনাল API নন-লিনিয়ার টপোলজি वाले মডেল, শেয়ার করা লেয়ার, এবং একাধিক ইনপুট-আউটপুট নিয়ে কাজ করতে পারে। একটি গভীর শিক্ষার মডেল সাধারণত একটি ডায়RECTেড এসাইক্লিক গ্রাফ (DAG) যাতে একাধিক লেয়ার থাকে। ফাংশনাল API লেয়ার গ্রাফ তৈরি করতে সাহায্য করে।
নিচের কোড চালাতে আমরা Google Colaboratory ব্যবহার করছি। Google Colab বা Colaboratory ব্রাউজারের ওপর পাইথন কোড চালাতে সাহায্য করে এবং শূন্য কনফিগারেশন এবং GPU-তে ফ্রি অ্যাক্সেস দেয়। Colaboratory Jupyter Notebook-এর ওপর নির্মিত। এনকোডার এবং ডিকোডার ব্যবহার করে অটোএনকোডার জেনারেট করার কোড স্নিপেট নিচে দেওয়া হলো:
উদাহরণ
encoder_input = keras.Input(shape=(28, 28, 1), name="img")
print("মডেলে লেয়ার যোগ করা হচ্ছে")
x = layers.Conv2D(16, 3, activation="relu")(encoder_input)
x = layers.Conv2D(32, 3, activation="relu")(x)
x = layers.MaxPooling2D(3)(x)
x = layers.Conv2D(32, 3, activation="relu")(x)
x = layers.Conv2D(16, 3, activation="relu")(x)
print("গ্লোবাল ম্যাক্স পুলিং করা হচ্ছে")
encoder_output = layers.GlobalMaxPooling2D()(x)
print("লেয়ার ব্যবহার করে মডেল তৈরি করা হচ্ছে")
encoder = keras.Model(encoder_input, encoder_output, name="encoder")
print("মডেল সম্পর্কে আরও তথ্য")
encoder.summary()
print("মডেলের লেয়ার রিশেপ করা হচ্ছে")
x = layers.Reshape((4, 4, 1))(encoder_output)
x = layers.Conv2DTranspose(16, 3, activation="relu")(x)
x = layers.Conv2DTranspose(32, 3, activation="relu")(x)
x = layers.UpSampling2D(3)(x)
x = layers.Conv2DTranspose(16, 3, activation="relu")(x)
decoder_output = layers.Conv2DTranspose(1, 3, activation="relu")(x)
autoencoder = keras.Model(encoder_input, decoder_output, name="autoencoder")
print("অটোএনকোডার সম্পর্কে আরও তথ্য")
autoencoder.summary()
কোড ক্রেডিট - https://www.tensorflow.org/guide/keras/functional
আউটপুট
মডেলে লেয়ার যোগ করা হচ্ছে গ্লোবাল ম্যাক্স পুলিং করা হচ্ছে লেয়ার ব্যবহার করে মডেল তৈরি করা হচ্ছে মডেল সম্পর্কে আরও তথ্য Model: "encoder" _________________________________________________________________ Layer (type) Output Shape Param # =============================================================== img (InputLayer) [(None, 28, 28, 1)] 0 _________________________________________________________________ conv2d (Conv2D) (None, 26, 26, 16) 160 _________________________________________________________________ conv2d_1 (Conv2D) (None, 24, 24, 32) 4640 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 8, 8, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 6, 6, 32) 9248 _________________________________________________________________ conv2d_3 (Conv2D) (None, 4, 4, 16) 4624 _________________________________________________________________ global_max_pooling2d (GlobalMaxP (None, 16) 0 =============================================================== Total params: 18,672 Trainable params: 18,672 Non-trainable params: 0 _________________________________________________________________ মডেলের লেয়ার রিশেপ করা হচ্ছে অটোএনকোডার সম্পর্কে আরও তথ্য Model: "autoencoder" _________________________________________________________________ Layer (type) Output Shape Param # =============================================================== img (InputLayer) [(None, 28, 28, 1)] 0 _________________________________________________________________ conv2d (Conv2D) (None, 26, 26, 16) 160 _________________________________________________________________ conv2d_1 (Conv2D) (None, 24, 24, 32) 4640 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 8, 8, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 6, 6, 32) 9248 _________________________________________________________________ conv2d_3 (Conv2D) (None, 4, 4, 16) 4624 _________________________________________________________________ global_max_pooling2d (GlobalMaxP (None, 16) 0 _________________________________________________________________ reshape (Reshape) (None, 4, 4, 1) 0 _________________________________________________________________ conv2d_transpose (Conv2DTran (None, 6, 6, 16) 160 _________________________________________________________________ conv2d_transpose_1 (Conv2DTr (None, 8, 8, 32) 4640 _________________________________________________________________ up_sampling2d (UpSampling2D) (None, 24, 24, 32) 0 _________________________________________________________________ conv2d_transpose_2 (Conv2DTr (None, 26, 26, 16) 4624 _________________________________________________________________ conv2d_transpose_3 (Conv2DTr (None, 28, 28, 1) 145 =============================================================== Total params: 28,241 Trainable params: 28,241 Non-trainable params: 0 _________________________________________________________________
ব্যাখ্যা
মডেলে লেয়ার যোগ করা হয়েছে।
এই লেয়ারগুলোর ওপর গ্লোবাল ম্যাক্স পুলিং করা হয়েছে।
লেয়ার ব্যবহার করে একটি মডেল তৈরি করা হয়েছে।
'summary' মেথড ব্যবহার করে মডেল সম্পর্কে আরও তথ্য প্রদর্শন করা যায়।
ফাংশনাল API ব্যবহার করে, গ্রাফ-অফ-লেয়ার এর ইনপুট এবং আউটপুট নির্দিষ্ট করে মডেল তৈরি করা হয়।
এটি ইঙ্গিত দেয় একটি একক গ্রাফ ব্যবহার করে একাধিক মডেল জেনারেট করা যায়।
এখানে লেয়ার স্ট্যাক ব্যবহার করে দুটি মডেল ইনস্ট্যানশিয়েট করা হয়েছে - একটি এনকোডার যা ইমেজ ইনপুটকে ১৬-মাত্রিক ভেক্টরে রূপান্তর করে এবং একটি অটোএনকোডার মডেল যা ট্রেনিং-এ ব্যবহৃত হয়।