.精品久久久麻豆国产精品,а√天堂网www在线中文,国产成人欧美一区二区三区,疯狂的欧美乱大交另类,99热都是精品久久久久久

May 26, 2020

深度學習工具選擇 | Keras VS PyTorch,還是?

當你決定學習深度學習時,有一個問題會一直存在——學習哪種工具?深度學習有很多框架和庫。這篇文章對兩個流行庫KerasPytorch進行了對比,因為二者都很容易上手,初學者能夠輕松掌握。那么到底應該選哪一個呢?本文分享了一個解決思路。



屢試屢驗,擇優(yōu)而取


做出合適選擇的最佳方法是對每個框架的代碼樣式有一個概覽。開發(fā)任何解決方案時首先也是最重要的事就是開發(fā)工具。你必須在開始一項工程之前設置好開發(fā)工具。一旦開始,就不能一直換工具了,否則會影響你的開發(fā)效率。


作為初學者,你應該多嘗試不同的工具,找到最適合你的那一個。但是當你認真開發(fā)一個項目時,這些事應該提前計劃好。



每天都會有新的框架和工具投入市場,而最好的工具能夠在定制和抽象之間做好平衡。工具應該和你的思考方式和代碼樣式同步。因此要想找到適合自己的工具,首先你要多嘗試不同的工具。


我們同時用Keras和PyTorch訓練一個簡單的模型。如果你是深度學習初學者,對有些概念無法完全理解,不要擔心。從現(xiàn)在開始,專注于這兩個框架的代碼樣式,盡量去想象哪個最適合你,使用哪個工具你最舒服,也最容易適應



這兩個工具最大的區(qū)別在于:PyTorch默認為eager模式,而 Keras 基于TensorFlow和其他框架運行(現(xiàn)在主要是 TensorFlow),其默認模式為圖模式。最新版本的 TensorFlow也提供類似PyTorch的eager模式,但是速度較慢。



如果你熟悉 NumPy,你可以將PyTorch視為有GPU支持的 NumPy。此外,現(xiàn)在有多個具備高級API(如 Keras)且以PyTorch為后端框架的庫,如Fastai、Lightning、Ignite等。如果你對它們感興趣,那你選擇PyTorch的理由就多了一個。


在不同的框架里有不同的模型實現(xiàn)方法。讓我們看一下這兩種框架里的簡單實現(xiàn)。本文提供了Google Colab鏈接。打開鏈接,試驗代碼,這可以幫助你找到最適合自己的框架。


我不會給出太多細節(jié),因為在此,我們的目標是看一下代碼結(jié)構(gòu),簡單熟悉一下框架的樣式。

01

Colab 鏈接▼
02

PyTorch:

https://colab.research.google.com/drive/1irYr0byhK6XZrImiY4nt9wX0fRp3c9mx?usp=sharing

03

Keras:

https://colab.research.google.com/drive/1QH6VOY_uOqZ6wjxP0K8anBAXmI0AwQCm?usp=sharing


Keras中的模型實現(xiàn)


以下示例是數(shù)字識別的實現(xiàn)。代碼很容易理解。你需要打開colab,試驗代碼,至少自己運行一遍。



Keras自帶一些樣本數(shù)據(jù)集,如MNIST手寫數(shù)字數(shù)據(jù)集。以上代碼可以加載這些數(shù)據(jù),數(shù)據(jù)集圖像是NumPy數(shù)組格式。Keras 還做了一點圖像預處理,使數(shù)據(jù)適用于模型。



以上代碼展示了模型。在Keras(TensorFlow)上,我們首先需要定義要使用的東西,然后立刻運行。在Keras中,我們無法隨時隨地進行試驗,不過PyTorch可以。



以上的代碼用于訓練和評估模型。我們可以使用save() 函數(shù)來保存模型,以便后續(xù)用load_model()函數(shù)加載模型。predict()函數(shù)則用來獲取模型在測試數(shù)據(jù)上的輸出。


現(xiàn)在我們概覽了Keras基本模型實現(xiàn)過程,現(xiàn)在來看PyTorch。


PyTorch中的模型實現(xiàn)


研究人員大多使用PyTorch,因為它比較靈活,代碼樣式也是試驗性的。你可以在PyTorch中調(diào)整任何事,并控制全部。



在PyTorch里進行試驗是很容易的。因為你不需要先定義好每一件事再運行。我們能夠輕松測試每一步。因此,在PyTorch中debug要比在 Keras 中容易一些。


接下來,我們來看簡單的數(shù)字識別模型實現(xiàn)。



以上代碼導入了必需的庫,并定義了一些變量。n_epochs、momentum等變量都是必須設置的超參數(shù)。此處不討論細節(jié),我們的目的是理解代碼的結(jié)構(gòu)。



以上代碼旨在聲明用于加載訓練所用批量數(shù)據(jù)的數(shù)據(jù)加載器。下載數(shù)據(jù)有很多種方式,不受框架限制。如果你剛開始學習深度學習,以上代碼可能看起來比較復雜。



在此,我們定義了模型。這是一種創(chuàng)建網(wǎng)絡的通用方法。我們擴展了nn.Module,在前向傳遞中調(diào)用forward()函數(shù)。


PyTorch的實現(xiàn)比較直接,且能夠根據(jù)需要進行修改。



以上代碼段定義了訓練和測試函數(shù)。在Keras中,我們需要調(diào)用fit()函數(shù)把這些事自動做完。但是在PyTorch中,我們必須手動執(zhí)行這些步驟。像Fastai這樣的高級API庫會簡化它,訓練所需的代碼也更少。



最后,保存和加載模型,以進行二次訓練或預測。這部分沒有太多差別。PyTorch模型通常有pt或pth擴展。


關(guān)于框架選擇的建議


學會一種模型并理解其概念后,再轉(zhuǎn)向另一種模型,并不是件難事,只是需要一些時間??梢允莾蓚€都學,但是不需要兩個都深入地學。


你應該從一個開始,然后在該框架中實現(xiàn)模型,同時也應當掌握另一個框架的知識。這有助于你閱讀別人用另一個框架寫的代碼。永遠不要被框架限制住。


先從適合自己的框架開始,然后嘗試學習另一個。如果你發(fā)現(xiàn)另一個用起來更合適,那么轉(zhuǎn)換成另一個。因為PyTorch和Keras的大多數(shù)核心概念是類似的,二者之間的轉(zhuǎn)換非常容易。


外網(wǎng)原文鏈接:https://medium.com/@karan_jakhar/keras-vs-pytorch-dilemma-dc434e5b5ae0


專業(yè)解決方案加速深度學習研究


實踐出真知,尋找最適合自己的深度學習框架,需要多多嘗試。此時擁有一臺性能強勁的深度學習工作站,尋找心儀框架事半功倍,令您研究得心應手。Cloudhin?云軒專注Deep learning和高性能計算服務器定制,針對主要深度學習框架(如TensorFlow、Caffe 2、Theano或Torch)進行了優(yōu)化和設置,在桌面上即可提供強大的深度學習功能。




Cloudhin?云軒WS4148深度學習水冷工作站搭載6核12線程Intel Core i7 X系列處理器,配合英特爾睿頻加速MAX技術(shù)3.0助力高效進行計算密集型工作負載??蛇x四路Nvidia Titan V GPU,將超算架構(gòu)帶入您的PC,單塊即有12GB HBM2顯存和640個Tensor核心,可提供110萬億次浮點運算性能。強強聯(lián)合,盡享GPU加速人工智能和深度學習的強大功能,幫助AI開發(fā)者和數(shù)據(jù)科學家更快取得成果。



專業(yè)勤修,銳意進取。云軒技術(shù)工程師畢業(yè)于NVIDIA深度學習研究所,豐富經(jīng)驗,值得信賴。更多定制方案請聯(lián)系客服,我們將實時響應您的定制需求,做您服務器的貼心管理者。