Согласно TensorFlow документации , то prefetchи mapметоды tf.contrib.data.Datasetкласса, оба имеют параметр с именем buffer_size.
Для prefetchметода параметр известен как buffer_sizeи согласно документации:
buffer_size: скаляр tf.int64 tf.Tensor, представляющий максимальное количество элементов, которые будут буферизованы при предварительной выборке.
Для mapметода параметр известен как output_buffer_sizeи согласно документации:
output_buffer_size: (Необязательно.) Скаляр tf.int64 tf.Tensor, представляющий максимальное количество обрабатываемых элементов, которые будут помещены в буфер.
Аналогично для shuffleметода появляется такое же количество и согласно документации:
buffer_size: скаляр tf.int64 tf.Tensor, представляющий количество элементов из этого набора данных, из которых будет выполняться выборка нового набора данных.
Какая связь между этими параметрами?
Предположим, я создаю Datasetобъект следующим образом:
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)
Какую роль играют bufferпараметры в приведенном выше фрагменте?