Zgodnie TensorFlow dokumentacji , to prefetchi mapmetody tf.contrib.data.Datasetklasy, obie posiadają parametr zwany buffer_size.
W przypadku prefetchmetody parametr jest znany jako buffer_sizei zgodnie z dokumentacją:
buffer_size: tf.int64 skalarny tf.Tensor, reprezentujący maksymalną liczbę elementów, które będą buforowane podczas wstępnego pobierania.
W mapmetodzie parametr jest znany jako output_buffer_sizei zgodnie z dokumentacją:
output_buffer_size: (opcjonalny). Tf.Tensor skalarny tf.int64, reprezentujący maksymalną liczbę przetwarzanych elementów, które będą buforowane.
Podobnie dla shufflemetody pojawia się ta sama ilość i zgodnie z dokumentacją:
buffer_size: skalarny tf.int64 tf.Tensor, reprezentujący liczbę elementów z tego zbioru danych, z których będzie próbkowany nowy zestaw danych.
Jaka jest zależność między tymi parametrami?
Załóżmy, że utworzę Datasetobiekt w następujący sposób:
tr_data = TFRecordDataset(trainfilenames)
tr_data = tr_data.map(providefortraining, output_buffer_size=10 * trainbatchsize, num_parallel_calls\
=5)
tr_data = tr_data.shuffle(buffer_size= 100 * trainbatchsize)
tr_data = tr_data.prefetch(buffer_size = 10 * trainbatchsize)
tr_data = tr_data.batch(trainbatchsize)
Jaką rolę odgrywają bufferparametry w powyższym fragmencie?