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

Cách sử dụng TensorFlow để tạo cơ sở tích chập (convolutional base) bằng Python

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 Conv2D và 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_shape chỉ được truyền cho lớp đầu tiên.
  • Đầu ra của mỗi lớp Conv2D và MaxPooling2D là 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).