Neural Networks হল মেশিন লার্নিং এবং ডীপ লার্নিং মডেল যা প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP), কম্পিউটার ভিশন, এবং অন্যান্য বিভিন্ন জটিল কাজের জন্য ব্যবহৃত হয়। TensorFlow এবং Keras হল জনপ্রিয় লাইব্রেরি যা Neural Network মডেল তৈরি এবং প্রশিক্ষণের জন্য ব্যবহৃত হয়। এখানে আমরা দেখব কীভাবে Python দিয়ে একটি সোজা Neural Network তৈরি করা যায়।
TensorFlow/Keras দিয়ে Neural Network মডেল তৈরি করার ধাপগুলো
ধাপ ১: লাইব্রেরি ইন্সটল করা
প্রথমে, আপনি TensorFlow ইনস্টল করতে হবে। আপনি এটি পিপ (pip) ব্যবহার করে ইন্সটল করতে পারেন:
pip install tensorflow
ধাপ ২: লাইব্রেরি ইম্পোর্ট করা
এখন, Python কোডের মধ্যে লাইব্রেরিগুলি ইম্পোর্ট করুন:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
ধাপ ৩: ডেটাসেট লোড করা
এখানে আমরা MNIST ডেটাসেট ব্যবহার করব, যা হাতের লেখা ডিজিট চিহ্নিত করার জন্য ব্যবহৃত হয়। এটি Keras লাইব্রেরির মধ্যে অন্তর্ভুক্ত রয়েছে।
# MNIST ডেটাসেট লোড করা
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
# ডেটা নরমালাইজেশন (0-255 এর মধ্যে ডেটাকে 0-1 রেঞ্জে নিয়ে আসা)
x_train, x_test = x_train / 255.0, x_test / 255.0
# ডেটা শেপ পরিবর্তন (28x28 এর গ্রিড থেকে এক ভেক্টরে)
x_train = x_train.reshape((x_train.shape[0], 28 * 28))
x_test = x_test.reshape((x_test.shape[0], 28 * 28))
ধাপ ৪: মডেল তৈরি করা
এখন আমরা Neural Network মডেল তৈরি করব। এটি Sequential মডেল হবে, যার মধ্যে আমরা Dense লেয়ারগুলো যোগ করব। প্রথম লেয়ারটি input layer হবে, তারপরে কিছু hidden layers এবং সর্বশেষ একটি output layer।
# মডেল তৈরি করা
model = Sequential([
Dense(128, activation='relu', input_shape=(28*28,)), # প্রথম hidden layer
Dense(64, activation='relu'), # দ্বিতীয় hidden layer
Dense(10, activation='softmax') # output layer (10 ক্লাস, একাধিক ক্যাটাগরি)
])
# মডেল সারাংশ দেখা
model.summary()
- Dense(128, activation='relu'): এটি একটি fully connected layer (dense layer) যা 128 ইউনিট বা নিউরনের সাথে কাজ করবে এবং 'ReLU' অ্যাকটিভেশন ফাংশন ব্যবহার করবে।
- Dense(10, activation='softmax'): আউটপুট লেয়ার, যেখানে 10টি ইউনিট থাকবে, প্রতিটি ইউনিট একটি ক্লাস প্রতিনিধিত্ব করবে (MNIST ডেটাসেটে 10টি ডিজিট থাকে)। এখানে softmax অ্যাকটিভেশন ফাংশন ব্যবহার করা হয়েছে কারণ এটি কন্ট্রোল করে যে, আউটপুট ক্লাসগুলোর মধ্যে কোনটি সবচেয়ে বেশি সম্ভবনা পাবে।
ধাপ ৫: মডেল কম্পাইল করা
এখন আমাদের মডেল কম্পাইল করতে হবে, যেখানে আমরা অপটিমাইজার, লস ফাংশন, এবং মেট্রিক্স সেট করব।
# মডেল কম্পাইল করা
model.compile(optimizer=Adam(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
- Adam(): এটি একটি জনপ্রিয় অপটিমাইজার, যা গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদমের একটি উন্নত সংস্করণ।
- loss='sparse_categorical_crossentropy': এটি একটি লস ফাংশন যা বহু ক্লাসের (multi-class) জন্য ব্যবহৃত হয়।
- metrics=['accuracy']: আমরা accuracy মেট্রিক ব্যবহার করব, যাতে মডেল কতটা সঠিক পূর্বানুমান করছে তা দেখতে পারি।
ধাপ ৬: মডেল প্রশিক্ষণ (Training)
এখন, আমরা আমাদের মডেলটি প্রশিক্ষণ দেব।
# মডেল প্রশিক্ষণ
model.fit(x_train, y_train, epochs=5, batch_size=32)
- epochs=5: এটি বলে দেয় মডেল কতবার (epochs) ডেটাসেটের মাধ্যমে যাবে।
- batch_size=32: প্রতি ব্যাচে কতটি ডেটা পয়েন্ট থাকবে।
ধাপ ৭: মডেল মূল্যায়ন (Evaluation)
মডেল প্রশিক্ষণের পরে, আমরা এটি টেস্ট ডেটাসেটের ওপর মূল্যায়ন করব।
# মডেল মূল্যায়ন
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f"Test accuracy: {test_acc}")
এটি মডেলের টেস্ট ডেটাসেটের উপর accuracy এবং loss মেট্রিক্স প্রদর্শন করবে।
ধাপ ৮: ভবিষ্যদ্বাণী করা (Prediction)
একবার মডেল প্রশিক্ষিত হলে, আমরা এটি নতুন ডেটার জন্য ভবিষ্যদ্বাণী করতে ব্যবহার করতে পারি:
# ভবিষ্যদ্বাণী করা
predictions = model.predict(x_test)
# প্রথম 5 পয়েন্টের ভবিষ্যদ্বাণী দেখুন
print("Predicted labels: ", predictions.argmax(axis=1)[:5])
print("True labels: ", y_test[:5])
এটি টেস্ট ডেটাসেটের উপর প্রথম 5 পয়েন্টের জন্য ভবিষ্যদ্বাণী করবে এবং সেই সাথে প্রকৃত (true) লেবেলগুলো প্রদর্শন করবে।
সারাংশ
Neural Network মডেল তৈরি করা Python এবং Keras লাইব্রেরির মাধ্যমে খুবই সহজ। আমাদের মডেলটি fully connected লেয়ার ব্যবহার করে 784 ডিমেনশনের ইনপুট (28x28 ইমেজ) থেকে 10টি ক্লাসে আউটপুট প্রদান করবে। আপনি বিভিন্ন ধরনের অ্যাকটিভেশন ফাংশন এবং অপটিমাইজার ব্যবহার করে আপনার মডেলটির কার্যক্ষমতা উন্নত করতে পারেন।
Keras TensorFlow এর সাথে ইন্টিগ্রেটেড হয়ে কাজ করে এবং এটি একটি উচ্চ স্তরের API যা সহজেই Neural Networks তৈরি এবং প্রশিক্ষণের কাজ সহজ করে দেয়।
Read more