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

PyTorch数据采样器的应用实例

发布时间:2024-01-16 02:04:18

PyTorch提供了一系列数据采样器(Data Sampler)来方便用户对数据集进行采样。这些采样器可以用于随机选择样本、顺序选择样本、以及自定义选择样本的方式。下面将介绍几个常用的数据采样器及其使用示例。

1. 随机采样器(RandomSampler):

随机采样器用于从数据集中随机选择样本,适用于训练集和验证集的随机采样。示例代码如下:

import torch
from torch.utils.data import RandomSampler

dataset = torch.randn(100)  # 假设有100个样本数据
sampler = RandomSampler(dataset)

indices = list(sampler)  # 随机选择样本的索引
print(indices)

2. 顺序采样器(SequentialSampler):

顺序采样器用于按顺序选择样本,适用于测试集的顺序采样。示例代码如下:

import torch
from torch.utils.data import SequentialSampler

dataset = torch.randn(100)  # 假设有100个样本数据
sampler = SequentialSampler(dataset)

indices = list(sampler)  # 按顺序选择样本的索引
print(indices)

3. 子集采样器(SubsetRandomSampler):

子集采样器用于从指定的子集中进行随机采样,适用于训练集的子集采样。示例代码如下:

import torch
from torch.utils.data import SubsetRandomSampler

dataset = torch.randn(100)  # 假设有100个样本数据
subset_indices = [0, 1, 2, 3, 4]  # 假设选择前5个样本作为子集
sampler = SubsetRandomSampler(subset_indices)

indices = list(sampler)  # 从子集中随机选择样本的索引
print(indices)

4. 加权随机采样器(WeightedRandomSampler):

加权随机采样器用于按权重随机选择样本,适用于数据集中存在样本不平衡的情况。示例代码如下:

import torch
from torch.utils.data import WeightedRandomSampler

dataset = torch.randn(100)  # 假设有100个样本数据
weights = [0.2, 0.8]  # 假设      个样本的权重为0.2,第二个样本的权重为0.8
sampler = WeightedRandomSampler(weights, num_samples=10, replacement=True)

indices = list(sampler)  # 按权重随机选择10个样本的索引,可以重复选择同一个样本
print(indices)

上述示例代码演示了几种常用的PyTorch数据采样器的应用实例。通过选择适当的数据采样器,可以更灵活地处理数据集,提高模型的训练效果。