项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
技术标签
使用教程
—
环境要求
- 已安装 Python 环境
- 已安装 PyTorch,可正常 import torch
- pip 可正常安装 PyPI 包
安装与启动步骤
-
1准备 Python 环境
确认 Python 与 PyTorch 可用,本项目是 PyTorch 的采样器库,依赖 DataLoader 使用。
-
2安装采样器
通过 pip 从 PyPI 安装 torchsampler,注意包名与 GitHub 仓库名不同。
pip install torchsampler -
3导入采样器
在训练脚本中从 torchsampler 导入 ImbalancedDatasetSampler 类。
from torchsampler import ImbalancedDatasetSampler -
4替换 DataLoader 采样器
创建 DataLoader 时把 sampler 参数设为 ImbalancedDatasetSampler(train_dataset),其余参数保持原样。
train_loader = torch.utils.data.DataLoader( train_dataset, sampler=ImbalancedDatasetSampler(train_dataset), batch_size=args.batch_size, **kwargs ) -
5训练验证
运行原训练脚本,观察一个 epoch 能否正常迭代完,并检查批次类别分布是否更均衡。
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
sampler | 是 | 指定不平衡采样器,替代默认随机打乱采样 | ImbalancedDatasetSampler(train_dataset) |
batch_size | 否 | 每批样本数,沿用原训练脚本中的设置 | 32 |
如何确认成功
运行训练脚本一个 epoch 无报错,DataLoader 能正常迭代完整个数据集,即表示接入成功。
常见问题
Q:安装命令和包名是什么?
A:执行 pip install torchsampler;导入时使用 from torchsampler import ImbalancedDatasetSampler。
Q:需要修改模型或损失函数吗?
A:不需要。README 示例只替换 DataLoader 的 sampler 参数,模型与损失函数保持不变。
Q:需要预先复制或删除样本文件吗?
A:不需要。采样器在采样阶段按类别出现概率反比加权,无需复制少数类或删除多数类样本。
Q:自定义数据集需要提供什么接口?
A:README 未给出接口细节;只需把训练集对象传入 ImbalancedDatasetSampler,标签读取方式请参考仓库源码。
注意事项
- 包名是 torchsampler,与 GitHub 仓库名 imbalanced-dataset-sampler 不同,安装时不要写错。
- PyTorch 中 sampler 与 shuffle 互斥,接入采样器时不要同时设置 shuffle=True。
- 每个 epoch 会遍历整个数据集,并按类别出现概率反比加权采样。
- 过采样可能带来过拟合、欠采样可能丢失信息,采样器只缓解类别不平衡,不保证指标一定提升。
核心亮点
- API 极简,替换 DataLoader 的 sampler 参数即可生效,无需改动模型和损失函数
- 同时做过采样与欠采样,避免单纯过采样带来的过拟合和训练变慢
- 纯 Python 实现、依赖少,与 PyTorch 生态无缝兼容,易于集成到现有训练脚本
不足之处
- 仅支持按类别索引采样的数据集,需要数据集实现 get_labels 或类似接口,通用性受限
- 不提供分布式训练与多卡场景下的采样同步方案,大规模训练需自行处理
适用场景
- 图像分类中少数类别样本不足时的训练加速与效果提升
- 长尾分布数据集的快速基线实验与消融对比
- 中小规模表格或特征数据分类任务的类别均衡预处理
替代项目
imbalanced-learn、PyTorch WeightedRandomSampler
上一篇:Dataset
下一篇:medical-datasets
同类项目推荐
X-AnyLabeling
开源
一站式AI辅助标注,图像视频文本通吃,导出格式随心配
X-AnyLabeling: A lightweight, efficient, and unified cross-platform desktop applicat···
aisheets
开源
像用表格一样批量调 AI,不写代码就能造和改数据集
Build, enrich, and transform datasets using AI models with no code
DataGen
开源
用大模型一键生成定制化训练数据,告别数据荒
[ICLR'25] DataGen: Unified Synthetic Dataset Generation via Large Language Models
distilabel
开源
基于论文的合成数据流水线,快速生成高质量 AI 反馈数据。
Distilabel is a framework for synthetic data and AI feedback for engineers who need ···
