中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么編寫同時在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

长海县| 轮台县| 定襄县| 濮阳县| 广饶县| 桂阳县| 舒城县| 满洲里市| 定襄县| 东乌| 乌审旗| 浏阳市| 洛隆县| 佳木斯市| 托里县| 扬中市| 彭水| 卢湾区| 治县。| 安龙县| 广南县| 凤庆县| 凭祥市| 大方县| 开远市| 昌邑市| 华容县| 福建省| 库尔勒市| 霍城县| 巫山县| 巩义市| 花莲县| 康乐县| 临湘市| 安康市| 怀化市| 叶城县| 分宜县| 禄丰县| 枣强县|