Shape¶
- class onnx_ir.Shape(dims, /, denotations=None, frozen=False)¶
表示张量的形状,包括其维度和可选的标记。
Shape类存储张量的维度,可以是整数、None(未知)或符号维度。它提供了查询和操作形状的方法,以及将形状与其它形状或普通 Python 列表进行比较的方法。形状可以被冻结(使其不可变)。当形状被冻结后,它不能被解冻,这使其适合在张量或值之间共享。调用
freeze()来冻结形状。要更新冻结形状的维度,请调用
copy()来创建一个具有相同维度且可修改的新形状。使用
get_denotation()和set_denotation()来访问和修改标记。注意
两个形状可以进行相等性比较。在比较具有未知维度(
None)的形状时要小心,因为即使所有维度都相同,它们也可能不被视为语义上相等。你可以使用has_unknown_dim()来检查形状是否具有任何未知维度。示例
>>> import onnx_ir as ir >>> shape = ir.Shape(["B", None, 3]) >>> shape.rank() 3 >>> shape.is_static() False >>> shape.is_dynamic() True >>> shape.is_static(dim=2) True >>> shape[0] = 1 >>> shape[1] = 2 >>> shape.dims (1, 2, 3) >>> shape == [1, 2, 3] True >>> shape.frozen False >>> shape.freeze() >>> shape.frozen True
- 参数:
dims (Iterable[int | SupportsInt | SymbolicDim | str | None])
denotations (Iterable[str | None] | None)
frozen (bool)
- dims¶
表示形状的维度元组。每个维度可以是整数、None 或
SymbolicDim。
- frozen¶
指示形状是否不可变。当冻结时,形状无法修改或解冻。
- property dims: tuple[int | SymbolicDim, ...]¶
形状中的所有维度。
此属性为只读。使用 __getitem__ 和 __setitem__ 来修改形状或创建新形状。
- property frozen: bool¶
形状是否冻结。
当形状被冻结时,它不能被解冻,这使其适合共享。调用
freeze()来冻结形状。调用copy()来创建一个具有相同维度且可修改的新形状。
- has_unknown_dim()[source]¶
如果任何维度未知(None),则返回 True。
你可以使用
is_unknown_dim()来检查特定维度是否未知。新增于 0.1.10 版本。
- 返回类型: