First CNN Model – নিউরাল নেটওয়ার্ক

আগের পর্বে আমরা অনেক সাধারণ একটি মডেল বানিয়েছিলাম। সেটার একুরেসি খুবই বাজে ছিল। আজকে আমরা তার থেকে আরেকটু ভালো মানের মডেল বানানোর চেষ্টা করব। আমি ইতিমধ্যে বলেছি যে ইমেজ ডেটার জন্য কনভ্লিউশনাল লেয়ার অনেক বেশি ভালো কাজ করে। আর কনভলিউশনাল লেয়ার সমৃদ্ধ নেটওয়ার্ককে বলা 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 একটা ব্যবহার করেছি হিডেন লেয়ার হিসাবে। আপনারা চাইলে আরও একটা ব্যবহার করে দেখতে পারেন। লেয়ারের নিউরন সংখ্যাও আপনি ক্যাল্কুলেট করে নিতে পারেন। সেটার জন্য আরো বিস্তারিত জানতে হবে। ইনশা আল্লাহ, আমরা বিস্তারিত জানবো ধীরে ধীরে।


2 thoughts on “First CNN Model – নিউরাল নেটওয়ার্ক”

  1. আশিক says:

    এখানে momentum এর কাজ কি?

    1. admin says:

      মডেল ট্রেনিং এর সময় এমন কিছু ক্ষেত্র সামনে আসতে পারে, যখন লোকাল মিনিমা এর জন্য আপনার মডেল আটকে যেতে পারে। যেহেতু আপনার টার্গেট থাকবে গ্লোবাল মিনিমা, এজন্য লোকাল এড়িয়ে যাবার জন্য মোমেন্টাম ব্যবহার করা হয়। Gradient Descent এবং এইসব কিছু ছোট ছোট বিষয় নিয়ে লিখব সামনে।

Leave a Reply

Your email address will not be published. Required fields are marked *