mindspore.dataset.RandomSampler
- class mindspore.dataset.RandomSampler(replacement=False, num_samples=None, shuffle=Shuffle.GLOBAL)[源代码]
随机采样器。
说明
不同数据集的混洗模式支持如下:
混洗模式支持 混洗模式
MindDataset
TFRecordDataset
其他数据集
Shuffle.ADAPTIVE支持
不支持
不支持
Shuffle.GLOBAL支持
支持
支持
Shuffle.PARTIAL支持
不支持
不支持
Shuffle.FILES支持
支持
不支持
Shuffle.INFILE支持
不支持
不支持
- 参数:
replacement (bool, 可选) - 是否将样本ID放回下一次采样。默认值:
False,无放回采样。num_samples (int, 可选) - 获取的样本数,可用于部分获取采样得到的样本。默认值:
None,获取采样到的所有样本。shuffle (Shuffle, 可选) - 采用何种混洗逻辑。默认值:
Shuffle.GLOBAL,全局混洗。 通过传入枚举变量设置数据混洗的模式,枚举变量参考链接mindspore.dataset.Shuffle:Shuffle.ADAPTIVE:当数据集样本小于等于1亿时,采用Shuffle.GLOBAL,当大于1亿时,采用局部Shuffle.PARTIAL,每100万样本混洗一次。Shuffle.GLOBAL:执行全局混洗,一次性混洗数据集中所有样本。占用内存大。Shuffle.PARTIAL:执行局部混洗,每100万个样本混洗一次。占用内存小于Shuffle.GLOBAL。Shuffle.FILES:仅混洗文件序列,不混洗文件中的数据。Shuffle.INFILE:保持读入文件的序列,仅混洗每个文件中的数据。
- 异常:
TypeError - replacement 不是bool值。
TypeError - num_samples 不是整数值。
ValueError - num_samples 为负值。
TypeError - shuffle 的类型不是Shuffle。
样例:
>>> import mindspore.dataset as ds >>> # creates a RandomSampler >>> sampler = ds.RandomSampler() >>> dataset = ds.ImageFolderDataset(image_folder_dataset_dir, ... num_parallel_workers=8, ... sampler=sampler)
- add_child(sampler)[源代码]
为给定采样器添加子采样器。父采样器接收子采样器输出数据作为输入,并应用其采样逻辑返回新的采样结果。
说明
被添加的子sampler如果有 shuffle 属性,其值不能是
Shuffle.PARTIAL,且父sampler的 shuffle 属性值必须是Shuffle.GLOBAL。- 参数:
sampler (Sampler) - 用于从数据集中选择样本的对象。仅支持内置采样器(
mindspore.dataset.DistributedSampler、mindspore.dataset.PKSampler、mindspore.dataset.RandomSampler、mindspore.dataset.SequentialSampler、mindspore.dataset.SubsetRandomSampler、mindspore.dataset.WeightedRandomSampler)。
样例:
>>> import mindspore.dataset as ds >>> sampler = ds.SequentialSampler(start_index=0, num_samples=3) >>> sampler.add_child(ds.RandomSampler(num_samples=4)) >>> dataset = ds.Cifar10Dataset(cifar10_dataset_dir, sampler=sampler)
- get_child()[源代码]
获取给定采样器的子采样器。
- 返回:
Sampler,给定采样器的子采样器。
样例:
>>> import mindspore.dataset as ds >>> sampler = ds.SequentialSampler(start_index=0, num_samples=3) >>> sampler.add_child(ds.RandomSampler(num_samples=2)) >>> child_sampler = sampler.get_child()
- get_num_samples()[源代码]
获取当前采样器实例的 num_samples 参数值。此参数在定义Sampler时,可以选择性传入(默认为
None)。此方法将返回num_samples的值。如果当前采样器有子采样器,会继续访问子采样器,并根据一定的规则处理获取值。下表显示了各种可能的组合,以及最终返回的结果。
子采样器
num_samples
child_samples
结果
T
x
y
min(x, y)
T
x
None
x
T
None
y
y
T
None
None
None
None
x
n/a
x
None
None
n/a
None
- 返回:
int,样本数,可为None。
样例:
>>> import mindspore.dataset as ds >>> sampler = ds.SequentialSampler(start_index=0, num_samples=3) >>> num_samplers = sampler.get_num_samples()