Caffe、Tensorflow和Pytorch通道維度順序小結

目前世面上深度學習框架比較多,常用的有三大類:Caffe、Tensorflow和Pytorch,這三種深度學習框架都主要在英偉達顯卡上面進行訓練和測試,很奇怪的是,它們之間的通道維度順序並沒有保持一致,在多個框架中替換着使用,很容易讓人混淆了,所以做一個小結。

Caffe 的通道順序是NCHW;

Tensorflow的通道順序默認是NHWC(但可以設置成NCHW),NHWC 的訪存局部性更好(每三個輸入像素即可得到一個輸出像素),NCHW 則必須等所有通道輸入準備好才能得到最終輸出結果,需要佔用較大的臨時空間。

TensorFlow 爲什麼選擇 NHWC 格式作爲默認格式?因爲早期開發都是基於 CPU,使用 NHWC 比 NCHW 稍快一些(不難理解,NHWC 局部性更好,cache 利用率高)。

NCHW 則是 Nvidia cuDNN 默認格式,使用 GPU 加速時用 NCHW 格式速度會更快(也有個別情況例外)。

最佳實踐:設計網絡時充分考慮兩種格式,最好能靈活切換,在 GPU 上訓練時使用 NCHW 格式,在 CPU 上做預測時使用 NHWC 格式。

Pytorch的通道順序是NCHW

 

參考鏈接:https://blog.csdn.net/edward_zcl/article/details/102661617

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章