<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能 正文
      發私信給AI研習社-譯站
      發送

      2

      機器學習者必知的5種深度學習框架

      本文作者: AI研習社-譯站 2018-05-03 09:50
      導語:說了這么多,TensorFlow還是無敵

      雷鋒網按:本文為雷鋒字幕組編譯的技術博客,原標題The 5 Deep Learning Frameworks Every Serious Machine Learner Should Be Familiar With,作者為James Le。

      翻譯 | 楊恕權  張曉雪  陳明霏     整理 | 凡江

      機器學習者必知的5種深度學習框架

      圖片來源:Raphael Koh on Unsplash

      深度學習需要大量的計算。它通常包含具有許多節點的神經網絡,并且每個節點都有許多需要在學習過程中必須不斷更新的連接。換句話說,神經網絡的每一層都有成百上千個相同的人工神經元在執行相同的計算。因此,神經網絡的結構適用于GPU(圖形處理單元)可以高效執行的計算類型(GPU是專門為并行計算相同指令而設計的)。

      隨著深度學習和人工智能在過去幾年的迅速發展,我們也看到了許多深度學習框架的引入。深度學習框架的創建目標是在GPU上高效運行深度學習系統。這些深度學習框架都依賴于計算圖的概念,計算圖定義了需要執行的計算順序。在這些框架中你使用的是一種可以建立計算圖的語言,并且語言的執行機制與其宿主語言本身的機制有所不同。然后,計算圖可以并行地在目標GPU中優化和運行。 

      在這篇文章中,我想向大家介紹推動深度學習發展的5個主力框架。這些框架使數據科學家和工程師更容易為復雜問題構建深度學習解決方案,并執行更復雜的任務。這只是眾多開源框架中的一小部分,由不同的科技巨頭支持,并相互推動更快創新。

      機器學習者必知的5種深度學習框架

      1. TensorFlow (Google)

      TensorFlow最初是由Google Brain Team的研究人員和工程師開發的。其目的是面向深度神經網絡和機器智能研究。自2015年底以來,TensorFlow的庫已正式在GitHub上開源。TensorFlow對于快速執行基于圖形的計算非常有用。靈活的TensorFlow API可以通過其GPU支持的架構在多個設備之間部署模型。

      簡而言之,TensorFlow生態系統有三個主要組成部分:

      • 用C ++編寫的TensorFlow API包含用于定義模型和使用數據訓練模型的API。 它也有一個用戶友好的Python接口。

      • TensorBoard是一個可視化工具包,可幫助分析,可視化和調試TensorFlow計算圖。

      • TensorFlow Serving是一種靈活的高性能服務系統,用于在生產環境中部署預先訓練好的機器學習模型。Serving也是由C ++編寫并可通過Python接口訪問,可以即時從舊模式切換到新模式。

      TensorFlow已被廣泛應用于學術研究和工業應用。一些值得注意的當前用途包括Deep SpeechRankBrainSmartReplyOn-Device Computer Vision。大家可以在TensorFlow的GitHub項目中查看一些最佳官方用途,研究模型、示例和教程。

      機器學習者必知的5種深度學習框架

      我們來看一個運行的示例。 在這里,我在TensorFlow上用隨機數據訓練一個基于L2損失的2層ReLU網絡。

      機器學習者必知的5種深度學習框架

      這個代碼有兩個主要組件:定義計算圖并多次運行這個圖。在定義計算圖時,我為輸入x,權重w1和w2以及目標y創建placeholders進行占位。然后在前向傳播中,我計算目標y的預測以及損失值(損失值為y的真實值與預測值之間的L2距離)。最后,我讓Tensorflow計算關于w1和w2的梯度損失。

      完成計算圖構建之后,我創建一個會話框來運行計算圖。在這里我創建了numpy數組,它將填充建圖時創建的placeholders(占位符),將它們數值提供給x,y,w1,w2。為了訓練網絡,我反復運行計算圖,使用梯度來更新權重然后獲得loss,grad_w1和grad_w2的numpy數組。

      Keras: 高級包裝

      深度學習框架在兩個抽象級別上運行:低級別--數學運算和神經網絡基本實體的實現(TensorFlow, Theano, PyTorch etc.)和高級別--使用低級基本實體來實現神經網絡抽象,如模型和圖層(Keras) 。

      Keras是其后端庫的包裝,該后端庫可以是TensorFlow或Theano - 這意味著如果你們在使用以TensorFlow為后端庫的Keras,你實際上是在運行TensorFlow代碼。Keras為您考慮到了許多基本細節,因為它針對神經網絡技術用戶,而且非常適合那些練習數據科學的人。它支持簡單快速的原型設計,支持多種神經網絡架構,并可在CPU / GPU上無縫運行。

      機器學習者必知的5種深度學習框架

      在這個例子中,對一個與之前例子中相似的神經網絡進行訓練,我首先將模型對象定義為一系列圖層,然后定義優化器對象。接下來,我建立模型,指定損失函數,并用單個“fit”曲線來訓練模型。

      2. ?Theano (蒙特利爾大學)

      Theano是另一個用于快速數值計算的Python庫,可以在CPU或GPU上運行。它是蒙特利爾大學蒙特利爾學習算法小組開發的一個開源項目。它的一些最突出的特性包括GPU的透明使用,與NumPy緊密結合,高效的符號區分,速度/穩定性優化以及大量的單元測試。

      遺憾的是,Youshua Bengio(MILA實驗室負責人)在2017年11月宣布他們將不再積極維護或開發Theano。原因在于Theano多年來推出的大部分創新技術現在已被其他框架所采用和完善。如果有興趣,大家仍然可以為它的開源庫做貢獻。

      機器學習者必知的5種深度學習框架

      Theano在許多方面與TensorFlow相似。那么讓我們來看看另一個代碼示例,使用相同批量和輸入/輸出尺寸來訓練神經網絡:

      機器學習者必知的5種深度學習框架

      我首先定義了Theano符號變量(類似于TensorFlow占位符)。對于正向傳播,我計算預測和損失; 對于反向傳播,我計算梯度。然后我編譯一個函數,根據數據和權重計算損失,得分和梯度。最后,我多次運行這個函數來訓練網絡。

      3. PyTorch (Facebook)

      Pytorch在學術研究者中很受歡迎,也是相對比較新的深度學習框架。Facebook人工智能研究組開發了pyTorch來應對一些在它前任數據庫Torch使用中遇到的問題。由于編程語言Lua的普及程度不高,Torch永遠無法經歷Google TensorFlow那樣的迅猛發展。因此,PyTorch采用了被已經為許多研究人員,開發人員和數據科學家所熟悉的原始Python命令式編程風格。同時它還支持動態計算圖,這一特性使得它對做時間序列以及自然語言處理數據相關工作的研究人員和工程師很有吸引力。

      到目前為止,Uber將PyTorch使用得最好,它已經構建了Pyro,一種使用PyTorch作為其后端的通用概率編程語言。 PyTorch的動態差異化執行能力和構建梯度的能力對于概率模型中的隨機操作非常有價值。

      機器學習者必知的5種深度學習框架

      PyTorch有3個抽象層次:

      ? 張量:命令性的ndarray,但在GPU上運行

      ? 變量:計算圖中的節點;存儲數據和梯度

      ? 模塊:神經網絡層;可以存儲狀態或可學習的權重

      在這里我將著重談一談張量抽象層次。 PyTorch張量就像numpy數組,但是它們可以在GPU上運行。沒有內置的計算圖或梯度或深度學習的概念。在這里,我們使用PyTorch Tensors(張量)擬合一個2層網絡:

      機器學習者必知的5種深度學習框架

      正如你所看到的,我首先為數據和權重創建隨機張量。然后我計算正向傳播過程中的預測和損失,并在反向傳播過程中手動計算梯度。我也為每個權重設置梯度下降步長。最后,我通過多次運行該功能來訓練網絡。

      4. ?Torch (NYU / Facebook)

      接下來我們來談談Torch。它是Facebook的開源機器學習庫科學計算框架和基于Lua編程語言的腳本語言。它提供了廣泛的深度學習算法,并已被Facebook,IBM,Yandex和其他公司用于解決數據流的硬件問題。

      機器學習者必知的5種深度學習框架


      作為PyTorch的直系祖先,Torch與PyTorchg共享了很多C后端。與具有3個抽象級別的PyTorch不同,Torch只有2個:張量模塊。讓我們試一試一個使用Torch張量來訓練兩層神經網絡的代碼教程:

      機器學習者必知的5種深度學習框架

      最初,我建立了一個多層的神經網絡模型,以及一個損失函數。接下來,我定義一個回溯函數,輸入權重并在權重上產生損失/梯度。在函數內部,我計算前向傳播中的預測和損失,以及反向傳播中的梯度。最后,我反復將該回溯函數傳遞給優化器進行優化。

      5. ?Caffe (UC Berkeley)

      Caffe是一個兼具表達性、速度和思維模塊化的深度學習框架。由伯克利人工智能研究小組和伯克利視覺和學習中心開發。雖然其內核是用C ++編寫的,但Caffe有Python和Matlab相關接口。這對訓練或微調前饋分類模型非常有用。雖然它在研究中使用得并不多,但它仍然很受部署模型的歡迎,正如社區貢獻者所證明的那樣。

      機器學習者必知的5種深度學習框架

      為了使用Caffe訓練和微調神經網絡,您需要經過4個步驟:

      1. 轉換數據:我們讀取數據文件,然后清洗并以Caffe可以使用的格式存儲它們。我們將編寫一個進行數據預處理和存儲的Python腳本。

      2. 定義模型:模型定義了神經網絡的結構。我們選擇CNN體系結構并在擴展名為.prototxt的配置文件中定義其參數。

      3. 定義求解器:求解器負責模型優化,定義所有關于如何進行梯度下降的信息。我們在擴展名為.prototxt的配置文件中定義求解器參數。

      4. 訓練模型:一旦我們準備好模型和求解器,我們就通過從終端調用caffe binary(咖啡因)來訓練模型。訓練好模型后,我們將在一個擴展名為.caffemodel的文件中獲得訓練好的模型。

      我不會為Caffe做代碼展示,但是您可以在Caffe的主頁上查看一個教程。總的來說,Caffe對于前饋網絡和微調現有網絡非常有用。您可以輕松地訓練模型而無需編寫任何代碼。它的Python接口非常有用,因為您可以在不使用Python代碼的情況下部署模型。不利的一面是,您需要為每個新的GPU圖層編寫C++內核代碼(在Caffe下)。因此,大網絡(AlexNet,VGG,GoogLeNet,ResNet等)的構建將會非常麻煩。

      您應該使用哪種深度學習框架?

      由于Theano不再繼續被開發,Torch是以不為許多人熟悉的Lua語言編寫的,Caffe還處于它的早熟階段,TensorFlow和PyTorch成為大多數深度學習實踐者的首選框架。雖然這兩個框架都使用Python,但它們之間存在一些差異:

      ? PyTorch有更加干凈清爽的接口,更易于使用,特別適合初學者。大部分代碼編寫較為直觀,而不是與庫進行戰斗。相反,TensorFlow擁有更繁雜的小型、含混的庫。

      ? 然而,TensorFlow擁有更多的支持和一個非常龐大,充滿活力和樂于助人的社區。這意味著TensorFlow的在線課程,代碼教程,文檔和博客帖子多于PyTorch。

      ? 也就是說,PyTorch作為一個新平臺,有許多有趣的功能尚未被完善。但是令人驚奇的是PyTorch在短短一年多的時間里取得了巨大的成就。

      ? TensorFlow更具可擴展性,并且與分布式執行非常兼容。它支持從僅GPU到涉及基于實時試驗和錯誤的繁重分布式強化學習的龐大系統的所有的系統。

      最重要的是,TensorFlow是“定義 - 運行”,在圖形結構中定義條件和迭代,然后運行它。另一方面,PyTorch是“按運行定義”,其中圖結構是在正向計算過程中實時定義的。換句話說,TensorFlow使用靜態計算圖,而PyTorch使用動態計算圖。基于動態圖的方法為復雜體系結構(如動態神經網絡)提供了更易于操作的調試功能和更強的處理能力。基于靜態圖的方法可以更方便地部署到移動設備,更容易部署到更具不同的體系結構,以及具有提前編譯的能力。

      因此,PyTorch更適合于愛好者和小型項目的快速原型開發,而TensorFlow更適合大規模部署,尤其是在考慮跨平臺和嵌入式部署時。 TensorFlow經受了時間的考驗,并且仍然被廣泛使用。它對大型項目具有更多功能和更好的可擴展性。 PyTorch越來越容易學習,但它并沒有與TensorFlow相同的一體化整合功能。這對于需要快速完成的小型項目非常有用,但對于產品部署并不是最佳選擇。

      機器學習者必知的5種深度學習框架

      圖片來源: Jamie Street on Unsplash

      寫在最后

      上述列舉只是眾多框架中較為突出的框架,并且大多數支持Python語言。去幾年里發布了多個新的深度學習框架,如DeepLearning4j(Java),Apache的MXNet(R,Python,Julia),Microsoft CNTK(C ++,Python)和Intel的Neon(Python)。每個框架都是不同的,因為它們是由不同的人為了不同的目的而開發的。有一個整體的大致了解會幫助你解決你的下一個深度學習難題。在選擇適合您的最佳選擇時,易于使用(就架構和處理速度而言),GPU支持,教程和培訓材料的獲得難度,神經網絡建模功能以及支持的語言都是重要的考慮因素。

      博客原址 https://heartbeat.fritz.ai/the-5-deep-learning-frameworks-every-serious-machine-learner-should-be-familiar-with-93f4d469d24c


      添加雷鋒字幕組微信號(leiphonefansub)為好友

      備注「我要加入」,To be an  AI  Volunteer ! 雷鋒網雷鋒網

      機器學習者必知的5種深度學習框架

      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

      機器學習者必知的5種深度學習框架

      分享:
      相關文章

      知情人士

      AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 青青草啪啪啪网站在线观看| 乱60一70归性欧老妇| 精品自拍一区国产精品| 丰满熟女人妻一区二区三| 成人免费在线播放av| 噜噜噜综合亚洲| 高清精品一区二区三区| 精品亚洲麻豆1区2区3区| 人摸人人人澡人人超碰97| 亚洲成人a| 亚洲AV无码成人精品一区 | 天天日天天骚| 人妻a码精品| 久久久久久AV| 一本色道久久综合狠狠躁篇mba| 亚洲色9在线| 九九热爱视频精品| 人妻激情另类乱人伦人妻| 风韵丰满熟妇啪啪区老熟熟女| 浮妇高潮喷白浆视频| 亚洲码欧美码一区二区三区| 色综合欧美在线视频区| 亚洲成在人网站av天堂| 麻豆熟妇乱妇熟色A片在线看| av资源站| 一二三四视频高清在线观看3| 日本一区二区三区四区在线看| 国产口爆吞精在线视频| 末发育娇小性色xxxxx视频| 开心五月综合亚洲| 四虎影院176| 丝袜熟女91| 大地资源中文在线观看西瓜| 白丝美女办公室高潮喷水视频| 国内精品久久久久伊人aⅴ| 国产无套精品一区二区| 成年女人免费v片| 国产男女猛烈无遮挡免费视频| 日韩丝袜亚洲国产欧美一区| jizz麻豆| 久久99精品视频|