當前位置:
首頁 > 知識 > 詳解集成工具TensorLayer:可控制深度學習開發複雜度

詳解集成工具TensorLayer:可控制深度學習開發複雜度

選自NextPlatform

機器之心編譯

對於開發者而言,深度學習系統的交互性和複雜度正在增加。從建立不斷迭代強化的可擴展性數據集,到更多動態模型,再到神經網路內部更加連續的學習,這使得通過輕量級工具全面管理深度學習開發的需求也越發強大。而 TensorLayer 正是這樣一種可管理深度學習開發複雜度的工具。

「甚至在部署之後,新的訓練樣本、人類的見解以及操作經驗會不斷出現,因此升級模型並跟蹤其變化的能力變得不可或缺。」倫敦帝國理工學院的一個團隊說,他們開發了一個庫,用來管理深度學習開發者在複雜的多項目上做的迭代。「開發者必須用大量的開發周期整合構建神經網路的組件、管理模型生命周期、組織數據,以及調整系統並行性。」

為了更好地管理開發,該團隊藉助一個通用的 Python 庫打造了 TensorLayer,這是一種集成的開發方法,其中所有的元素(操作、模型生命周期、並行計算、失敗)被抽象為模塊化格式。這些模塊中的一個用於管理神經網路層,一個用於管理模型及其生命周期,一個通過為所有系統的訓練數據提供統一的表徵來管理數據集,另外還有一個工作流模塊用於處理容錯。顧名思義,TensorFlow 是進行訓練和推斷的核心平台,數據存儲在 MongoDB 中,這是深度學習研究機構的常見設置。

深度學習開發人員利用 TensorLayer 功能寫了一個多媒體應用。這些功能包括提供和輸入層實現、構建神經網路、管理模型生命周期、構建在線或離線數據集,以及撰寫訓練計劃等,分為四個模塊:層、模型、數據集和工作流。

該團隊說,儘管 Keras 和 TFLearn 等現有工具很有用,但擴展性不強,不足以應對越來越複雜和不斷迭代的網路。它們提供必要的抽象化以降低採用壁壘(adoption barrier),但這樣做也對用戶掩蓋了底層引擎(underlying engine)。儘管從底層調整和修改對 bootstrap 有益,且對於解決很多現實問題很有必要,但這是非常困難的。

與 Keras 和 TFLearn 相比,TensorLayer 不僅提供高水平的抽象化,還提供端到端的工作流,包括數據預處理、訓練、後處理、服務模塊和資料庫管理,這些都是開發者構建整個系統的關鍵。

TensorLayer 提倡靈活性和可組合性更強的範式:神經網路庫可以和私有引擎(native engine)互換。這使得用戶可在不丟失可見性的情況下輕鬆使用預構建模塊。該非侵入式本質也使得合併其他 TF 包裝器,如 TF-Slim 和 Keras 變得可行。但是,該團隊認為靈活性不能以性能為代價。

此團隊在以下論文中重點強調了許多應用,也詳細介紹了每一個模塊、整體架構和發展現狀。這些應用包括生成對抗網路(generative adversarial network)、深度強化學習(deep reinforcement learning),以及終端用戶環境的超參數調節。TensorLayer,自去年從 GitHub 發布後,還被用於多模型研究、圖像變換和醫學信號處理。

TensorLayer 正處在一個主動發展的階段,而且已經從開放社區接收到大量的貢獻性工作。它已經被帝國理工學院、卡內基梅隆大學、斯坦福大學、清華大學、加州大學洛杉磯分校、瑞典林雪平大學等高校的研究人員,以及谷歌、微軟、阿里巴巴、騰訊、ReFULE4、彭博等公司的工程師廣泛使用。

論文:TensorLayer: A Versatile Library for Efficient Deep Learning Development

論文地址:https://arxiv.org/abs/1707.08551

項目地址:https://github.com/zsdonghao/tensorlayer

深度學習強力地推動了計算機視覺、自然語言處理和多媒體等領域的發展。然而開發一個深度學習系統通常十分困難和複雜,因為它經常涉及到構建神經網路架構、管理正在訓練或已訓練的模型、調整優化過程、預處理和組織數據等過程。TensorLayer 是一個通用型的 Python 庫,旨在幫助研究者和工程師高效地開發深度學習系統。它為神經網路、模型和數據管理、並行工作流機制提供了豐富的抽象化方法。TensorLayer 在提升效率的同時,它還保留性能和可擴展性。TensorLayer 先前已經發布在 Github 上,並且已經幫助很多學術研究員和工業應用者開發深度學習現實應用。

TensorLayer 幫助我們管理和提高開發效率的方法主要是通過以下四個模塊來實現,這四個模塊也即整個系統的架構。TensorLayer 可以基於這些模塊實現整個開發過程和相應的功能,因此我們可以在這基礎上利用編程語言實現各種不同的應用,如 GAN、超參數精調等。

2.1 層模塊

層是神經網路的核心基元,TensorLayer 提供了一個包含大量參考層實現(比如 CNN、RNN、dropout、dropconnect、批歸一化及其他)的層模塊。該模塊通過類似於 Lasagne [12] 那樣的聲明式方式堆疊層級而構建神經網路。每個層給定唯一的鍵值,幫助開發者在層之間實現細粒度參數共享。

2.2 模型模塊

模型是獨立功能單元的邏輯表示,可以在生產過程中被訓練、評估和部署。每個模型都有獨立的架構,具有可被保存、緩存和重新載入的不同版本或狀態(即權重)。

2.3 數據集模塊

數據集模塊用於管理訓練樣本和預測結果。樣本和結果以文檔的形式存儲在 MongoDB 中。每個文檔包含一個單獨的主鍵(key)、樣本、標註和用戶自定義標籤。

2.4 工作流模塊

工作流模塊提供任務抽象,以啟用容錯非同步訓練。一個訓練任務由 3 個元組分別識別:輸入數據集鍵值(key)、模型鍵值和輸出數據集鍵值。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

Momenta詳解ImageNet2017奪冠架構SENet
繪製瑞士人工智慧全景圖
Momenta詳解ImageNet 2017奪冠架構SENet
從 IDSIA到ETH,機器之心走遍瑞士繪製AI全景圖
華為諾亞方舟實驗室提出新型元學習法 Meta-SGD,在回歸與分類任務中表現超群

TAG:機器之心 |

您可能感興趣

iRig Keys I/O 集成控制現在可以兼容 GarageBand和Logic Pro X
SpringBoot整合Mybatis實現事務控制
精準還原每個細節,CH Precision C1 Mono D/A Controller解碼控制器
Windows Defender應用程序控制介紹
Google Daydream SDK更新支持多控制器
使用Istio控制Serverless架構Fn Project中的函數間流量路由
Leap Motion推出LeapUVC API,允許控制亮度、灰度、曝光、解析度等
Aerotech 全新雷射觸發控制技術–Part Speed PSO
Web Forms DataList 控制項
Spring cloud 多版本控制及灰度發布
Google為Mirage Solo創建實驗6 DoF控制器
Facebook Messenger 內測語音控制功能,可激活聊天和通話
Web Forms Validation 伺服器控制項
用臉來彈奏樂曲,GarageBand支持iPhone X原深感相機控制
Magic Leap One控制器細節曝光
Magic Leap Mobile Companion應用將作為控制器替代輸入方式
AirPlay能支持Sonos揚聲器,通過Siri控制Apple Music!
實戰microPython(三)uPyBoard是如何控制機器人的
蘋果在Mac上添加Home應用程序並支持Siri控制HomeKit設備
劫持者可以繞過 Active Directory 控制機制