关于学习TF
看了《機器學習速成課程》的相關新聞,開始關注并學習TensorFlow。
然后就被里面的各種名詞搞蒙了:邏輯回歸、梯度下降、過擬合……
稀里糊涂把教程堅持下來了,感覺讀了遍天書
于是老老實實從基礎學。
花了一個月時間學習python,認真練習NumPy,Pandas,matplotlib。
機器學習的各種算法了解了點原理,公式基本看不懂,推導更是完全蒙圈。
不過再看相關教程,感覺不那么陌生了,看來是有用。
進一步了解到TensorFlow是眾多機器學習框架中的一個,也是最流行的那個。
這樣算是有了點基礎了,雖然不大牢固吧,但是再看TF覺得不那么困難了。
剛開始看TF,做了MNIST的那個入門例子。
運行出來了,但不大了解原理。
一點點學習里面用到的每一個函數。
花了兩天時間,把例子用到的函數都寫代碼練習了一遍。
特別是feed_dict的使用,做了各種嘗試。
然后再看這個例子,覺得基本上理解了。
總結如下:
推薦大家一個可以看模型的神器,Netron. 鏈接: https://github.com/lutzroeder/netron
這個軟件工作中作用不小,在美國社區已經挺普及的了。它可以直接顯示整個graph的flow,適用于.meta, .pb,.tflite格式。
比如freeze出了一個.pb file,直接就可以用這個軟件打開看,每一個node的名字,weights的type, shape和values都一目了然。還自帶每一個op的definition有的還帶數學解析。
不少人現在需要用到fake quantization, 用這個軟件可以清晰的看出哪些地方加了fake quantized nodes,哪些地方該加的沒加導致toco報錯(那些min/max缺失的錯)。toco轉化完以后還可以打開看.tflite的quantized model。
[課程推薦] 北大曹健教授的人工智能實踐:TensorFlow筆記
課程內容如下:
第一講 帶著大家梳理人工智能領域的基本概念:比如什么是人工智能、什么機器學習、什么是深度學習,他們的發展歷史是什么,能用他們做什么。課后,助教會帶領大家安裝Ubuntu系統、Python解釋器 和 Tensorflow環境,把同學們的電腦進行改造,讓它變得更專業。
第二講 串講python語法:課程將幫同學們在最短的時間內把python語法織成網,為后續課程掃清代碼關;
第三講 講解Tensorflow的關鍵詞,搭建神經網絡:這節課會介紹張量、計算圖、會話等概念,并用Python搭建你的第一個神經網絡,總結出神經網絡搭建的八股。
第四講 講解神經網絡的優化:包括損失函數、學習率、滑動平均和正則化。
第五講 講解全連接網絡:使用MNIST數據集,搭建全連接網絡實現手寫數字的識別。包括前向傳播、反向傳播、識別準確率輸出和反向傳播斷點續訓。
第六講 講解全連接網絡應用:更改上一講全連接網絡的代碼,現場手寫一個數字,輸出這個數字的值。
第七講 講解卷積神經網絡:使用MNIST數據集,搭建卷積神經網絡實現前向傳播、反向傳播、識別準確率輸出和反向傳播斷點續訓。
第八講 講解卷積神經網絡應用:復現ImageNet數據集訓練好的模型,實現特定圖片的識別。
課程在中國大學MOOC上
https://www.icourse163.org/course/PKU-1002536002
這門課整體上來說還是十分難得的,但是必須要說的是對于沒有基礎的非常有難度,整體上要求有基本的代碼閱讀能力,基礎的線性代數知識和一般化的電腦軟件安裝能力。對于零基礎的小白來說真的是非常好的入門課程,老師的講解和助教筆記都非常細致。循序漸進式的學習,需要對不清楚的地方多問多看多想,建議沒有基礎的同學多看幾遍,至少講的部分要全會。可以確定的是,由于人工智能的一定門檻,可能這門課的主要目的也沒有想讓所有人能理解大部分知識。但總體而言,這門課是降低了大家學習的門檻的,每一節課都非常具有含金量。
課程學習鏈接:https://www.icourse163.org/course/PKU-1002536002
第一講 人工智能概述
1.1-概述
1.2-雙系統安裝
1.3-Windows虛擬機安裝
1.4-Mac Tensorflow安裝
1.5-Windows Anaconda TensorFlow安裝
第二講 Python語法串講
2.1-Linux指令、Hello World
2.2-列表、元組、字典
2.3-條件語句
2.4-循環語句
2.5-turtle模塊
2.6-函數、模塊、包
2.7-類、對象、面向對象的編程
2.8-文件操作
第三講 Tensorflow框架
3.1-張量、計算圖、會話
3.2-前向傳播
3.3-反向傳播
第四講 神經網絡優化
4.1-損失函數
4.2-學習率
4.3-滑動平均
4.4-正則化
4.5-神經網絡搭建八股
第五講 全連接網絡基礎
5.1-MNIST數據集
5.2-模塊化搭建神經網絡八股
5.3-手寫數字識別準確率輸出
第六講 全連接網絡實踐
6.1-輸入手寫數字圖片輸出識別結果
6.2-制作數據集
第七講 卷積網絡基礎
7.1-卷積神經網絡
7.2-lenet5代碼講解
第八講 卷積網絡實踐
8.1-復現已有的卷積神經網絡
8.2-用vgg16實現圖片識別
第九講 課程項目分享
9.1-真實復雜場景手寫英文體識別
9.2-二值神經網絡實現MNIST手寫數字識別
9.3-車牌號碼識別
9.4-人臉表情識別
9.5-實時目標檢測、識別、計數和追蹤
9.6-圖片自動上色
9.7-圖像風格融合與快速遷移
9.8-圖像中文描述
9.9-跨模態檢索
9.10-強化學習實現“不死鳥” FlappyBird
《Tensorflow:實戰Google深度學習框架》 鄭澤宇,顧思宇 著,電子工業出版社
《深度學習》趙申劍,黎彧君,符天凡,李凱 譯,人民郵電出版社
有空時,可以看看電影 《人工智能》 讓自己充滿熱情地進入這個領域。
機器學習資料準備以及自學方法及資料更新(持續更新)
1、資料、課程
人工智能太火了,資料特別多,但是魚龍混雜,實際上經典的課程資料 paper就足夠,到后期一定要注重多看paper
吳恩達老師真乃人工智能屆的孔夫子,在這個水平上還能致力于基礎教學和入門推廣功德無量啊,吳老師的課講的也是真的好。
CS229,強推,Stanford的公開課,網易云課堂有2008年的課件和講義,我就是對著這個學的,打印講義一點點對著推吧。
Coursera Machine Learning,Coursera的課比較基礎,其實有了CS229就不推薦看這個了。
DeepLearning.ai,也是偏基礎的課程,不過還是很值得看,對傳統機器學習、CV、NLP都有一個不是很深入的講解,作為入門很棒。
Machine Learning Yearning,這本書也是偏基礎,工程向,講了實際工程項目中調參等等東西,我學的時候只出了前幾章,后面沒有看過。
網址是http://zh.gluon.ai/,強推,非常好的課程,李沐是機器學習的大家,在分布式機器學習領域非常有建樹,除了廣為人知的mxnet,還有parameterserver,這里就不展開說了。李沐的課程是將門斗魚的直播,都錄了下來,在網站上還有配套的代碼講解和書籍,唯一美中不足是基于gluon,這個稍微冷門一些。
網址是https://morvanzhou.github.io/,怎么說呢,比起其他課程還是遜色不少,不過講的很基礎,而且是不多的講解RL的中文課程。
CS231N,強推,stanford公開課之二,李飛飛的cv實驗室出品,講師是大名鼎鼎的Justin Johnson,雖然是講CV,但對DeepLearning的基礎也講的非常詳細,cs229是最好的ML課程,cs231n是最好的DL課程。
附加:算法導論 6.046J,大名鼎鼎的MIT算法導論公開課,雖然不是ML/DL向,但是基礎算法還是要會的,畢竟算法工程師首先是工程師,課程較難,很多名校本科上過這門課,大部分沒有上過,還是有必要抽空看看的
2、書籍
《CS229講義》,為啥把這個單獨拿出來說呢,因為這個講義真的就是一本書,有詳細的推導過程,并且很多同學看公開課會忽略講義,一定注意。
《統計學習方法》 李航,機器學習最常用的書,人稱小藍書,其實這本書不適合入門,里面很多推導晦澀難懂,但是講的很詳細。有些地方的推導方式和寫作習慣跟吳恩達不一樣,所以兩個一起看有時候會很迷。
《機器學習》 周志華,人稱西瓜書,不僅封面是西瓜,里面的例子也全是西瓜。難度比《統計學習方法》簡單不少,還有各種西瓜例子,入門首選。
3、項目
項目的話強烈推薦kaggle!!!!
在開始kaggle之前,請看看Kaggle的三個GettingStarted比賽,分別是手寫識別(CV),泰坦尼克預測(分類),房價預測(回歸),這三個比賽就是教學比賽,kernel和discuss版塊有大量的教學,好幾個會長篇講如何基本的使用DNN、xgb、lgb、sklearn這些工具,和如何開始做機器學習。
當你開始打featured的比賽的時候,有一點要明確,去打比賽不是為了贏,你是個沒有基礎的初學者,很可能也沒有隊友,只能solo,想拿名次就算了,打kaggle的目的是為了學習,為什么選kaggle不選天池或其他比賽呢?因為kaggle的氛圍非常非常open,討論區和kernel區一定會有人給出自己的完整思路和代碼,不僅有base model,還有各種有用的數據處理代碼,甚至很常見到前10的隊伍公開自己的思路甚至代碼!這是其他比賽不具備的,你可以在看別人代碼,改進自己代碼中成長。
4、積累
這是自學最欠缺的,沒有積累,尤其是科研積累,沒有人帶自己想搞出一篇工作就免了吧,但是熟讀某個方向的paper,對該方向有深入了解是必須的,如果僅僅是達到見過或者會用的程度,肯定拿不到offer的。具體的積累看是什么方向,github上有很多repo是經典paper集合比如這個repo,可以對照著看,也要關注該領域頂會每年的文章,還有就是對自己項目中用到的model、方法的相關工作要熟讀。
5、計劃
時間緊迫,給自己定一個清晰的計劃還是很重要的,筆者自己是打印了一份日歷,然后把暑期實習、秋招等關鍵時間點和自己計劃完成的deadline日期做上標記,每天干過的事情標在當天的日期上,然后劃掉這一天,每天看著時間會有緊迫感促進你學習。
6、老師
自學沒有老師,但俗話說三人行必有我師,周圍相關方向的同學,該請教就請教,有些東西自己搞是搞不出來的,但會的同學隨便點你一下這塊就過去了。
參考資料與推薦閱讀
本書是一本 TensorFlow 技術手冊,并不包含太多關于機器學習 / 深度學習的理論知識。然而一本好的機器學習入門資料仍然對 TensorFlow 技術的理解至關重要。對于希望入門機器學習 / 深度學習原理的讀者,筆者給出(具有個人主觀色彩和局限的)以下閱讀建議。
如果你是一名在校大學生,具有較好的數學基礎,可以從以下教材入手,作為學習機器學習的起點:
李航. 統計學習方法 . 清華大學出版社,2012.
周志華. 機器學習 . 清華大學出版社,2016.
如果你希望更具實踐性的內容,推薦以下書籍:
Aurélien Géron. 機器學習實戰:基于 Scikit-Learn 和 TensorFlow . 機械工業出版社,2018.
探索機器學習,使用Scikit-Learn全程跟蹤一個機器學習項目的例子;探索各種訓練模型;使用TensorFlow庫構建和訓練神經網絡,深入神經網絡架構,包括卷積神經網絡、循環神經網絡和深度強化學習,學習可用于訓練和縮放深度神經網絡的技術。
主要分為兩個部分。第一部分為第1章到第8章,涵蓋機器學習的基礎理論知識和基本算法——從線性回歸到隨機森林等,幫助讀者掌握Scikit-Learn的常用方法;第二部分為第9章到第16章,探討深度學習和常用框架TensorFlow,一步一個腳印地帶領讀者使用TensorFlow搭建和訓練深度神經網絡,以及卷積神經網絡。
學習推薦:
《機器學習實戰基于Scikit-Learn和TensorFlow》高清中文版PDF,帶目錄,文字能夠復制;高清英文PDF,564頁,帶目錄,文字能夠復制;中英文兩版可以對比學習。配套源代碼;
下載: https://pan.baidu.com/s/14G_0aeMh8qiq4TtIvpefWw
提取碼: b46k
鄭澤宇,梁博文,and 顧思宇. TensorFlow:實戰 Google 深度學習框架(第 2 版) . 電子工業出版社,2018.
TensorFlow是谷歌2015年開源的主流深度學習框架,目前已得到廣泛應用。《TensorFlow:實戰Google深度學習框架(第2版)》為TensorFlow入門參考書,旨在幫助讀者以快速、有效的方式上手TensorFlow和深度學習。書中省略了煩瑣的數學模型推導,從實際應用問題出發,通過具體的TensorFlow示例介紹如何使用深度學習解決實際問題。書中包含深度學習的入門知識和大量實踐經驗,是走進這個前沿、熱門的人工智能領域的優選參考書。
第2版將書中所有示例代碼從TensorFlow 0.9.0升級到了TensorFlow
1.4.0。在升級API的同時,第2版也補充了更多只有TensorFlow 1.4.0才支持的功能。另外,第2版還新增兩章分別介紹TensorFlow高層封裝和深度學習在自然語言領域應用的內容。
《TensorFlow:實戰Google深度學習框架(第2版)》適用于想要使用深度學習或TensorFlow的數據科學家、工程師,希望了解深度學習的大數據平臺工程師,對人工智能、深度學習感興趣的計算機相關從業人員及在校學生等。
如果你對大學的知識已經生疏,或者還是高中生,推薦首先閱讀以下教材:
湯曉鷗,and 陳玉琨. 人工智能基礎(高中版) . 華東師范大學出版社,2018.
對于貝葉斯的視角,推薦以下入門書籍:
皮隆,辛愿,鐘黎,and 歐陽婷. 貝葉斯方法:概率編程與貝葉斯推斷 . 人民郵電出版社,2017.
如果你喜歡相對生動的視頻講解,可以參考以下公開課程:
臺灣大學李宏毅教授的《機器學習》課程 ( 講義點此 ,中文,講解生動且更新及時)
谷歌的《機器學習速成課程》 (內容已全部漢化,注重實踐)
Andrew Ng 的《機器學習》課程 (英文含字幕,經典課程,較偏理論,網絡上可搜索到很多課程筆記)
相對的,一本不夠適合的教材則可能會毀掉初學者的熱情。對于缺乏基礎的初學者,不 推薦以下書籍:
Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. 深度學習 . 人民郵電出版社,2017.
又名 “花書”(源于封面),英文版 在線開放閱讀 ,中譯見 exacity/deeplearningbook-chinese 。這是一本深度學習領域的全面專著,但更像是一本工具書。
Bishop, Christopher M. Pattern Recognition and Machine Learning . Information Science and Statistics. New York: Springer, 2006.
又名 “PRML”(書名首字母縮寫),目前已開放 免費下載 。以貝葉斯的視角為主,同時其難度可能很不適于缺乏數學基礎的入門者。
重要
不推薦以上書籍,并不是說這些作品不夠優秀! 事實上,正是因為這些書籍太優秀,影響力太大,才以至于不得不拿出來特意提醒一下,這些書可能并不適合于絕大多數初學者。就像應該很少有學校用《計算機程序設計藝術》(TAOCP)作為計算機的入門教材一樣。對于已經入門或者有志于深層次研究的學者,當可從這些書籍中受益匪淺。
總結
- 上一篇: 【项目】P2P文件快传
- 下一篇: 苹果三代耳机_预告2020.6.13其他