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数据采样器的应用实例。通过选择适当的数据采样器,可以更灵活地处理数据集,提高模型的训练效果。
