onnx._custom_element_types

此模組定義了 numpy 不支援的自訂 dtype。函數 onnx.numpy_helper.from_array()onnx.numpy_helper.to_array() 使用它們來轉換從/到這些類型的陣列。類別 onnx.reference.ReferenceEvalutor 也會使用它們。若要建立用於單元測試的這類陣列,例如,可以方便地寫入如下程式碼

import numpy as np
from onnx import TensorProto
from onnx.reference.ops.op_cast import Cast_19 as Cast

tensor_bfloat16 = Cast.eval(np.array([0, 1], dtype=np.float32), to=TensorProto.BFLOAT16)

以下使用的 numpy 表示法 dtype 僅供內部使用。未來可能會根據這些 numpy 類型的產業標準化而變更。

onnx._custom_element_types.bfloat16 = dtype((numpy.uint16, [('bfloat16', '<u2')]))

將 bfloat16 定義為 uint16。

onnx._custom_element_types.float4e2m1 = dtype((numpy.uint8, [('float4e2m1', 'u1')]))

定義 float 4 e2m1 類型,如需技術細節,請參閱 以 4 位元儲存的浮點數。請注意,一個整數會使用一個位元組儲存,因此比其 onnx 大小大兩倍。

onnx._custom_element_types.float8e4m3fn = dtype((numpy.uint8, [('e4m3fn', 'u1')]))

定義 float 8 e4m3fn 類型,如需技術細節,請參閱 以 8 位元儲存的浮點數

onnx._custom_element_types.float8e4m3fnuz = dtype((numpy.uint8, [('e4m3fnuz', 'u1')]))

定義 float 8 e4m3fnuz 類型,如需技術細節,請參閱 以 8 位元儲存的浮點數

onnx._custom_element_types.float8e5m2 = dtype((numpy.uint8, [('e5m2', 'u1')]))

定義 float 8 e5m2 類型,如需技術細節,請參閱 以 8 位元儲存的浮點數

onnx._custom_element_types.float8e5m2fnuz = dtype((numpy.uint8, [('e5m2fnuz', 'u1')]))

定義 float 8 e5m2fnuz 類型,如需技術細節,請參閱 以 8 位元儲存的浮點數

onnx._custom_element_types.int4 = dtype((numpy.int8, [('int4', 'i1')]))

定義 int4,如需技術細節,請參閱 4 位元整數類型。請注意,一個整數會使用一個位元組儲存,因此比其 onnx 大小大兩倍。

onnx._custom_element_types.uint4 = dtype((numpy.uint8, [('uint4', 'u1')]))

定義 int4,如需技術細節,請參閱 4 位元整數類型。請注意,一個整數會使用一個位元組儲存,因此比其 onnx 大小大兩倍。