NCHW与NHWC格式
NCHW與NHWC格式
下圖很好的描述了各種不同的格式。
N代表數量, C代表channel,H代表高度,W代表寬度。
NCHW其實代表的是[W H C N],第一個元素是000,第二個元素是沿著w方向的,即001,這樣下去002 003,再接著呢就是沿著H方向,即004 005 006 007…這樣到019后,沿C方向,輪到了020,之后021 022 …一直到319,然后再沿N方向。
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…
圖中所示a就是指四個維度。
在不同的硬件加速的情況下,選用的類型不同,在intel GPU加速的情況下,因為GPU對于圖像的處理比較多,希望在訪問同一個channel的像素是連續的,一般存儲選用NCHW,這樣在做CNN的時候,在訪問內存的時候就是連續的了,比較方便。
TensorFlow有兩種數據格式NHWC和NCHW
TensorFlow有兩種數據格式NHWC和NCHW,默認的數據格式是NHWC,可以通過參數data_format指定數據格式。這個參數規定了 input Tensor 和 output Tensor 的排列方式。
1、data_format
設置為 “NHWC” 時,排列順序為 [batch, height, width, channels]
設置為 “NCHW” 時,排列順序為 [batch, channels, height, width]
data_format 默認值為 "NHWC。其中 N 表示這批圖像有幾張,H 表示圖像在豎直方向有多少像素,W 表示水平方向像素數,C 表示通道數(例如黑白圖像的通道數 C = 1,而 RGB 彩色圖像的通道數 C = 3)。為了便于演示,后面作圖均使用 RGB 三通道圖像。
NCHW 中,C 排列在外層,每個通道內像素緊挨在一起,即 ‘RRRRRRGGGGGGBBBBBB’ 這種形式。
NHWC 格式,C 排列在最內層,多個通道對應空間位置的像素緊挨在一起,即 ‘RGBRGBRGBRGBRGBRGB’ 這種形式。
如果需要對圖像做彩色轉灰度計算,NCHW 計算過程如下:
即 R 通道所有像素值乘以 0.299,G 通道所有像素值乘以 0.587,B 通道所有像素值乘以 0.114,最后將三個通道結果相加得到灰度值。
相應地,NHWC 數據格式的彩色轉灰度計算過程如下:
最佳實踐:設計網絡時充分考慮兩種格式,最好能靈活切換,在 GPU 上訓練時使用 NCHW 格式,在 CPU 上做預測時使用 NHWC 格式。
在不同的硬件加速的情況下,選用的類型不同,在intel GPU加速的情況下,因為GPU對于圖像的處理比較多,希望在訪問同一個channel的像素是連續的,一般存儲選用NCHW,這樣在做CNN的時候,在訪問內存的時候就是連續的了,比較方便。
**# NCHW [batch,in_channels,in_height,in_weight]
NHWC [batch,in_height,in_weight,in_channels]
CHWN [in_channels,in_height,in_weight,batch]
轉換 NCHW—NHWC**
import tensorflow as tf
x = tf.reshape(tf.range(24),[1,2,3,4])
out = tf.transpose(x,[0,2,3,1])
print (x.shape)
print (out.shape)
#轉換NHWC–NCHW
import tensorflow as tf
x = tf.reshape(tf.range(24), [1, 3, 4, 2])
out = tf.transpose(x, [0, 3, 1, 2])
print (x.shape)
print (out.shape)
參考鏈接:
https://www.cnblogs.com/sunny-li/p/9630305.html
https://blog.csdn.net/weixin_37801695/article/details/86614566
https://mp.weixin.qq.com/s/I4Q1Bv7yecqYXUra49o7tw
https://blog.csdn.net/weixin_41847115/article/details/83794551
總結
以上是生活随笔為你收集整理的NCHW与NHWC格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARM研发进展与企业清单
- 下一篇: 特斯拉超级计算机Dojo