টেনসরফ্লো (TensorFlow) এবং কেরাস (Keras) একসঙ্গে একটি শক্তিশালী প্ল্যাটফর্ম তৈরি করে, যা মেশিন লার্নিং এবং ডিপ লার্নিং মডেল তৈরি, প্রশিক্ষণ, এবং মূল্যায়ন করতে সহায়ক। কেরাস টেনসরফ্লোর একটি উচ্চস্তরের API যা মডেল তৈরির প্রক্রিয়াকে সহজ এবং দ্রুত করে তোলে। টেনসরফ্লো ২.0 থেকে কেরাস টেনসরফ্লোর অংশ হিসেবে ইনটিগ্রেট করা হয়েছে, এবং এখন এটি টেনসরফ্লোর API এর একটি অংশ হিসেবে ব্যবহৃত হয়।
টেনসরফ্লো এবং কেরাস একসাথে কাজ করার মাধ্যমে মডেল তৈরির প্রক্রিয়া অনেক সহজ ও আরও দক্ষ হয়। কেরাস ব্যবহারকারীদের দ্রুত এবং সহজে নিউরাল নেটওয়ার্ক তৈরি করতে সাহায্য করে, যখন টেনসরফ্লো শক্তিশালী কম্পিউটেশনাল গ্রাফ এবং ডিস্ট্রিবিউটেড ট্রেনিং সমর্থন করে।
টেনসরফ্লো এবং কেরাস একসঙ্গে কাজ করার জন্য, কেরাসের API ব্যবহার করা হয় যেটি টেনসরফ্লোর ভিতরে অন্তর্ভুক্ত। কেরাসের মাধ্যমে মডেল তৈরি, প্রশিক্ষণ এবং মূল্যায়ন করা হয়, এবং টেনসরফ্লোর শক্তিশালী ফিচার যেমন গ্র্যাডিয়েন্ট অপটিমাইজেশন, ডিস্ট্রিবিউটেড ট্রেনিং, এবং ভেরিয়েবল ম্যানেজমেন্ট ব্যবহার করা হয়।
টেনসরফ্লো এবং কেরাস ব্যবহার করে একটি নিউরাল নেটওয়ার্ক মডেল তৈরির একটি সাধারণ উদাহরণ:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
# একটি সিম্পল সিকুয়েন্সিয়াল মডেল তৈরি করা
model = Sequential()
# ইনপুট এবং হিডেন লেয়ার যোগ করা
model.add(Dense(64, input_dim=8, activation='relu'))
# আউটপুট লেয়ার যোগ করা
model.add(Dense(1, activation='sigmoid'))
# মডেল কম্পাইল করা
model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy'])
# মডেল সারাংশ দেখানো
model.summary()
এই উদাহরণে, আমরা একটি সিম্পল সিকুয়েন্সিয়াল মডেল তৈরি করেছি, যার মধ্যে একটি ইনপুট লেয়ার এবং একটি আউটপুট লেয়ার রয়েছে। Adam
অপটিমাইজার এবং binary_crossentropy
লস ফাংশন ব্যবহৃত হয়েছে।
টেনসরফ্লো এবং কেরাস একসাথে ব্যবহার করে মডেল প্রশিক্ষণ করাটা খুবই সহজ:
# ডেটা তৈরি করা (এই ক্ষেত্রে কৃত্রিম ডেটা)
import numpy as np
X_train = np.random.rand(1000, 8) # 1000 নমুনা, 8 ফিচার
y_train = np.random.randint(0, 2, 1000) # বাইনারি লেবেল (0 অথবা 1)
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train, epochs=10, batch_size=32)
এখানে, X_train
এবং y_train
হল প্রশিক্ষণ ডেটা এবং লেবেল। model.fit()
ব্যবহার করে আমরা ১০০০ নমুনা ডেটার উপর ১০টি epoch এ মডেল প্রশিক্ষণ দিচ্ছি।
টেনসরফ্লো (TensorFlow) এবং কেরাস (Keras) দুটি জনপ্রিয় মেশিন লার্নিং ও ডিপ লার্নিং লাইব্রেরি, কিন্তু এগুলোর মধ্যে কিছু সম্পর্ক এবং পার্থক্য রয়েছে। টেনসরফ্লো একটি কম্পিউটেশনাল গ্রাফ ভিত্তিক লাইব্রেরি যা বিভিন্ন ধরনের মেশিন লার্নিং মডেল তৈরি এবং ট্রেন করতে ব্যবহৃত হয়, এবং কেরাস হচ্ছে একটি উচ্চ স্তরের API যা মূলত টেনসরফ্লোর ওপর ভিত্তি করে কাজ করে।
কেরাস টেনসরফ্লোর অংশ: ২০১৭ সালের পর থেকে, কেরাস টেনসরফ্লোর একটি অংশ হিসেবে সংযুক্ত হয়েছে। অর্থাৎ, কেরাস এখন টেনসরফ্লোর উচ্চ স্তরের API হিসেবে কাজ করে। কেরাসের কোড এবং ফিচারগুলো টেনসরফ্লোতে অন্তর্ভুক্ত করা হয়েছে, যা ডিপ লার্নিং মডেল তৈরি এবং প্রশিক্ষণকে আরও সহজ এবং ব্যবহারকারী-বান্ধব করে তোলে।
টেনসরফ্লোতে কেরাস এক্সটেনশন হিসেবে ব্যবহার করা হয় এবং এর মাধ্যমে মডেল তৈরি, ট্রেনিং এবং ভ্যালিডেশন সহজ হয়।
Sequential API
এবং Functional API
সরবরাহ করে, যা খুব সহজেই ব্যবহারযোগ্য। টেনসরফ্লো মূলত কাস্টম অপারেশন এবং মডেল আর্কিটেকচার তৈরির জন্য ব্যবহৃত হয়, যেমন জটিল গ্রাফ এবং মডেল ট্রেনিং যেখানে কাস্টম লেয়ার এবং ফিচার প্রয়োজন।Keras একটি জনপ্রিয় হাই-লেভেল মেশিন লার্নিং লাইব্রেরি যা TensorFlow এর উপর ভিত্তি করে কাজ করে। এটি ডিপ লার্নিং মডেল তৈরির জন্য সহজ, দ্রুত এবং কার্যকরী পদ্ধতি প্রদান করে। এখানে আমরা Keras ব্যবহার করে একটি Simple Neural Network তৈরি করার পদ্ধতি দেখাবো।
ধরা যাক, আমরা একটি সাধারণ ফিডফরওয়ার্ড নিউরাল নেটওয়ার্ক (Feedforward Neural Network) তৈরি করবো, যা MNIST
ডেটাসেট ব্যবহার করে হাতের লেখা ডিজিট চিহ্নিত করবে।
pip install tensorflow
এখানে একটি সহজ নিউরাল নেটওয়ার্ক তৈরি করার উদাহরণ দেওয়া হলো:
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
# MNIST ডেটাসেট লোড করা
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# ডেটা প্রিপ্রসেসিং (স্কেলিং)
x_train = x_train.reshape((x_train.shape[0], 28, 28, 1))
x_test = x_test.reshape((x_test.shape[0], 28, 28, 1))
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
# আউটপুট লেবেল (y_train এবং y_test) কে ক্যাটাগোরিক্যাল ডেটায় রূপান্তর করা
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
# নিউরাল নেটওয়ার্ক মডেল তৈরি করা
model = models.Sequential()
# কনভোলিউশনাল লেয়ার
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
# ফ্ল্যাটেনিং লেয়ার
model.add(layers.Flatten())
# হিডেন লেয়ার
model.add(layers.Dense(128, activation='relu'))
# আউটপুট লেয়ার
model.add(layers.Dense(10, activation='softmax'))
# মডেল কম্পাইল করা
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# মডেল ট্রেনিং করা
model.fit(x_train, y_train, epochs=5, batch_size=64, validation_data=(x_test, y_test))
# মডেল মূল্যায়ন করা
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"Test accuracy: {test_acc}")
mnist.load_data()
ফাংশন দিয়ে MNIST ডেটাসেট লোড করা হয়।এই কোডে আমরা Keras ব্যবহার করে একটি সাধারণ Convolutional Neural Network (CNN) তৈরি করেছি যা MNIST ডেটাসেটের হাতের লেখা ডিজিট চিহ্নিত করে। আপনি চাইলে আরও উন্নত মডেল তৈরি করতে পারেন এবং বিভিন্ন হাইপারপ্যারামিটার পরিবর্তন করে মডেলের পারফরম্যান্স উন্নত করতে পারেন।
Keras হলো একটি উচ্চস্তরের নিউরাল নেটওয়ার্ক API যা টেনসরফ্লো বা থিওয়ারের ওপরে কাজ করে। এটি মেশিন লার্নিং এবং ডিপ লার্নিং মডেল তৈরি করতে সহায়ক এবং এটি ব্যবহারকারী বান্ধব, যেহেতু এটি দ্রুত মডেল তৈরি এবং প্রশিক্ষণের জন্য একটি সহজতর ইন্টারফেস প্রদান করে। এখানে, আমরা Keras এর মডেল Compile এবং Train করার পদ্ধতি আলোচনা করব।
মডেল compile করার মাধ্যমে আমরা নির্ধারণ করি যে মডেলটি কিভাবে ট্রেন হবে এবং তার আপডেট কীভাবে হবে। compile পদ্ধতির মধ্যে আমরা তিনটি গুরুত্বপূর্ণ উপাদান নির্ধারণ করি:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
# মডেল তৈরি
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=8)) # ইনপুট লেয়ার
model.add(Dense(32, activation='relu')) # হিডেন লেয়ার
model.add(Dense(1, activation='sigmoid')) # আউটপুট লেয়ার (বাইনরি ক্লাসিফিকেশন)
# মডেল কম্পাইল করা
model.compile(optimizer=Adam(learning_rate=0.001), # অপটিমাইজার
loss='binary_crossentropy', # ক্ষতি ফাংশন
metrics=['accuracy']) # মেট্রিক্স
এখানে:
Adam
ব্যবহার করা হয়েছে, যা জনপ্রিয় অপটিমাইজার।binary_crossentropy
ব্যবহার করা হয়েছে, যা বাইনরি ক্লাসিফিকেশনের জন্য উপযুক্ত।accuracy
ব্যবহার করা হয়েছে, যা মডেলের সঠিকতা পরিমাপ করবে।মডেল train করার জন্য আমরা fit
পদ্ধতি ব্যবহার করি, যেখানে আমরা ডেটা, epochs (প্রশিক্ষণের চক্রের সংখ্যা), এবং batch size (একবারে ডেটার কতটুকু সাইজ) নির্ধারণ করি। fit
পদ্ধতি মডেলকে প্রশিক্ষিত করে এবং মডেলটি সঠিক আউটপুট দেয়ার জন্য ওজন আপডেট করে।
# ট্রেনিং ডেটা (ধরা যাক, X_train এবং y_train)
# X_train হলো ইনপুট ফিচার, y_train হলো আউটপুট লেবেল
# মডেল ট্রেনিং
model.fit(X_train, y_train,
epochs=10, # মোট ১০ বার ট্রেনিং হবে
batch_size=32, # একবারে ৩২টি ডেটা পয়েন্ট
validation_data=(X_val, y_val)) # ভ্যালিডেশন ডেটা ব্যবহার করা
এখানে:
X_train
এবং y_train
হল ট্রেনিং ডেটা এবং লেবেল।মডেলটি ট্রেনিং শেষ করার পর, আমরা মডেলটিকে টেস্ট ডেটা দিয়ে মূল্যায়ন করতে পারি। এর জন্য evaluate
পদ্ধতি ব্যবহার করা হয়।
# টেস্ট ডেটা (ধরা যাক, X_test এবং y_test)
# X_test হলো ইনপুট ফিচার, y_test হলো আউটপুট লেবেল
# মডেল মূল্যায়ন
loss, accuracy = model.evaluate(X_test, y_test)
print("Test Loss:", loss)
print("Test Accuracy:", accuracy)
এখানে:
evaluate
পদ্ধতিটি মডেলের ক্ষতি এবং সঠিকতা প্রদান করবে টেস্ট ডেটার উপর।ট্রেনিং এবং মূল্যায়ন শেষ হওয়ার পর, আমরা মডেল ব্যবহার করে নতুন ডেটার জন্য পূর্বাভাস করতে পারি। এর জন্য predict
পদ্ধতি ব্যবহৃত হয়।
# নতুন ইনপুট ডেটার জন্য পূর্বাভাস করা
predictions = model.predict(X_new)
# পূর্বাভাস প্রদর্শন
print(predictions)
এখানে:
X_new
হলো নতুন ইনপুট ডেটা, এবং predict
পদ্ধতি আউটপুট হিসেবে মডেলটির পূর্বাভাস প্রদান করবে।fit
পদ্ধতির মাধ্যমে ডেটা ব্যবহার করে মডেল প্রশিক্ষিত করা হয়।evaluate
পদ্ধতির মাধ্যমে মডেলের পারফরম্যান্স টেস্ট ডেটা ব্যবহার করে মূল্যায়ন করা হয়।predict
পদ্ধতি ব্যবহার করা হয়।এই প্রক্রিয়া মডেল তৈরির মৌলিক অংশ এবং মডেলটি সফলভাবে ট্রেন এবং টেস্ট করার জন্য খুবই গুরুত্বপূর্ণ।
TensorFlow এবং Keras দুটি জনপ্রিয় লাইব্রেরি, যেগুলি মেশিন লার্নিং এবং ডিপ লার্নিং মডেল তৈরিতে ব্যবহৃত হয়। Keras হল একটি হাই-লেভেল লাইব্রেরি, যা TensorFlow এর ওপর ভিত্তি করে কাজ করে এবং এর মাধ্যমে মডেল তৈরি করা এবং ট্রেনিং করা সহজ হয়। TensorFlow এবং Keras এর মধ্যে মডেল শেয়ারিং (model sharing) একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা মডেলগুলোকে অন্যান্য ডেভেলপারদের সাথে ভাগ করে নেওয়া, পুনরায় ব্যবহার করা, এবং অন্যান্য প্ল্যাটফর্মে মোবাইল বা ওয়েব অ্যাপ্লিকেশনগুলিতে ইনটিগ্রেট করা সম্ভব করে তোলে।
Keras মডেলকে .h5
(HDF5) ফর্ম্যাটে সংরক্ষণ করা যায়, যা পরে সহজে অন্যদের সাথে শেয়ার করা যায়।
# Keras মডেল সংরক্ষণ
model.save('my_model.h5')
# মডেল লোড করা
from tensorflow.keras.models import load_model
model = load_model('my_model.h5')
এখানে save()
মেথডটি মডেলটি .h5
ফাইল হিসেবে সংরক্ষণ করে এবং load_model()
মেথডটি সেই মডেল পুনরায় লোড করে।
TensorFlow মডেলকে SavedModel ফরম্যাটে সংরক্ষণ করা হয়, যা মডেল শেয়ারিংয়ের জন্য একটি জনপ্রিয় ফরম্যাট। SavedModel একাধিক উপাদান ধারণ করতে পারে, যেমন গ্রাফ, ওজন এবং কাস্টম অপারেশন।
# Keras মডেল TensorFlow SavedModel ফরম্যাটে সংরক্ষণ
model.save('my_model_saved')
# মডেল লোড করা
loaded_model = tf.keras.models.load_model('my_model_saved')
এখানে model.save()
মেথডটি মডেলটি SavedModel ফরম্যাটে সংরক্ষণ করে এবং load_model()
মেথডটি সেই মডেল পুনরায় লোড করে।
TensorFlow Serving একটি বিশেষ সার্ভিং সিস্টেম, যা কেবলমাত্র মডেল শেয়ারিংয়ের জন্য নয়, সেগুলিকে দ্রুত এবং দক্ষভাবে ডিপ্লয়মেন্টও করতে ব্যবহৃত হয়।
# TensorFlow Serving এর মাধ্যমে মডেল ডিপ্লয় করা
# প্রথমে মডেলকে 'SavedModel' ফরম্যাটে সংরক্ষণ করতে হবে, তারপর টেনসরফ্লো সার্ভিংয়ে ইন্টিগ্রেট করা যায়।
TensorFlow.js হল JavaScript লাইব্রেরি, যা ব্রাউজারে TensorFlow মডেল রান করার জন্য ব্যবহৃত হয়। TensorFlow মডেল .json
ফরম্যাটে রূপান্তরিত করে Web বা Node.js পরিবেশে ব্যবহার করা যায়।
# TensorFlow.js এ মডেল এক্সপোর্ট করা
!tensorflowjs_converter --input_format=tf_saved_model \
/path/to/saved_model /path/to/tfjs_model
এখানে tensorflowjs_converter ব্যবহার করে SavedModel ফরম্যাট থেকে TensorFlow.js মডেল ফরম্যাটে রূপান্তরিত করা হয়, যা পরে JavaScript এ ব্যবহার করা যাবে।
TensorFlow Hub একটি প্ল্যাটফর্ম যা মডেলগুলিকে পুনঃব্যবহারযোগ্য ফিচার হিসেবে উপলব্ধ করে। Keras এবং TensorFlow এর মডেলকে TensorFlow Hub এ আপলোড করে মডেল শেয়ার করা যেতে পারে।
# TensorFlow Hub এ মডেল আপলোড করা
import tensorflow_hub as hub
module = hub.KerasLayer('https://tfhub.dev/saved_model/my_model')
TensorFlow এবং Keras উভয়ই মডেল শেয়ারিংয়ের জন্য অনেক সহজ উপায় প্রদান করে। Keras মডেল .h5
ফরম্যাটে সংরক্ষণ করা সম্ভব, এবং TensorFlow মডেল SavedModel ফরম্যাটে সংরক্ষণ করে। TensorFlow Serving এবং TensorFlow.js এর মতো সরঞ্জামগুলি ডিপ্লয়মেন্ট এবং শেয়ারিংয়ের জন্য ব্যবহার করা যেতে পারে। এগুলি মডেলগুলিকে সহজে অন্য ডেভেলপারদের সঙ্গে শেয়ার করতে এবং পুনঃব্যবহারযোগ্য করতে সহায়ক।
Read more