亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么編寫同時在PyTorch和Tensorflow上工作的代碼

發布時間:2021-12-04 18:08:47 來源:億速云 閱讀:207 作者:柒染 欄目:大數據

怎么編寫同時在PyTorch和Tensorflow上工作的代碼,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

關于怎么編寫同時在PyTorch和Tensorflow上工作的代碼問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巨野县| 万安县| 彭州市| 平顺县| 文成县| 定陶县| 安仁县| 平山县| 新龙县| 莲花县| 宝坻区| 津市市| 绍兴县| 久治县| 商水县| 太原市| 兴业县| 珲春市| 都安| 勃利县| 汉中市| 铜山县| 新晃| 共和县| 海兴县| 民权县| 许昌县| 达尔| 阿荣旗| 太谷县| 陵水| 衡东县| 靖安县| 繁昌县| 东城区| 贡嘎县| 济源市| 花莲县| 高密市| 乐昌市| 渭南市|