Según la documentación de TensorFlow , los métodos prefetchy mapde la tf.contrib.data.Datasetclase, ambos tienen un parámetro llamado buffer_size.
Por prefetchmétodo, el parámetro se conoce como buffer_sizey según la documentación:
buffer_size: Un tf.int64 escalar tf.Tensor, que representa el número máximo de elementos que se almacenarán en búfer al realizar la captación previa.
Para el mapmétodo, el parámetro se conoce como output_buffer_sizey según la documentación:
output_buffer_size: (Opcional). Un tf.Tensor escalar tf.int64, que representa el número máximo de elementos procesados que se almacenarán en búfer.
De igual manera para el shufflemétodo aparece la misma cantidad y según documentación:
buffer_size: Un tf.int64 escalar tf.Tensor, que representa el número de elementos de este conjunto de datos del que se tomará una muestra del nuevo conjunto de datos.
¿Cuál es la relación entre estos parámetros?
Supongamos que creo un Datasetobjeto de la siguiente manera:
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)
¿Qué papel desempeñan los bufferparámetros del fragmento anterior?