Tensorflow reading data tutorial में एक उदाहरण इनपुट पाइपलाइन दी जाती है। उस पाइपलाइन में डेटा string_input_producer
के साथ-साथ shuffle batch generator
में दो बार shuffled है।टेन्सफोर्लो ट्यूटोरियल: इनपुट पाइपलाइन में डुप्लिकेट शफलिंग
def input_pipeline(filenames, batch_size, num_epochs=None):
# Fist shuffle in the input pipeline
filename_queue = tf.train.string_input_producer(
filenames, num_epochs=num_epochs, shuffle=True)
example, label = read_my_file_format(filename_queue)
min_after_dequeue = 10000
capacity = min_after_dequeue + 3 * batch_size
# Second shuffle as part of the batching.
# Requiring min_after_dequeue preloaded images
example_batch, label_batch = tf.train.shuffle_batch(
[example, label], batch_size=batch_size, capacity=capacity,
min_after_dequeue=min_after_dequeue)
return example_batch, label_batch
दूसरा फेरबदल किसी भी उपयोगी उद्देश्य पूरा करता है: यहाँ कोड है? शफल बैच जनरेटर का नुकसान यह है कि min_after_dequeue
उदाहरण हमेशा उपयोगी शफल की अनुमति देने के लिए स्मृति में पूर्व-लोड किए जाते हैं। मेरे पास छवि डेटा है जो स्मृति खपत में काफी भारी है। यही कारण है कि मैं इसके बजाय normal batch generator
का उपयोग करने पर विचार कर रहा हूं। क्या डेटा को दो बार घुमाने में कोई फायदा है?
संपादित करें: अतिरिक्त प्रश्न, string_input_producer
केवल 32 की डिफ़ॉल्ट क्षमता के साथ क्यों प्रारंभ किया गया है? क्षमता के रूप में बैच_साइज के एकाधिक होने के लिए फायदेमंद नहीं होगा?