萬事開頭難遥赚!入門 TensorFlow扬舒,這 9 個問題 TF Boys 必須要搞清楚

作為目前最普及的深度學習框架,TensorFlow 實不必多做介紹凫佛。

無論國內國外讲坎,有相當數量的程序員以 TensorFlow 入門深度學習開發(fā)孕惜,逐步走上職業(yè)機器學習工程師的道路。然而晨炕,TensorFlow 有一定的使用門檻衫画。不管是編程范式,還是數學統(tǒng)計基礎瓮栗,都為非機器學習與數據科學背景的伙伴們帶來一定的上手難度削罩,更不要提處理不同任務時需面對的各類算法模型。

鑒于此费奸,雷鋒網采訪了 ThoughtWorks 高級咨詢師佟達弥激、數據架構師白發(fā)川,兩位嘉賓將與大家分享新手入門 TensorFlow 容易遇到的一些問題愿阐,以及他們的入門經歷與使用體驗微服。詳見下文。

嘉賓介紹

佟達缨历,哈工大信息與通信工程碩士以蕴,在校時獲得美國數學競賽建模一等獎。當年加入 TW 咨詢團隊時辛孵,創(chuàng)下最年輕成員的記錄〈园梗現(xiàn)任 ThoughtWorks 高級咨詢師,中國區(qū)數據團隊資深技術專家魄缚。

白發(fā)川腾供,ThoughtWorks 數據架構師,深度學習框架 deeplearning.scala 貢獻者鲜滩。設計實現(xiàn)了金融伴鳖、工業(yè)、互聯(lián)網等多個領域的大數據平臺建設和數據處理徙硅。

下面榜聂,我們來看兩位老師對入門 Tensorflow 的建議,以及他們的經驗之談嗓蘑。

- 新手入門深度學習须肆,選擇 TensorFlow 有哪些益處?

佟達:首先桩皿,對于新手來說豌汇,TensorFlow 的環(huán)境配置包裝得真心非常好。相較之下泄隔,安裝 Caffe 要痛苦的多拒贱,如果還要再 CUDA 環(huán)境下配合 OpenCV 使用,對于新手來說,基本上不折騰個幾天是很難搞定的逻澳。

其次闸天,基于 TensorFlow 的教學資源非常多,中英文的都有斜做,這對于新手也是非常有幫助的苞氮。Google 做社區(qū)非常有一套,在中國有專門的一群人瓤逼,會在第一時間把 Google 的開發(fā)者相關的進展翻譯成中文笼吟。

另外,由于有 Google 背書霸旗,TensorFlow 從長期演進來看赞厕,基本上可以保證這個技術不會曇花一現(xiàn)。對于一個深度學習新手來說定硝,學習任何一個工具皿桑,都有成本,如果剛學會蔬啡,這個工具就沒人用了诲侮,這個沉沒成本還是很高的。

白發(fā)川:TensorFlow 分為圖和 session 兩個部分箱蟆,因為構建和執(zhí)行在不同的階段沟绪,所以很好的支持了模型的分布式,所以學習 TF 可以比較好的理解模型的分布式計算空猜,另外 TF 支持直接從分布式文件系統(tǒng)绽慈,例如 HDFS 系統(tǒng)讀取數據,所以可以說 TF 是接通機器學習和大數據的一個橋梁辈毯。

- 新人上手 TensorFlow 經常會遇到哪些問題或困難坝疼?

佟達:第一個困難應該是來自編程范式的變化,因為 TensorFlow 是聲明式開發(fā)方式谆沃,通過 Session 真正執(zhí)行程序钝凶,這和常見的開發(fā)語言編程范式不太一樣。如果是曾經有過函數式編程的 Lazy Evaluation 經驗唁影,接受起來會好一點耕陷。

當掌握了基本的 TensorFlow 操作之后,就要使用 TensorFlow 做些真正有意義的事情据沈。這時候的一大困難在于哟沫,TensorFlow 的報錯信息不那么直觀,如果執(zhí)行出錯锌介,新手很難從一大堆調用棧中找到有用的信息嗜诀。

白發(fā)川:首選遇到的應該是數學的知識,TF 本身是一個深度學習的框架,和我們常規(guī)的程序框架例如 Spring裹虫,Hibernate 之類的框架定位不太一樣肿嘲,會偏向數學部分一點融击,例如矩陣計算筑公,求導等,雖然 TF 已經封裝了對應的計算的 API尊浪,但是我們還是需要知道這些概念性的知識匣屡,這樣才知道應該用什么 API。

其次 TF 通過圖的構建和計算部分分離實現(xiàn)模型的分布式拇涤,這一塊的理解對初學者來說有時候也不太容易捣作。

- 學習遇到困難之后,有哪些途徑可以尋求幫助鹅士?

佟達:如果身邊有人可以提供指導券躁,直接尋求幫助一定是最有效的。如果身邊沒有這樣的人可以提供幫助掉盅,那么 StackOverflow 是在線尋求幫助的首選也拜。Google 的 TensorFlow 開發(fā)團隊會有人專門在 StackOverflow 上回答問題,當然除了 Google 的人趾痘,還有很多熱心的開發(fā)者提供幫助慢哈,比如說我(笑)。

白發(fā)川:目前 TF 的中文資料相對匱乏永票,所以優(yōu)先的參考途徑肯定是 TF 的官方 doc 文檔卵贱,目前極客學院對 TF 官方文檔做了漢化翻譯,不過相對會比官方的延后一點侣集。

- 有沒有推薦的學習資源键俱?

佟達:資源太多了,比如 Udacity 的 Deep Learning 課程世分,Coursera 上的 Machine Learning 課程方妖,還有 Stanford 提供的課程錄像,比如 CS231n 和 CS224n罚攀。另外党觅,被稱為深度學習圣經的《Deep Learning》也在網上(http://deeplearningbook.org)免費提供。

白發(fā)川:Stanford 目前有很多針對機器學習的課程斋泄,例如 CS231N杯瞻,還有針對 TF 的 CS20SI,這些都是很好的課程炫掐。

- 是否推薦新手從 Keras 入手魁莉?除 Keras,還有哪些適配 TensorFlow 的第三方工具推薦新手使用?

佟達:TensorFlow 的 API 比較底層旗唁,有時候要做一件很簡單的事情畦浓,要寫很多輔助代碼。而 Keras 的接口設計非常簡潔检疫,做同樣的事情讶请,Keras 的代碼大概是 TensorFlow 的三分之一到五分之一。不過我認為新手對兩者都應該學習一下屎媳,這樣對于理解原理更有幫助夺溢。事實上,我甚至推薦連 TensorFlow 都不用烛谊,先用純 Python 自己做一個簡單的神經網絡风响。

除了 Keras 之外,tf slim丹禀,tflearn 等都是早期嘗試簡化 TensorFlow 的工具状勤,不過自從 1.0 開始,TensorFlow 官方支持 Keras双泪,估計以后 Keras 會成為主流持搜。

另外,TensorBoard 是新手必須學會使用的攒读,這個工具有非常好的可視化輔助工具朵诫,幫助工程師調試模型以及訓練過程。tfdbg 是 1.0 之后發(fā)布的調試工具薄扁,可以在每一個 step 中實時查看數據變化剪返。不過這個工具目前能做的還不多,而且還有性能問題邓梅,開調試模式和非調試模式內存相差好幾倍脱盲,所以還有很大的提升空間。

白發(fā)川:Keras 相比 TF 來說封裝的更好日缨,可以說 API 更加工程化钱反,所以如果說對于機器學習完全沒有概念,Keras 是一個不錯的選擇匣距。目前有很多圍繞 TF 進行封裝的框架或者工具面哥,例如 Keras 本身就是對 TF 的包裝,其次 TF Learn 等也可嘗試毅待。

- 能不能講講你們當初上手 TensorFlow 的經歷尚卫?學習過程中都遇到了哪些困難,又是如何解決的尸红?

佟達:我在使用 TensorFlow 之前吱涉,使用過其他一些機器學習 / 深度學習框架刹泄,比如主要用于語音識別的 Kaldi,圖像識別的 Caffe怎爵,還有 Spark MLlib特石,DeepLearning4j 等。所以上手 TensorFlow 并沒有帶來特別大的困難鳖链。

當用 TensorFlow 做的事情越來越復雜之后姆蘸,我開始嘗試擴展 TensorFlow,比如寫一些自定義的 Op撒轮。在 TensorFlow 中添加自定義 Op 需要用 C++ 實現(xiàn)乞旦,編譯好之后贼穆,在 Python 里面講動態(tài)庫鏈接進來才能使用题山。這一過程還是有些復雜,尤其是 C++ 的代碼有問題需要調試故痊,需要使用 lldb(llvm 的 debug 工具顶瞳,類似 gdb),這對開發(fā)這的要求比較高愕秫。另外 TensorFlow 的編譯使用的是 Bazel慨菱,這是谷歌開源的一個多語言項目管理工具,要想把自定義的 Op 編譯出來戴甩,還需要花點時間研究 Bazel符喝。

實際上,Google 很成功的把 TensorFlow 封裝的很好甜孤,開箱即用协饲,然而,框架本身的復雜度還是很高缴川,一旦你想要深入進去茉稠,還是需要下很大功夫。

白發(fā)川:TF 不是我接觸的第一個深度學習框架把夸。我是從大數據做起而线,到后來的開始用 Spark MLlib 做開發(fā),也使用過 h2o 和 deeplearning4j 這些框架恋日,最后才接觸 TF 的膀篮。所以對于我來說,更多的是學習 TF 的 API 設計相關的改變岂膳,以及對比其他框架 TF 做了哪些差異化的地方誓竿。對于 API 這一塊,直接參考 TF 的 Doc 就是最好的方法闷营。

不過我可以介紹一下入門到機器學習的經歷烤黍,我最開始的工作也是和大多數人一樣知市,從事 web 開發(fā),或者 mobile 的開發(fā)速蕊,所以我的情況應該和大多數人相同嫂丙,后來我開始接觸到機器學習的時候發(fā)現(xiàn)和之前的思維差別挺大的,首先在我們從事一般的像 mobile 之類的開發(fā)的時候规哲,我們并不會關心什么是矩陣的逆跟啤,什么是函數的導數,更加不會關心什么是鏈式求導唉锌,而在機器學習里面隅肥,這些都是基礎,所以我又重新?lián)旎亓舜髮W的線性代數和微積分再次過了一遍袄简。

TF 是個深度學習框架腥放,所以使用 TF 的時候不可避免的要理解什么是隱層,什么是激活函數绿语,激活函數有哪些秃症,以及如何定義損失函數等等這一些概念,對于這一塊我當時除了調研一些書籍外也通過看 stanford 的一些課程來學習吕粹,當然過程中也和很多同行進行交流和總結种柑,特別是對于調參這一塊,除了學習之外更多的需要自己進行實踐匹耕。

- TensorFlow 升級到 1.0 版本之后聚请,感覺到了哪些提升?

佟達:對我來說稳其,TensorFlow 1.0 最重要的變化在于高階 API晕鹊,比如 Estimator痴脾,以及和 Keras 的集成,這些改變可以大幅度的減少我們構建模型的代碼量。

另外就斤,1.0 的 API 也經過了一些調整峡谊,這導致一些舊代碼和新版本不兼容崖面,不過從長期維護來看厚骗,1.0 的 API 有更好的一致性,對于開發(fā)者來說浑槽,還是利大于弊蒋失。

白發(fā)川:首先相比之前的版本,1.0 的速度肯定是變快了桐玻,這個官方也明確的提到了篙挽,并且也給出了一定的參考指標,TF 1.0 加入了 XLA镊靴,這也是為未來性能優(yōu)化做的基礎铣卡。

除了性能方面的體驗外链韭,在開發(fā)中,TF 的 API 進行的很大的修改煮落,相比之前來說更加的人性化敞峭,感覺起來有點像 numpy 的感覺,所以如果不是 1.0 的代碼蝉仇,可能會不兼容旋讹,不過 TF 提供了轉換的腳本,可以方便直接把代碼轉換到 1.0轿衔。

TF1.0 提供了調試工具 TFBDG沉迹,無論是大數據還是機器學習相關的開發(fā),調試始終不是那么順暢害驹,而 1.0 提供的調試工具鞭呕,可以說正在逐漸的彌補這一塊,雖然目前還是有很多問題裙秋,不過已經有了很大的進步琅拌。

- 你們認為缨伊,目前 TensorFlow 有哪些局限性摘刑?其中又有哪些是開發(fā)者可以利用第三方工具克服的?

佟達:TensorFlow 的設計范式帶來的一個天生限制就是在 TensorFlow 中刻坊,想要動態(tài)修改計算圖比較困難枷恕。實際上動態(tài)修改計算圖的需求并不少見,比如訓練機器翻譯或者聊天機器人的模型谭胚,句子長度不一樣徐块,計算圖其實是不一樣的。以前灾而,要解決這個問題胡控,就是設定一個比較長的輸入長度,對于比較短的句子旁趟,填充一些占位字符昼激。今年早些時候,TensorFlow 發(fā)布了一個工具锡搜,TensorFlow Fold橙困,可以相對方便的動態(tài)修改計算圖。不過總的來說耕餐,TensorFlow 在計算圖的設計靈活性上還是有些欠缺凡傅。

白發(fā)川:目前來說,TF 要想發(fā)揮最大的效果肠缔,還是需要借助于 GPU夏跷,當然這并不算 TF 的局限哼转,應該說所有數值計算的框架都有這個特點,對于這個目前大家的做法都是搭建自己的 GPU 集群槽华,GOOGLE 甚至開發(fā)了自己的 GPU:TPU释簿。

雖然大家都比較認可 TF 是工程化做的很好的深度學習框架,實際上它還是有一些門檻的硼莽,簡單到 API 的設計庶溶,復雜到模型的訓練和調參,其實還是是有一定門檻的懂鸵,相比來說 Keras 的 API 設計更加直觀化偏螺。

TF 雖然提供了 java 和 go 的 api,不過目前還不太成熟和穩(wěn)定匆光,所以對于開發(fā)語言套像,我還是推薦 python,或者說我建議大家想往這個方向學習的時候终息,盡量掌握 python 這門語言夺巩,在我們實際開發(fā)中,會有很多用處的周崭。

- TensorFlow 在 ThoughtWorks 的業(yè)務中扮演了什么角色柳譬?對于公司進行產品開發(fā),有沒有更合適的選擇续镇?

佟達:TensorFlow 是 ThoughtWorks 目前在深度學習項目上的首選平臺美澳,因為它的工程化做的確實要比其他框架成熟,同時又和 Hadoop摸航、Kubernetes 這些我們已經在很多項目中使用的工具兼容制跟。

至于 “更合適”,現(xiàn)在還不太好下判斷酱虎,F(xiàn)acebook 的 PyTorch 口碑很不錯雨膨,MxNet 被 Amazon 和很多 IT 公司支持,而 Intel 的 BigDL 另辟蹊徑读串,在 CPU 上優(yōu)化深度學習聊记,而且和 Spark 無縫集成,看起來對于已經使用云計算和大數據工具的公司來說吸引力也非常大爹土。所以在深度學習框架這個領域甥雕,目前處于百花齊放的狀態(tài),最后誰會勝出胀茵,還不好說社露。

白發(fā)川:ThoughtWorks 有自己的機器學習團隊,主要方向為大數據和人工智能琼娘,當然這兩個方向的劃分并不完全獨立的峭弟,實際上在實際開發(fā)中我們是將兩者結合附鸽,實現(xiàn)基于大數據下的人工智能,對于深度學習的框架瞒瘸,我們 spike 過目前存在的大多數框架坷备,最終選擇了 TF,所以我們的工作都是將 TF 工程化和市場化情臭。

在選擇對比了不同的框架之后省撑,我們也比較明確現(xiàn)有框架的一些優(yōu)缺點和局限,所以我們也研發(fā)了 TW 自己的深度學習框架:deeplearning.scala俯在,框架本身是基于 scala 開發(fā)竟秫,具體的信息大家可以在 github 上看到,目前是開源的跷乐。


“TensorFlow & 神經網絡算法高級應用班” 要開課啦肥败!

雷鋒網與跨國 IT 服務巨頭 ThoughtWorks,聯(lián)合舉辦線上培訓課程 “TensorFlow & 神經網絡算法高級應用班” 將上線 mooc.ai愕提,特邀佟達馒稍、白發(fā)川兩位老師向學員系統(tǒng)性地傳道解惑。

你是否一直希望有個老司機能手把手帶領入門浅侨?這就是一次好機會纽谒。

免費福利:下周,兩位老師將以 “TensorFlow 在各場景的應用以及注意事項” 為主題仗颈,在雷鋒網 APP 進行公開課直播佛舱。在培訓開始之前,讓大家對于 TensorFlow 能做什么以及實戰(zhàn)流程挨决,做個初步了解。時長一小時订歪,免費觀看答疑脖祈,敬請關注!

ThoughtWorks

授課方 ThoughtWorks 是全球領先的 IT 咨詢公司刷晋,聯(lián)合國婦女兒童組織盖高、世界衛(wèi)生組織合作伙伴⊙凼總部在芝加哥喻奥,42 個辦公室分布在全球的 15 個國家。

2012 年捏悬,ThoughtWorks 排在 Google撞蚕,F(xiàn)acebook 之前,被評為全球最難面試的公司过牙。

2016 年甥厦,ThoughtWorks 力壓群雄纺铭,獲得全球 “最佳女性科技人員雇主” 獎項。

培訓課介紹:

從初級到高級刀疙,理論 + 實戰(zhàn)舶赔,一站式深度了解 TensorFlow!

本課程面向深度學習開發(fā)者谦秧,講授如何利用 TensorFlow 解決圖像識別竟纳、文本分析等具體問題。課程跨度為 10 周疚鲤,將從 TensorFlow 的原理與基礎實戰(zhàn)技巧開始蚁袭,一步步教授學員如何在 TensorFlow 上搭建 CNN、自編碼石咬、RNN揩悄、GAN 等模型,并最終掌握一整套基于 TensorFlow 做深度學習開發(fā)的專業(yè)技能鬼悠。

兩名授課老師佟達删性、白發(fā)川身為 ThoughtWorks 的資深技術專家,具有豐富的大數據平臺搭建焕窝、深度學習系統(tǒng)開發(fā)項目經驗蹬挺。

開課時間:4 月 25 日(星期二)開課,每周二它掂、四晚 20:00-21:00

開課時長:總學時 20 小時巴帮,分 10 周完成,每周 2 次虐秋,每次 1 個小時

授課地址:Tensorflow & 神經網絡算法高級應用班

線上授課榕茧,開放預約!

via 三川 (AI 研習社)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末客给,一起剝皮案震驚了整個濱河市用押,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌靶剑,老刑警劉巖蜻拨,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桩引,居然都是意外死亡缎讼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門坑匠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來血崭,“玉大人,你說我怎么就攤上這事」Π保” “怎么了序苏?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捷凄。 經常有香客問我忱详,道長,這世上最難降的妖魔是什么跺涤? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任匈睁,我火速辦了婚禮,結果婚禮上桶错,老公的妹妹穿的比我還像新娘航唆。我一直安慰自己,他們只是感情好院刁,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布糯钙。 她就那樣靜靜地躺著,像睡著了一般退腥。 火紅的嫁衣襯著肌膚如雪任岸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天狡刘,我揣著相機與錄音享潜,去河邊找鬼。 笑死嗅蔬,一個胖子當著我的面吹牛剑按,可吹牛的內容都是我干的。 我是一名探鬼主播澜术,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼艺蝴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瘪板?” 一聲冷哼從身側響起吴趴,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侮攀,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體厢拭,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡兰英,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了供鸠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畦贸。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出薄坏,到底是詐尸還是另有隱情趋厉,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布胶坠,位于F島的核電站君账,受9級特大地震影響,放射性物質發(fā)生泄漏沈善。R本人自食惡果不足惜乡数,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闻牡。 院中可真熱鬧净赴,春花似錦、人聲如沸罩润。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽割以。三九已至金度,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拳球,已是汗流浹背审姓。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祝峻,地道東北人魔吐。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像莱找,于是被迫代替她去往敵國和親酬姆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容