Согласно 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
параметры в приведенном выше фрагменте?