Protos¶
此結構使用 protobuf 在檔案 onnx/*.proto
中定義。建議使用模組 onnx.helper 中的函式來建立它們,而不是直接實例化它們。每個結構可以使用函式 print
列印,並呈現為 json 字串。
AttributeProto¶
此類別用於定義由 NodeProto 本身定義的運算符的屬性。它是一個具名的屬性,包含單一的浮點數、整數、字串、圖形和張量值,或重複的浮點數、整數、字串、圖形和張量值。AttributeProto 必須包含 name 欄位,並且只能包含以下內容欄位中的一個,有效地強制執行 C/C++ 聯合等效項。
- class onnx.AttributeProto¶
FunctionProto¶
這定義了一個函式。它不是模型,但可以用於定義模型中使用的自訂運算符。
- class onnx.FunctionProto¶
GraphProto¶
這定義了圖形或一組從迴圈或測試中呼叫的節點。圖形定義了模型的計算邏輯,並且由參數化的節點清單組成,這些節點基於它們的輸入和輸出形成有向無環圖。這相當於許多深度學習框架中的網路或圖形。
- class onnx.GraphProto¶
MapProto¶
這定義了映射或字典。它指定一個由鍵和值定義的關聯表。MapProto 由重複的鍵欄位(類型為 INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64 或 STRING)和值欄位(類型為 TENSOR、SPARSE_TENSOR、SEQUENCE 或 MAP)組成。在整個 MapProto 實例化過程中,鍵類型和值類型必須保持不變。
- class onnx.MapProto¶
ModelProto¶
這定義了一個模型。這是每個轉換程式庫在轉換機器學習模型後傳回的類型。ModelProto 是一個頂層檔案/容器格式,用於捆綁 ML 模型並將其計算圖與元數據相關聯。模型的語義由相關的 GraphProto 的描述。
- class onnx.ModelProto¶
NodeProto¶
這定義了一個運算符。模型是數學函式的組合,每個函式都表示為 NodeProto 中儲存的 onnx 運算符。計算圖由節點的 DAG 組成,這些節點表示機器學習框架中通常稱為層或管線階段的內容。例如,它可以是類型為 Conv 的節點,它接收圖像、篩選器張量和偏差張量,並產生捲積輸出。
- class onnx.NodeProto¶
OperatorProto¶
使用者很少使用此類別。OperatorProto 表示運算符的簽名和語義的不變規範。運算符會宣告為 OperatorSet 的一部分,而 OperatorSet 也會定義集合的網域名稱。運算符由三部分標識符 (domain, op_type, since_version) 唯一識別,其中
domain 是包含此運算符規範的運算符集的網域。
op_type 是 NodeProto.op_type 引用的運算符名稱
since_version 是此運算子最初宣告時所屬的運算子集合版本。
- class onnx.OperatorProto¶
OperatorSetIdProto¶
這是 ModelProto 類別的 opset_import
屬性的類型。此屬性指定模型中使用的運算子版本。每個運算子或節點都屬於一個網域。相同網域的所有運算子都共用相同的版本。
- class onnx.OperatorSetIdProto¶
OperatorSetProto¶
OperatorSetProto 代表一個不可變的運算子規範集合。該集合的網域 (OperatorSetProto.domain) 是一個反向 DNS 名稱,用於區分由獨立實體定義的運算子集合。該集合的版本 (opset_version) 是一個單調遞增的整數,表示運算子集合成員的變更。運算子集合由一個兩部分識別碼 (domain, opset_version) 唯一識別。與 ModelProto 類似,OperatorSetProto 旨在作為頂層檔案/傳輸格式,因此除了運算子集合資訊外,還具有標準格式標頭。
- class onnx.OperatorSetProto¶
OptionalProto¶
模型的某些輸入或輸出是可選的。在這種情況下必須使用此類別。OptionalProto 類別的實例可以包含或不包含 TensorProto、SparseTensorProto、SequenceProto、MapProto 和 OptionalProto 類別的實例。
- class onnx.OptionalProto¶
SequenceProto¶
這定義了一個同質類型元素的密集、有序集合。序列可以由張量、映射或序列組成。如果序列由張量組成,則張量必須具有相同的元素類型 (即 int32)。在某些情況下,序列中的張量可以具有不同的形狀。張量是否可以具有不同的形狀取決於與對應的 ValueInfo
相關聯的類型/形狀。例如,Sequence<Tensor<float, [M,N]>
表示所有張量具有相同的形狀。但是,Sequence<Tensor<float, [omitted,omitted]>
表示它們可以具有不同的形狀(均為秩 2),其中 *omitted* 表示對應的維度沒有符號/常數值。最後,Sequence<Tensor<float, omitted>>
表示當 *shape* 本身從張量類型中省略時,不同的張量可以具有不同的秩。如需更完整的描述,請參閱 靜態張量形狀。
- class onnx.SequenceProto¶
SparseTensorProto¶
這定義了一個稀疏張量。非預設值的序列編碼為形狀為 [NNZ]
的張量。對於數值張量,預設值為零;對於字串張量,預設值為空字串。values 必須存在一個非空名稱,該名稱在 sparse_initializer 清單中使用時作為 SparseTensorProto 的名稱。
- class onnx.SparseTensorProto¶
StringStringEntryProto¶
這相當於一對字串。它用於在 ModelProto 中儲存元資料。
- class onnx.StringStringEntryProto¶
TensorProto¶
這定義了一個張量。張量由形狀 (請參閱 ShapeProto)、元素類型 (請參閱 TypeProto) 和元素本身完全描述。所有可用的類型都列在 onnx.mapping 中。
TensorShapeProto¶
這定義了張量或稀疏張量的形狀。它是一個維度清單。維度可以是整數值或符號變數。符號變數表示未知的維度。
TrainingInfoProto¶
TrainingInfoProto 儲存用於訓練模型的資訊。特別是,這定義了兩個功能:初始化步驟和訓練演算法步驟。初始化將模型重設為其原始狀態,就像未執行任何訓練一樣。訓練演算法根據輸入資料改進模型。初始化步驟的語意是,首先按照圖中的初始化器指定初始化 ModelProto.graph 和 TrainingInfoProto.algorithm 中的初始化器,然後由 ModelProto.training_info 中每個實例的 *initialization_binding* 更新。欄位 *algorithm* 定義了一個計算圖,它表示訓練演算法的步驟。在執行 TrainingInfoProto.algorithm 之後,可以立即更新 *update_binding* 指定的初始化器。如果目標訓練演算法包含連續的更新步驟(例如區塊座標下降法),則使用者需要為每個步驟建立一個 TrainingInfoProto。
- class onnx.TrainingInfoProto¶
TypeProto¶
這定義了張量的類型,其中包含元素類型和形狀 (ShapeProto)。
ValueInfoProto¶
這定義了 GraphProto 的輸入或輸出類型。它包含名稱、類型 (TypeProto) 和說明文件字串。
- class onnx.ValueInfoProto¶