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' বা আউটপুটে ইনভোক করে।
যখন মডেল কল করা হয়, আর্কিটেকচার পুনর্ব্যবহার হয়।
উপরন্তু, ওজনগুলোও পুনর্ব্যবহার হয়।
অটোএনকোডার মডেল এনকোডার মডেল, একটি ডিকোডার মডেল ব্যবহার করে তৈরি করা যায়।
এই দুটি মডেল দুটি কলের মাধ্যমে চেইন করে অটোএনকোডার মডেল পাওয়া যায়।