onnx.model_container¶
ModelContainer¶
- class onnx.model_container.ModelContainer[source]¶
实现了一个 API,用于将大型张量存储在主 ModelProto 之外,避免在定义模型时复制大型初始化器,并且这些初始化器永远不会通过 protobuf 序列化。在用户显式保存模型之前,不会将任何张量存储在磁盘上。
- enumerate_graph_protos() Iterable[GraphProto] [source]¶
枚举模型中的所有 GraphProtos。
- is_in_memory_external_initializer(name: str) bool [source]¶
判断初始化器名称是否为存储在内存中的外部初始化器。在这种情况下,名称必须以“#”开头。
- load(file_path: str, load_large_initializers: bool = True)[source]¶
加载大型模型。
- 参数:
file_path – 模型文件
load_large_initializers – 加载大型初始化器,如果未执行此操作,则模型不完整,但可用于查看模型而无需执行它,并且可以使用方法
_load_large_initializers()
稍后加载它们
- save(file_path: str, all_tensors_to_one_file: bool = False) ModelProto [source]¶
保存大型模型。该函数返回一个 ModelProto,如果模型不需要任何修改,则返回当前模型;如果需要进行更改(例如为每个外部张量指定文件名),则返回其修改后的副本。
- 参数:
file_path – 模型文件
all_tensors_to_one_file – 将所有大型张量保存到一个文件或每个大型张量一个文件
- 返回值:
保存的 ModelProto
make_large_model¶
- onnx.model_container.make_large_model(graph: GraphProto, large_initializers: dict[str, ndarray] | None = None, **kwargs: Any) ModelContainer [source]¶
构建一个 ModelContainer
protobuf 的 C API 和 Python API 在不序列化 proto 的情况下无法操作。此函数使用 ModelContainer 的 Python API。
- 参数:
graph – make_graph 返回
large_initializers – 字典 name: large tensor,大型张量是任何支持 DLPack 协议的 python 对象,张量的所有权转移到 ModelContainer,张量必须定义方法 tobytes,例如 numpy 张量
**kwargs – 要添加到返回实例的任何属性
- 返回值:
ModelContainer