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 中。

class onnx.TensorProto
class Segment

TensorShapeProto

這定義了張量或稀疏張量的形狀。它是一個維度清單。維度可以是整數值或符號變數。符號變數表示未知的維度。

class onnx.TensorShapeProto
class Dimension

TrainingInfoProto

TrainingInfoProto 儲存用於訓練模型的資訊。特別是,這定義了兩個功能:初始化步驟和訓練演算法步驟。初始化將模型重設為其原始狀態,就像未執行任何訓練一樣。訓練演算法根據輸入資料改進模型。初始化步驟的語意是,首先按照圖中的初始化器指定初始化 ModelProto.graph 和 TrainingInfoProto.algorithm 中的初始化器,然後由 ModelProto.training_info 中每個實例的 *initialization_binding* 更新。欄位 *algorithm* 定義了一個計算圖,它表示訓練演算法的步驟。在執行 TrainingInfoProto.algorithm 之後,可以立即更新 *update_binding* 指定的初始化器。如果目標訓練演算法包含連續的更新步驟(例如區塊座標下降法),則使用者需要為每個步驟建立一個 TrainingInfoProto。

class onnx.TrainingInfoProto

TypeProto

這定義了張量的類型,其中包含元素類型和形狀 (ShapeProto)。

class onnx.TypeProto
class Map
class Opaque
class Optional
class Sequence
class SparseTensor
class Tensor

ValueInfoProto

這定義了 GraphProto 的輸入或輸出類型。它包含名稱、類型 (TypeProto) 和說明文件字串。

class onnx.ValueInfoProto