欢迎访问宙启技术站
智能推送

使用Python中的SubsetRandomSampler()实现数据子集的随机抽样

发布时间:2024-01-11 22:58:02

在Python中,可以使用SubsetRandomSampler类来实现对数据集的随机子集抽样。SubsetRandomSampler是torch.utils.data.sampler中的一个类,可以用于创建一个随机抽样的数据子集。

下面是一个使用SubsetRandomSampler的例子来演示如何对数据集进行随机子集抽样:

import torch
from torch.utils.data import DataLoader
from torch.utils.data.sampler import SubsetRandomSampler

# 创建一个虚拟数据集
dataset = torch.randn(1000, 10)

# 创建一个DataLoader,并使用SubsetRandomSampler进行抽样
# 设置batch_size为64,num_workers为2以进行并行加载数据
dataloader = DataLoader(dataset, batch_size=64, num_workers=2, sampler=SubsetRandomSampler([1, 3, 5, 7, 9]))

# 遍历数据集的每个batch
for batch in dataloader:
    # 处理每个batch的数据
    print(batch.shape)  # 输出batch的形状

在上面的例子中,首先创建了一个虚拟数据集,该数据集包含1000个样本,每个样本有10个特征。然后,使用SubsetRandomSampler创建了一个DataLoader,并将其设置为抽样器参数。抽样器SubsetRandomSampler的参数是一个索引列表,指定要从数据集中选择的样本索引。在这个例子中,我们选择了索引为1、3、5、7、9的样本。

最后,通过遍历dataloader中的每个batch,可以处理每个batch的数据。在这个例子中,我们只是简单地打印了每个batch的形状,以演示抽样的效果。

使用SubsetRandomSampler可以灵活地控制对数据集的随机子集进行抽样,可以根据实际需求选择想要的样本进行训练或评估。