如何使用 Python 在 Tensorflow 中組合層?


Tensorflow 可以透過定義一個繼承自 'ResnetIdentityBlock' 的類來組合層。這用於定義一個塊,該塊可用於組合層。

閱讀更多: 什麼是 TensorFlow 以及 Keras 如何與 TensorFlow 協同工作以建立神經網路?

包含至少一層的神經網路稱為卷積層。我們可以使用卷積神經網路構建學習模型。

TensorFlow Hub 是一個包含預訓練 TensorFlow 模型的儲存庫。 TensorFlow 可用於微調學習模型。 我們將瞭解如何使用 TensorFlow Hub 中的模型與 tf.keras,使用 TensorFlow Hub 中的影像分類模型。完成此操作後,可以執行遷移學習以針對自定義影像類別微調模型。這是透過使用預訓練的分類器模型來獲取影像並預測它是做什麼的來完成的。這可以在不需要任何訓練的情況下完成。

我們正在使用 Google Colaboratory 來執行以下程式碼。Google Colab 或 Colaboratory 幫助透過瀏覽器執行 Python 程式碼,並且無需任何配置即可免費訪問 GPU(圖形處理單元)。Colaboratory 建立在 Jupyter Notebook 之上。

示例

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 會跟蹤其內部層,從而更容易檢查這些層。

更新於: 2021年2月25日

182 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.