Python 3.x tensorflow hessians-运行时错误
我试图理解tensorflow 2.0黑森人。我理解其中的数学部分,但我正在努力理解其中的代码部分 我的玩具代码如下-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
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)