Theano দিয়ে Simple Neural Network প্রজেক্ট তৈরি

বাস্তব উদাহরণ এবং প্রজেক্ট ডেমো - থিয়ানো (Theano) - Machine Learning

319

CNN (Convolutional Neural Networks) এবং RNN (Recurrent Neural Networks) দুটি শক্তিশালী নিউরাল নেটওয়ার্ক আর্কিটেকচার যা বিভিন্ন ধরণের ডেটা (যেমন চিত্র এবং সিকুয়েন্স ডেটা) মডেল করতে ব্যবহৃত হয়।

এখানে আমরা Image Data এবং Sequence Data এর জন্য CNN এবং RNN ব্যবহার করে মডেল তৈরি করার জন্য উদাহরণ দেখাবো।


১. CNN দিয়ে Image Data মডেল তৈরি:

CNN (Convolutional Neural Networks) বিশেষভাবে চিত্র (Image) ডেটা মডেল করার জন্য ডিজাইন করা হয়েছে। এটি বিভিন্ন কনভোলিউশনাল লেয়ার ব্যবহার করে ইনপুট চিত্রের বৈশিষ্ট্য বের করে এবং ফিচার ম্যাপ তৈরি করে।

CNN মডেল তৈরি করার ধাপ:

  1. Data Preprocessing:
    • ডেটা প্রিপ্রসেসিং এর মধ্যে চিত্র আকার সমন্বয়, স্কেলিং এবং নরমালাইজেশন অন্তর্ভুক্ত।
  2. Model Definition:
    • কনভোলিউশনাল লেয়ার, পুলিং লেয়ার এবং ডেন্স লেয়ার ব্যবহার করে মডেল তৈরির প্রক্রিয়া।
  3. Compile and Train the Model:
    • মডেল কম্পাইল করা, হার্বল ফাংশন সেট করা এবং মডেলটি প্রশিক্ষিত করা।

Example (CNN for Image Classification using Keras):

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from keras.datasets import cifar10
from keras.utils import to_categorical

# ডেটা লোড এবং প্রিপ্রসেসিং
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0  # Normalize images to [0, 1]
y_train, y_test = to_categorical(y_train, 10), to_categorical(y_test, 10)

# মডেল তৈরি
model = Sequential()

# কনভোলিউশনাল লেয়ার
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))

# আরেকটি কনভোলিউশনাল লেয়ার
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# ফ্ল্যাটেন লেয়ার
model.add(Flatten())

# ডেন্স লেয়ার
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))  # 10 কেটেগরি

# মডেল কম্পাইল
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# মডেল প্রশিক্ষণ
model.fit(x_train, y_train, epochs=10, 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}")

Explanation:

  • Conv2D: এটি একটি কনভোলিউশনাল লেয়ার যা চিত্রের বৈশিষ্ট্য বের করে।
  • MaxPooling2D: এটি পুলিং অপারেশন যা চিত্রের রেজল্যুশন কমিয়ে আনে।
  • Flatten: এটি 2D আউটপুটকে 1D আউটপুটে রূপান্তরিত করে ডেন্স লেয়ারকে ইনপুট হিসেবে দেয়।
  • Dense: একটি সাধারণ ডেন্স লেয়ার যা ফাইনাল আউটপুট (softmax) প্রদান করে।

এই মডেলটি CIFAR-10 ডেটাসেটের ১০টি কেটেগরি চিত্র শ্রেণীবিভাগের জন্য প্রশিক্ষিত হবে।


২. RNN দিয়ে Sequence Data মডেল তৈরি:

RNN (Recurrent Neural Networks) সাধারণত সিকুয়েন্স ডেটা (যেমন টেক্সট, সময়ের সাথে পরিবর্তিত ডেটা, বা সিকুয়েন্স) মডেল করার জন্য ব্যবহৃত হয়। RNN তার পূর্ববর্তী স্টেট (hidden state) ব্যবহার করে সিকুয়েন্সের তথ্য শিখতে পারে।

RNN মডেল তৈরি করার ধাপ:

  1. Data Preprocessing:
    • সিকুয়েন্স ডেটার জন্য টোকেনাইজেশন এবং প্যাডিং।
  2. Model Definition:
    • RNN, LSTM (Long Short-Term Memory), বা GRU (Gated Recurrent Unit) লেয়ার ব্যবহার।
  3. Compile and Train the Model:
    • মডেল কম্পাইল এবং ট্রেনিং প্রক্রিয়া।

Example (RNN for Text Classification using Keras):

from keras.models import Sequential
from keras.layers import SimpleRNN, Embedding, Dense
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from sklearn.model_selection import train_test_split

# সিকুয়েন্স ডেটা প্রস্তুতি (উদাহরণ হিসেবে কিছু টেক্সট ডেটা)
texts = ["I love machine learning", "Deep learning is great", "I love coding", "Python is awesome"]
labels = [1, 1, 1, 0]  # 1: Positive, 0: Negative

# টোকেনাইজেশন
tokenizer = Tokenizer(num_words=1000)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)

# প্যাডিং
X = pad_sequences(sequences, maxlen=10)
y = labels

# ডেটা ট্রেন এবং টেস্টে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)

# RNN মডেল তৈরি
model = Sequential()
model.add(Embedding(input_dim=1000, output_dim=64, input_length=10))  # Embedding layer for text input
model.add(SimpleRNN(64))  # Simple RNN layer
model.add(Dense(1, activation='sigmoid'))  # Sigmoid for binary classification

# মডেল কম্পাইল
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# মডেল প্রশিক্ষণ
model.fit(X_train, y_train, epochs=10, batch_size=2, validation_data=(X_test, y_test))

# মডেল মূল্যায়ন
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Test accuracy: {test_acc}")

Explanation:

  • Tokenizer: টেক্সট ডেটাকে টোকেনাইজ করে ইনডেক্স নেয় এবং তারপর সিকুয়েন্সে রূপান্তরিত করা হয়।
  • Embedding: টেক্সট ডেটাকে ইনপুট হিসেবে embedding layer দিয়ে রূপান্তরিত করা হয়।
  • SimpleRNN: RNN লেয়ার, যা সিকুয়েন্স ডেটা থেকে তথ্য শিখে এবং পরবর্তী আউটপুট তৈরি করে।
  • Dense: ফাইনাল লেয়ার, যা আউটপুট হিসেবে sigmoid (binary classification) ব্যবহার করে।

এই মডেলটি টেক্সট ক্লাসিফিকেশন এর জন্য প্রশিক্ষিত হবে, যেখানে 1 হল পজিটিভ এবং 0 হল নেগেটিভ।


সারাংশ:

  • CNN (Convolutional Neural Networks) চিত্র ডেটা মডেল করার জন্য ব্যবহার করা হয়। এটি কনভোলিউশনাল লেয়ার ব্যবহার করে চিত্রের বৈশিষ্ট্য বের করে এবং শ্রেণীবিভাগ বা অন্য কাজ করে।
  • RNN (Recurrent Neural Networks) সিকুয়েন্স ডেটা মডেল করার জন্য ব্যবহৃত হয়, যেখানে পূর্ববর্তী স্টেট ব্যবহার করে ডেটার লুকানো প্যাটার্ন শিখে। LSTM এবং GRU এর মতো উন্নত আর্কিটেকচার সিকুয়েন্স ডেটা পরিচালনায় আরও দক্ষ।
  • Image Classification এর জন্য CNN ব্যবহার করা হয় এবং Text Classification এর জন্য RNN বা LSTM ব্যবহার করা হয়।
Content added By
Promotion

Are you sure to start over?

Loading...