mindspore/docs/api/api_python/dataset/mindspore.dataset.Dataset.b...

25 lines
2.9 KiB
ReStructuredText
Raw Normal View History

2022-01-24 16:31:13 +08:00
.. py:method:: bucket_batch_by_length(column_names, bucket_boundaries, bucket_batch_sizes, element_length_function=None, pad_info=None, pad_to_bucket_boundary=False, drop_remainder=False)
2022-01-19 11:26:42 +08:00
2022-01-24 16:31:13 +08:00
根据数据的长度进行分桶,每个桶将在数据填满的时候进行填充和批处理操作。
2022-01-19 11:26:42 +08:00
2022-01-24 16:31:13 +08:00
对数据集中的每一条数据进行长度计算,根据该条数据的长度计算结果和每个分桶的范围将该数据归类到特定的桶里面。
当某个分桶中数据条数达到指定的大小 `bucket_batch_sizes` 时,将根据 `pad_info` 的信息对分桶进行填充,再进行批处理。
2022-01-19 11:26:42 +08:00
2022-07-06 17:30:12 +08:00
参数:
- **column_names** (list[str]) - 传递给参数 `element_length_function` 的数据列,用于计算数据的长度。
- **bucket_boundaries** (list[int]) - 指定各个分桶的上边界值,列表的数值必须严格递增。
如果有n个边界则会创建n+1个桶分配后桶的边界如下[0, bucket_boundaries[0])[bucket_boundaries[i], bucket_boundaries[i+1])[bucket_boundaries[n-1], inf)其中0<i<n-1。
- **bucket_batch_sizes** (list[int]) - 指定每个分桶的批数据大小,必须包含 `len(bucket_boundaries)+1` 个元素。
- **element_length_function** (Callable, 可选) - 长度计算函数。要求接收 `len(column_names)` 个输入参数,并返回一个整数代表该条数据的长度。
如果未指定该参数,则参数 `column_names` 的长度必须为1此时该列数据的shape[0]值将被当做数据长度。默认值None不指定。
- **pad_info** (dict, 可选) - 对指定数据列进行填充。通过传入dict来指定列信息与填充信息要求dict的键是要填充的数据列名dict的值是包含2个元素的元组。
元组中第1个元素表示要扩展至的目标shape第2个元素表示要填充的值。
如果某一个数据列未指定将要填充后的shape和填充值则该列中的每条数据都将填充至该批次中最长数据的长度且填充值为0。
注意,`pad_info` 中任何填充shape为None的列其每条数据长度都将被填充为当前批处理中最长数据的长度除非指定 `pad_to_bucket_boundary` 为True。默认值None不填充。
- **pad_to_bucket_boundary** (bool, 可选) - 如果为True`pad_info` 中填充shape为None的列会被填充至由参数 `bucket_batch_sizes` 指定的对应分桶长度-1的长度。
如果有任何数据落入最后一个分桶中则将报错。默认值False。
- **drop_remainder** (bool, 可选) - 当每个分桶中的最后一个批处理数据数据条目小于 `bucket_batch_sizes`是否丢弃该批处理数据。默认值False不丢弃。
2022-01-19 11:26:42 +08:00
2022-07-06 17:30:12 +08:00
返回:
Dataset按长度进行分桶和批处理操作后的数据集对象。