Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • 合并请求
  • !27471

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板

Support assignment to a Variable in dynamic mode. !27471

  • Report abuse
!27471 已合并 9月 22, 2020 由 saxon_zh@saxon_zh 创建0 of 3 tasks completed0/3 tasks
#<User:0x00007fed534f0978>
  • 概览 2
  • 提交 5
  • 变更 2

Created by: liym27

PR types

New features

PR changes

Others

Describe

Support assignment to a Variable in dynamic mode. note: not deal with backward.


功能支持:动态图 VarBase slice 赋值,inplace操作。

  • key支持:整数、python slice、省略号[...]
  • value支持:int, float, numpy.ndarray, Paddle Tensor
  • 其他:默认支持 expand
paddle.disable_static()
tensor_x = paddle.to_tensor(np.ones((2, 3)).astype(np.float32)) # [[1,1,1], [1,1,1]]
tensor_x[0] = 0    # tensor_x : [[0, 0, 0], [1 ,1, 1]]
tensor_x[0:1] = 0 # tensor_x : [[0, 0, 0], [1 ,1, 1]]
tensor_x[...] = 0   # tensor_x : [[0, 0, 0], [0, 0, 0]]

tensor_x[0] = np.array([3,3,3]) # tensor_x : [[3, 3, 3], [0, 0, 0]]
tensor_x[1] = paddle.ones([3]) # tensor_x : [[3, 3, 3], [1,1,1]]

附说明:本PR方案未使用op,考虑后续inplace操作可能无反向,以及该方案目前性能最优,使用下列方案2。

  1. 若仅在python端开发该功能,虽能支持以上功能,但性能最差
  2. 将方案1迁移到C++端(不调用op),性能最优。较方案1 性能提升了40%-50%
  3. 考虑到反向方案还未完全确定,前向也实现了c++端调用op的方案做对比(代码可见commit),但性能上不如方案2,且功能支持不全:不支持 key是省略号、左值赋值expand的情况。

TODO:

  • 增加前向文档说明
  • 这个只是暂时方案,后面会添加c++ op支持,因此我这里允许这个PR通过,但是后续最好修改,否则转成program后没了这个语句
  • 反向inplace检测
指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Paddle!27471
Source branch: github/fork/liym27/support_setitem_forward_highperf
渝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