作者|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 ep
x = 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 torch
norm(torch.tensor([1., 2., 3.]))
import tensorflow as tf
norm(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 ep
def 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博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/196023.html
標籤:其他
上一篇:端到端機器學習專案:評論分類
下一篇:一個二分類下沒有免費午餐定理的題
