imbalanced-dataset-sampler

一行替换采样器,让少数类不再被模型忽略

开源 free 数据集
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 2326
维护状态 较活跃
是否开源 是
定价模式 free

项目预览

项目数据

分类数据集
开发团队ufoym
所属国家
官网地址
定价模式free
价格说明开源免费
访问状态
是否开源是
开源协议MIT
主要语言Python
技术栈/模型data-sampling,image-classification,imbalanced-data,pytorch
GitHub 星标★ 2326
30天Star增速
HF 下载量
上线时间2018-05-29 00:00:00
代码更新—
仓库体积—
本站数据更新—
维护状态较活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-10-19
浏览次数0

项目介绍

imbalanced-dataset-sampler 是一个面向 PyTorch 的不平衡数据集采样器,专门解决分类任务中类别样本数量悬殊导致模型偏向多数类的问题。它通过组合过采样与欠采样策略:对低频类别进行过采样,对高频类别进行欠采样,从而在训练时构造类别分布更均衡的批次。核心能力是提供可直接替换 PyTorch 原生 Sampler 的 ImbalancedDatasetSampler,只需传入数据集即可使用,无需修改模型或损失函数,也无需预先复制样本文件。它支持图像分类等常见场景,能显著缓解少数类召回率低的问题,适合快速验证与中小规模数据集训练,是处理长尾分布时成本较低的工程化方案。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

正在加载星标数据…

技术标签

使用教程

—

难度:入门 约 5 分钟 部署方式:库/依赖 5 步

环境要求

  • 已安装 Python 环境
  • 已安装 PyTorch,可正常 import torch
  • pip 可正常安装 PyPI 包

安装与启动步骤

  1. 1准备 Python 环境

    确认 Python 与 PyTorch 可用,本项目是 PyTorch 的采样器库,依赖 DataLoader 使用。

  2. 2安装采样器

    通过 pip 从 PyPI 安装 torchsampler,注意包名与 GitHub 仓库名不同。

    pip install torchsampler
  3. 3导入采样器

    在训练脚本中从 torchsampler 导入 ImbalancedDatasetSampler 类。

    from torchsampler import ImbalancedDatasetSampler
  4. 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. 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···

★ 10728 2026-08-10
aisheets 开源

像用表格一样批量调 AI,不写代码就能造和改数据集

Build, enrich, and transform datasets using AI models with no code

★ 1652 2026-09-20
DataGen 开源

用大模型一键生成定制化训练数据,告别数据荒

[ICLR'25] DataGen: Unified Synthetic Dataset Generation via Large Language Models

★ 69 2026-08-09
distilabel 开源

基于论文的合成数据流水线,快速生成高质量 AI 反馈数据。

Distilabel is a framework for synthetic data and AI feedback for engineers who need ···

★ 3424 2026-08-10