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

Augmentation có thể được sử dụng để giảm overfitting bằng TensorFlow và Python như thế nào?


Augmentation (tăng cường dữ liệu) có thể được sử dụng để giảm overfitting bằng cách thêm dữ liệu huấn luyện bổ sung. Điều này được thực hiện bằng cách tạo một mô hình sequential sử dụng layer 'RandomFlip'.

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

Chúng ta sẽ sử dụng Keras Sequential API, giúp xây dựng mô hình tuần tự dùng cho stack các layer đơn giản, nơi mỗi layer có chính xác một input tensor và một output tensor.

Một mạng nơ-ron chứa ít nhất một layer được gọi là layer tích chập. 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.

Một image classifier được tạo bằng keras.Sequential model, và dữ liệu được tải bằng preprocessing.image_dataset_from_directory. Dữ liệu được tải hiệu quả từ đĩa. Overfitting được xác định và các kỹ thuật được áp dụng để giảm thiểu. Các kỹ thuật này bao gồm data augmentation và dropout. Có 3700 hình ảnh hoa. Tập dữ liệu này chứa 5 thư mục con, mỗi thư mục cho một lớp. Chúng là: daisy, dandelion, roses, sunflowers, và tulips.

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.

Khi số lượng ví dụ huấn luyện nhỏ, mô hình học từ nhiễu hoặc chi tiết không mong muốn từ các ví dụ huấn luyện. Điều này ảnh hưởng tiêu cực đến hiệu suất mô hình trên ví dụ mới.

Do overfitting, mô hình sẽ không thể khái quát hóa tốt trên tập dữ liệu mới. Có nhiều cách để tránh overfitting. Chúng ta sẽ sử dụng data augmentation để khắc phục overfitting. Data augmentation tạo ra dữ liệu huấn luyện bổ sung từ các ví dụ hiện tại bằng cách tăng cường chúng với các biến đổi ngẫu nhiên tạo ra hình ảnh trông thật.

Điều này giúp mô hình tiếp xúc với nhiều khía cạnh hơn của dữ liệu, từ đó giúp mô hình khái quát hóa tốt hơn. Ví dụ sau:

Ví dụ

print("Sử dụng data augmentation để loại bỏ overfitting")
data_augmentation = keras.Sequential([
    layers.experimental.preprocessing.RandomFlip("horizontal", input_shape=(img_height, img_width, 3)),
    layers.experimental.preprocessing.RandomRotation(0.1),
    layers.experimental.preprocessing.RandomZoom(0.1),
])

Nguồn mã: https://www.tensorflow.org/tutorials/images/classification

Đầu ra

Sử dụng data augmentation để loại bỏ overfitting

Giải thích

  • Data augmentation có thể được triển khai bằng các layer từ tf.keras.layers.experimental.preprocessing.
  • Các layer này được đưa vào mô hình như các layer khác, và chạy trên GPU.
  • Điều này được làm để loại bỏ hoặc giảm overfitting.