管理实验运算符

弃用的实验运算符

以下实验运算符已弃用并从 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 的客户可能无法长期依赖该运算符。 在 main 分支中的 ONNX 命名空间 (ai.onnx) 中的运算符,无论是否为实验性质,都将经过常规的审查流程。

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

  1. 使用 fork 或分支 - 您在 fork 或分支中执行的操作完全由您决定。 当您准备好时,您可以使用正常流程提交 PR。 这是推荐的方式。

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

  • 提交一个包含提议的 Issue,解释其动机和计划。 它不需要包含详细的技术设计。 Issue 将被标记为“实验运算符”。

  • 审查人员通常默认批准,除非提议与现有运算符直接冲突,或者以某种方式违反 ONNX 的总体策略。 批准通过添加“实验批准”标签来表示。

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

  • 实验运算符应在自定义命名空间中以 PR 的形式提交,该命名空间为提议的名称,例如“proposal.controlflow”。 该名称应具有描述性,而不是公司或实体名称。 只要父提议已获批准并处于活动状态,这些 PR 将默认批准。

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

  • 无论哪种方式,一旦实验完成或批准过期,自定义命名空间都将被删除。