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

Keras মডেল কি শুধু একটি লেয়ার হিসেবে বিবেচনা করে Python-এ ইনভোক করা যায়? হ্যাঁ হলে প্রদর্শন করুন


TensorFlow হল Google প্রদত্ত একটি মেশিন লার্নিং ফ্রেমওয়ার্ক। এটি একটি ওপেন-সোর্স ফ্রেমওয়ার্ক যা পাইথনের সাথে মিলে অ্যালগরিদম, গভীর শিক্ষার অ্যাপ্লিকেশন এবং আরও অনেক কিছু ইমপ্লিমেন্ট করতে ব্যবহৃত হয়। এটি গবেষণা এবং প্রোডাকশন উদ্দেশ্যে ব্যবহৃত হয়।

Keras ONEIROS (Open ended Neuro-Electronic Intelligent Robot Operating System) প্রকল্পের গবেষণার অংশ হিসেবে বিকশিত হয়েছিল। Keras একটি গভীর শিক্ষার API, যা পাইথনে লেখা হয়েছে। এটি একটি উচ্চ-স্তরের API যার একটি উৎপাদনশীল ইন্টারফেস রয়েছে যা মেশিন লার্নিং সমস্যা সমাধান করতে সাহায্য করে। এটি TensorFlow ফ্রেমওয়ার্কের উপরে চলে। এটি দ্রুত পরীক্ষা-নিরীক্ষা করতে সাহায্য করার জন্য তৈরি করা হয়েছিল। এটি মেশিন লার্নিং সমাধান বিকাশ এবং ক্যাপসুলেট করার জন্য প্রয়োজনীয় বিমূর্তি এবং বিল্ডিং ব্লক প্রদান করে।

এটি অত্যন্ত মাপযোগ্য (scalable) এবং ক্রস-প্ল্যাটফর্ম ক্ষমতা নিয়ে আসে। এর মানে Keras TPU বা GPU ক্লাস্টারগুলোর ওপর চালানো যায়। Keras মডেলগুলো ওয়েব ব্রাউজার বা মোবাইল ফোনেও রান করার জন্য এক্সপোর্ট করা যায়।

Keras ইতিমধ্যেই TensorFlow প্যাকেজের ভিতরে রয়েছে। নিচের কোড লাইন ব্যবহার করে এটিকে অ্যাক্সেস করা যায়:

import tensorflow
from tensorflow import keras

হ্যাঁ, একটি Keras মডেল শুধু একটি লেয়ার হিসেবে বিবেচনা করে Python-এ ইনভোক করা যায়। Keras ফাংশনাল API সিকোয়েনশিয়াল API-র তুলনায় আরও নমনীয় মডেল তৈরি করতে সাহায্য করে। ফাংশনাল API নন-লিনিয়ার টপোলজি वाले মডেল, শেয়ার করা লেয়ার, এবং একাধিক ইনপুট-আউটপুট নিয়ে কাজ করতে পারে। একটি গভীর শিক্ষার মডেল সাধারণত একটি ডায়RECTেড এসাইক্লিক গ্রাফ (DAG) যাতে একাধিক লেয়ার থাকে। ফাংশনাল API লেয়ার গ্রাফ তৈরি করতে সাহায্য করে।

নিচের কোড চালাতে আমরা Google Colaboratory ব্যবহার করছি। Google Colab বা Colaboratory ব্রাউজারের ওপর পাইথন কোড চালাতে সাহায্য করে এবং শূন্য কনফিগারেশন এবং GPU-তে ফ্রি অ্যাক্সেস দেয়। Colaboratory Jupyter Notebook-এর ওপর নির্মিত। Keras মডেলকে লেয়ার হিসেবে বিবেচনা করে Python-এ ইনভোক করার কোড স্নিপেট নিচে দেওয়া হলো:

উদাহরণ

encoder_input = keras.Input(shape=(28, 28, 1), name="original_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()
decoder_input = keras.Input(shape=(16,), name="encoded_img")
print("মডেলের লেয়ার রিশেপ করা হচ্ছে")
x = layers.Reshape((4, 4, 1))(decoder_input)
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)
print("লেয়ার ব্যবহার করে মডেল তৈরি করা হচ্ছে")
decoder = keras.Model(decoder_input, decoder_output, name="decoder")
print("মডেল সম্পর্কে আরও তথ্য")
decoder.summary()
autoencoder_input = keras.Input(shape=(28, 28, 1), name="img")
encoded_img = encoder(autoencoder_input)
decoded_img = decoder(encoded_img)
autoencoder = keras.Model(autoencoder_input, decoded_img, name="autoencoder")
print("মডেল সম্পর্কে আরও তথ্য")
autoencoder.summary()

কোড ক্রেডিট - https://www.tensorflow.org/guide/keras/functional

আউটপুট

original_img (InputLayer)          [(None, 28, 28, 1)]           0
_________________________________________________________________
conv2d_28 (Conv2D)                 (None, 26, 26, 16)            160
_________________________________________________________________
conv2d_29 (Conv2D)                 (None, 24, 24, 32)            4640
_________________________________________________________________
max_pooling2d_7 (MaxPooling2D)     (None, 8, 8, 32)              0
_________________________________________________________________
conv2d_30 (Conv2D)                 (None, 6, 6, 32)              9248
_________________________________________________________________
conv2d_31 (Conv2D)                 (None, 4, 4, 16)              4624
_________________________________________________________________
global_max_pooling2d_3 (GlobalMaxP (None, 16)                    0
===============================================================
Total params: 18,672
Trainable params: 18,672
Non-trainable params: 0
_________________________________________________________________
Reshaping the layers in the model
Creating a model using the layers
More information about the model
Model: "decoder"
_________________________________________________________________
Layer (type)                     Output Shape              Param #
===============================================================
encoded_img (InputLayer)         [(None, 16)]              0
_________________________________________________________________
reshape_1 (Reshape)              (None, 4, 4, 1)           0
_________________________________________________________________
conv2d_transpose_4 (Conv2DTr     (None, 6, 6, 16)          160
_________________________________________________________________
conv2d_transpose_5 (Conv2DTr     (None, 8, 8, 32)          4640
_________________________________________________________________
up_sampling2d_1 (UpSampling2D)   (None, 24, 24, 32)        0
_________________________________________________________________
conv2d_transpose_6 (Conv2DTr     (None, 26, 26, 16)        4624
_________________________________________________________________
conv2d_transpose_7 (Conv2DTr     (None, 28, 28, 1)         145
===============================================================
Total params: 9,569
Trainable params: 9,569
Non-trainable params: 0
_________________________________________________________________
More information about the model
Model: "autoencoder"
_________________________________________________________________
Layer (type)                     Output Shape              Param #
===============================================================
img (InputLayer)                 [(None, 28, 28, 1)]       0
_________________________________________________________________
encoder (Functional)             (None, 16)                18672
_________________________________________________________________
decoder (Functional)             (None, 28, 28, 1)         9569
===============================================================
Total params: 28,241
Trainable params: 28,241
Non-trainable params: 0
_________________________________________________________________

ব্যাখ্যা

  • যেকোনো মডেলকে একটি লেয়ার হিসেবে বিবেচনা করা যায় অন্য লেয়ারের 'input' বা আউটপুটে ইনভোক করে।

  • যখন মডেল কল করা হয়, আর্কিটেকচার পুনর্ব্যবহার হয়।

  • উপরন্তু, ওজনগুলোও পুনর্ব্যবহার হয়।

  • অটোএনকোডার মডেল এনকোডার মডেল, একটি ডিকোডার মডেল ব্যবহার করে তৈরি করা যায়।

  • এই দুটি মডেল দুটি কলের মাধ্যমে চেইন করে অটোএনকোডার মডেল পাওয়া যায়।


  1. Keras ব্যবহার করে পাইথনে সম্পূর্ণ মডেল সংরক্ষণ করা

  2. Python প্রোগ্রামে Keras ব্যবহার করে মডেল প্লট কীভাবে করা যায়?

  3. Python-এ Keras ব্যবহার করে মডেল প্লট কীভাবে করা যায়?

  4. Python-এ Keras ব্যবহার করে মডেলকে গ্রাফ হিসেবে প্লট করা এবং ইনপুট-আউটপুট শেপ প্রদর্শন করা