深度学习中,常常出现摆数的要求;
常常会对数据的不一样格式出现疑惑,这里记录下来;
说到的NHWC或者 NCHW其中每一个表明的含义以下:
N表明数量, C表明channel,H表明高度,W表明宽度。
html
一、NCHW其实表明的是[W H C N], 第一个元素是000,第二个元素是沿着w方向的,即001,这样下去002 003,再接着呢就是沿着H方向,即004 005 006 007…这样到019后,沿C方向,轮到了020,以后021 022 …一直到319,而后再沿N方向。markdown
二、NHWC表明的是[C W H N], 第一个元素是000,第二个沿C方向,即020,040, 060…一直到300,以后沿W方向,001 021 041 061…301…到了303后,沿H方向,即004 024 …304.。最后到了319,变成N方向,320,340…学习
当在不一样的硬件加速的状况下,选用的类型不一样,在intel GPU加速的状况下,由于GPU对于图像的处理比较多,但愿在访问同一个channel的像素是连续的,通常存储选用NCHW,这样在作CNN的时候,在访问内存的时候就是连续的了,比较方便;ui
因此在深度学习的时候,推理的前处理,通常都是将RGB或BGR图像进行转变为NCHW的格式;一般咱们用opencv读取图像是NHWC的格式,须要进行通道分离,由于网路是一个通道一个通道的对图像作卷积,提取feature,因此NCHW更适合CNN。spa