onnx.model_container

ModelContainer

class onnx.model_container.ModelContainer[原始碼]

實作一個 API,將大型張量儲存在主 ModelProto 之外,它可以避免在定義模型時複製大型初始值設定項,並且這些初始值設定項永遠不會透過 protobuf 序列化。在使用者明確儲存模型之前,不會在磁碟上儲存任何張量。

enumerate_graph_protos() Iterable[GraphProto][原始碼]

列舉模型中的所有 GraphProtos。

is_in_memory_external_initializer(name: str) bool[原始碼]

判斷初始化設定項名稱是否為儲存在記憶體中的外部初始化設定項。在這種情況下,名稱必須以「#」開頭。

load(file_path: str, load_large_initializers: bool = True)[原始碼]

載入大型模型。

參數:
  • file_path – 模型檔案

  • load_large_initializers – 載入大型初始化設定項,如果未執行此操作,則模型不完整,但可用於查看模型而不執行它,且方法 _load_large_initializers() 可用於稍後載入它們

save(file_path: str, all_tensors_to_one_file: bool = False) ModelProto[原始碼]

儲存大型模型。如果模型不需要任何修改,則此函數會傳回 ModelProto,如果模型需要變更 (例如為每個外部張量提供檔案名稱),則會傳回其修改後的副本。

參數:
  • file_path – 模型檔案

  • all_tensors_to_one_file – 將所有大型張量儲存在一個檔案中,或每個大型張量一個檔案

傳回:

已儲存的 ModelProto

set_large_initializers(large_initializers: dict[str, ndarray])[原始碼]

新增所有大型張量 (未儲存在模型中)。

make_large_model

onnx.model_container.make_large_model(graph: GraphProto, large_initializers: dict[str, ndarray] | None = None, **kwargs: Any) ModelContainer[原始碼]

建構 ModelContainer

protobuf 的 C API 和 Python API 在不序列化 protos 的情況下無法運作。此函數使用 ModelContainer 的 Python API。

參數:
  • graphmake_graph 傳回

  • large_initializers – 字典 name: large tensor,大型張量是任何支援 DLPack 協定的 python 物件,張量的所有權會轉移至 ModelContainer,張量必須定義類似於 numpy 張量的方法 tobytes

  • **kwargs – 要新增至傳回執行個體的任何屬性

傳回:

ModelContainer

make_large_tensor_proto

onnx.model_container.make_large_tensor_proto(location: str, tensor_name: str, tensor_type: int, shape: tuple[int, ...]) TensorProto[原始碼]

建立一個外部張量。

參數:
  • location – 唯一識別符(不一定是路徑)。

  • tensor_name – 圖表中的張量名稱。

  • tensor_type – ONNX 類型。

  • shape – 初始化器的形狀。

傳回:

建立的張量。