Một mạng nơ-ron tích chập (CNN) thường bao gồm sự kết hợp của các lớp sau: lớp tích chập (Convolutional), lớp gom nhóm (Pooling) và lớp hoàn toàn kết nối (Dense).
Xây dựng mô hình CNN với Keras Sequential API
Chúng ta sử dụng Keras Sequential API để xây dựng mô hình tuần tự – một chồng các lớp nơi mỗi lớp có chính xác một tensor đầu vào và một tensor đầu ra. Các lớp được thêm vào bằng phương thức add().
Mã ví dụ dưới đây chạy trên Google Colaboratory – môi trường Jupyter Notebook dựa trên đám mây, cung cấp GPU miễn phí và không cần cấu hình.
print("Đang tạo cơ sở tích chập")
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
print("Mô tả kiến trúc:")
model.summary()
Nguồn mã: TensorFlow Tutorials
Đầu ra mô hình
Đang tạo cơ sở tích chập Mô tả kiến trúc: Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 30, 30, 32) 896 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 13, 13, 64) 18496 _________________________________________________________________ max_pooling2d_1 (MaxPooling2D)(None, 6, 6, 64) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 4, 4, 64) 36928 ================================================================= Total params: 56,320 Trainable params: 56,320 Non-trainable params: 0
Giải thích chi tiết
- Cơ sở tích chập được định nghĩa theo mẫu phổ biến: chồng xen kẽ các lớp
Conv2DvàMaxPooling2D. - Đầu vào của CNN là tensor hình dạng
(chiều_cao, chiều_rộng, kênh_màu). Ở đây là(32, 32, 3)– định dạng ảnh CIFAR. - Tham số
input_shapechỉ được truyền cho lớp đầu tiên. - Đầu ra của mỗi lớp
Conv2DvàMaxPooling2Dlà tensor 3D(height, width, channels). - Kích thước không gian (width, height) thu nhỏ dần khi mạng sâu hơn.
- Số kênh đầu ra của mỗi lớp
Conv2Dđược kiểm soát bởi tham số đầu tiên (ví dụ: 32 hoặc 64).