簡體   English   中英

Tensorflow 2.0 中的梯度計算

[英]Gradient computations in Tensorflow 2.0

這是 Tensorflow 2.0 中的示例:

import tensorflow as tf

w = tf.Variable([[1.0]])
with tf.GradientTape() as tape_1:
    loss_1 = w * w


with tf.GradientTape() as tape_2:
    loss_2 = w * w * w

grad_1 = tape_1.gradient(loss_1, w)
grad_2 = tape_2.gradient(loss_2, w)
print(grad_1)
print(grad_2)

它返回:

tf.Tensor([[2.]], shape=(1, 1), dtype=float32)
tf.Tensor([[3.]], shape=(1, 1), dtype=float32)

以上是正確的系數,但grad_2也應該表明我們有 3w^2。 如何檢索w^2部分?

梯度結果並不意味着。 如果您采用函數 f(w) = w 2和 g(w) = w 3 ,它們各自關於 w 的導數函數將是 f'(w) = 2w 和 g'(w) = 3w 2 梯度 function 給你的是這些函數對於當前 w 值的值。 所以,由於 w 被初始化為 1,它給你 f'(1) = 2 和 g'(1) = 3。TensorFlow 可以在某種程度上計算符號導數 function,但是作為 Z0734DD56971B70E8E13 操作的序列從中提取一個好的數學表達式並不簡單。 並且在您使用的急切執行中,它甚至不可用,操作會根據需要執行,中間會被丟棄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM