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

介绍Python库中的SubsetRandomSampler()函数及其使用方法

发布时间:2024-01-11 23:01:12

SubsetRandomSampler()函数是Python库中torch.utils.data.sampler模块中的一个函数,用于生成一个随机子集的索引列表。

该函数可以用于在数据集中进行数据采样,常用于训练集和验证集的划分。通过该函数可以生成一个随机的、指定数量的子集索引列表,然后根据这个索引列表来选择数据集中的子集。

SubsetRandomSampler()函数的使用方法如下:

torch.utils.data.sampler.SubsetRandomSampler(indices)

其中,indices是一个包含数据集中样本索引的列表。

使用SubsetRandomSampler()函数的例子如下:

import torch
import numpy as np
from torch.utils.data import Dataset, DataLoader
from torch.utils.data.sampler import SubsetRandomSampler

# 自定义数据集
class MyDataset(Dataset):
    def __init__(self):
        self.data = np.random.rand(100, 3)
        self.target = np.random.randint(2, size=(100,))
    
    def __getitem__(self, index):
        x = self.data[index]
        y = self.target[index]
        return x, y
    
    def __len__(self):
        return len(self.data)

# 创建数据集和采样器
dataset = MyDataset()
sampler = SubsetRandomSampler([1, 3, 5, 7, 9])  # 指定索引列表

# 创建数据加载器
dataloader = DataLoader(dataset, batch_size=2, sampler=sampler)

# 遍历数据
for data, target in dataloader:
    print(data, target)

上述代码中,首先创建了一个自定义的数据集MyDataset,其中包含100个样本,每个样本是一个3维的向量,对应的标签是0或1。然后使用SubsetRandomSampler函数创建了一个采样器sampler,指定要采样的索引列表。最后使用DataLoader生成加载器dataloader,通过遍历该加载器,可以获取采样的数据和对应的标签。

总结起来,SubsetRandomSampler()函数是用来生成随机子集索引列表的一个函数,常用于数据集的采样操作,可以用于划分训练集和验证集等场景。使用该函数前需要自定义数据集,并根据需要指定要采样的索引列表。