Cách đặt batch_size, step_per epoch và các bước xác thực


26

Tôi đang bắt đầu học CNN bằng cách sử dụng Keras. Tôi đang sử dụng phụ trợ theano.

Tôi không hiểu cách đặt giá trị thành:

  • lô_size,
  • bước trên mỗi kỷ nguyên,
  • xác nhận_ bước.

Giá trị nào được đặt thành batch_size, các bước trên mỗi epoch và các bước xác thực nếu tôi có 240.000 mẫu trong tập huấn luyện và 80.000 trong tập kiểm tra?


Thông số kỹ thuật phần cứng của bạn là gì? Nó phụ thuộc vào việc mọi người thường sử dụng kích thước lô 32/64, epoch là 10 ~ 15 và sau đó bạn có thể tính các bước trên mỗi epoch từ trên ..
Aditya

Câu trả lời:


28
  • batch_size xác định số lượng mẫu trong mỗi lô nhỏ. Tối đa của nó là số lượng của tất cả các mẫu, làm cho độ dốc giảm dần chính xác, tổn thất sẽ giảm xuống mức tối thiểu nếu tốc độ học tập đủ nhỏ, nhưng lặp lại chậm hơn. Tối thiểu của nó là 1, dẫn đến giảm độ dốc ngẫu nhiên: Nhanh nhưng hướng của bước gradient chỉ dựa trên một ví dụ, tổn thất có thể nhảy xung quanh. batch_size cho phép điều chỉnh giữa hai thái cực: hướng dốc chính xác và lặp lại nhanh. Ngoài ra, giá trị tối đa cho batch_size có thể bị giới hạn nếu mô hình + bộ dữ liệu của bạn không vừa với bộ nhớ (GPU) khả dụng.
  • step_per_epoch số lần lặp lại hàng loạt trước khi một kỷ nguyên đào tạo được coi là kết thúc. Nếu bạn có một tập huấn luyện có kích thước cố định, bạn có thể bỏ qua nó nhưng nó có thể hữu ích nếu bạn có một tập dữ liệu khổng lồ hoặc nếu bạn đang tạo ra sự gia tăng dữ liệu ngẫu nhiên, tức là nếu tập huấn luyện của bạn có kích thước vô hạn (được tạo). Nếu bạn có thời gian để xem toàn bộ tập dữ liệu huấn luyện của mình, tôi khuyên bạn nên bỏ qua tham số này.
  • validation_steps tương tự như steps_per_epoch nhưng trên các dữ liệu xác nhận thiết lập thay vì trên các dữ liệu huấn luyện. Nếu bạn có thời gian để duyệt toàn bộ dữ liệu xác nhận của mình, tôi khuyên bạn nên bỏ qua tham số này.

Bạn có ý nghĩa gì khi "bỏ qua tham số này"? Khi tôi loại bỏ tham số tôi nhận được When using data tensors as input to a model, you should specify the steps_per_epoch argument.
Nicolas Raoul

Theo tài liệu, tham số step_per_epoch của phương thức phù hợp có mặc định và do đó nên là tùy chọn: "Không có giá trị mặc định bằng với số lượng mẫu trong tập dữ liệu của bạn chia cho kích thước lô hoặc 1 nếu không thể xác định được." Nguồn: keras.io/models/model
Silpion

1

có một câu trả lời trong Github

  1. model.fit_generator yêu cầu trình tạo dữ liệu đầu vào để chạy vô hạn.
  2. steps_per_epochđược sử dụng để tạo toàn bộ tập dữ liệu một lần bằng cách gọi steps_per_epochlần tạo
  3. trong khi epochsđưa ra số lần mô hình được đào tạo trên toàn bộ tập dữ liệu.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.