【深度学习】编写同时在PyTorch和Tensorflow上工作的代码
作者 | Ram Sagar?
編譯 | VK?
來源 | Analytics In Diamag
?“庫開發人員不再需要在框架之間進行選擇。”
?來自德國圖賓根人工智能中心的研究人員介紹了一種新的Python框架EagerPy,EagerPy允許開發人員編寫獨立于PyTorch和TensorFlow等流行框架的代碼。
在最近發表的一篇關于EagerPy的文章中,研究人員寫道,庫開發人員不再關注框架依賴性。他們的新Python框架,急切地解決了它們的重新實現和代碼復制障礙。
例如,Foolbox是一個構建在EagerPy之上的Python庫。該庫是用EagerPy而不是NumPy重寫的,以實現在PyTorch和TensorFlow中開發,并且只有一個代碼庫,沒有代碼重復。Foolbox是一個對機器學習模型進行對抗性攻擊的庫。
框架無關的重要性
為了解決框架之間的差異,作者探索了句法偏差。在PyTorch的情況下,使用In-place的梯度需要使用**_grad_()「,而反向傳播是使用」backward**()調用的。
然而,TensorFlow提供了一個高級管理器和像「tape.gradient」這樣的函數來查詢梯度。即使在句法層面,這兩個框架也有很大的不同。例如,對于參數,dim vs axis;對于函數,sum vs reduce_sum。
這就是“EagerPy ”發揮作用的地方。它通過提供一個統一的API來解決PyTorch和TensorFlow之間的差異,該API透明地映射到各種底層框架,而無需計算開銷。
?“EagerPy允許你編寫自動使用PyTorch、TensorFlow、JAX和NumPy的代碼。”
?研究人員寫道,EagerPy專注于Eager執行,此外,它的方法是透明的,用戶可以將與框架無關的EagerPy代碼與特定于框架的代碼結合起來。
TensorFlow引入的eager執行模塊和PyTorch的相似特性使eager執行成為主流,框架更加相似。然而,盡管PyTorch和TensorFlow2之間有這些相似之處,但編寫框架無關的代碼并不簡單。在語法層面,這些框架中用于自動微分的api是不同的。
自動微分是指用算法求解微分方程。它的工作原理是鏈式規則,也就是說,求解函數的導數可以歸結為基本的數學運算(加、減、乘、除)。這些算術運算可以用圖形格式表示。EagerPy特別使用了一種函數式的方法來自動區分。
下面是一段來自文檔的代碼片段:
import?eagerpy?as?epx?=?ep.astensor(x)def?loss_fn(x):#這個函數接受并返回一個eager張量return?x.square().sum()print(loss_fn(x))#?PyTorchTensor(tensor(14.))print(ep.value_and_grad(loss_fn,?x))首先定義第一個函數,然后根據其輸入進行微分。然后傳遞給「ep.value_and_grad」 來得到函數的值及其梯度。
此外,norm函數現在可以與PyTorch、TensorFlow、JAX和NumPy中的原生張量和數組一起使用,與本機代碼相比幾乎沒有任何開銷。它也適用于GPU張量。
import?torchnorm(torch.tensor([1.,?2.,?3.]))import?tensorflow?as?tfnorm(tf.constant([1.,?2.,?3.]))總之,EagerPy 旨在提供以下功能:
為快速執行提供統一的API
維護框架的本機性能
完全可鏈接的API
全面的類型檢查支持
研究人員聲稱,這些屬性使得使用這些屬性比底層框架特定的api更容易、更安全。盡管有這些變化和改進,但EagerPy 背后的團隊還是確保了eagerpy API遵循了NumPy、PyTorch和JAX設置的標準。
入門「EagerPy」:
使用pip從PyPI安裝最新版本:
python3?-m?pip?install?eagerpy import?eagerpy?as?epdef?norm(x):x?=?ep.astensor(x)result?=?x.square().sum().sqrt()return?result.raw了解更多關于“eagerpy”的信息:https://eagerpy.jonasrauber.de/guide/autodiff.html
原文鏈接:https://analyticsindiamag.com/eagerpy-pytorch-tensorflow-coding/
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群704220115。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):總結
以上是生活随笔為你收集整理的【深度学习】编写同时在PyTorch和Tensorflow上工作的代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【小白学PyTorch】13.Effic
- 下一篇: 【小白学PyTorch】14.tenso