NVIDIA TensorRT的数据格式定义

描述

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,是其主要研发者。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分