Điều này chỉ xác định kích thước tối đa của hàng đợi đào tạo nội bộ được sử dụng để "precache" mẫu của bạn từ trình tạo. Nó được sử dụng trong thế hệ của các hàng đợi
def generator_queue(generator, max_q_size=10,
wait_time=0.05, nb_worker=1):
'''Builds a threading queue out of a data generator.
Used in `fit_generator`, `evaluate_generator`, `predict_generator`.
'''
q = queue.Queue()
_stop = threading.Event()
def data_generator_task():
while not _stop.is_set():
try:
if q.qsize() < max_q_size:
try:
generator_output = next(generator)
except ValueError:
continue
q.put(generator_output)
else:
time.sleep(wait_time)
except Exception:
_stop.set()
raise
generator_threads = [threading.Thread(target=data_generator_task)
for _ in range(nb_worker)]
for thread in generator_threads:
thread.daemon = True
thread.start()
return q, _stop
Nói cách khác bạn có một chủ đề đầy hàng đợi lên đến nhất định, công suất tối đa trực tiếp từ máy phát điện của bạn, trong khi (ví dụ) thường xuyên đào tạo tiêu thụ yếu tố của nó (và đôi khi chờ hoàn thành)
while samples_seen < samples_per_epoch:
generator_output = None
while not _stop.is_set():
if not data_gen_queue.empty():
generator_output = data_gen_queue.get()
break
else:
time.sleep(wait_time)
và tại sao mặc định là 10? Không có lý do cụ thể, giống như hầu hết các mặc định - nó chỉ đơn giản là có ý nghĩa, nhưng bạn cũng có thể sử dụng các giá trị khác nhau.
Xây dựng như thế này cho thấy, tác giả nghĩ về máy phát dữ liệu đắt tiền, có thể mất thời gian để cắt. Ví dụ: xem xét tải xuống dữ liệu qua mạng trong cuộc gọi của trình tạo - sau đó tải xuống trước một số đợt tiếp theo và tải xuống các phần tiếp theo song song vì mục đích hiệu quả và mạnh mẽ đối với lỗi mạng, v.v.
Ah, tôi hiểu, vì vậy lý tưởng bạn không bao giờ ngừng đào tạo trên chờ đợi cho máy phát điện để tạo ra kết quả - bạn có một chủ đề điền vào hàng đợi lên âm thầm ở phía sau trong khi mô hình được đào tạo trên các mẫu lấy trước. – Ray
Vâng, đây là một kịch bản hoàn hảo. Mà rõ ràng phụ thuộc vào kích thước của hàng đợi và thiết kế hệ thống tổng thể. – lejlot