0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么學(xué)習(xí)深度學(xué)習(xí)需要使用PyTorch和TensorFlow框架

Wildesbeast ? 來源:未知 ? 2019-09-14 10:57 ? 次閱讀

如果你需要深度學(xué)習(xí)模型,那么 PyTorch 和 TensorFlow 都是不錯(cuò)的選擇。

并非每個(gè)回歸或分類問題都需要通過深度學(xué)習(xí)來解決。甚至可以說,并非每個(gè)回歸或分類問題都需要通過機(jī)器學(xué)習(xí)來解決。畢竟,許多數(shù)據(jù)集可以用解析方法或簡(jiǎn)單的統(tǒng)計(jì)過程進(jìn)行建模。

另一方面,在某些情況下,深度學(xué)習(xí)或深度遷移學(xué)習(xí)可以幫助你訓(xùn)練更準(zhǔn)確的模型。在這些情況下,你可以考慮使用 PyTorch 和 TensorFlow ,特別是如果你所需的訓(xùn)練模型與其中一個(gè)框架模型庫中的模型類似。

PyTorch

PyTorch 建立在舊版的 Torch 和 Caffe2 框架之上。如其名所示,PyTorch采用了腳本語言 Python,并利用改版后的Torch C/CUDA作為后端。PyTorch 項(xiàng)目還融入了 Caffe2 的生產(chǎn)功能。

PyTorch 被稱為“擁有強(qiáng)大 GPU 加速功能的 Python 版 Tensor 和動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)?!边@意味著什么?

Tensor(張量)是一種物理學(xué)和工程學(xué)中廣泛使用的數(shù)學(xué)結(jié)構(gòu)。2 階的 Tensor 是一種特殊的矩陣;而對(duì)向量和張量取內(nèi)積就可以得到另一個(gè)擁有新長(zhǎng)度和新方向的向量。TensorFlow 這個(gè)名字就來自張量在其網(wǎng)絡(luò)模型中流動(dòng)的方式。NumPy 也用到了 Tensor,名為 ndarray 。

GPU 加速是大多數(shù)現(xiàn)代深度神經(jīng)網(wǎng)絡(luò)框架的基礎(chǔ)。動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)是一種特殊的神經(jīng)網(wǎng)絡(luò),每次迭代都會(huì)發(fā)生變化,例如,PyTorch 模型可以在訓(xùn)練期間通過添加和刪除隱藏層,來提高其準(zhǔn)確性和通用性。

PyTorch 會(huì)在每個(gè)迭代中實(shí)時(shí)重建計(jì)算圖。相比之下,在默認(rèn)情況下TensorFlow 會(huì)創(chuàng)建一個(gè)計(jì)算圖,優(yōu)化圖代碼以提高性能,然后訓(xùn)練模型。

雖然急切執(zhí)行模式在 TensorFlow 中剛剛出現(xiàn),但其是 PyTorch 唯一的運(yùn)行方式:API 在被調(diào)用時(shí)會(huì)立即執(zhí)行,而不會(huì)被添加到計(jì)算圖稍后再運(yùn)行。這樣可能看起來計(jì)算效率會(huì)低一些,但是 PyTorch 設(shè)計(jì)的工作方式就是如此,而且實(shí)際上在訓(xùn)練或預(yù)測(cè)速度方面并不遜色。

PyTorch 通過集成加速庫,比如英特爾 MKL、Nvidia cuDNN 和 NCCL 等,最大限度地提升速度。其核心CPU、GPU Tensor和神經(jīng)網(wǎng)絡(luò)后端TH(Torch)、THC(Torch CUDA)、THNN(Torch神經(jīng)網(wǎng)絡(luò))和THCUNN(Torch CUDA神經(jīng)網(wǎng)絡(luò))等,都是使用 C99 API 編寫的單獨(dú)庫。同時(shí),PyTorch 并不是整體式 C++ 框架的 Python 綁定。其目的是與Python 深度集成,并允許使用其他 Python 庫。

Fast.ai與fastai庫

fastai 庫基于 PyTorch,通過現(xiàn)代化的最佳實(shí)踐簡(jiǎn)化了快速準(zhǔn)確的神經(jīng)網(wǎng)絡(luò)訓(xùn)練。它基于對(duì) Fast.ai 深度學(xué)習(xí)最佳實(shí)踐的研究,提供了包括視覺、文本、表格和協(xié)作(協(xié)作過濾)模型在內(nèi)的“開箱即用”支持。

fastai 庫與 PyTorch 的關(guān)系非常類似于 Keras 與 TensorFlow 。但明顯的區(qū)別在于,PyTorch 沒有正式支持 fastai 。

TensorFlow

TensorFlow 是眾多優(yōu)秀的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)框架中最成熟的一個(gè),也是研究論文中引用最多的一個(gè)(即使不算來自谷歌員工的引用也是第一),而且在生產(chǎn)中的使用效果也很好。它可能不是最容易學(xué)習(xí)的框架,但隨著 TensorFlow 2的到來,TensorFlow 的門檻也沒有 2016 年那般高了。TensorFlow 是許多 Google 服務(wù)的基礎(chǔ)。

TensorFlow 2.0 官網(wǎng)對(duì)該項(xiàng)目的描述為:“端到端的開源機(jī)器學(xué)習(xí)平臺(tái)?!保雀柰ㄟ^“平臺(tái)”提供了一個(gè)包含工具、庫以及社區(qū)資源的全方位生態(tài)系統(tǒng),研究人員可以利用這個(gè)平臺(tái)“推動(dòng)機(jī)器學(xué)習(xí)達(dá)到最高水準(zhǔn)”,而開發(fā)人員則可以利用這個(gè)平臺(tái)輕松構(gòu)建和部署基于 AI 的應(yīng)用程序。

TensorFlow 2.0 有四個(gè)主要部分組成:

TensorFlow 核心,一個(gè)用于開發(fā)和培訓(xùn)機(jī)器學(xué)習(xí)模型的開源庫;

TensorFlow.js,一個(gè)在 Web 瀏覽器和 Node.js 上訓(xùn)練和部署模型的 JavaScript庫;

TensorFlow Lite,一個(gè)輕量級(jí)庫,用于在移動(dòng)和嵌入式設(shè)備上部署模型;

TensorFlow Extended,是一個(gè)端到端平臺(tái),用于在大型生產(chǎn)環(huán)境中準(zhǔn)備數(shù)據(jù)、培訓(xùn)、驗(yàn)證和部署模型。

TensorFlow 2.0 的重點(diǎn)放在了簡(jiǎn)單性和易用性上,其這個(gè)版本擁有一系列的新功能,包括急切執(zhí)行、直觀的高級(jí) API 以及可以在任何平臺(tái)上構(gòu)建模型等。急切執(zhí)行意味著 TensorFlow 代碼定義好就可以運(yùn)行,而 TensorFlow 最初的模式需要將節(jié)點(diǎn)和邊添加到計(jì)算圖中,稍后再在會(huì)話中運(yùn)行。

高效地使用 TensorFlow 2.0 方法是,使用高級(jí)的 tf.keras API(而不是舊的低級(jí) AP,這樣可以大大減少需要編寫的代碼量。只需要使用一行代碼就可以構(gòu)建 Keras 神經(jīng)網(wǎng)絡(luò)中的一層,如果利用循環(huán)結(jié)構(gòu),則可以進(jìn)一步減少代碼量。

TensorFlow.js 是一個(gè)利用 JavaScript 開發(fā)和訓(xùn)練機(jī)器學(xué)習(xí)模型,并在瀏覽器或 Node.js 中部署模型的庫。在 TensorFlow.js、ml5.js 之上還有一個(gè)高級(jí)庫,它隱藏了張量和優(yōu)化器的復(fù)雜性。

TensorFlow.js 可以通過瀏覽器支持移動(dòng)設(shè)備和桌面設(shè)備。如果你的瀏覽器支持 WebGL 著色器 API,TensorFlow.js 可以利用它們發(fā)揮 GPU 的優(yōu)勢(shì)。與CPU 后端相比,這可以為你提供高達(dá) 100 倍的加速。在擁有 GPU 的計(jì)算機(jī)上,TensorFlow.js 可以非??焖俚卦跒g覽器中運(yùn)行。

TensorFlow Lite 是一個(gè)用于移動(dòng)設(shè)備的開源深度學(xué)習(xí)框架。目前它可以為iOS、ARM64 和 Raspberry Pi 構(gòu)建模型。TensorFlow Lite 有兩個(gè)主要組件:解釋器和轉(zhuǎn)換器。解釋器可以在許多不同的硬件類型上運(yùn)行經(jīng)過特別優(yōu)化的模型。轉(zhuǎn)換器可以將 TensorFlow 模型轉(zhuǎn)換為高效的形式供解釋器使用,還可引入優(yōu)化以縮小可執(zhí)行文件大小并提高性能。

TensorFlow Extended(TFX)是用于部署生產(chǎn)機(jī)器學(xué)習(xí)管道的端到端平臺(tái)。在你訓(xùn)練好一個(gè)模型后,就需要考慮這方面的工作了。管道包括數(shù)據(jù)驗(yàn)證、功能工程、建模、模型評(píng)估、服務(wù)推斷以及管理在線、原生移動(dòng)和 JavaScript 目標(biāo)的部署。

Keras

Keras 是用于構(gòu)建神經(jīng)網(wǎng)絡(luò)模型的高級(jí)前端規(guī)范和實(shí)現(xiàn)。Keras 支持三種后端深度學(xué)習(xí)框架:TensorFlow、CNTK 和 Theano。目前亞馬遜正在全力為Keras 開發(fā) MXNet 后端。你也可以使用 PlaidML(一個(gè)獨(dú)立的項(xiàng)目)作為Keras 的后端,利用 PlaidML 的 OpenCL 支持所有 GPU 的優(yōu)勢(shì)。

TensorFlow是Keras的默認(rèn)后端,在很多情況下我們也推薦使用TensorFlow,包括通過 CUDA 和 cuDNN 在 Nvidia 硬件上實(shí)現(xiàn) GPU 加速,以及利用 Google Cloud 中的 Tensor 處理單元加速等。Keras 除了可以單獨(dú)安裝之外,TensorFlow 還包含一個(gè)內(nèi)部 tf.keras 類。如上所述,這是TensorFlow 的首選高級(jí)前端。

Keras 提供了一個(gè)高級(jí)環(huán)境,在其 Sequential 模型中向神經(jīng)網(wǎng)絡(luò)添加一層的代碼量可以縮減到一行,編譯和訓(xùn)練模型也分別只需一個(gè)函數(shù)調(diào)用。如果有需要,Keras 也允許你通過其 Model 或函數(shù)式 API 接觸較低層上的代碼。

你還可以利用 Keras 的子類 keras.Model 進(jìn)一步深入,一直到 Python 代碼級(jí)別,直到找到你喜歡的功能 API 。另外,它還有 Scikit-learn API,因此你可以利用 Scikit-learn 網(wǎng)格搜索在 Keras 模型中執(zhí)行超參數(shù)優(yōu)化。

深度學(xué)習(xí)與遷移學(xué)習(xí)

PyTorch 和 TensorFlow 都支持深度學(xué)習(xí)和遷移學(xué)習(xí)。遷移學(xué)習(xí)(有時(shí)稱為自定義機(jī)器學(xué)習(xí))可以從預(yù)先訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型開始,只需為你的數(shù)據(jù)定制最終層即可。

從頭開始訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)非常耗時(shí),并且需要大量標(biāo)記數(shù)據(jù)。遷移學(xué)習(xí)花費(fèi)的時(shí)間更少,而且需要的新標(biāo)記樣本更少,但只有在模型已預(yù)先訓(xùn)練好的情況下,你才可以使用遷移學(xué)習(xí)。幸運(yùn)的是,所有主流的深度學(xué)習(xí)框架都提供了某種形式的模型庫供你挑選模型。

圖像分類中使用的卷積神經(jīng)網(wǎng)絡(luò)(也稱為 ConvNets 或 CNN )是遷移學(xué)習(xí)的代表。PyTorch 和 TensorFlow 都提供了有關(guān)如何使用遷移學(xué)習(xí)來訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)的教程。TensorFlow 的遷移學(xué)習(xí)教程演示了如何使用遷移學(xué)習(xí)提取和微調(diào)特征。PyTorch 的遷移學(xué)習(xí)教程也演示了相同的兩種方法。

實(shí)際上,很少有人從頭開始訓(xùn)練整個(gè)卷積網(wǎng)絡(luò)(利用隨機(jī)的初始化),因?yàn)槟愫茈y擁有足夠大的數(shù)據(jù)集。相反,一般人們會(huì)在非常大的數(shù)據(jù)集(例如ImageNet,其中包含 1,000 個(gè)類別的 120 萬個(gè)圖像)上預(yù)先訓(xùn)練ConvNet,然后以 ConvNet 為起點(diǎn)或通過 ConvNet 提取感興趣的特征。

如何選擇深度學(xué)習(xí)框架

在 PC 和 Mac 出現(xiàn)的早期,人們經(jīng)常會(huì)問我應(yīng)該買哪個(gè)。其實(shí),這個(gè)問題沒有正確的答案,因?yàn)檫@個(gè)問題本身就是一個(gè)錯(cuò)誤,或者我應(yīng)該說“那要看你想用這臺(tái)電腦干什么”,但一般在我問他們幾個(gè)問題后,他們就能找到自己的答案,比如“你想用這臺(tái)電腦干什么?”,或者“你有什么不可或缺的應(yīng)用嗎?”

同樣,“我應(yīng)該使用哪種深度學(xué)習(xí)框架?”也算不上一個(gè)真正的問題。這個(gè)問題同樣取決于你自己,比如首先想一想“你想用你的模型干什么?”,然后再深入研究你可以用于訓(xùn)練的數(shù)據(jù)類型。

如果你不熟悉深度學(xué)習(xí),那么我建議你先閱讀 TensorFlow 2 中的 Keras 教程,以及 PyTorch 中的 fastai 教程。即使不深入了解 TensorFlow 和PyTorch 的低級(jí) API ,你也有很多東西需要學(xué)習(xí),而且你應(yīng)該對(duì)這兩種方法都有所了解。然后,你可能會(huì)意識(shí)到這兩個(gè)框架的確有多相似之處,而且它們賴以生存的概念和技術(shù)都是相同的。

在很多情況下,選用哪種框架無關(guān)緊要:你會(huì)發(fā)現(xiàn)每個(gè)框架可用的模型基本相同。在某些特定的情況下,可能某個(gè)框架優(yōu)于另一個(gè)——至少在當(dāng)前版本是如此。你可能還會(huì)發(fā)現(xiàn),學(xué)習(xí)其中某一個(gè)更為容易,原因可能是框架中的某些基本功能,也有可能是教程的質(zhì)量。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4673

    瀏覽量

    128592
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5463

    瀏覽量

    120890
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    802

    瀏覽量

    13115
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深度學(xué)習(xí)框架TensorFlow&TensorFlow-GPU詳解

    TensorFlow&TensorFlow-GPU:深度學(xué)習(xí)框架TensorFlow&
    發(fā)表于 12-25 17:21

    TensorFlow實(shí)戰(zhàn)之深度學(xué)習(xí)框架的對(duì)比

    Google近日發(fā)布了TensorFlow 1.0候選版,這第一個(gè)穩(wěn)定版將是深度學(xué)習(xí)框架發(fā)展中的里程碑的一步。自TensorFlow于201
    發(fā)表于 11-16 11:52 ?4546次閱讀
    <b class='flag-5'>TensorFlow</b>實(shí)戰(zhàn)之<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>框架</b>的對(duì)比

    深度學(xué)習(xí)框架排名:TensorFlow第一,PyTorch第二

    Karpathy表示,綜合過去6年發(fā)表在ArXiv的4300篇機(jī)器學(xué)習(xí)論文(數(shù)據(jù)來源:cs.[CV|CL|LG|AI|NE]/stat.ML),根據(jù)其中各框架被提及的次數(shù)得到的總
    的頭像 發(fā)表于 04-02 16:46 ?1.1w次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>框架</b>排名:<b class='flag-5'>TensorFlow</b>第一,<b class='flag-5'>PyTorch</b>第二

    基于PyTorch深度學(xué)習(xí)入門教程之PyTorch的安裝和配置

    神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并且運(yùn)用各種深度學(xué)習(xí)算法訓(xùn)練網(wǎng)絡(luò)參數(shù),進(jìn)而解決各種任務(wù)。 本文從PyTorch環(huán)境配置開始。PyTorch是一種Python接口的深度
    的頭像 發(fā)表于 02-16 15:15 ?2541次閱讀

    國產(chǎn)框架超越 PyTorchTensorFlow?

    深度學(xué)習(xí)領(lǐng)域,PyTorchTensorFlow 等主流框架,毫無疑問占據(jù)絕大部分市場(chǎng)份額,就連百度這樣級(jí)別的公司,也是花費(fèi)了大量人力物
    的頭像 發(fā)表于 04-09 15:11 ?2379次閱讀
    國產(chǎn)<b class='flag-5'>框架</b>超越 <b class='flag-5'>PyTorch</b> 和 <b class='flag-5'>TensorFlow</b>?

    八種主流深度學(xué)習(xí)框架的介紹

    導(dǎo)讀:近幾年隨著深度學(xué)習(xí)算法的發(fā)展,出現(xiàn)了許多深度學(xué)習(xí)框架。這些框架各有所長(zhǎng),各具特色。常用的開
    的頭像 發(fā)表于 04-26 18:45 ?8350次閱讀

    TensorFlowPyTorch的實(shí)際應(yīng)用比較

    TensorFlowPyTorch是兩個(gè)最受歡迎的開源深度學(xué)習(xí)框架,這兩個(gè)框架都為構(gòu)建和訓(xùn)練
    的頭像 發(fā)表于 01-14 11:53 ?2869次閱讀

    深度學(xué)習(xí)框架PyTorchTensorFlow如何選擇

    在 AI 技術(shù)興起后,深度學(xué)習(xí)框架 PyTorchTensorFlow 兩大陣營(yíng)似乎也爆發(fā)了類似的「戰(zhàn)爭(zhēng)」。這兩個(gè)陣營(yíng)背后都有大量的支
    發(fā)表于 02-02 10:28 ?1003次閱讀

    深度學(xué)習(xí)框架pytorch入門與實(shí)踐

    深度學(xué)習(xí)框架pytorch入門與實(shí)踐 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:03 ?1543次閱讀

    深度學(xué)習(xí)框架pytorch介紹

    深度學(xué)習(xí)框架pytorch介紹 PyTorch是由Facebook創(chuàng)建的開源機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:10 ?1673次閱讀

    深度學(xué)習(xí)框架tensorflow介紹

    深度學(xué)習(xí)框架tensorflow介紹 深度學(xué)習(xí)框架
    的頭像 發(fā)表于 08-17 16:11 ?2404次閱讀

    深度學(xué)習(xí)算法庫框架學(xué)習(xí)

    深度學(xué)習(xí)算法庫框架學(xué)習(xí) 深度學(xué)習(xí)是一種非常強(qiáng)大的機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:11 ?647次閱讀

    深度學(xué)習(xí)框架對(duì)照表

    深度學(xué)習(xí)框架,并對(duì)它們進(jìn)行對(duì)比。 1. TensorFlow TensorFlow是由Google Brain團(tuán)隊(duì)開發(fā)的一款
    的頭像 發(fā)表于 08-17 16:11 ?765次閱讀

    TensorFlowPyTorch深度學(xué)習(xí)框架的比較與選擇

    深度學(xué)習(xí)作為人工智能領(lǐng)域的一個(gè)重要分支,在過去十年中取得了顯著的進(jìn)展。在構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的過程中,深度
    的頭像 發(fā)表于 07-02 14:04 ?846次閱讀

    tensorflowpytorch哪個(gè)更簡(jiǎn)單?

    TensorFlowPyTorch都是用于深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的開源框架。
    的頭像 發(fā)表于 07-05 09:45 ?702次閱讀