TensorFlow開源模型解析
你知道你可以使用 TensorFlow 來描述圖像、理解文本和生成藝術(shù)作品嗎?來這個演講,你體驗到 TensorFlow 在計算機視覺、自然語言處理和計算機藝術(shù)生成上的最新項目。我將分享每個領(lǐng)域內(nèi)我最偏愛的項目、展示你可以在家嘗試的實時演示以及分享你可以進一步學習的教育資源。這個演講不需要特定的機器學習背景。
在進入正題之前,Gordon先談了談他對可復現(xiàn)的研究(reproducible research)的看法。他說我們現(xiàn)在理所當然地認為我們可以使用深度學習做到很多事情。在2005年的時候,他用了6個月時間試圖使用神經(jīng)網(wǎng)絡(luò)來做基本的圖像分類——識別分辨細胞是否感染了疾病。雖然那時候已經(jīng)有很多不錯的軟件庫可用了,但他們?nèi)匀贿€是要手動編寫許多神經(jīng)網(wǎng)絡(luò)代碼。最后,六個月時間過去了,這些優(yōu)秀工程師打造的網(wǎng)絡(luò)才開始在二元分類任務(wù)上表現(xiàn)得足夠好一點。
而今天,你再也不需要這么苦惱了。今天,一個優(yōu)秀的Python開發(fā)者加一點TensorFlow背景知識,并且愿意使用開源的模型,那么僅需要幾天時間就能實現(xiàn)遠遠超過之前 6 個月所能達到的效果。當然,這要歸功于大學、公司、開發(fā)者等慷慨的分享,這也已經(jīng)為我們的社會帶來了很大的價值。
Gordon舉了一個例子說明。他說過去8個月有三種新的醫(yī)學圖像應用都依賴于一種被稱為Inception的深度學習神經(jīng)網(wǎng)絡(luò)模型,這些應用都實現(xiàn)了非常卓越的表現(xiàn),有望在人類的生命健康方面提供方便實用的幫助。
既然深度學習這么有用?那么深度學習是怎么工作的呢?首先我們先來看看一個可以將圖像分類為「貓」或「狗」的模型。通過這個模型,我們可以看到深度學習與Gordon在2005年的工作有什么不同。
Gordon解釋說,在2005年時,為了開發(fā)圖像分類器,他編寫了Python代碼來提取圖像的特征。首先他需要構(gòu)思這個圖像分類器需要怎樣的特征(比如:線、形狀、顏色),甚至還可能需要OpenCV這樣的庫來做人臉檢測。
而使用深度學習時,可以直接為模型輸入原始像素,讓模型自己去尋找分類所需的特征?!吧疃葘W習”之所以被稱為“深度”,是因為它具有多個層,數(shù)據(jù)在這些層中進行處理,最后得到分類結(jié)果。
TensorFlow是由谷歌設(shè)計的一個深度學習框架,擁有很多優(yōu)點,包括快速靈活可擴展的開源機器學習庫、可用于研究和生產(chǎn)、可以運行在 CPU、GPU、TPU、安卓、iOS 和樹莓派等硬件和系統(tǒng)上。
Gordon將在這個演講中為我們主要解讀以下 4 個重要研究:
此外,Gordon還提到了一些其它使用TensorFlow實現(xiàn)的研究成果:
谷歌的這些研究中有一些仍然是當前最佳的,但他們?nèi)匀婚_源了相關(guān)的代碼,任何人都可以免費嘗試復現(xiàn)這些結(jié)果。那谷歌為什么還要開源呢?畢竟有的研究是非常具有商業(yè)價值的。Gordon 說:“一個重要的理由是可以激勵別人繼續(xù)推進你的想法?!蓖瑫r,這也能幫助降低開發(fā)者的進入門檻,能讓更多人參與進來。
要實現(xiàn)可復現(xiàn)的(reproducible)開源,你需要共享你的代碼和數(shù)據(jù)集。代碼方面,要做到可復現(xiàn),你應該共享你所有的代碼,包括訓練、推理和驗證的代碼。數(shù)據(jù)集方面,你應該說明你所用的數(shù)據(jù)集,你對數(shù)據(jù)集的處理方式等等。最好能提供一個試用數(shù)據(jù)集(toy dataset),讓人們可以輕松驗證你的模型。
預訓練的檢查點(pretrained checkpoint)也很重要。pretrained checkpoint 是為了保存模型訓練過程中一些列狀態(tài),這樣其他研究者就可以完全復制之前的研究過程,從而避免被隨機化(在深度學習中極為常見)等其他因素干擾。
Gordon還談到了Docker。很多時候,你的開發(fā)環(huán)境需要大量的依賴包。通過共享一個Docker容器,你可以讓其他人快速嘗試你的想法。
開發(fā)深度學習模型,當然可以選擇自己寫代碼。在TensorFlow中,你可以輕松編寫代碼,實現(xiàn)模型。這里給出了兩個示例:
這段代碼使用Keras+TensorFlow的組合。Keras是用來構(gòu)建神經(jīng)網(wǎng)絡(luò)的API,它具有簡單高效的特性,允許初學者輕松地建立神經(jīng)網(wǎng)絡(luò)模型;同時,Keras也可以使用TensorFlow作為運行的后端,極大地加速了開發(fā)與訓練的過程。
首先我們使用Keras中的Sequential類初始化一個用于存放任意層網(wǎng)絡(luò)的模型,我們可以簡單地認為這個類創(chuàng)建了一個杯子,我們的任務(wù)就是用適當?shù)膬?nèi)容將這個杯子填滿。接著在代碼中不斷地調(diào)用add方法按照順序添加我們需要的神經(jīng)網(wǎng)絡(luò)層 (layer)。我們可以看到短短的幾行代碼便可以創(chuàng)建一個MNIST神經(jīng)網(wǎng)絡(luò)分類器。你只需要專注于以下幾個方面:將數(shù)據(jù)按照神經(jīng)網(wǎng)絡(luò)的輸入(代碼中為一行 model.add(Dense(512, activation=’relu’, input_shape=(784,)))格式處理好,選擇適當?shù)募せ詈瘮?shù)(不僅是relu,你也可以嘗試tanh或是softmax來快速比較不同激活函數(shù)對神經(jīng)網(wǎng)絡(luò)結(jié)果的影響),是否添加Dropout層來減輕學習過程中的過擬合現(xiàn)象。
當模型構(gòu)建好之后,我們便可以快速地使用compile方法來編譯模型,其中的損失函數(shù)loss、優(yōu)化方法optimizer均可以自由選擇。最后,使用類似于sklearn機器學習工具包中的fit方法即可開始訓練我們的模型。
TensorFlow有一個非常出色可視化工具TensorBoard,可以協(xié)助你的開發(fā)。
除了自己動手開發(fā),你也可以利用別人寫好的代碼,這也是開源的好處,也是本演講所關(guān)注的重點。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
TensorFlow開源模型解析下載
相關(guān)電子資料下載
- 【風火輪YY3568開發(fā)板免費體驗】第六章:在Solus上運行自定義模型并遷移到Y(jié)Y3 411
- 深度學習框架tensorflow介紹 480
- 深度學習框架pytorch介紹 454
- 【米爾MYC-JX8MPQ評測】+ 運行 TensorFlow Lite(CPU和NPU對比) 524
- 手把手帶你玩轉(zhuǎn)—i.MX8MP開發(fā)板移植官方NPU TensorFlow例程 444
- 在樹莓派64位上安裝TensorFlow 505
- TensorFlow Lite for MCUs - 網(wǎng)絡(luò)邊緣的人工智能 339
- 2023年使用樹莓派和替代品進行深度學習 1506
- 用TensorFlow2.0框架實現(xiàn)BP網(wǎng)絡(luò) 1849
- 那些年在pytorch上踩過的坑 571