吴忠躺衫网络科技有限公司

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>數值算法/人工智能>

TensorFlow開源模型解析

大小:0.6 MB 人氣: 2017-09-29 需要積分:1

  你知道你可以使用 TensorFlow 來描述圖像、理解文本和生成藝術作品嗎?來這個演講,你體驗到 TensorFlow 在計算機視覺、自然語言處理和計算機藝術生成上的最新項目。我將分享每個領域內我最偏愛的項目、展示你可以在家嘗試的實時演示以及分享你可以進一步學習的教育資源。這個演講不需要特定的機器學習背景。

  

  在進入正題之前,Gordon先談了談他對可復現的研究(reproducible research)的看法。他說我們現在理所當然地認為我們可以使用深度學習做到很多事情。在2005年的時候,他用了6個月時間試圖使用神經網絡來做基本的圖像分類——識別分辨細胞是否感染了疾病。雖然那時候已經有很多不錯的軟件庫可用了,但他們仍然還是要手動編寫許多神經網絡代碼。最后,六個月時間過去了,這些優秀工程師打造的網絡才開始在二元分類任務上表現得足夠好一點。

  而今天,你再也不需要這么苦惱了。今天,一個優秀的Python開發者加一點TensorFlow背景知識,并且愿意使用開源的模型,那么僅需要幾天時間就能實現遠遠超過之前 6 個月所能達到的效果。當然,這要歸功于大學、公司、開發者等慷慨的分享,這也已經為我們的社會帶來了很大的價值。

  Gordon舉了一個例子說明。他說過去8個月有三種新的醫學圖像應用都依賴于一種被稱為Inception的深度學習神經網絡模型,這些應用都實現了非常卓越的表現,有望在人類的生命健康方面提供方便實用的幫助。

  既然深度學習這么有用?那么深度學習是怎么工作的呢?首先我們先來看看一個可以將圖像分類為「貓」或「狗」的模型。通過這個模型,我們可以看到深度學習與Gordon在2005年的工作有什么不同。

  Gordon解釋說,在2005年時,為了開發圖像分類器,他編寫了Python代碼來提取圖像的特征。首先他需要構思這個圖像分類器需要怎樣的特征(比如:線、形狀、顏色),甚至還可能需要OpenCV這樣的庫來做人臉檢測

  而使用深度學習時,可以直接為模型輸入原始像素,讓模型自己去尋找分類所需的特征。“深度學習”之所以被稱為“深度”,是因為它具有多個層,數據在這些層中進行處理,最后得到分類結果。

  TensorFlow是由谷歌設計的一個深度學習框架,擁有很多優點,包括快速靈活可擴展的開源機器學習庫、可用于研究和生產、可以運行在 CPUGPU、TPU、安卓、iOS樹莓派硬件和系統上。

  

  Gordon將在這個演講中為我們主要解讀以下 4 個重要研究:

  

  此外,Gordon還提到了一些其它使用TensorFlow實現的研究成果:

  

  谷歌的這些研究中有一些仍然是當前最佳的,但他們仍然開源了相關的代碼,任何人都可以免費嘗試復現這些結果。那谷歌為什么還要開源呢?畢竟有的研究是非常具有商業價值的。Gordon 說:“一個重要的理由是可以激勵別人繼續推進你的想法。”同時,這也能幫助降低開發者的進入門檻,能讓更多人參與進來。

  要實現可復現的(reproducible)開源,你需要共享你的代碼和數據集。代碼方面,要做到可復現,你應該共享你所有的代碼,包括訓練、推理和驗證的代碼。數據集方面,你應該說明你所用的數據集,你對數據集的處理方式等等。最好能提供一個試用數據集(toy dataset),讓人們可以輕松驗證你的模型。

  預訓練的檢查點(pretrained checkpoint)也很重要。pretrained checkpoint 是為了保存模型訓練過程中一些列狀態,這樣其他研究者就可以完全復制之前的研究過程,從而避免被隨機化(在深度學習中極為常見)等其他因素干擾。

  Gordon還談到了Docker。很多時候,你的開發環境需要大量的依賴包。通過共享一個Docker容器,你可以讓其他人快速嘗試你的想法。

  開發深度學習模型,當然可以選擇自己寫代碼。在TensorFlow中,你可以輕松編寫代碼,實現模型。這里給出了兩個示例:

  

  這段代碼使用Keras+TensorFlow的組合。Keras是用來構建神經網絡的API,它具有簡單高效的特性,允許初學者輕松地建立神經網絡模型;同時,Keras也可以使用TensorFlow作為運行的后端,極大地加速了開發與訓練的過程。

  

  首先我們使用Keras中的Sequential類初始化一個用于存放任意層網絡的模型,我們可以簡單地認為這個類創建了一個杯子,我們的任務就是用適當的內容將這個杯子填滿。接著在代碼中不斷地調用add方法按照順序添加我們需要的神經網絡層 (layer)。我們可以看到短短的幾行代碼便可以創建一個MNIST神經網絡分類器。你只需要專注于以下幾個方面:將數據按照神經網絡的輸入(代碼中為一行 model.add(Dense(512, activation=’relu’, input_shape=(784,)))格式處理好,選擇適當的激活函數(不僅是relu,你也可以嘗試tanh或是softmax來快速比較不同激活函數對神經網絡結果的影響),是否添加Dropout層來減輕學習過程中的過擬合現象。

  當模型構建好之后,我們便可以快速地使用compile方法來編譯模型,其中的損失函數loss、優化方法optimizer均可以自由選擇。最后,使用類似于sklearn機器學習工具包中的fit方法即可開始訓練我們的模型。

  

  TensorFlow有一個非常出色可視化工具TensorBoard,可以協助你的開發。

  

  除了自己動手開發,你也可以利用別人寫好的代碼,這也是開源的好處,也是本演講所關注的重點。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      百家乐官网存在千术吗| 百家乐官网声音不印网| 伯爵百家乐娱乐城| 百家乐官网打法分析| 网上赌百家乐的玩法技巧和规则 | 星期八娱乐城| 御匾会百家乐娱乐城| 皇冠国际现金网| 网页百家乐| 玩百家乐的好处| 百家乐官网怎么稳赚| 百家乐官网赢多少该止赢| 澳门百家乐玩法心得技巧| 大发888舍出同线牌| 八大胜百家乐官网现金网| 金榜百家乐官网的玩法技巧和规则 | 威尼斯人娱乐平台注册| 大发888下载大发888游戏平台| 澳门百家乐官网文章| 茅台百家乐的玩法技巧和规则| 网上百家乐官网解码器| 真人百家乐官网斗地主| 百家乐百家乐论坛| 娱乐城首存| 百家乐官网长t恤| 大发888集团| 香港百家乐官网娱乐场开户注册 | 利澳百家乐官网的玩法技巧和规则 | 重庆百家乐的玩法技巧和规则 | 百家乐官网扑克牌手机壳| 大发888出纳柜台登入| 澳门玩百家乐官网00| 利博亚洲| 自己做生意怎样才能带来财运| 乐透乐博彩论坛| 御匾会百家乐官网的玩法技巧和规则 | 新锦江百家乐官网娱乐| 赌博堕天录 和也篇| 百家乐高额投注| 玩百家乐官网技巧博客| 大发888真钱游戏娱乐城下载|