1. 程式人生 > >想上熱門榜單?看Python程式猿怎麼做的!

想上熱門榜單?看Python程式猿怎麼做的!

今天打開了手機,看到了許許多多的排行榜,其中看到我的步數竟然又少於隔壁老王,我一想這不行,我得弄個刷排行榜的程式來超過他,經過一段時間的構思,我決定做個更全面的,直接做個能刷全部排行榜的神器,以後就在也不怕跟別人比排名了,嘿嘿嘿!

想上熱門榜單?看Python程式猿怎麼做的!

 

大家想不想刷排行榜?

如果答案是肯定的,就別再猶豫了,快來動手吧!

背景

theano 是一個python語言的庫,實現了一些機器學習的方法,最大的特點是可以就像普通的python程式一樣透明的使用GPU

想上熱門榜單?看Python程式猿怎麼做的!

 

想上熱門榜單?看Python程式猿怎麼做的!

 

想上熱門榜單?看Python程式猿怎麼做的!

 

輸入資料修改

原來是從cPickle匯入:

想上熱門榜單?看Python程式猿怎麼做的!

 

valid_set是用來在SGD迭代過程中,用來驗證效果但不參與訓練的資料集。每次只有確定在valid_set上更有效,才繼續進行目標函式的優化,這樣可以防止過擬合。參見early-stopping [2] 。

設定資料集的大小,如果是除錯模式則減小資料集。

想上熱門榜單?看Python程式猿怎麼做的!

 

MNIST共有7w條記錄,其中6w是訓練集,1w是測試集。theano的樣例程式就是這麼做的,但kaggle把7w的資料分成了兩部分,train.csv一共42000行,test.csv一共28000行。實際可用來訓練的資料只有42000行(由此估計最後的效果也會有相應的折扣)。theano把6w的訓練集分為了5w的test_set和1w的valid_set,我在這裡把42000行資料分為36000的train_set、5000行的valid_set和1000行的test_set(訓練時用不到)。

想上熱門榜單?看Python程式猿怎麼做的!

 

想上熱門榜單?看Python程式猿怎麼做的!

 

想上熱門榜單?看Python程式猿怎麼做的!

 

我們需要的是最後一層的輸出,theano的樣例程式在最後一層lr給了我們一個符號變數y_pred,定義如下:

想上熱門榜單?看Python程式猿怎麼做的!

 

我對技術不敬畏,對不起各位了。

這樣我們就得到可以操作的陣列,寫入輸出檔案:

想上熱門榜單?看Python程式猿怎麼做的!

 

平移資料

以上可以差不多達到1.0%的誤差,和理論值0.5%還有差距,我覺得可能是因為資料不夠多,所以我對輸入輸出資料進行了平移預處理。 輸入資料平移:

想上熱門榜單?看Python程式猿怎麼做的!

 

想上熱門榜單?看Python程式猿怎麼做的!

 

ok,萬事俱備,刷榜吧!

執行結果

kaggle傳送門

valid_set_error=0.90 test_set_error=0.68

想上熱門榜單?看Python程式猿怎麼做的!

 

刷到前10,我感覺可以了,再往上刷10名就要被懷疑作弊了。

不明覺厲

simple cell到complex cell是怎麼實現的?

拿著某一斜率的filter去掃一遍全域性的影象

把影象分割成nxn份,做pooling(可以是max pooling)

想上熱門榜單?看Python程式猿怎麼做的!

 

想上熱門榜單?看Python程式猿怎麼做的!

 

以上就是本文的全部內容,希望對各位小夥伴們有所幫助!

寫在最後:

有想學Python或者對Python感興趣的老鐵,可以加群571799375,群裡有適合Python初學者學習的資料(2018最新版Python資料),免費送給大家!

本文來自網路,如有侵權,請聯絡小編刪除!