[英]Why is this Tensorflow gradient tape returning None?
我正在使用 Tensorflow 2.0 並計算二階導數。 但是,tensorflow 為u_tt
和u_xx
返回None
。 u_x
, u_t
計算正確。 變量u,x,t
之前定義並且是tf.Tensor
s
import tensorflow as tf
# defining u,x,t
with tf.GradientTape(persistent=True) as tp2:
with tf.GradientTape(persistent=True) as tp1:
tp1.watch(t)
tp1.watch(x)
u_x = tp1.gradient(u, x) # shape (1000,1)
u_t = tp1.gradient(u, t) # shape (1000,1)
u_tt = tp2.gradient(u_t, t) # None??
u_xx = tp2.gradient(u_x, x) # None??
知道二階導數計算有什么問題嗎?
以下解決方案有效。
with tf.GradientTape(persistent=True) as tp2:
with tf.GradientTape(persistent=True) as tp1:
tp1.watch(t)
tp1.watch(x)
u_x = tp1.gradient(u, x)
u_t = tp1.gradient(u, t)
u_tt = tp1.gradient(u_t, t)
u_xx = tp1.gradient(u_x, x)
根據https://www.tensorflow.org/guide/advanced_autodiff了解為什么原始版本不起作用會很有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.