tape.gradient为何不是位于with下面?
来源:3-11 tf.GradientTape基本使用方法
站在你背后的
2021-07-03
x1 = tf.Variable(2.0)
x2 = tf.Variable(3.0)
with tf.GradientTape() as tape:
z = g(x1, x2)
dz_x1 = tape.gradient(z, x1)
print(dz_x1)
为何不是下面这样,将tape.gradient放在with下面,梯度计算完毕才会释放tape呀
x1 = tf.Variable(2.0)
x2 = tf.Variable(3.0)
with tf.GradientTape() as tape:
z = g(x1, x2)
dz_x1 = tape.gradient(z, x1)
print(dz_x1)
写回答
1回答
-
同学你好,这个tf的doc里没有明确的说,不过可以参考这个:https://blog.csdn.net/guanxs/article/details/102471843
基本思想就是,在with里面定义了整个graph(相当于把磁带正着放一遍),然后再with外面算一次就好,如果在with里面,估计得在最后才可以。
你可以试试你的第二种能不能运行,如果能运行,说明里外都可以,只是编程习惯,如果不可以,报的错在这里贴一下哈?
012021-07-11
相似问题