আগের পর্বে আমরা অনেক সাধারণ একটি মডেল বানিয়েছিলাম। সেটার একুরেসি খুবই বাজে ছিল। আজকে আমরা তার থেকে আরেকটু ভালো মানের মডেল বানানোর চেষ্টা করব। আমি ইতিমধ্যে বলেছি যে ইমেজ ডেটার জন্য কনভ্লিউশনাল লেয়ার অনেক বেশি ভালো কাজ করে। আর কনভলিউশনাল লেয়ার সমৃদ্ধ নেটওয়ার্ককে বলা Convolutional Neural Network, সংক্ষেপে CNN. আজকে আমরা CNN মডেল বানিয়ে একই ডেটাসেট ব্যবহার করে পার্থক্য দেখব।
আজকের মডেলটিও অনেক সিম্পল হবে। কোন কমপ্লেক্স মডেলে যাবো না।
আমরা ইতিমধ্যেই জানি কিভাবে ডেটা প্রসেস করতে হবে। আগের পোস্টে বিশ্লেষণ করা আছে। তাই আগের মতই করেই ডেটাসেটকে ৩ ভাগে ভাগ করে ফেলুন। এবার চলুন সরাসরি CNN মডেলে চলে যাই। মডেলের গঠন হবে নিম্নরূপ।
model = Sequential() model.add(Conv2D(32,kernel_size=(2,2), input_shape=(64,64,3),activation='relu')) model.add(MaxPooling2D((2,2))) model.add(BatchNormalization()) model.add(Conv2D(64,kernel_size=(2,2),activation='relu')) model.add(MaxPooling2D((2,2))) model.add(BatchNormalization()) model.add(Conv2D(64,kernel_size=(2,2),activation='relu')) model.add(MaxPooling2D((2,2))) model.add(BatchNormalization()) model.add(Dense(128,activation='relu')) model.add(Flatten()) model.add(Dense(1, activation='sigmoid')) model.summary()

উপরের মডেলে প্যারামিটার সংখ্যা মাত্র ৪০ হাজার। অনেকের কাছে বেশিও মনে হতে পারে। কিন্তু আস্তে আস্তে বুঝতে পারবেন ইমেজ ক্লাসিফিকেশনের জন্য এটা অনেক বেশি সাধারণ মডেল। চলুন দেখা যাক এটা কত ভালো একুরেসি দিতে পারে আমাদেরকে। আমরা 2D ডেটা/ইমেজ ক্ল্যাসিফাই করবো তাই conv2d ব্যবহার করা হয়েছে। CNN নিয়ে আলাদা কমপক্ষ্যে ৫ টি পোস্ট লেখার ইচ্ছা আছে, তাই আর বিশ্লেষণ করছি না এখন।
from keras.optimizers import SGD opt = SGD(lr=0.001, momentum=0.9) model.compile(optimizer=opt, loss='binary_crossentropy', metrics=['accuracy'])
এবার দেখুন আমরা অপটিমাইজারকে তার লার্নিং রেটও বলে দিচ্ছি। আপনারা চাইলে এটা বদলেও দেখতে পারেন। চলুন ট্রেইন করে ফেলি আমাদের মডেল।
model.fit(X_train, y_train, epochs=30, batch_size=32, validation_data=(X_val,y_val))
আগের মতই একই ডেটা দিয়ে সমান সংখ্যক ইপোক ব্যবহার করেই ট্রেইন করবো।

উপরের ইমেজে দেখুন আগের থেকে এবারের মডেলের ট্রেনিং একুরেসি এবং ভ্যালিডেশন একুরেসি দুইটাই বেশি। চলুন দেখি টেস্ট একুরেসি কেমন।

৮২%। আগে ছিল ৫০% এর একটু উপরে। আর এখন দেখুন ৮২%। আমরা অনেক সাধারণ একটি মডেল ব্যবহার করেছি। আপনারা চাইলে কনভলিশনাল লেয়ার সংখ্যা কমিয়ে বাড়িয়ে দেখতে পারেন। এমনকি প্রতি লেয়ারের নিউরন সংখ্যাও বদলে দেখতে পারেন। আমি শেষে Dense একটা ব্যবহার করেছি হিডেন লেয়ার হিসাবে। আপনারা চাইলে আরও একটা ব্যবহার করে দেখতে পারেন। লেয়ারের নিউরন সংখ্যাও আপনি ক্যাল্কুলেট করে নিতে পারেন। সেটার জন্য আরো বিস্তারিত জানতে হবে। ইনশা আল্লাহ, আমরা বিস্তারিত জানবো ধীরে ধীরে।
প্রথম মডেল – নিউরাল নেটওয়ার্ক
