Según la documentación de TensorFlow , los métodos prefetch
y map
de la tf.contrib.data.Dataset
clase, ambos tienen un parámetro llamado buffer_size
.
Por prefetch
método, el parámetro se conoce como buffer_size
y 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 map
método, el parámetro se conoce como output_buffer_size
y 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 shuffle
mé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 Dataset
objeto 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 buffer
parámetros del fragmento anterior?