1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        掌握深度學(xué)習(xí),為什么要用PyTorch、TensorFlow框架?

        共 4644字,需瀏覽 10分鐘

         ·

        2022-06-08 19:31

        點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺(jué)”公眾號(hào)

        重磅干貨,第一時(shí)間送達(dá)


        【導(dǎo)讀】


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


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


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



        【PyTorch】


        PyTorch 建立在舊版的 Torch 和 Caffe2 框架之上。如其名所示,PyTorch采用了腳本語(yǔ)言 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è)名字就來(lái)自張量在其網(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)練期間通過(guò)添加和刪除隱藏層,來(lái)提高其準(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)行。這樣可能看起來(lái)計(jì)算效率會(huì)低一些,但是 PyTorch 設(shè)計(jì)的工作方式就是如此,而且實(shí)際上在訓(xùn)練或預(yù)測(cè)速度方面并不遜色。


        PyTorch 通過(guò)集成加速庫(kù),比如英特爾 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 編寫(xiě)的單獨(dú)庫(kù)。同時(shí),PyTorch 并不是整體式 C++ 框架的 Python 綁定。其目的是與Python 深度集成,并允許使用其他 Python 庫(kù)。


        【Fast.ai與fastai庫(kù)】


        Fast.ai 是一家小公司,他們通過(guò)為編程人員提供免費(fèi)課程、軟件庫(kù)、尖端研究和社區(qū),降低深度學(xué)習(xí)的難度,并吸引更多各種背景的人。


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


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


        【TensorFlow】


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


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


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

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

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

        • TensorFlow Lite,一個(gè)輕量級(jí)庫(kù),用于在移動(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,這樣可以大大減少需要編寫(xiě)的代碼量。只需要使用一行代碼就可以構(gòu)建 Keras 神經(jīng)網(wǎng)絡(luò)中的一層,如果利用循環(huán)結(jié)構(gòu),則可以進(jìn)一步減少代碼量。


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


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


        TensorFlow Lite 是一個(gè)用于移動(dòng)設(shè)備的開(kāi)源深度學(xué)習(xí)框架。目前它可以為iOS、ARM64 和 Raspberry Pi 構(gòu)建模型。TensorFlow Lite 有兩個(gè)主要組件:解釋器和轉(zhuǎn)換器。解釋器可以在許多不同的硬件類(lèi)型上運(yùn)行經(jīng)過(guò)特別優(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 開(kāi)發(fā) MXNet 后端。你也可以使用 PlaidML(一個(gè)獨(dú)立的項(xiàng)目)作為Keras 的后端,利用 PlaidML 的 OpenCL 支持所有 GPU 的優(yōu)勢(shì)。


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


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


        你還可以利用 Keras 的子類(lèi) 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ò)模型開(kāi)始,只需為你的數(shù)據(jù)定制最終層即可。


        從頭開(kāi)始訓(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í)框架都提供了某種形式的模型庫(kù)供你挑選模型。


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


        如果你想了解有關(guān)卷積神經(jīng)網(wǎng)絡(luò)遷移學(xué)習(xí)的更多信息,則可能需要閱讀有關(guān)該主題的文章:

        斯坦福 CS231筆記

        https://cs231n.github.io/transfer-learning/


        并閱讀相關(guān)的參考資料。


        以下是這些筆記中提到的一個(gè)關(guān)鍵點(diǎn):

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


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


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


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


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


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



        本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。

        —THE END—
        瀏覽 67
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            在线激情网站 | 室友顶撞喘嗯啊h | 国产伦精品一区二区三区新乡影视 | 久久精品秘 一区二区三区 | 国产69精品久久久久777糖心 | 性欧美18—19sex性高清 | 热热av | 大尺度真军露器官做爰未删减 | 熟练中出-波多野结衣 | 刑警娇妻穿着乳环被调教 |