首页
/ PyTorch Gradual Warmup LR 项目使用教程

PyTorch Gradual Warmup LR 项目使用教程

2026-01-16 10:00:24作者:尤辰城Agatha

1. 项目的目录结构及介绍

pytorch-gradual-warmup-lr/
├── warmup_scheduler/
│   ├── __init__.py
│   ├── scheduler.py
├── .gitignore
├── LICENSE
├── README.md
├── setup.py
  • warmup_scheduler/: 包含实现渐进预热学习率调度器的核心代码。
    • __init__.py: 初始化文件,用于导入模块。
    • scheduler.py: 实现渐进预热学习率调度器的主要逻辑。
  • .gitignore: 指定Git版本控制系统忽略的文件和目录。
  • LICENSE: 项目的开源许可证,本项目使用MIT许可证。
  • README.md: 项目说明文档,包含项目的基本介绍和使用方法。
  • setup.py: 用于安装项目的脚本。

2. 项目的启动文件介绍

项目的启动文件主要是 setup.py,用于安装和配置项目。以下是 setup.py 的基本内容:

from setuptools import setup, find_packages

setup(
    name='pytorch-gradual-warmup-lr',
    version='0.1.0',
    description='Gradually-Warmup Learning Rate Scheduler for PyTorch',
    author='ildoonet',
    author_email='ildoonet@gmail.com',
    url='https://github.com/ildoonet/pytorch-gradual-warmup-lr',
    packages=find_packages(),
    install_requires=[
        'torch',
    ],
    classifiers=[
        'Programming Language :: Python :: 3',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
    ],
)

通过运行以下命令安装项目:

pip install git+https://github.com/ildoonet/pytorch-gradual-warmup-lr.git

3. 项目的配置文件介绍

项目没有显式的配置文件,但可以通过修改 scheduler.py 中的参数来调整学习率预热的行为。以下是 scheduler.py 中的一些关键参数:

class GradualWarmupScheduler(_LRScheduler):
    def __init__(self, optimizer, multiplier, total_epoch, after_scheduler=None):
        self.multiplier = multiplier
        if self.multiplier < 1:
            raise ValueError('Multiplier should be greater than or equal to 1.')
        self.total_epoch = total_epoch
        self.after_scheduler = after_scheduler
        self.finished = False
        super(GradualWarmupScheduler, self).__init__(optimizer)

    def get_lr(self):
        if self.last_epoch > self.total_epoch:
            if self.after_scheduler:
                if not self.finished:
                    self.after_scheduler.base_lrs = [base_lr * self.multiplier for base_lr in self.base_lrs]
                    self.finished = True
                return self.after_scheduler.get_last_lr()
            return [base_lr * self.multiplier for base_lr in self.base_lrs]

        return [base_lr * ((self.multiplier - 1.) * self.last_epoch / self.total_epoch + 1.) for base_lr in self.base_lrs]

    def step(self, epoch=None, metrics=None):
        if self.finished and self.after_scheduler:
            if epoch is None:
                self.after_scheduler.step(None)
                self._last_lr = self.after_scheduler.get_last_lr()
            else:
                self.after_scheduler.step(epoch - self.total_epoch)
                self._last_lr = self.after_scheduler.get_last_lr()
        else:
            return super(GradualWarmupScheduler, self).step(epoch)
  • optimizer: 使用的优化器。
  • multiplier: 学习率的倍增因子。
  • total_epoch: 预热的总周期数。
  • after_scheduler: 预热结束后使用的学习率调度器。

通过调整这些参数,可以定制适合自己项目的学习率预热策略。

登录后查看全文
热门项目推荐
相关项目推荐