কম্পিউটার টিউটোরিয়াল

পাইথনে টেনসরফ্লো দিয়ে লেয়ার কম্পোজ (compose) করা


টেনসরফ্লো দিয়ে লেয়ার কম্পোজ করা যায় 'ResnetIdentityBlock' ক্লাসকে ইনহেরিট করে একটি ক্লাস ডিফাইন করে। এটি একটি ব্লক ডিফাইন করতে ব্যবহৃত হয় যা লেয়ারগুলো কম্পোজ করতে সাহায্য করে।

আরও পড়ুন: টেনসরফ্লো কী এবং কেরাস কীভাবে টেনসরফ্লোর সাথে কাজ করে নিউরাল নেটওয়ার্ক তৈরির জন্য?

কমপক্ষে একটি লেয়ার থাকা নিউরাল নেটওয়ার্ককে কনভোল্যুশনাল লেয়ার বলা হয়। আমরা কনভোল্যুশনাল নিউরাল নেটওয়ার্ক (CNN) ব্যবহার করে লার্নিং মডেল বানাতে পারি।

টেনসরফ্লো হাব (TensorFlow Hub) হলো প্রি-ট্রেনড টেনসরফ্লো মডেলের একটি রিপোজিটরি। টেনসরফ্লো দিয়ে লার্নিং মডেল ফাইন-টিউন করা যায়। আমরা বুঝব কীভাবে tf.keras সহ টেনসরফ্লো হাব থেকে মডেল ব্যবহার করতে হয়, একটি ইমেজ ক্লাসিফিকেশন মডেল ব্যবহার করতে হয়। একবার এটি হলে, ট্রান্সফার লার্নিং ব্যবহার করে কাস্টম ইমেজ ক্লাসের জন্য একটি মডেল ফাইন-টিউন করা যায়। এটি একটি প্রি-ট্রেনড ক্লাসিফায়ার মডেল ব্যবহার করে একটি ইমেজ लेकर সেটি কী তা প্রেডিক্ট করে। এটি কোনো ট্রেনিং ছাড়াই করা যায়।

নিচের কোড চালানোর জন্য আমরা গুগল কোলাবরেটরি (Google Colaboratory) ব্যবহার করছি। গুগল কোল্যাব বা কোলাবরেটরি ব্রাউজারের ওপর পাইথন কোড চালাতে সাহায্য করে এবং জিরো কনফিগারেশন ও ফ্রি জিপিইউ (GPU) অ্যাক্সেস দেয়। কোলাবরেটরি জুপিটার নোটবুকের ওপর বিল্ড করা হয়েছে।

উদাহরণ

print("Composing layers")
class ResnetIdentityBlock(tf.keras.Model):
    def __init__(self, kernel_size, filters):
        super(ResnetIdentityBlock, self).__init__(name='')
        filters1, filters2, filters3 = filters
        self.conv2a = tf.keras.layers.Conv2D(filters1, (1, 1))
        self.bn2a = tf.keras.layers.BatchNormalization()
        self.conv2b = tf.keras.layers.Conv2D(filters2, kernel_size, padding='same')
        self.bn2b = tf.keras.layers.BatchNormalization()
        self.conv2c = tf.keras.layers.Conv2D(filters3, (1, 1))
        self.bn2c = tf.keras.layers.BatchNormalization()
    def call(self, input_tensor, training=False):
        x = self.conv2a(input_tensor)
        x = self.bn2a(x, training=training)
        x = tf.nn.relu(x)
        x = self.conv2b(x)
        x = self.bn2b(x, training=training)
        x = tf.nn.relu(x)
        x = self.conv2c(x)
        x = self.bn2c(x, training=training)
        x += input_tensor
        return tf.nn.relu(x)

print("The layer is called")
block = ResnetIdentityBlock(1, [1, 2, 3])
_ = block(tf.zeros([1, 2, 3, 3]))
block.layers
len(block.variables)
block.summary()

কোড কרדিট: https://www.tensorflow.org/tutorials/customization/custom_layers

আউটপুট

Composing layers
The layer is called
Model: "resnet_identity_block"
_________________________________________________________________
Layer (type)                   Output Shape              Param #
=================================================================
conv2d (Conv2D)                multiple                  4
_________________________________________________________________
batch_normalization (BatchNo   multiple                  4
_________________________________________________________________
conv2d_1 (Conv2D)              multiple                  4
_________________________________________________________________
batch_normalization_1 (Batch   multiple                  8
_________________________________________________________________
conv2d_2 (Conv2D)              multiple                  9
_________________________________________________________________
batch_normalization_2 (Batch   multiple                  12
=================================================================
Total params: 41
Trainable params: 29
Non-trainable params: 12

ব্যাখ্যা

  • ResNet-এ প্রতিটি রেজিডুয়াল ব্লক কনভোলিউশন, ব্যাচ নরমালাইজেশন এবং একটি শর্টকাট দিয়ে গঠিত।

  • লেয়ারগুলো অন্য লেয়ারের ভিতরেও নেস্ট করা যায়।

  • যখন Model.fit, Model.evaluate, এবং Model.save মেথডগুলো দরকার হয়, তখন keras.Model থেকে ইনহেরিট করা যায়।

  • keras.Model, keras.layers.Layer-এর পরিবর্তে ব্যবহৃত হয়, যা ভেরিয়েবল ট্র্যাক করতে সাহায্য করে।

  • একটি keras.Model তার ইন্টারনাল লেয়ারগুলো ট্র্যাক করে, ফলে লেয়ারগুলো ইন্সপেক্ট করা সহজ হয়।

  1. পাইথনে টেনসরফ্লো ব্যবহার করে দুটি ম্যাট্রিক্স গুণ করার পদ্ধতি

  2. পাইথনে টেনসরফ্লো ব্যবহার করে দুটি ম্যাট্রিক্স যোগ করার পদ্ধতি

  3. Python-এ Keras ব্যবহার করে মডেল প্লট কীভাবে করা যায়?

  4. Python-এ Keras ফাংশনাল API ব্যবহার করে লেয়ার তৈরি করার পদ্ধতি