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回答

正十七

2021-07-11

同学你好,这个tf的doc里没有明确的说,不过可以参考这个:https://blog.csdn.net/guanxs/article/details/102471843

基本思想就是,在with里面定义了整个graph(相当于把磁带正着放一遍),然后再with外面算一次就好,如果在with里面,估计得在最后才可以。

你可以试试你的第二种能不能运行,如果能运行,说明里外都可以,只是编程习惯,如果不可以,报的错在这里贴一下哈?

0
1
站在你背后的
谢谢老师哦,写在里面也可以正常运行的呢!应该是一种编程习惯吧
2021-07-11
共1条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程