Theo TensorFlow tài liệu hướng dẫn , các prefetchvà mapphương pháp của tf.contrib.data.Datasetlớp, cả hai đều có một tham số gọi buffer_size.
Đối với prefetchphương thức, tham số được gọi là buffer_sizevà theo tài liệu:
buffer_size: Một tf.Tensor vô hướng tf.int64, đại diện cho số phần tử tối đa sẽ được lưu vào bộ đệm khi tìm nạp trước.
Đối với mapphương thức, tham số được gọi là output_buffer_sizevà theo tài liệu:
output_buffer_size: (Tùy chọn.) Một tf.Tensor vô hướng tf.int64, đại diện cho số lượng phần tử được xử lý tối đa sẽ được lưu vào bộ đệm.
Tương tự đối với shufflephương pháp, cùng một số lượng xuất hiện và theo tài liệu:
buffer_size: Một tf.Tensor vô hướng tf.int64, đại diện cho số phần tử từ tập dữ liệu này mà từ đó tập dữ liệu mới sẽ lấy mẫu.
Mối quan hệ giữa các tham số này là gì?
Giả sử tôi tạo một Datasetđối tượng như sau:
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)
Các bufferthông số trong đoạn mã trên đang đóng vai trò gì ?