Python 3.x tensorflow hessians-运行时错误

Python 3.x tensorflow hessians-运行时错误,python-3.x,tensorflow,Python 3.x,Tensorflow,我试图理解tensorflow 2.0黑森人。我理解其中的数学部分,但我正在努力理解其中的代码部分 我的玩具代码如下- a = tf.constant([1, 2, 3], dtype=tf.float32) b = tf.constant([1, 1, 2], dtype=tf.float32) tf.hessians(a, b) 这给- RuntimeError:tf.gradients在执行时不受支持 启用。改用tf.Gradien

我试图理解tensorflow 2.0黑森人。我理解其中的数学部分,但我正在努力理解其中的代码部分

我的玩具代码如下-

a = tf.constant([1, 2, 3], dtype=tf.float32)
b = tf.constant([1, 1, 2], dtype=tf.float32)                            
tf.hessians(a, b)
这给-

RuntimeError:tf.gradients在执行时不受支持 启用。改用tf.GradientTape

发生什么事了


谢谢

下面是一个你想要实现的工作示例

tf.hessians
将TensorFlow op添加到图形中以计算hessians。因此,如果要使用hessian,必须在用
tf.function
修饰的函数中调用它,如下所示。使用
tf.hessian
而不使用
tf.function
decorator尝试在不构建图形的情况下执行此操作(在渴望模式下)。这将不起作用,从而导致错误

最重要的是,您的
b
需要依赖于
a
。注意,我正在计算
d2b/d2a
。否则,您将得到以下结果

ValueError:尝试将“张量”转换为张量,但失败。错误:不支持任何值


这是一个你想要实现的工作示例

tf.hessians
将TensorFlow op添加到图形中以计算hessians。因此,如果要使用hessian,必须在用
tf.function
修饰的函数中调用它,如下所示。使用
tf.hessian
而不使用
tf.function
decorator尝试在不构建图形的情况下执行此操作(在渴望模式下)。这将不起作用,从而导致错误

最重要的是,您的
b
需要依赖于
a
。注意,我正在计算
d2b/d2a
。否则,您将得到以下结果

ValueError:尝试将“张量”转换为张量,但失败。错误:不支持任何值


所以a无论如何都不依赖于b。不确定通过计算水资源量t的导数你期望得到什么。bSo a无论如何都不依赖于b。不确定通过计算w.r.t.b的导数你期望得到什么
a = tf.constant([1, 2, 3], dtype=tf.float32)

@tf.function
def compute_b(a):
  b = a**2
  hes = tf.hessians(b, a)
  return b, hes


b, d2y_d2x = compute_b(a)
print(d2y_d2x)