最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中幾種自動微分庫解析

 更新時間:2019年08月29日 11:47:16   作者:AiFly  
這篇文章主要介紹了python中幾種自動微分庫解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

前言

簡單介紹下python的幾個自動求導(dǎo)工具,tangent、autograd、sympy;

在各種機器學(xué)習(xí)、深度學(xué)習(xí)框架中都包含了自動微分,微分主要有這么四種:手動微分法、數(shù)值微分法、符號微分法、自動微分法,這里分別簡單走馬觀花(hello world式)的介紹下下面幾種微分框架;

sympy 強大的科學(xué)計算庫,使用的是符號微分,通過生成符號表達式進行求導(dǎo);求得的導(dǎo)數(shù)不一定為最簡的,當(dāng)函數(shù)較為復(fù)雜時所生成的表達式樹異常復(fù)雜;

autograd自動微分先將符號微分用于基本的算子,帶入數(shù)值并保存中間結(jié)果,后應(yīng)用于整個函數(shù);自動微分本質(zhì)上就是圖計算,容易做很多優(yōu)化所以廣泛應(yīng)用于各種機器學(xué)習(xí)深度學(xué)習(xí)框架中;

tangent 為源到源(source-to-source)的自動微分框架,在計算函數(shù)f微分時他通過生成新函數(shù)f_grad來計算該函數(shù)的微分,與目前所存在的所有自動微分框架都有所不同;由于它是通過生成全新的函數(shù)來計算微分所以具有非常搞的可讀性、可調(diào)式性這也是官方所說的與當(dāng)前自動微分框架的重大不同;

sympy 求導(dǎo)

 def grad():
   # 定義表達式的變量名稱
   x, y = symbols('x y')
   # 定義表達式
   z = x**2 +y**2
   # 計算z關(guān)于y對應(yīng)的偏導(dǎo)數(shù)
   return diff(z, y)
 func = grad()

輸出結(jié)果表達式z的導(dǎo)函數(shù)z‘=2*y

print(func) 

把y 等于6 帶入計算 結(jié)果 為12

print(func.evalf(subs ={'y':3}))

Autograd求偏導(dǎo)

 import autograd.numpy as np
 from autograd import grad
 #表達式 f(x,y)=x^2+3xy+y^2
 #df/dx = 2x+3y
 #df/dy = 3x+2y
 #x=1,y=2
 #df/dx=8
 #df/dy=7
 def fun(x, y):
  z=x**2+3*x*y+y**2
  return z
 fun_grad = grad(fun)
 fun_grad(2.,1.)

輸出:7.0

tangent求導(dǎo)

 import tangent
 def fun(x, y):
  z=x**2+3*x*y+y**2
  return z

默認(rèn)為求z關(guān)于x的偏導(dǎo)數(shù)

dy_dx = tangent.grad(fun)

輸出偏導(dǎo)數(shù)值為 8 ,z' = 2 * x,此處x傳任何值都是一樣的

df(4, y=1)

可通過使用wrt參數(shù)指定求關(guān)于某個參數(shù)的偏導(dǎo)數(shù),下面為求z關(guān)于y的偏導(dǎo)數(shù)

df = tangent.grad(funs, wrt=([1]))

輸出值為10 ,z' = 2 *y,此處x傳任何值都是一樣的

df(x=0, y=5)

上面說了那么多也沒體現(xiàn)出tangent的核心:源到源(source-to-source)

在生成導(dǎo)函數(shù)的時候加入verbose=1參數(shù),即可看到tangent為我們生成的用于計算導(dǎo)數(shù)的函數(shù),默認(rèn)情況下該值為0所以我們沒感覺到tangent的求導(dǎo)與別的自動微分框架有什么區(qū)別;

 def df(x):
   z = x**2
   return z
 df = tangent.grad(df, verbose=1)
 df(x=2)

在執(zhí)行完上述代碼后,我們看到了tangent為我們所生成用于求導(dǎo)數(shù)的函數(shù):

 def ddfdx(x, bz=1.0):
  z = x ** 2
  assert tangent.shapes_match(z, bz), 'Shape mismatch between return value (%s) and seed derivative (%s)' % (numpy.shape(z), numpy.shape(bz))
 # Grad of: z = x ** 2
 _bx = 2 * x * bz
 bx = _bx
 return bx

ddfdx函數(shù)就是所生成的函數(shù),從中我們也可以看到表達式z的導(dǎo)函數(shù)z'=2 * x,tangent就是通過執(zhí)行該函數(shù)用于求得導(dǎo)數(shù)的;

sympy 中的自動微分只是它強大的功能之一,autograd 從名字也可知它就是為了自動微分而生的,tangent初出茅廬2017年底Google才發(fā)布的自動微分方法也比較新穎,從17年發(fā)v0.1.8版本后也沒見發(fā)版,源碼更新也不夠活躍;sympy、autograd比較成熟,tangent還有待觀察;

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python爬蟲之Selenium實現(xiàn)關(guān)閉瀏覽器

    Python爬蟲之Selenium實現(xiàn)關(guān)閉瀏覽器

    這篇文章主要介紹了Python爬蟲之Selenium實現(xiàn)關(guān)閉瀏覽器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • macOS M1(Apple Silicon)安裝配置Conda環(huán)境的具體實現(xiàn)

    macOS M1(Apple Silicon)安裝配置Conda環(huán)境的具體實現(xiàn)

    由于常用的Anaconda和Miniconda現(xiàn)在都沒有提供M1處理器支持的conda環(huán)境,以下是conda-forge提供的miniforge,感興趣的可以了解一下
    2021-08-08
  • python3?字符串str和bytes相互轉(zhuǎn)換

    python3?字符串str和bytes相互轉(zhuǎn)換

    這篇文章主要介紹了python3?字符串str和bytes相互轉(zhuǎn)換,在文件傳輸過程中,通常使用bytes格式的數(shù)據(jù)流,而代碼中通常用str類型,因此str和bytes的相互轉(zhuǎn)換就尤為重要,下文詳細介紹需要的小伙伴可以參考一下
    2022-03-03
  • 使用PyInstaller將Python程序文件轉(zhuǎn)換為可執(zhí)行程序文件

    使用PyInstaller將Python程序文件轉(zhuǎn)換為可執(zhí)行程序文件

    與py2exe一樣,PyInstaller程序也可以將Python的.py程序文件轉(zhuǎn)換為.exe,并且還有Linux的版本,下面我們就來詳細看一下如何使用PyInstaller將Python程序文件轉(zhuǎn)換為可執(zhí)行程序文件
    2016-07-07
  • Python教程之基本運算符的使用(上)

    Python教程之基本運算符的使用(上)

    Python?運算符通常用于對值和變量執(zhí)行操作。這些是用于邏輯和算術(shù)運算的標(biāo)準(zhǔn)符號。在本文中,我們將研究不同類型的?Python?運算符,感興趣的可以了解一下
    2022-09-09
  • python批量處理文件或文件夾

    python批量處理文件或文件夾

    這篇文章主要為大家詳細介紹了python批量處理文件或文件夾,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python中使用json.load()和json.loads()加載json數(shù)據(jù)的方法實例

    Python中使用json.load()和json.loads()加載json數(shù)據(jù)的方法實例

    在python編程中,我們經(jīng)常要用到j(luò)son對象作為數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關(guān)于Python中使用json.load()和json.loads()加載json數(shù)據(jù)的方法實例,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • 關(guān)于Torch?torchvision?Python版本對應(yīng)關(guān)系說明

    關(guān)于Torch?torchvision?Python版本對應(yīng)關(guān)系說明

    這篇文章主要介紹了關(guān)于Torch?torchvision?Python版本對應(yīng)關(guān)系說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 利用python來跟蹤ip地址的方法

    利用python來跟蹤ip地址的方法

    今天來介紹一個流行的 python庫 ip2geotools,使用它可以確定 IP地址 對應(yīng)的 國家、地區(qū)、城市、緯度和經(jīng)度等,文中通過代碼示例介紹了如何使用python來跟蹤ip地址,需要的朋友可以參考下
    2023-06-06
  • Python小程序編程實現(xiàn)一鍵自動整理文件解壓文件

    Python小程序編程實現(xiàn)一鍵自動整理文件解壓文件

    這篇文章主要為大家介紹了Python小程序編程實現(xiàn)一鍵自動整理文件解壓文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論

东阿县| 沙坪坝区| 保定市| 屏东市| 祁门县| 若羌县| 梅河口市| 九龙县| 台湾省| 五莲县| 嘉峪关市| 景德镇市| 萍乡市| 郯城县| 正定县| 云浮市| 青岛市| 二连浩特市| 博客| 聂拉木县| 永昌县| 大方县| 广汉市| 海盐县| 沁水县| 河池市| 梨树县| 加查县| 东明县| 娄烦县| 连平县| 塘沽区| 钦州市| 五寨县| 扎囊县| 长沙县| 库尔勒市| 饶平县| 盐池县| 浦江县| 宜州市|