RelaxedUnspecConstraint#
- class torch.fx.experimental.symbolic_shapes.RelaxedUnspecConstraint(warn_only)[source]#
对于客户端:没有显式的约束;约束是任何通过 guard 从跟踪中隐式推断出的结果。
对于后端:必须至少存在 TWO 个可能的值来满足此维度的 guard。
换句话说,这个约束帮助我们区分“我们不关心这个维度是否专业化”和“这个维度必须是非专业化的”。然而,这个约束并没有太多关于允许什么样的专业化的信息;例如,如果我们基于一个偶数的 size 进行 guard,这在 unspec 约束下仍然是可以接受的。这使得 RelaxedUnspecConstraint 对于 eager 模式非常有用,因为你的后端编译器可以在原本动态的维度上添加约束;我们不能断言不存在 guard,因为这很脆弱,因为编译器应该能够添加额外的约束。如果你想断言不存在 guard,请使用带有无界 ValueRanges 的 StrictMinMaxConstraint。