Tensor

class onnx_ir.Tensor(value, dtype=None, *, shape=None, name=None, doc_string=None, metadata_props=None)

一个不可变的具体张量。

此类是原始张量数据的包装器。原始张量数据可以是与 numpy 数组兼容的对象(例如 np.ndarraytorch.Tensor)或与 DLPack 兼容的对象。张量是不可变的,并且数据在初始化时不会复制。

从 numpy 数组创建张量

>>> import numpy as np
>>> array = np.array([1, 2, 3])
>>> tensor = Tensor(array)
>>> # The tensor itself can be treated as a numpy array because it implements the __array__ method
>>> np.allclose(tensor, array)
True

要从张量获取 numpy 数组,请调用 numpy()。要将张量转换为用于序列化的字节字符串,请调用 tobytes()

建议在访问底层数据之前先检查张量的大小,因为访问数据可能会很昂贵并产生 I/O 开销。

子类化此类以有效地处理来自不同框架的不同类型的张量。

参数:
  • value (TArrayCompatible)

  • dtype (_enums.DataType | None)

  • shape (Shape | None)

  • name (str | None)

  • doc_string (str | None)

  • metadata_props (dict[str, str] | None)

name

张量的名称。

shape

张量的形状。

dtype

张量元素的 DataTypes。它是一个 ir.DataType 枚举。

doc_string

文档字符串。

raw

此张量背后的原始数据。它可以是任何东西。

size

张量中的元素数量。

nbytes

张量中的字节数。

metadata_props

将序列化到 ONNX 文件中的元数据。

meta

用于图转换传递的元数据存储。

display(*, page=False)

漂亮地打印对象。

参数:

page (bool) – 是否分页输出。

返回类型:

property doc_string: str | None

文档字符串。

property dtype: DataType

张量的数据类型。不可变。

property meta: MetadataStore

用于中间分析的元数据存储。

如果您希望将元数据序列化到 ONNX proto,请写入 metadata_props

property metadata_props: dict[str, str]

张量的元数据属性。

元数据属性用于存储有关张量的附加信息。与 meta 不同,此属性会序列化到 ONNX proto。

property name: str | None

张量的名称。

property nbytes: int

张量中的字节数。

numpy()[source]

将张量作为 numpy 数组返回。

当 numpy 不支持数据类型时,将使用 ml_dtype 包中的 dtypes。可以使用 .view() 方法将值重新解释为位表示。

返回类型:

ndarray

property raw: TArrayCompatible

张量的后端数据。不可变。

property shape: Shape

张量的形状。不可变。

property size: int

张量中的元素数量。

tobytes()[source]

以小端编码的字节形式返回值。

当原始值不是 numpy 数组时,覆盖此方法以实现更高效的序列化。

返回类型:

bytes

tofile(file)[source]

将张量写入二进制文件。

版本 0.1.11 中新增。

参数:

file – 一个具有接受字节的 write 方法或具有 fileno() 方法的文件类对象。

返回类型: