類型標示¶
類型標示是用於描述輸入和輸出周圍語義資訊的機制。它儲存在 TypeProto 訊息上。
動機¶
此機制的動機可透過一個簡單的範例來說明。在神經網路 SqueezeNet 中,它接收 NCHW 影像輸入 float[1,3,244,244] 並產生輸出 float[1,1000,1,1]
input_in_NCHW -> data_0 -> SqueezeNet() -> output_softmaxout_1
為了執行此模型,使用者需要大量的資訊。在此情況下,使用者需要知道
輸入是影像
影像格式為 NCHW
色彩通道的順序為 bgr
像素資料為 8 位元
像素資料已正規化為值 0-255
此提案包含三個關鍵元件,以提供所有這些資訊
類型標示定義¶
首先,我們定義一組語義類型,這些類型定義模型通常作為輸入並產生為輸出的內容。
具體而言,在我們的第一個提案中,我們定義下列一組標準標示
TENSOR
描述類型使用標準 TypeProto 訊息保存泛型張量。IMAGE
描述類型保存影像。您可以使用維度標示來了解更多關於影像版面配置的資訊,以及可選的模型 metadata_props。AUDIO
描述類型保存音訊片段。TEXT
描述類型保存文字區塊。
模型作者應視情況將類型標示新增至模型的輸入和輸出。
使用輸入 IMAGE 的範例¶
讓我們使用上述相同的 SqueezeNet 範例,並顯示所有內容以正確註解模型
首先,將 ValueInfoProto
data_0
的 TypeProto.denotation 設定為 =IMAGE
由於它是影像,因此模型使用者現在知道要去模型上尋找影像中繼資料
然後在 ModelProto.metadata_props 上包含 3 個中繼資料字串
Image.BitmapPixelFormat
=Bgr8
Image.ColorSpaceGamma
=SRGB
Image.NominalPixelRange
=NominalRange_0_255
對於相同的 ValueInfoProto,請務必也使用維度標示來表示 NCHW
TensorShapeProto.Dimension[0].denotation =
DATA_BATCH
TensorShapeProto.Dimension[1].denotation =
DATA_CHANNEL
TensorShapeProto.Dimension[2].denotation =
DATA_FEATURE
TensorShapeProto.Dimension[3].denotation =
DATA_FEATURE
現在模型中有足夠的資訊來了解如何將正確的影像傳遞到模型中。