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