圖像分類實戰(三)-pytorch+SE-Resnet50+Adam+top1-96


top1直達96的模型:

pytorch框架、網絡模型SE-Resnet50,優化算法Adam

 


 

pytorch:

pytorch官方文檔,每個模塊函數都有github源碼鏈

教程的鏈接 http://pytorch.org/tutorials/ 

官方網站的連接 http://pytorch.org/ 

pytorch的github主頁https://github.com/pytorch/pytorch

Pytorch(一個優雅的框架)https://www.jianshu.com/p/6b96cb2b414e

Pytorch[facebook]是一個python優先的深度學習框架,是一個和tensorflow[google、工程能力強],Caffe,MXnet[amazon], theano[適合科研]一樣,非常底層的框架,它的前身是torch,主要的語言接口是Lua,在如今github上前10的機器學習項目有9個都是python的時代,一直沒有太多的人使用,比較小眾。而pytorch如今重新歸來,用python重寫了整個框架,又重新回到了程序員的視線。

在如今機器學習框架百出的時代,並沒有哪個框架是最好的,每個框架都有各自的優點。我們有必要掌握不同的框架,不要說精通每個框架,至少能夠看看這個框架下的代碼,因為github上不斷地有牛人論文復現,而他們用的框架肯定不會都是一樣的,所以你至少要能夠閱讀別人寫的在各個框架下的代碼。

 

使用keras & pytorch 的優缺點:

[keras] 一個很高層的結構,它的后端支持theano或tensorflow,它本質上並不是一個框架,只是對框架的操作做了一個封裝,你在寫keras的時候其實是對其后端進行調用,相當於你還是在tensorflow或者theano上跑程序,只不過你把你的語言交給keras處理了一下變成tensorflow聽得懂的語言,然后再交給tensorflow處理,這樣的后果當然方便你構建網絡,方便定義模型做訓練,極快的構建你的想法,工程實現很強,但是這樣也有一個后果,那就是細節你沒有辦法把控,訓練過程高度封裝,導致你沒有辦法知道里面的具體細節,以及每個參數的具體細節,使得調試和研究變得很困難。

[pytorch] 一個底層框架,類似theano & tensorflow。它的底層優化仍然實在c上的,但是它基本所有的框架都是用python寫的。

 


 

SE-Resnet50_33epoch:

1. SE-Resnet,ImageNet2017的冠軍

2. 網絡模型,50層,訓練了33個epoch。

3. top1-96。


 

 

Adam:

1. 了解adam和sgd的區別

https://blog.csdn.net/jiachen0212/article/details/80086926

sgd是最初的一種優化算法,深度學習優化算法經歷了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 這樣的發展歷程。

另外,說到優化算法,入門級必從 SGD 學起,老司機則會告訴你更好的還有 AdaGrad / AdaDelta,或者直接無腦用 Adam。可是看看學術界的最新 paper,卻發現一眾大神還在用着入門級的 SGD,最多加個 Momentum 或者 Nesterov,還經常會黑一下Adam

2. 優化算法的選擇和使用:

一般先用adam,再使用sgd

3. 總結:

Adam收斂更快,時間成本低

Sgd速度比較慢,但效果更好,假如時間充裕使用agd


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM