Tensorflow का उपयोग 'ResnetIdentityBlock' से विरासत में मिले वर्ग को परिभाषित करके परतों की रचना के लिए किया जा सकता है। इसका उपयोग एक ब्लॉक को परिभाषित करने के लिए किया जाता है जिसका उपयोग परतों को बनाने के लिए किया जा सकता है।
और पढ़ें: TensorFlow क्या है और Keras कैसे तंत्रिका नेटवर्क बनाने के लिए TensorFlow के साथ काम करता है?
एक तंत्रिका नेटवर्क जिसमें कम से कम एक परत होती है, एक दृढ़ परत के रूप में जानी जाती है। हम लर्निंग मॉडल बनाने के लिए कन्वेन्शनल न्यूरल नेटवर्क का उपयोग कर सकते हैं।
TensorFlow हब एक भंडार है जिसमें पूर्व-प्रशिक्षित TensorFlow मॉडल शामिल हैं। TensorFlow का उपयोग सीखने के मॉडल को ठीक करने के लिए किया जा सकता है। हम समझेंगे कि tf.keras के साथ TensorFlow हब से मॉडल का उपयोग कैसे करें, TensorFlow हब से छवि वर्गीकरण मॉडल का उपयोग करें। एक बार यह हो जाने के बाद, अनुकूलित छवि वर्गों के लिए एक मॉडल को फाइन-ट्यून करने के लिए ट्रांसफर लर्निंग की जा सकती है। यह एक छवि लेने के लिए एक पूर्व-प्रशिक्षित क्लासिफायरियर मॉडल का उपयोग करके किया जाता है और भविष्यवाणी करता है कि यह क्या है। यह बिना किसी प्रशिक्षण की आवश्यकता के किया जा सकता है।
हम नीचे दिए गए कोड को चलाने के लिए Google सहयोग का उपयोग कर रहे हैं। Google Colab या 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
स्पष्टीकरण
-
एक रेसनेट में प्रत्येक अवशिष्ट ब्लॉक कनवल्शन, बैच सामान्यीकरण और एक शॉर्टकट से बना होता है।
-
परतों को अन्य परतों के अंदर भी नेस्ट किया जा सकता है।
-
जब हमें Model.fit,Model.evaluate, और Model.save जैसी मॉडल विधियों की आवश्यकता होती है, तो इसे keras.Model से इनहेरिट किया जा सकता है।
-
keras.layers.Layer के बजाय keras.Model का उपयोग किया जाता है, जो चर को ट्रैक करने में मदद करता है।
-
एक keras.Model अपनी आंतरिक परतों को ट्रैक करता है, जिससे परतों का निरीक्षण करना आसान हो जाता है