深度學習中,常常出現擺數的要求;
常常會對數據的不一樣格式出現疑惑,這裏記錄下來;
說到的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