mindspore.dataset.PKSampler
- class mindspore.dataset.PKSampler(num_val, num_class=None, shuffle=False, class_column='label', num_samples=None)[源代码]
为数据集中每P个类别各采样K个样本。
参数:
num_val (int): 每个类要采样的元素数量。
num_class (int, 可选): 要采样的类数量,默认值:为None,采样所有类。当前不支持指定该参数。
shuffle (bool, 可选): 是否混洗采样得到的样本,默认值:False,不混洗样本。
class_column (str, 可选): 指定label所属数据列的名称,将基于此列作为数据标签进行采样,默认值:’label’。
num_samples (int, 可选): 获取的样本数,可用于部分获取采样得到的样本。默认值:None,获取采样到的所有样本。
异常:
TypeError shuffle 的类型不是bool。
TypeError class_column 的类型不是str。
TypeError num_samples 的类型不是int。
NotImplementedError num_class 不为None。
RuntimeError num_val 不是正值。
ValueError num_samples 为负值。
样例:
>>> # creates a PKSampler that will get 3 samples from every class. >>> sampler = ds.PKSampler(3) >>> dataset = ds.ImageFolderDataset(image_folder_dataset_dir, ... num_parallel_workers=8, ... sampler=sampler)
- add_child(sampler)
为给定采样器添加子采样器。子采样器接收父采样器输出数据作为输入,并应用其采样逻辑返回新的采样结果。
参数:
sampler (Sampler) - 用于从数据集中选择样本的对象。仅支持内置采样器(DistributedSampler、PKSampler、RandomSampler、SequentialSampler、SubsetRandomSampler、WeightedRandomSampler)。
样例:
>>> 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 = ds.SequentialSampler(start_index=0, num_samples=3) >>> sampler.add_child(ds.RandomSampler(num_samples=2)) >>> child_sampler = sampler.get_child()
- get_num_samples()
返回采样器采集样本数量,如果存在子采样器,则子采样器计数可以是数值或None。这些条件会影响最终的采样结果。
下表显示了调用此函数的可能结果。
子采样器
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。
样例:
>>> sampler = ds.SequentialSampler(start_index=0, num_samples=3) >>> num_samplers = sampler.get_num_samples()