ONNX - 資料型別



在 ONNX(開放神經網路交換)中,模型中使用的資料型別是模型表示和計算的關鍵方面。作為機器學習模型的標準格式,ONNX 支援一系列資料型別,這些資料型別允許不同機器學習框架之間進行互操作。

在本教程中,我們將探討各種 ONNX 資料型別,包括張量型別、元素型別、稀疏張量以及非張量型別,如序列對映

理解 ONNX 中的張量

ONNX 主要關注涉及張量的數值計算,張量是多維陣列。張量用於表示 ONNX 模型中的輸入、輸出和中間值。

每個張量由三個關鍵元件定義 -

  • 元素型別:指定張量中所有元素的資料型別。
  • 形狀:描述張量維度的陣列。形狀可以是固定的或動態的,並且張量可以具有空形狀(例如,標量)。
  • 連續陣列:一個完全填充的資料值陣列。

這種設計優化了 ONNX 用於深度學習應用中的數值計算,在深度學習應用中,大型多維陣列很常見。

支援的元素型別

最初,ONNX 被設計為支援深度學習模型,這些模型通常使用浮點數(32 位浮點數)。但是,當前版本的 ONNX 支援廣泛的元素型別,從而可以在不同的機器學習和資料處理任務中實現靈活性。

以下是 ONNX 中支援的資料型別列表 -

元素型別 描述
FLOAT 32 位浮點數
UINT8 8 位無符號整數
INT8 8 位有符號整數
UINT16 16 位無符號整數
INT16 16 位有符號整數
INT32 32 位有符號整數
INT64 64 位有符號整數
STRING 字串資料型別
BOOL 布林型別
FLOAT16 16 位浮點數
DOUBLE 64 位浮點數
UINT32 32 位無符號整數
UINT64 64 位無符號整數
COMPLEX64 64 位複數
COMPLEX128 128 位複數
BFLOAT16 腦浮點數 16 位格式
FLOAT8E4M3FN 8 位浮點數(格式 E4M3FN)
FLOAT8E4M3FNUZ 8 位浮點數(格式 E4M3FNUZ)
FLOAT8E5M2 8 位浮點數(格式 E5M2)
FLOAT8E5M2FNUZ 8 位浮點數(格式 E5M2FNUZ)
UINT4 4 位無符號整數
INT4 4 位有符號整數
FLOAT4E2M1 4 位浮點數(格式 E2M1)

稀疏張量

當處理包含大量零的資料時,稀疏張量很有用。ONNX 支援稀疏張量,特別是 2D 稀疏張量。它們由SparseTensorProto類表示,該類包含以下屬性 -

  • dims:指定稀疏張量的形狀。
  • indices:張量中非零值的 position(以 int64 儲存)。
  • values:實際的非零值。

非張量資料型別

除了張量之外,ONNX 還支援非張量資料型別,例如 -

  • 序列:一系列張量。這對於需要處理張量列表或集合的操作很有用。
  • 對映:張量值的對映,通常用於關聯陣列或字典。

這些非張量型別更常用於經典的機器學習任務,在這些任務中,需要序列和對映等結構來表示某些操作。

廣告

© . All rights reserved.