管理实验性运算符

已弃用的实验性运算符

以下实验性运算符已被弃用并从 ONNX 中移除。应从模型中移除它们,要么用更新的替代运算符替换,要么分解为功能上等效的运算符。

旧运算符

新运算符

ATen

NA

Affine

Add(Mul(X, alpha), beta)

ConstantFill

ConstantOfShape

Crop

Slice-1

DynamicSlice

Slice-10

GRUUnit

NA

GivenTensorFill

ConstConstantOfShape

ImageScaler

Add(Mul(X, scale), Unsqueeze(bias, axes=[0, 2, 3]))

ParametricSoftplus

Mul(alpha, Softplus(Mul(beta, X)))

Scale

Mul(X, scale)

ScaledTanh

Mul(Tanh(Mul(X, beta)), alpha)

添加实验性运算符 [已弃用 - 自 v1.5 起不再支持实验性运算符]

ONNX 运算符定义中的实验性标志表示 ONNX 的用户可能无法对该运算符做出长期依赖。位于 ONNX 命名空间(ai.onnx)分支中的运算符,无论是否是实验性的,都会经过常规审查流程。

正在开发中但尚未达成共识的实验性运算符可以通过以下两种方式之一进行管理:

  1. 使用 fork 或分支 – 您在 fork 或分支中所做的完全取决于您。准备就绪后,您可以通过常规流程提交 PR。这是推荐的方式。

  2. 如果 fork/branch 不可行(例如,由于多个存储库之间映射不同分支的复杂性),则将实验性运算符放在主分支的自定义命名空间中。此过程的具体步骤如下:

  • 提交一个 Issue,其中包含解释动机和计划的提案。该提案不需要包含详细的技术设计。Issues 将被标记为“experimental op”。

  • 除非提案直接与现有运算符冲突或以某种方式违背 ONNX 的总体策略,否则审查者通常会默认批准。通过添加“experiment approved”标签表示批准。

  • 批准有效期为 3 个月,但如有需要可续期。

  • 实验性运算符应以 PR 的形式提交到自定义命名空间,该命名空间是提案的名称,即“proposal.controlflow”。名称应具有描述性,而不是公司或实体名称。只要父提案获得批准且处于活动状态,这些 PR 就会被默认批准。

  • 一旦实验完成,运算符就可以通过常规流程提交以添加到 ONNX 命名空间。所有者也可以选择在不推广运算符的情况下结束实验。

  • 无论哪种情况,一旦实验完成或批准到期,自定义命名空间都会被删除。