Significado de buffer_size en Dataset.map, Dataset.prefetch y Dataset.shuffle
Según TensorFlowdocumentación , elprefetch
ymap
métodos detf.contrib.data.Dataset
clase, ambos tienen un parámetro llamadobuffer_size
.
porprefetch
método, el parámetro se conoce comobuffer_size
y de acuerdo con la documentación:
buffer_size: un tf.int64 scalar tf.Tensor, que representa el número máximo de elementos que se almacenarán en el búfer cuando se recupere previamente.
Para elmap
método, el parámetro se conoce comooutput_buffer_size
y de acuerdo con la documentación:
output_buffer_size: (Opcional). Un tf.int64 scalar tf.Tensor, que representa el número máximo de elementos procesados que se almacenarán en el búfer.
Del mismo modo para elshuffle
método, aparece la misma cantidad y según la documentación:
buffer_size: Un tf.int64 scalar tf.Tensor, que representa el número de elementos de este conjunto de datos de los cuales se muestreará el nuevo conjunto de datos.
¿Cuál es la relación entre estos parámetros?
Supongamos que creo unDataset
objetar 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 está jugando elbuffer
parámetros en el fragmento anterior?