Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để Tensorflow có thể được sử dụng để soạn các lớp bằng Python?

Tensorflow có thể được sử dụng để soạn các lớp bằng cách xác định một lớp kế thừa từ ‘ResnetIdentityBlock’. Điều này được sử dụng để xác định một khối có thể được sử dụng để tạo các lớp.

Đọc thêm: TensorFlow là gì và cách Keras làm việc với TensorFlow để tạo Mạng thần kinh?

Một mạng nơ-ron chứa ít nhất một lớp được gọi là lớp chập. Chúng ta có thể sử dụng Mạng thần kinh hợp pháp để xây dựng mô hình học tập.

TensorFlow Hub là một kho chứa các mô hình TensorFlow được đào tạo trước. TensorFlow có thể được sử dụng để tinh chỉnh các mô hình học tập. Chúng ta sẽ hiểu cách sử dụng các mô hình từ TensorFlow Hub với tf.keras, sử dụng mô hình phân loại hình ảnh từ TensorFlow Hub. Khi điều này được thực hiện, việc học chuyển giao có thể được thực hiện để tinh chỉnh mô hình cho các lớp hình ảnh tùy chỉnh. Điều này được thực hiện bằng cách sử dụng mô hình phân loại được đào tạo trước để chụp ảnh và dự đoán nó là gì. Điều này có thể được thực hiện mà không cần bất kỳ đào tạo.

Chúng tôi đang sử dụng Google Colaboratory để chạy đoạn mã dưới đây. Google Colab hoặc Colaboratory giúp chạy mã Python qua trình duyệt và không yêu cầu cấu hình cũng như quyền truy cập miễn phí vào GPU (Đơn vị xử lý đồ họa). Colaboratory đã được xây dựng trên Jupyter Notebook.

Ví dụ

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()

Tín dụng mã −https://www.tensorflow.org/tutorials/customization/custom_layers

Đầu ra

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

Giải thích

  • Mọi khối còn lại trong mạng lưới lại bao gồm các tập hợp, chuẩn hóa hàng loạt và một phím tắt.

  • Các lớp cũng có thể được lồng vào bên trong các lớp khác.

  • Khi chúng ta cần các phương thức mô hình như Model.fit, Model.evaluate và Model.save, nó có thể được kế thừa từ keras.Model.

  • Keras.Model được sử dụng thay vì keras.layers.Layer, giúp theo dõi các biến.

  • Một keras.Model theo dõi các lớp bên trong của nó, do đó giúp kiểm tra các lớp dễ dàng hơn