Tensorflow2 0 自動求導API

2021-10-08 22:59:42 字數 1666 閱讀 9902

tensorflow 為自動微分提供了 tf.gradienttape api ,根據某個函式的輸入變數來計算它的導數。在深度神經網路訓練過程中最常用的誤差反向傳播演算法(error back propagation training)是更新網路權重的關鍵,求偏導常用到這種機制。

只有tf.variable物件不需要使用watch方法。

import tensorflow as tf

#最簡單的實現y= 2*x*x + x的求導

x = tf.constant(

3.0)

with tf.gradienttape(

)as tape:

tape.watch(x)

y =2*x*x + x

dx = tape.gradient(y,x)

# 一階導數值

下面實現二階求導:

x = tf.constant(

3.0)

with tf.gradienttape(

)as tape:

tape.watch(x)

with tf.gradienttape(

)as tape_2:

tape_2.watch(x)

y =2*x*x + x

dx = tape_2.gradient(y,x)

# 一階導數值

dx_2 = tape.gradient(dx,x)

# 二階導數值

#最簡單的實現y= 2*x1^2 + 5*x1 + 3*x2^2 - 6*x2的求導

x1 = tf.variable(2.

)x2 = tf.variable(3.

)with tf.gradienttape(

)as tape:

y =2*x1*x1 +

5*x1 +

3*x2*x2 -

6*x2

dx1,dx2 = tape.gradient(y,

[x1,x2]

)# 一階導數值

dx1 =

dx2 =

下面實現二階求導:

x1 = tf.variable(2.

)x2 = tf.variable(3.

)with tf.gradienttape(

)as tape:

tape.watch(x)

with tf.gradienttape(

)as tape_2:

tape_2.watch(x)

y =2*x1*x1 +

5*x1 +

3*x2*x2 -

6*x2

dx1,dx2 = tape_2.gradient(y,

[x1,x2]

)# 一階導數值

dx1_2,dx2_2 = tape.gradient(

[dx1,dx2]

,[x1,x2]

)# 二階導數值

dx1_2 =

dx2_2 =

Tensorflow2 0筆記 自動求梯度(導數)

對於給定函式 y w aw 2 bw c 數學求導得 dy dw 2aw b 那麼,a,b,c,w 1,2,3,4 處的導數,dy dw 2 1 4 2 10 而在tensorflow2.0中,梯度可以自動求取。具體 如下 import tensorflow as tf a tf.constant ...

TensorFlow2 0教程28 自動求導

這節我們會介紹使用tensorflow2自動求導的方法。一 gradient tapes tensorflow 提供tf.gradienttape api來實現自動求導功能。只要在tf.gradienttape 上下文中執行的操作,都會被記錄與 tape 中,然後tensorflow使用反向自動微分...

tensorflow2 0視訊記憶體設定

遇到乙個問題 新買顯示卡視訊記憶體8g但是tensorflow執行的時候介面顯示只有約6.3g的視訊記憶體可用,如下圖 即限制了我的視訊記憶體,具體原因為什麼我也不知道,但原來的視訊記憶體小一些的顯示卡就沒有這個問題。目前的解決辦法是 官方文件解決 然後對應的中文部落格 總結一下,就是下面的兩個辦法...