诚信为本,市场在变,诚信永远不变...

高德资讯

MMsegmentation教程 6: 自定义运行设定_1

自定义 PyTorch 支持的优化器

我们已经支持 PyTorch 自带的所有优化器,唯一需要修改的地方是在配置文件里的 域里面。 例如,如果您想使用 (注意如下操作可能会让模型表现下降),可以使用如下修改:

为了修改模型的学习率,使用者仅需要修改配置文件里 optimizer 的 即可。 使用者可以参照 PyTorch 的 API 文档 直接设置参数。

自定义自己实现的优化器

1. 定义一个新的优化器

一个自定义的优化器可以按照如下去定义:

假如您想增加一个叫做 的优化器,它的参数分别有 , , 和 。 您需要创建一个叫 的新文件夹。 然后再在文件,即 里面去实现这个新优化器:

2. 增加优化器到注册表 (registry)

为了让上述定义的模块被框架发现,首先这个模块应该被导入到主命名空间 (main namespace) 里。 有两种方式可以实现它。

  • 修改 来导入它 新的被定义的模块应该被导入到 这样注册表将会发现新的模块并添加它
  • 在配置文件里使用 去手动导入它

模块将会在程序运行的开始被导入,并且 类将会自动注册。 需要注意只有包含 类的包 (package) 应当被导入。 而 不能 被直接导入。

事实上,使用者完全可以用另一个按这样导入方法的文件夹结构,只要模块的根路径已经被添加到 里面。

3. 在配置文件里定义优化器

之后您可以在配置文件的 域里面使用 在配置文件里,优化器被定义在 域里,如下所示:

为了使用您自己的优化器,这个域可以被改成:

自定义优化器的构造器 (constructor)

有些模型可能需要在优化器里有一些特别参数的设置,例如 批归一化层 (BatchNorm layers) 的 权重衰减 (weight decay)。 使用者可以通过自定义优化器的构造器去微调这些细粒度参数。

默认的优化器构造器的实现可以参照 这里 ,它也可以被用作新的优化器构造器的模板。

额外的设置

优化器没有实现的一些技巧应该通过优化器构造器 (optimizer constructor) 或者钩子 (hook) 去实现,如设置基于参数的学习率 (parameter-wise learning rates)。我们列出一些常见的设置,它们可以稳定或加速模型的训练。 如果您有更多的设置,欢迎在 PR 和 issue 里面提交。

我们根据默认的训练迭代步数 40k/80k 来设置学习率,这在 MMCV 里叫做 。 我们也支持许多其他的学习率计划表:这里 ,例如 和 计划表。下面是一些例子:

工作流是一个专门定义运行顺序和轮数 (running order and epochs) 的列表 (phase, epochs)。 默认情况下它设置成:

意思是训练是跑 1 个 epoch。有时候使用者可能想检查模型在验证集上的一些指标(如 损失 loss,精确性 accuracy),我们可以这样设置工作流:

于是 1 个 epoch 训练,1 个 epoch 验证将交替运行。

注意:

  1. 模型的参数在验证的阶段不会被自动更新
  2. 配置文件里的关键词 仅控制训练的 epochs 数目,而不会影响验证时的工作流
  3. 工作流 和 将不会改变 的行为,因为 被 调用而且验证的工作流仅仅影响通过调用 的钩子 (hooks)。因此, 和 的区别仅在于 runner 将在每次训练 epoch 结束后计算在验证集上的损失

使用 MMCV 实现的钩子 (hooks)

如果钩子已经在 MMCV 里被实现,如下所示,您可以直接修改配置文件来使用钩子:

修改默认的运行时间钩子 (runtime hooks)

以下的常用的钩子没有被 注册:

  • log_config
  • checkpoint_config
  • evaluation
  • lr_config
  • optimizer_config
  • momentum_config

在这些钩子里,只有 logger hook 有 优先级,其他的优先级都是 。 上述提及的教程已经包括了如何修改 , 和 。 这里我们展示我们如何处理 , 和 。

检查点配置文件 (Checkpoint config)

MMCV runner 将使用 去初始化 .

使用者可以设置 来仅保存一小部分检查点或者通过 来决定是否保存优化器的状态字典 (state dict of optimizer)。 更多使用参数的细节请参考 这里

日志配置文件 (Log config)

包裹了许多日志钩 (logger hooks) 而且能去设置间隔 (intervals)。现在 MMCV 支持 , 和 。 详细的使用请参照 文档

评估配置文件 (Evaluation config)

的配置文件将被用来初始化 。 除了 键,其他的像 这样的参数将被传递给 。

栏目导航

高德资讯

联系我们

CONTACT US

电话:13988888888

传 真:海南省海口市

手 机:0898-66889888

邮 箱:88889999

地 址:/public/upload/system/2018/07/28/2091301cca30ff8c6fd3ecd09c8d4b02.jpg

平台注册入口