একটি কনভোলিউশনাল নিউরাল নেটওয়ার্ক সাধারণত নিম্নলিখিত লেয়ারগুলির সংমিশ্রণ নিয়ে গঠিত হয়: কনভোলিউশনাল লেয়ার, পুলিং লেয়ার এবং ডেন্স লেয়ার।
আরও পড়ুন: টেনসরফ্লো কী এবং কেরাস কীভাবে টেনসরফ্লোর সাথে কাজ করে নিউরাল নেটওয়ার্ক তৈরি করতে?
কনভোলিউশনাল নিউরাল নেটওয়ার্ক নির্দিষ্ট ধরনের সমস্যাগুলোর জন্য চমৎকার ফলাফল দেওয়ার কারণে বিখ্যাত, বিশেষ করে চিত্র সনাক্তকরণে। এটি models ক্লাসে থাকা Sequential পদ্ধতিতে তৈরি করা যায়। এই কনভোলিউশনাল নেটওয়ার্কে add পদ্ধতিতে লেয়ার যোগ করা যায়।
আমরা কেরাস Sequential API ব্যবহার করব, যা সিকোয়েনশিয়াল মডেল তৈরিতে সহায়ক যেখানে প্রতিটি লেয়ারের ঠিক একটি ইনপুট টেনসর এবং একটি আউটপুট টেনসর থাকে।
নিচের কোড চালাতে আমরা Google Colaboratory ব্যবহার করছি। Google Colab বা Colaboratory ব্রাউজারে পাইথন কোড চালাতে সাহায্য করে এবং শূন্য কনফিগারেশনের সাথে ফ্রি GPU (গ্রাফিক্যাল প্রসেসিং ইউনিট) অ্যাক্সেস দেয়। Colaboratory Jupyter Notebook-এর উপরে তৈরি।
print("Creating the convolutional base")
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
print("Description of architecture is")
model.summary()
কোড ক্রেডিট: https://www.tensorflow.org/tutorials/images/cnn
আউটপুট
Creating the convolutional base Description of arhcitecture is Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 30, 30, 32) 896 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 13, 13, 64) 18496 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 4, 4, 64) 36928 ================================================================= Total params: 56,320 Trainable params: 56,320 Non-trainable params: 0
ব্যাখ্যা
- উপরোক্ত লাইনগুলো একটি সাধারণ প্যাটার্ন ব্যবহার করে কনভোলিউশনাল বেস সংজ্ঞায়িত করে।
- এই প্যাটার্ন হলো Conv2D এবং MaxPooling2D লেয়ারগুলোর একটি স্ট্যাক।
- ইনপুট হিসেবে, যা একটি CNN (image_height, image_width, color_channels) আকারের টেনসর গ্রহণ করে, নেওয়া হয়।
- CNN কে (32, 32, 3) আকারের ইনপুট প্রসেস করার জন্য কনফিগার করা হয়, যা CIFAR চিত্রগুলির ফরম্যাট।
- এটি প্রথম লেয়ারের
input_shapeআর্গুমেন্ট পাস করে করা যায়। - প্রতিটি Conv2D এবং MaxPooling2D লেয়ারের আউটপুট হলো (height, width, channels) আকারের একটি 3D টেনসর।
- নেটওয়ার্ক যত গভীর হয়, চওড়া ও উচ্চতা ডাইমেনশন তত ছোট হয়।
- প্রতিটি Conv2D লেয়ারের আউটপুট চ্যানেলের সংখ্যা প্রথম আর্গুমেন্ট দ্বারা নিয়ন্ত্রিত হয় (যেমন 32 বা 64)।