Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

TensorFlow có thể được sử dụng để cấu thành các layer bằng Python như thế nào?


TensorFlow có thể được sử dụng để cấu thành các layer bằng cách định nghĩa một lớp kế thừa từ 'ResnetIdentityBlock'. Điều này được dùng để định nghĩa một khối có thể dùng để cấu thành các layer.

Đọc thêm: TensorFlow là gì và Keras hoạt động như thế nào với TensorFlow để tạo mạng nơ-ron?

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

TensorFlow Hub là một kho chứa các mô hình TensorFlow đã được huấn luyện sẵn. TensorFlow có thể được dùng để tinh chỉnh (fine-tune) các mô hình học. 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. Sau khi làm xong, học chuyển giao (transfer learning) 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ột mô hình phân loại đã huấn luyện sẵn để nhận một hình ảnh và dự đoán nó là gì. Điều này có thể làm được mà không cần bất kỳ huấn luyện nào.

Chúng ta đang sử dụng Google Colaboratory để chạy mã dưới đây. Google Colab giúp chạy mã Python trên trình duyệt và yêu cầu cấu hình zero và truy cập miễn phí GPU. Colaboratory được xây dựng dựa trên Jupyter Notebook.

Ví dụ

print("Cấu thành các layer")
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("Layer được gọi")
block = ResnetIdentityBlock(1, [1, 2, 3])
_ = block(tf.zeros([1, 2, 3, 3]))
block.layers
len(block.variables)
block.summary()

Nguồn mã: https://www.tensorflow.org/tutorials/customization/custom_layers

Đầu ra

Cấu thành các layer
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 dư (residual block) trong ResNet được cấu thành từ các phép tích chập, chuẩn hóa batch (batch normalizations) và một shortcut.
  • Các layer có thể được lồng bên trong các layer khác.
  • Khi cần các phương thức mô hình như Model.fit, Model.evaluate và Model.save, có thể 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 layer nội bộ của nó, giúp dễ dàng kiểm tra các layer.