TensorFlow開源模型解析
你知道你可以使用 TensorFlow 來描述圖像、理解文本和生成藝術作品嗎?來這個演講,你體驗到 TensorFlow 在計算機視覺、自然語言處理和計算機藝術生成上的最新項目。我將分享每個領域內我最偏愛的項目、展示你可以在家嘗試的實時演示以及分享你可以進一步學習的教育資源。這個演講不需要特定的機器學習背景。
在進入正題之前,Gordon先談了談他對可復現的研究(reproducible research)的看法。他說我們現在理所當然地認為我們可以使用深度學習做到很多事情。在2005年的時候,他用了6個月時間試圖使用神經網絡來做基本的圖像分類——識別分辨細胞是否感染了疾病。雖然那時候已經有很多不錯的軟件庫可用了,但他們仍然還是要手動編寫許多神經網絡代碼。最后,六個月時間過去了,這些優秀工程師打造的網絡才開始在二元分類任務上表現得足夠好一點。
而今天,你再也不需要這么苦惱了。今天,一個優秀的Python開發者加一點TensorFlow背景知識,并且愿意使用開源的模型,那么僅需要幾天時間就能實現遠遠超過之前 6 個月所能達到的效果。當然,這要歸功于大學、公司、開發者等慷慨的分享,這也已經為我們的社會帶來了很大的價值。
Gordon舉了一個例子說明。他說過去8個月有三種新的醫學圖像應用都依賴于一種被稱為Inception的深度學習神經網絡模型,這些應用都實現了非常卓越的表現,有望在人類的生命健康方面提供方便實用的幫助。
既然深度學習這么有用?那么深度學習是怎么工作的呢?首先我們先來看看一個可以將圖像分類為「貓」或「狗」的模型。通過這個模型,我們可以看到深度學習與Gordon在2005年的工作有什么不同。
Gordon解釋說,在2005年時,為了開發圖像分類器,他編寫了Python代碼來提取圖像的特征。首先他需要構思這個圖像分類器需要怎樣的特征(比如:線、形狀、顏色),甚至還可能需要OpenCV這樣的庫來做人臉檢測。
而使用深度學習時,可以直接為模型輸入原始像素,讓模型自己去尋找分類所需的特征。“深度學習”之所以被稱為“深度”,是因為它具有多個層,數據在這些層中進行處理,最后得到分類結果。
TensorFlow是由谷歌設計的一個深度學習框架,擁有很多優點,包括快速靈活可擴展的開源機器學習庫、可用于研究和生產、可以運行在 CPU、GPU、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%
下載地址
TensorFlow開源模型解析下載
相關電子資料下載
- 【風火輪YY3568開發板免費體驗】第六章:在Solus上運行自定義模型并遷移到YY3 411
- 深度學習框架tensorflow介紹 480
- 深度學習框架pytorch介紹 454
- 【米爾MYC-JX8MPQ評測】+ 運行 TensorFlow Lite(CPU和NPU對比) 524
- 手把手帶你玩轉—i.MX8MP開發板移植官方NPU TensorFlow例程 444
- 在樹莓派64位上安裝TensorFlow 505
- TensorFlow Lite for MCUs - 網絡邊緣的人工智能 339
- 2023年使用樹莓派和替代品進行深度學習 1506
- 用TensorFlow2.0框架實現BP網絡 1849
- 那些年在pytorch上踩過的坑 571