Skip to content

【complex op】paddlepaddle 支持复数 #56145

@GGBond8488

Description

@GGBond8488

问题描述 Please describe your issue

已移步至:

✨ 任务背景

大家好!

现有的深度学习框架主要是基于对实数函数的优化设计的,在主流的深度学习应用场景中,网络的输入变量,中间变量,输出变量都是实数,与此相关的基础设施,比如数组,优化器等组件也都是适用于实数类型。

但随着深度学习应用的扩展,也出现对复数支持的需求,比如图像,语音等领域的傅里叶变换,量子物理领域,其理论体系都是基于复数建立的。虽然并非不能用实数表示复数运算,但稍显繁琐,深度学习框架有原生的复数支持,可以使建模更接近其理论。

从更广义的视角来看, 深度学习框架提供更好的复数支持,也是更好地支持复数神经网络研究的基础。

现邀请大家一起参与paddle的复数支持。

此 ISSUE 是 赛题十三:复数kernel调研与实现 的弱化版批量任务。

🍻 参与流程:

参与的流程大致为:

  • 任务认领
  • 修改示例
  • 提交 PR
  • 任务收尾

PR 通过 CI 后,可以评论里或者 review request @zyt1024(recommend) @GGBond8488 研发会进行审核

任务认领

直接在 ISSUE 下回复认领的任务 ID 即可。

修改示例

认领完对应的任务后,需要实现对应op的 前向以及反向复数计算逻辑(部分op没有反向),并在对应op单测中添加复数的单测

主要修改点:

  • 在op对应的前向以及反向kernel增加复数运算逻辑,且注册相应的complex64, complex128数据类型。 复数反向计算可参考 complex_autograd
  • 在对应op的单测中增加复数类型
  • 在对应api的类型校验中增加复数

具体修改可参考pr: #55380

提交pr

每个任务需要提交至少一个 PR:

  • PR标题格式:【complex op】No.xxx add complex support for xxx
  • PR描述中需要附上本issue,
  • 在提交PR后我们会内部指派reviewer,由该reviewer负责合入。

任务收尾

PR 提交之后,需要确认所有required CI 通过状态,若认为不是本身改动引起的ci问题可联系@GGBond8488@@ScottWong98

pr merge后则视作任务收尾。

任务列表

后续评论中给出

✨ 注意:

Metadata

Metadata

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions