কম্পিউটার টিউটোরিয়াল

Python-এ এনকোডার এবং ডিকোডার ব্যবহার করে অটোএনকোডার কীভাবে জেনারেট করা যায়?


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 ব্যবহার করে, গ্রাফ-অফ-লেয়ার এর ইনপুট এবং আউটপুট নির্দিষ্ট করে মডেল তৈরি করা হয়।

  • এটি ইঙ্গিত দেয় একটি একক গ্রাফ ব্যবহার করে একাধিক মডেল জেনারেট করা যায়।

  • এখানে লেয়ার স্ট্যাক ব্যবহার করে দুটি মডেল ইনস্ট্যানশিয়েট করা হয়েছে - একটি এনকোডার যা ইমেজ ইনপুটকে ১৬-মাত্রিক ভেক্টরে রূপান্তর করে এবং একটি অটোএনকোডার মডেল যা ট্রেনিং-এ ব্যবহৃত হয়।


  1. পাইথনে টেনসরফ্লো ব্যবহার করে টেনসর তৈরি করা এবং মেসেজ প্রদর্শন করার পদ্ধতি

  2. পাইথনে বোকেহ (Bokeh) ব্যবহার করে অ্যাক্সিস-অ্যালIGNED রেক্ট্যাঙ্গেল (Axis aligned rectangles) ভিজ্যুয়ালাইজ করার পদ্ধতি

  3. পাইথনে Bokeh ব্যবহার করে ভার্টিক্যাল বার গ্রাফ ভিজ্যুয়ালাইজ করার পদ্ধতি

  4. Matplotlib এবং Python ব্যবহার করে একই ফিগারে একাধিক প্লট কীভাবে আঁকা যায়?