TensorRT 支持不同的數據格式。有兩個方面需要考慮:數據類型和布局。
數據類型格式
數據類型是每個單獨值的表示。它的大小決定了取值范圍和表示的精度,分別是FP32(32位浮點,或單精度),FP16(16位浮點或半精度),INT32(32位整數表示),和 INT8(8 位表示)。
布局格式
布局格式確定存儲值的順序。通常,batch 維度是最左邊的維度,其他維度指的是每個數據項的方面,例如圖像中的C是通道, H是高度, W是寬度。忽略總是在這些之前的批量大小, C 、 H和W通常被排序為CHW (參見圖 1 )或HWC (參見圖 2 )。
圖1. CHW的布局格式:圖像分為HxW矩陣,每個通道一個,矩陣按順序存儲;通道的所有值都是連續存儲的。
圖2. HWC的布局格式:圖像存儲為單個HxW矩陣,其值實際上是 C 元組,每個通道都有一個值;一個點(像素)的所有值都是連續存儲的。
為了實現更快的計算,定義了更多格式以將通道值打包在一起并使用降低的精度。因此,TensorRT 還支持NC / 2HW2和NHWC8等格式。
在NC / 2HW2 ( TensorFormat::kCHW2 ) 中,通道值對在每個HxW矩陣中打包在一起(在奇數通道的情況下為空值)。結果是一種格式,其中? C/2 ? HxW矩陣的值是兩個連續通道的值對(參見圖 3 );請注意,如果它們在同一對中,則此排序將維度交錯為具有步長1的通道的值,否則將步長為 2xHxW 。
圖 3. 一對通道值在每個HxW矩陣中打包在一起。結果是一種格式,其中[C/2] HxW矩陣的值是兩個連續通道的值對
在NHWC8 ( TensorFormat::kHWC8 ) 中, HxW矩陣的條目包括所有通道的值。此外,這些值被打包在? C/8 ? 8 元組中,并且C向上舍入到最接近的 8 倍數。
在這種NHWC8格式中, HxW矩陣的條目包括所有通道的值。
其他TensorFormat遵循與前面提到的TensorFormat::kCHW2和TensorFormat::kHWC8類似的規則。
關于作者
Ken He 是 NVIDIA 企業級開發者社區經理 & 高級講師,擁有多年的 GPU 和人工智能開發經驗。自 2017 年加入 NVIDIA 開發者社區以來,完成過上百場培訓,幫助上萬個開發者了解人工智能和 GPU 編程開發。在計算機視覺,高性能計算領域完成過多個獨立項目。并且,在機器人和無人機領域,有過豐富的研發經驗。對于圖像識別,目標的檢測與跟蹤完成過多種解決方案。曾經參與 GPU 版氣象模式GRAPES,是其主要研發者。
審核編輯:郭婷
-
機器人
+關注
關注
211文章
28466瀏覽量
207294 -
NVIDIA
+關注
關注
14文章
4994瀏覽量
103153 -
人工智能
+關注
關注
1791文章
47350瀏覽量
238739
發布評論請先 登錄
相關推薦
評論