終于可以放假回家了,雖然只有半個月,但是還是可以好好地做個休整(陪女朋友)。
這學期作為一個學數學的咸魚,從今年4月份開始入坑深度學習,4月初寫了第一篇文章<keras初體驗>,4月初正式入坑github和PyTorch,過程中寫了一些簡單的教程和自己學習中的總結,非常感謝大家一路以來對我這個寫作能力和表達能力都不是特別好的理工男的支持,萬萬沒想到我寫的PyTorch小白教程居然也在github上有了快70個star,真的是給了我這個初用github的小白極大的鼓勵。
一晃都快4個月了,在學校里做的第一個跟深度學習有關的項目也接近尾聲,從項目中深深地了解到了自己的不足,所以決定對機器學習、深度學習進行一次系統性的學習,下面準備開一些新坑,以前經常開很多坑,但是真正填完的沒有幾個,這次決定開幾個大坑慢慢填。
第一個坑是關于編程的,作為學數學出生的人,沒有受過太多計算機科學的訓練,所以在寫代碼上一直存在一些問題,知乎編程大神蕭井陌寫過一個編程入門指南,這在我學習編程初期給了我莫大的幫助,通過學習MIT 6.00.1x(計算機科學和python編程導論)讓我們在初期很快地愛上了編程。
之后由于時間的關系,后面的學習也就一直沒有繼續下去了,但是心里一直記著一本書,叫做SICP(Structure and Interpretation of Computer Programs)(計算機程序的構造和解釋),這本書被稱為神書。蕭大神說過,學完此書編程能力會有一個巨大的飛躍,所以心里一直想著要找時間學完此書,但是美中不足的是這本書的教學語言是Scheme,雖然SICP會從頭教你如何用Scheme,但是對于一門陌生的語言,還是一直拖著我開始這本書的學習。
直到最近我發現了一門神課,Berkeley開的暑期課程CS61A,這么課將以python作為教學語言學SICP,同時開課的教授還會針對python重新一本SICP的在線教材,這本教材還在不斷地更新中,直到8月10號該課結束。這對于我來講真的是雪中送炭,雖然沒有課程的視頻,但是有lecture和作業也是極好的,所以我決定開的第一個坑就是CS61A,如果之后有時間會開SICP的坑,將書學了,書后的習題做了。同時各位對編程癡狂的小伙伴不妨按著蕭大神的編程指南,將里面的內容都學了,那么就達到蕭井陌大神所謂的「入門」水平了,我覺得你會有「會當凌絕頂」的感覺。(我是暫時體會不到了)
第二個坑是關于深度學習和機器學習的系統性學習,此前只是零零散散看了一些內容,但是并沒有做筆記,也沒有深刻地進行理解,所以之后決定系統性的學一些課程,看一些書,當然在此之前肯定是要做一個合理的規劃了,所以便有了Roadmap of DL and ML,這是我對目前我了解到的深度學習和機器學習的課程,書籍,論文的總結,里面有很出名的課程,如cs229,機器學習基石和技法,cs231n等等,也有最新的課程,比如Berkeley的 Deep Reinfrcement Learning, MIT的 Deep Learning for Self-Driving Cars 等,還有一些優化的課程和線性代數的課程。
除此之外還有一門極其牛逼的課程,這門課程牛逼到我單獨拿出來說,那就是MXNet主要開發者之一的陳天奇在華盛頓大學開的一門課 Deep Learning System,陳天奇還開發了一個極其牛逼的框架,可能你已經用了很久了,只是你不知道是他開發的,那就是XGBoost,所以這門課可以說是一個系統設計的天才將他對系統設計的理解教給你。你說牛不牛逼,當你學完之后,你會對現在深度學習主流框架如tensorflow等有了完備的理解,當然學完之后距離你自己開發一套框架還是有一定的距離。(ps 我還沒學呢,很想學......)。
另外github里面的內容還在不斷更新,我會慢慢放上我的學習筆記,騙一波star啦。當然,也歡迎各位小伙伴上傳一些自己推薦的學習資料和筆記,蕭伯納說:「你有一個蘋果,我有一個蘋果,我們交換一下,一人還是一個蘋果;你有一個思想,我有一個思想,我們交換一下,一人就有兩個思想。」
最后開第三個坑,這個坑純屬被騙入坑的,至于如何被騙入坑,且聽我從今年CVPR2017慢慢道來。
看過我之前文章的人都知道我一直用的是PyTorch,當然用起來也非常的愉快,之前耳聞MXNet特別厲害,不僅在?顯存上更為節省,最主要的是速度更快,而是自動?并行和分布式,聽著就很牛逼,有木有。于是滿眼星星準備入坑,誰知道文檔做得太差了,很?多API都找不到,而且也沒有論壇,?遇到問題大家都?去issue里面提問,搞得issue里面也很混亂,同時對于issue也沒有太多的人維護,所以沒有辦法,只好棄坑了。
就在我Pytorch用得好好的,我看到了李沐大神開了一個repo,發現了一個新的東西叫gluon。同時還出現了一張圖片。
看著好牛逼,于是充滿著極客精神的我手賤地點開了第一張slide,前面幾頁列出了目前主流的深度學習框架的優缺點,比如符號式編程的代表,tensorflow,caffe,雖然便攜高效,但是不夠直掛靈活,代碼沒有易讀性,bug不好找;命令式編程的代表PyTorch,Chainer,靈活,但是對于復雜網絡速度很慢。然后列出了MXNet的優勢,在網絡的定義上采用符號式編程,在tensor計算上采用命令式編程,用這種混合編程的方式完美的解決了前面兩種框架的問題,看到這里你是不是覺得MXNet牛逼啊,準備入坑了。然而現實會殘忍地打醒你,因為MXNet的文檔對新手實在是太不友好了,??所以你肯定入不了這?個坑。
于是我想著?李沐大神,別吹逼了,快去?完善文檔,修bug吧,MXNet?是挺牛逼的,但是沒有完善的教程和文檔,新手怎么入坑啊。但是心細的讀者肯定發現了右下角有一個'not good enough'。沒錯,這個時候主角gluon登場了。
最后總結一波gluon的優勢,有下面的車做了一個形象的比喻,原來我以前開的一直是迷你電動車啊,雖然開不了F1,但是開個奧迪寶馬應該沒問題吧?
李沐大神確實很有煽動性,就幾頁slide,成功引起了我對gluon的關注,于是我去了gluon的文檔看了看,現在gluon只是預覽版,還沒有出正式版,但是沒有tutorial對新手還是不友好啊,于是我又發現一個repo,全套教程,驚呆了,從簡單的線性回歸到目標檢測,自然語言處理,GANs,DQN,一應俱全,雖然目前這個repo的已經完成的內容比較少,但是在不斷地更新中,非常期待全套教程的更新完成。
而且點進幾個notebook看了看,發現定義網絡的方式跟PyTorch簡直不要太像,這樣的話從PyTorch遷移過來的成本也不會太高,雖然目前聽使用的人說還是有些bug,不穩定,但是我算是成功入坑了,希望MXNet的開發者不要辜負大家的期望,努力去完善與開發,給我們提供更方便和快捷的深度學習框架。(我應該找AWS要廣告費)
寫了這么多,邏輯都有些混亂了,最后希望我能夠填完這些大坑吧,也祝各位讀者生活、學習、工作、科研都順利吧。
以上
歡迎關注我的github
歡迎訪問我的博客
歡迎查看我的知乎專欄,深度煉丹