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的視訊記憶體可用,如下圖 即限制了我的視訊記憶體,具體原因為什麼我也不知道,但原來的視訊記憶體小一些的顯示卡就沒有這個問題。目前的解決辦法是 官方文件解決 然後對應的中文部落格 總結一下,就是下面的兩個辦法...