torch.fx.experimental.symbolic_shapes.definitely_true¶
- torch.fx.experimental.symbolic_shapes.definitely_true(a)[源代码]¶
仅当我们可以确定 a 为 True 时返回 True,在此过程中可能会引入一个保护措施。如果 a 依赖于某些未支持的 SymInt,我们可能会返回 False,即使可能存在 SymInt 的某个可能值会导致表达式返回 True。
何时适合使用 definitely_true?首先,如果您可以使用更高级别的组合器,例如 parallel_or/parallel_and,请优先使用它们,它们绝对安全(除了短路)。其次,如果程序在 definitely_true 始终返回 False 时行为相同,则可以使用它(parallel_or/parallel_and 是此模式的示例,除了短路)。最后,即使程序的行为不完全相同,只要更改是语义保持的,也可能是可以的。如果程序在比以前更多的情况下出错(但在其他情况下行为相同),或者如果它以不重要的方式更改某些数量(例如,步幅通常属于此类别),则它可以是语义保持的。