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

Python-এ ফাংশনাল API ব্যবহার করে রেজিডুয়াল কানেকশন নিয়ে কাজ করা


Keras TensorFlow প্যাকেজের ভিতরে রয়েছে। নিচের কোড লাইন ব্যবহার করে এটিকে অ্যাক্সেস করা যায়:

import tensorflow
from tensorflow import keras

Keras ফাংশনাল API সিকোয়েনশিয়াল API-র তুলনায় আরও নমনীয় মডেল তৈরি করতে সাহায্য করে। ফাংশনাল API নন-লিনিয়ার টপোলজি वाले মডেল, শেয়ার করা লেয়ার, এবং একাধিক ইনপুট-আউটপুট নিয়ে কাজ করতে পারে। একটি গভীর শিক্ষার মডেল সাধারণত একটি ডায়RECTেড এসাইক্লিক গ্রাফ (DAG) যাতে একাধিক লেয়ার থাকে। ফাংশনাল API লেয়ার গ্রাফ তৈরি করতে সাহায্য করে।

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

উদাহরণ

print("CIFAR10-এর জন্য টয় ResNet মডেল")
print("মডেলের জন্য লেয়ার তৈরি করা হচ্ছে")
inputs = keras.Input(shape=(32, 32, 3), name="img")
x = layers.Conv2D(32, 3, activation="relu")(inputs)
x = layers.Conv2D(64, 3, activation="relu")(x)
block_1_output = layers.MaxPooling2D(3)(x)
x = layers.Conv2D(64, 3, activation="relu", padding="same")(block_1_output)
x = layers.Conv2D(64, 3, activation="relu", padding="same")(x)
block_2_output = layers.add([x, block_1_output])
x = layers.Conv2D(64, 3, activation="relu", padding="same")(block_2_output)
x = layers.Conv2D(64, 3, activation="relu", padding="same")(x)
block_3_output = layers.add([x, block_2_output])
x = layers.Conv2D(64, 3, activation="relu")(block_3_output)
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dense(256, activation="relu")(x)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(10)(x)
model = keras.Model(inputs, outputs, name="toy_resnet")
print("মডেল সম্পর্কে আরও তথ্য")
model.summary()

কোড ক্রেডিট - https://www.tensorflow.org/guide/keras/functional

আউটপুট

Toy ResNet model for CIFAR10
Layers generated for model
More information about the model
Model: "toy_resnet"
________________________________________________________________________________ __________________
Layer (type)                   Output Shape              Param #     Connected to
================================================================================ ==================
img (InputLayer)               [(None, 32, 32, 3)]       0
________________________________________________________________________________ __________________
conv2d_32 (Conv2D)             (None, 30, 30, 32)        896         img[0][0]
________________________________________________________________________________ __________________
conv2d_33 (Conv2D)             (None, 28, 28, 64)        18496       conv2d_32[0][0]
________________________________________________________________________________ __________________
max_pooling2d_8 (MaxPooling2D) (None, 9, 9, 64)          0           conv2d_33[0][0]
________________________________________________________________________________ __________________
conv2d_34 (Conv2D)             (None, 9, 9, 64)          36928       max_pooling2d_8[0][0]
________________________________________________________________________________ __________________
conv2d_35 (Conv2D)             (None, 9, 9, 64)          36928       conv2d_34[0][0]
________________________________________________________________________________ __________________
add_12 (Add)                   (None, 9, 9, 64)          0           conv2d_35[0][0], max_pooling2d_8[0][0]
________________________________________________________________________________ __________________
conv2d_36 (Conv2D)             (None, 9, 9, 64)          36928       add_12[0][0]
________________________________________________________________________________ __________________
conv2d_37 (Conv2D)             (None, 9, 9, 64)          36928       conv2d_36[0][0]
________________________________________________________________________________ __________________
add_13 (Add)                   (None, 9, 9, 64)          0           conv2d_37[0][0], add_12[0][0]
________________________________________________________________________________ __________________
conv2d_38 (Conv2D)             (None, 7, 7, 64)          36928       add_13[0][0]
________________________________________________________________________________ __________________
global_average_pooling2d_1 (Glo (None, 64)                0           conv2d_38[0][0]
________________________________________________________________________________ __________________
dense_40 (Dense)               (None, 256)               16640       global_average_pooling2d_1[0][0]
________________________________________________________________________________ __________________
dropout_2 (Dropout)            (None, 256)               0           dense_40[0][0]
________________________________________________________________________________ __________________
dense_41 (Dense)               (None, 10)                2570        dropout_2[0][0]
================================================================================ ==================
Total params: 223,242
Trainable params: 223,242
Non-trainable params: 0
________________________________________________________________________________ __________________

ব্যাখ্যা

  • মডেলের একাধিক ইনপুট এবং আউটপুট রয়েছে।

  • ফাংশনাল API নন-লিনিয়ার কানেক্টিভিটি টপোলজির সাথে কাজ করা সহজ করে।

  • লেয়ারসহ এই মডেল সিকোয়েনশিয়ালি কানেক্টেড নয়, তাই 'Sequential' API এর সাথে এটি কাজ করতে পারে না।

  • এখানেই রেজিডুয়াল কানেকশন কাজে আসে।

  • এটি প্রদর্শন করার জন্য CIFAR10 ব্যবহার করে একটি নমুনা ResNet মডেল তৈরি করা হয়েছে।


  1. পাইথনে পাইগ্যাল (Pygal) ব্যবহার করে ট্রিম্যাপ (Treemap) ভিজ্যুয়ালাইজ করার পদ্ধতি

  2. Python প্রোগ্রামে Keras ব্যবহার করে মডেল প্লট কীভাবে করা যায়?

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

  4. পাইথনে API রেজাল্ট ভিজ্যুয়ালাইজ করার টিউটোরিয়াল