利用Python來刷排行榜!Python就是牛逼!

背景

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

mnist主頁: http://yann.lecun.com/exdb/mnist/

其他大部分資源位於deeplearning嚮導的主頁:

deeplearning.net嚮導: http://deeplearning.net/tutorial/

輸入數據修改

原來是從cPickle導入:

在學習過程中有什麼不懂得可以加我的
python學習交流扣扣qun,10667510
羣裏有不錯的學習視頻教程、開發工具與電子書籍。
與你分享python企業當下人才需求及怎麼從零基礎學習好python,和學習什麼內容

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

設定數據集的大小,如果是調試模式則減小數據集。

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(訓練時用不到)。

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

這樣我們就得到可以操作的數組,寫入輸出文件:

平移數據

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

ok,萬事俱備,刷榜吧!

運行結果

kaggle傳送門

valid_set_error=0.90 test_set_error=0.68

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

對Python感興趣或者是正在學習的小夥伴,可以加入我們的Python學習扣qun:784758214,看看前輩們是如何學習的!從基礎的python腳本到web開發、爬蟲、django、數據挖掘等,零基礎到項目實戰的資料都有整理。送給每一位python的小夥伴!分享一些學習的方法和需要注意的小細節,教你如何實現邊學習邊用Python賺錢的學習方式。點擊加入我們的python學習者聚集地

不明覺厲

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

  1. 拿着某一斜率的filter去掃一遍全局的圖像
  2. 把圖像分割成nxn份,做pooling(可以是max pooling)

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