ExternalTensor

class onnx_ir.ExternalTensor(location, offset, length, dtype, *, shape, name, doc_string=None, metadata_props=None, base_dir='')

一个不可变的具体张量,其数据存储在磁盘上。

当数据类型被 numpy 支持时,此类使用内存映射来避免将张量加载到内存中。否则,张量在访问时才会被延迟加载到内存中。

调用 shape 不会产生 I/O。如果关注 I/O 开销和内存使用,建议在加载张量之前检查形状。

要获取数组,请调用 numpy()。要获取字节,请调用 tobytes()。要将数据写入文件,请调用 tofile()

location 必须是符合 ONNX 规范的相对路径。给定正确的 base_dirpath 将计算为数据文件的完整路径。用户应该期望 path 始终指向正确的文件。在初始化时,不检查路径。用户有责任确保路径有效且可访问。

参数:
location

数据文件的位置。它是相对于基目录的路径。

base_dir

外部数据的基目录。用于解析相对路径。序列化时,只有 location 被序列化到 TensorProto 的 “location” 字段中。

path

数据文件的路径。这是通过连接 base_dirlocation 计算出来的。

offset

从文件开头起的字节偏移量。

length

数据的字节长度。

dtype

张量的数据类型。

shape

张量的形状。

name

张量的名称。必须指定。

doc_string

文档字符串。

metadata_props

元数据属性。

raw
property base_dir: str | PathLike
display(*, page=False)

漂亮地打印对象。

参数:

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

返回类型:

property doc_string: str | None

文档字符串。

property dtype: DataType
invalidate()[source]

使张量无效。

当数据已知损坏或删除时,外部张量将失效。

返回类型:

property length: int | None
property location: str | PathLike
property meta: MetadataStore

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

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

property metadata_props: dict[str, str]

张量的元数据属性。

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

property name: str | None

张量的名称。

property nbytes: int

张量中的字节数。

numpy()[source]

将张量作为 numpy 数组返回。

数据将被内存映射到内存中,并且不会占用物理内存空间。

返回类型:

ndarray

property offset: int | None
property path: str
release()[source]

删除对内存缓冲区的所有引用并关闭内存映射文件。

返回类型:

property shape: Shape
property size: int

张量中的元素数量。

tobytes()[source]

返回张量的字节。

这将把张量加载到内存中。

返回类型:

bytes

tofile(file)[source]

将张量写入二进制文件。

此方法将张量的原始字节写入文件类对象。文件类对象必须具有接受字节的 write 方法。

在 0.1.11 版本中添加。

参数:

file – 具有接受字节的 write 方法的文件类对象。

返回类型:

valid()[source]

检查张量是否有效。

如果外部张量尚未失效,则它有效。

返回类型:

布尔