日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习NCHW和NHWC数据格式(由三维数据转换成一维数据的遍历方式)

發布時間:2025/3/20 pytorch 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习NCHW和NHWC数据格式(由三维数据转换成一维数据的遍历方式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 一、基本概念
    • 二、邏輯表達
    • 三、物理存儲
      • 3.1 NCHW
      • 3.2 NHWC
    • 四、RGB圖像數據舉例
    • 五、不同框架支持

流行的深度學習框架中有不同的數據格式,典型的有NCHW和NHWC格式。本文從邏輯表達和物理存儲角度用圖的方式來理解這兩種數據格式,最后以RGB圖像為例來加深NHWC和NCHW數據存儲格式的理解。

一、基本概念

深度學習框架中,數據一般是4D,用NCHW或NHWC表達,其中:

  • N - Batch
  • C - Channel
  • H - Height
  • W - Width

二、邏輯表達

假定N = 2,C = 16,H = 5,W = 4,那么這個4D數據,看起來是這樣的:


人類比較直接的理解方式是3D,上圖中從三個方向上理解,C方向/H方向/W方向。然后是N方向上,就是4D。

上圖中紅色標準的數值是這個數據里每個元素的數值。

三、物理存儲

無論邏輯表達上是幾維的數據,在計算機中存儲時都是按照1D來存儲的。NCHW和NHWC格式數據的存儲形式如下圖所示:

3.1 NCHW

NCHW是先取W方向數據;然后H方向;再C方向;最后N方向。

所以,序列化出1D數據:

000 (W方向) 001 002 003,(H方向) 004 005 … 019,(C方向) 020 … 318 319,(N方向) 320 321 …

3.2 NHWC

NHWC是先取C方向數據;然后W方向;再H方向;最后N方向。

所以,序列化出1D數據:

000 (C方向) 020 … 300,(W方向) 001 021 … 303,(H方向) 004 … 319,(N方向) 320 340 …

四、RGB圖像數據舉例

表達RGB彩色圖像時,一個像素的RGB值用3個數值表示,對應Channel為3。易于理解這里假定N=1,那么NCHW和NHWC數據格式可以很直接的這樣表達:


NCHW

  • 先在一個Channel面上把W方向|H方向上元素存儲起來 // R
  • 然后再在另一個Channel切面上把W方向|H方向上元素存儲起來 // G
  • 最后一個Channel切面上把W方向|H方向上元素存儲起來 // B

這樣看起來,就是先把R通道的每個像素都存儲;然后存儲G通道;再然后B通道。

NHWC

  • 先把3個Channel上元素存儲起來 // 也就是一個像素的RGB
  • 然后再在W方向|H方向上元素存儲起來
  • 這樣看起來,就是順序地取像素的RGB數值存儲起來

五、不同框架支持

目前的主流ML框架對NCHW和NHWC數據格式做了支持,有些框架可以支持兩種且用戶未做設置時有一個缺省值:

  • TensorFlow:缺省NHWC,GPU也支持NCHW
  • Caffe:NCHW
  • PyTorch:NCHW

【后注】:Intel Math Kernel Library for Deep Neural Networks (Intel MKL-DNN)中有關于NCHW和NHWC很好的描述,目前網絡上絕大多數介紹的圖都來自那里。本文也是直接借助其中的圖來描述的。

參考文章:圖解NCHW與NHWC數據格式

總結

以上是生活随笔為你收集整理的深度学习NCHW和NHWC数据格式(由三维数据转换成一维数据的遍历方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。