自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

「決戰(zhàn)紫禁之巔」之深度學(xué)習(xí)框架篇:Keras VS PyTorch

開發(fā) 開發(fā)工具 深度學(xué)習(xí)
本文將分別對 Keras 和 PyTorch 的四個方面進行比較,你可以根據(jù)兩種框架的優(yōu)劣勢以及自身的需要選擇其中一種。

TensorFlow 是很多科學(xué)家、工程師和開發(fā)人員的***深度學(xué)習(xí)框架。雖然 TensorFlow 1.0 早在 2017 年 2 月就發(fā)布了,但使用過程中對用戶不太友好。

過去幾年里,Keras 和 PyTorch 日益成為廣受用戶歡迎的兩種深度學(xué)習(xí)庫,因為它們使用起來比 TensorFlow 簡單多了。

本文將分別對 Keras 和 PyTorch 的四個方面進行比較,你可以根據(jù)兩種框架的優(yōu)劣勢以及自身的需要選擇其中一種。

一、Keras 和 PyTorch 簡介

Keras 于 2015 年 3 月***發(fā)布,是能夠在 TensorFlow、CNTK、Theano 或 MXNet 上運行的高級 API(或作為 TensorFlow 內(nèi)的 tf.contrib)。Keras 的突出特點在于其易用性,它是迄今為止最容易上手且能夠快速運行的框架。此外,Keras 能夠直觀地定義神經(jīng)網(wǎng)絡(luò),函數(shù)式 API 的使用令用戶可以將層定義為函數(shù)。

PyTorch 于 2016 年 10 月發(fā)布,由 Facebook AI 研究團隊開發(fā),是專注于直接處理數(shù)組表達式的較低級別 API。與 Keras 相比,你能夠擁有更強的靈活度以及對 PyTorch 的控制,同時又不需要進行太多的聲明式編程(declarative programming)。

[[268957]]

二、選擇 Keras 還是 PyTorch?

有時,深度學(xué)習(xí)從業(yè)者會糾結(jié)于應(yīng)該使用哪一種框架,這通常取決于個人喜好。下面將介紹 Keras 和 PyTorch 的幾個方面對比,你可據(jù)此做出自己的選擇。

1. 定義模型的類 vs 函數(shù)

Keras 在定義深度學(xué)習(xí)模型時提供函數(shù)式 API。通過函數(shù)式 API,神經(jīng)網(wǎng)絡(luò)被定義為一組序列函數(shù),然后一個接一個地得到應(yīng)用。例如,函數(shù)定義層 1 的輸出是函數(shù)定義層 2 的輸入。

在使用 PyTorch 時,用戶將神經(jīng)網(wǎng)絡(luò)設(shè)置為一個擴展了 Torch 庫中 torch.nn. 模塊的類。與 Keras 類似,PyTorch 為用戶提供作為組件的層,但由于這些層屬于 Python 類,所以它們是類__init__() 方法中的引用,并通過類的 forward() 方法執(zhí)行。

相比而言,PyTorch 能夠令你訪問 Python 的所有類別特征,而不只是簡單的函數(shù)調(diào)用。定義網(wǎng)絡(luò)變得更加清晰,而且優(yōu)雅。但如果你認為以最快的速度編寫網(wǎng)絡(luò)代碼最為重要,則 Keras 對你來說更加易于使用。

2. 張量和計算圖 vs 標準陣列

對于一般程序員來說,Keras API 會隱藏大量的混亂細節(jié),定義網(wǎng)絡(luò)層也非常直觀。因而,你在默認設(shè)置下就足以入門。但當(dāng)你想要實現(xiàn)一個非常先進或「獨特的」模型時,才真正需要深入了解低級和本質(zhì)的 TensorFlow。

但當(dāng)你真正深入了解低級 TensorFlow 代碼時,就會遇到一些挑戰(zhàn)。你需要確保所有矩陣乘法對齊。更不要想著將層輸出打印出來了,因為你會在終端上打印出一個很好的張量定義(Tensor definition)。

相較于 Keras,PyTorch 在這些方面往往更加寬容。你只需要了解每個層的輸入和輸出大小就可以了,并且 PyTorch 在這一點上做得非常好,你可以快速掌握。你不需要構(gòu)建抽象的計算圖(其內(nèi)部情況你在調(diào)試時無法看到)。

PyTorch 的另一個優(yōu)點在于其平滑性(smoothness),你可以在 Torch 張量和 Numpy 矩陣之間來回切換。但如果開發(fā)者需要實現(xiàn)一些自定義內(nèi)容,則 TF 張量和 Numpy 矩陣之間的切換可能會很麻煩,這要求他們對 TensorFlow 有一個透徹了解。

實際上,PyTorch 的交互運算更加簡單,兩步即可:將 Torch 張量(變量對象)轉(zhuǎn)換成 Numpy,然后進行反向運算即可。

當(dāng)然,如果你不需要實現(xiàn)任何獨特的內(nèi)容,則 Keras 也表現(xiàn)的非常好,因為你不會遇到任何 TensorFlow 障礙。但如果想要實現(xiàn)一些獨特的內(nèi)容,則 PyTorch 可能會表現(xiàn)得更加平滑。

3. 訓(xùn)練模型

[[268958]]

開始訓(xùn)練

利用 Keras 訓(xùn)練模型超級簡單!只需要一個簡單的.fit(),你就可以開啟模型訓(xùn)練之旅。

而利用 PyTorch 訓(xùn)練模型包含以下幾個步驟:

  • 每一批次的訓(xùn)練開始時初始化梯度
  • 在模型中運行前向傳播
  • 運行后向傳播
  • 計算損失和更新權(quán)重

所以,就訓(xùn)練模型來說,PyTorch 較為繁瑣。

4. 控制 CPU vs GPU 模式

[[268959]]

我們需要更多算力。

 

如果你已經(jīng)安裝了 tensorflow-gpu,則在 Keras 中能夠使用 GPU 并且會默認完成。然后,如果你想要將某些運算轉(zhuǎn)移至 CPU,則可以以單行方式完成。

但對于 PyTorch 來說,你必須顯式地為每個 torch 張量和 numpy 變量啟動 GPU。這樣代碼會比較混亂。并且如果你想在 CPU 和 GPU 之間來回移動以執(zhí)行不同運算,則很容易出錯。

例如,為了將之前的模型轉(zhuǎn)移到 GPU 上運行,則需要以下步驟:

因而,Keras 在簡潔性和默認設(shè)置方面優(yōu)于 PyTorch。

三、選擇 Keras 或 PyTorch 的一般性建議

作者通常建議初學(xué)者從 Keras 開始。Keras 絕對是理解和使用起來最簡單的框架,能夠很快地上手運行。你完全不需要擔(dān)心 GPU 設(shè)置、處理抽象代碼以及其他任何復(fù)雜的事情。你甚至可以在不接觸任何 TensorFlow 單行代碼的情況下,實現(xiàn)自定義層和損失函數(shù)。

但如果你開始深度了解到深度網(wǎng)絡(luò)的更細粒度層面或者正在實現(xiàn)一些非標準的事情,則 PyTorch 是你的***庫。使用 PyTorch 需要進行一些額外操作,但這不會減緩你的進程。你依然能夠快速實現(xiàn)、訓(xùn)練和測試網(wǎng)絡(luò),并享受簡單調(diào)試帶來的額外益處。

參考鏈接:https://towardsdatascience.com/keras-vs-pytorch-for-deep-learning-a013cb63870d

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2009-12-17 09:41:52

Linux桌面

2011-06-10 11:19:30

WindowsMac

2012-08-15 10:02:17

2018-07-03 15:59:14

KerasPyTorch深度學(xué)習(xí)

2019-11-19 09:58:16

機器學(xué)習(xí)人工智能框架

2019-12-26 17:07:30

Python程序員GitHub

2014-08-28 10:45:19

2020-05-14 14:45:33

深度學(xué)習(xí) PyTorch人工智能

2021-11-05 12:59:51

深度學(xué)習(xí)PytorchTenso

2020-07-03 15:03:47

深度學(xué)習(xí)編程人工智能

2021-10-18 10:14:26

鴻蒙HarmonyOS應(yīng)用

2022-11-25 07:35:57

PyTorchPython學(xué)習(xí)框架

2025-01-08 08:30:38

2021-07-01 06:01:20

人工智能AI深度學(xué)習(xí)

2018-10-15 10:08:53

程序員技能深度學(xué)習(xí)

2021-02-03 13:56:09

KerasAPI深度學(xué)習(xí)

2022-12-27 07:50:34

python深度學(xué)習(xí)DeepDream

2017-03-01 09:05:27

PyTorchPython框架
點贊
收藏

51CTO技術(shù)棧公眾號