介绍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()函数是用来生成随机子集索引列表的一个函数,常用于数据集的采样操作,可以用于划分训练集和验证集等场景。使用该函数前需要自定义数据集,并根据需要指定要采样的索引列表。
