1 深度学习中的多维数据存储方式NCHWNHWC区别和简单介绍

在深度学习框架中,多维数据通过多维数组存储,比如卷积神经网络的特征图(Feature Map)通常使用四维数组保存,其数据维度为4D。其中4D中的N、H、W、C的各自意义如下:

  • N:Batch数量,例如图像的数量;
  • H:Height,特征图高度,即垂直高度方向的像素个数;
  • W:Width,特征图宽度,即水平宽度方向的像素个数;
  • C:Channels,特征图通道,例如彩色RGB图像的Channels为3;

由于数据只能线性存储,因此这四个维度有对应的顺序。

不同深度学习框架会按照不同的顺序存储特征图数据,比如Caffe,排列顺序为[Batch, Channels, Height, Width],即NCHW。TensorFlow中,排列顺序为[Batch, Height, Width, Channels],即NHWC。

以一张格式为RGB的图片为例,NCHW实际存储的是“RRRRRRGGGGGGBBBBBB”,同一通道的所有像素值顺序存储在一起,而NHWC实际存储的则是“RGBRGBRGBRGBRGBRGB”,多个通道的同一位置的像素值顺序存储在一起。

深度学习 – 深度学习中的多维数据存储方式NCHW和NHWC-StubbornHuang Blog

上图中的上半部分的图像描述的是NCHW的数组存储方式,下半部分图像描述的是NHWC的存储方式。