यह केवल आंतरिक प्रशिक्षण कतार के अधिकतम आकार को परिभाषित करता है जिसका प्रयोग जनरेटर से आपके नमूने को "सटीक" करने के लिए किया जाता है। यह कतारों की पीढ़ी के दौरान प्रयोग किया जाता है
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
दूसरे शब्दों में आप जबकि (उदाहरण के लिए) नियमित प्रशिक्षण उसके तत्वों (खपत और कभी कभी, एक धागा कतार अपने जनरेटर से सीधे देखते हुए अधिकतम क्षमता को भरने के लिए है पूरा होने की प्रतीक्षा करता है)
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)
और 10 का डिफ़ॉल्ट क्यों? किसी भी विशेष कारण, जैसे कि अधिकांश डिफ़ॉल्ट - यह केवल समझ में आता है, लेकिन आप विभिन्न मानों का भी उपयोग कर सकते हैं।
इस तरह के निर्माण से पता चलता है कि लेखकों ने महंगी डेटा जेनरेटर के बारे में सोचा था, जिसमें पता लगाने में समय लग सकता है। उदाहरण के लिए जेनरेटर कॉल में किसी नेटवर्क पर डेटा डाउनलोड करने पर विचार करें - फिर कुछ अगले बैचों को सटीक करने के लिए समझदारी होती है, और दक्षता के लिए समानांतर में अगली डाउनलोड करें और नेटवर्क त्रुटियों आदि के लिए मजबूत हो।
आह, मैं देखता हूं, तो आदर्श रूप से आप जनरेटर के परिणाम उत्पन्न करने के लिए इंतजार करने पर प्रशिक्षण कभी नहीं रोकते - आपके पास थ्रेड में चुपचाप कतार भरना होता है जबकि मॉडल पूर्व प्राप्त नमूने पर प्रशिक्षण दे रहा है। – Ray
हां, यह एक आदर्श परिदृश्य है। जो स्पष्ट रूप से कतार और समग्र सिस्टम डिज़ाइन के आकार पर निर्भर करता है। – lejlot