[Github項目]基於PyTorch的深度學習網絡模型實現

原文連接:mp.weixin.qq.com/s/VWRiFAQGZ…react

今天主要分享兩份 Github 項目,都是採用 PyTorch 來實現深度學習網絡模型,主要是一些經常使用的模型,包括如 ResNet、DenseNet、ResNext、SENet等,而且也給出相應的實驗結果,包含完整的數據處理和載入、模型創建、訓練流程搭建,以及測試代碼的實現。git

接下來就開始介紹這兩個項目。github


1. PyTorch Image Classification

這份代碼目前有 200+ 星,主要實現如下的網絡,在 MNIST、CIFAR十、FashionMNIST等數據集上進行實驗。算法

使用方法以下:微信

而後就是給出做者本身訓練的實驗結果,而後和原論文的實驗結果的對比,包括在訓練設置上的區別,而後訓練的迭代次數和訓練時間也都分別給出。網絡

以後做者還研究了殘差單元、學習率策略以及數據加強對分類性能的影響,好比dom

  • 相似金字塔網絡的殘差單元設計(PyramidNet-like residual units)
  • cosine 函數的學習率遞減策略(Cosine annealing of learning rate)
  • Cutout
  • 隨機消除(Random Erasing)
  • Mixup
  • 降採樣後的預激活捷徑(Preactivation of shortcuts after downsampling)

實驗結果代表:分佈式

  • 相似金字塔網絡的殘差單元設計有幫助,但不適宜搭配 Preactivation of shortcuts after downsampling
  • 基於 cosine 的學習率遞減策略提高幅度較小
  • Cutout、隨機消除以及 Mixup 效果都很好,其中 Mixup 須要的訓練次數更多

除了這個實驗,後面做者還繼續作了好幾個實驗,包括對 batch 大小、初始學習率大小、標籤平滑等方面作了很多實驗,並給出對應的實驗結果。函數

最後給出了這些網絡模型的論文、不一樣訓練策略的論文。性能

這個項目除了實現對應的網絡模型外,使用不一樣技巧或者研究基本的 batch 大小、初始學習率都是能夠給予咱們必定啓發,有些技巧是能夠應用到網絡中,提升分類性能的。

連接:

github.com/hysts/pytor…


2. PyTorch Image Models

這份代碼目前有 600+ 星,而且最近幾天也有更新,實現的網絡更多,包括 DPN、Xception、InceptionResNetV2,以及最近比較火的 EfficientNet。

)

這個項目有如下幾個特色:

  • 對全部的模型都作了封裝,也就是都有默認的配置接口和 API,包括統一的調用分類器接口get_classifierreset_classifier,對特徵的前向計算接口forward_features
  • 模型都有一致的預訓練模型加載器,便可以決定是否採用預訓練模型最後一層或者輸入層是否須要從 3 通道變爲 1通道;
  • 訓練腳本能夠在不一樣模式下使用,包括分佈式、單機多卡、單機單卡或者單機 CPU
  • 動態實現池化層的操做,包括平均池化(average pooling)、最大池化(max pooling)、平均+最大、或者平均和最大池化結果鏈接而不是疊加;
  • 不一樣訓練策略的實現,好比 cosine 學習率、隨機消除、標籤平滑等
  • 實現 Mixup
  • 提供一個預測腳本

做者一樣給出訓練的實驗結果,而後還有使用方法,一樣也是在指定位置準備好數據,就可使用了。

另外,做者還給出 ToDo 列表,會繼續完善該項目。

連接:

github.com/rwightman/p…


歡迎關注個人微信公衆號--算法猿的成長,或者掃描下方的二維碼,你們一塊兒交流,學習和進步!

相關文章
相關標籤/搜索