Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • PALM
  • Issue
  • #84

P
PALM
  • 项目概览

PaddlePaddle / PALM

通知 8
Star 3
Fork 0
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 10
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 0
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
PALM
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 10
    • Issue 10
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 0
    • 合并请求 0
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 6月 19, 2020 by saxon_zh@saxon_zhGuest

PALM梯度更新问题

Created by: gobigrassland

有三个问题请教: (1)有关多任务梯度更新的,我对代码理解是这样的:(multi_task/run.py) task1: 产生loss1,更新一次模型参数 task2:产生loss2,在上一次梯度更新基础上再更新一次 不断循环上述两个过程

(2)下面粘贴train.py中build_backward函数部分代码 我理解 param_list中就是存放模型参数值,那么updated_param = param - param_list[param.name] * weight_decay * optimizer.get_cur_learning_rate() 这个表达式,表示这个参数更新是这个参数值减去这个参数值乘以一个系数。这里就没有使用梯度值。参数更新,不是 w = w - alpha * grad_w吗?

def build_backward(self, optimizer, weight_decay=None, use_ema=False, ema_decay=None):
    """
    Build backward computation graph and training strategy.

    Arguments:
        - optimizer: 
        - weight_decay: optional, default is None (disable weight decay).
        - use_ema: optional, default is False. The flag to control whether to apply Exponential Moving Average strategy on parameter updates.
        - ema_decay: optional, default is None. Only works with use_ema == True. Control decay rate of EMA strategy.

    """
    # build optimizer
    assert self._loss_var is not None and self._train_init_prog is not None, "train graph not foung! You should build_forward first."
    optimizer._set_prog(self._train_prog, self._train_init_prog)
    with fluid.program_guard(self._train_prog, self._train_init_prog):
        param_grads = optimizer._build()

            for param, grad in param_grads:
                if exclude_from_weight_decay(param.name):
                    continue
                with param.block.program._optimized_guard(
                    [param, grad]), fluid.framework.name_scope("weight_decay"):
                    updated_param = param - param_list[
                        param.name] * weight_decay * optimizer.get_cur_learning_rate()
                    fluid.layers.assign(output=param, input=updated_param)

        if use_ema:
            ema = fluid.optimizer.ExponentialMovingAverage(ema_decay)
            ema.update()

    self._exe.run(self._train_init_prog)

(3)PLAM是针对NLP的的多任务框架,有没有针对图像方面的多任务框架发布?

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/PALM#84
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7