tape

tf.GradientTape详解

ぃ、小莉子 提交于 2020-01-31 20:39:20
参考文献:https://blog.csdn.net/guanxs/article/details/102471843 在TensorFlow 1.x静态图时代,我们知道每个静态图都有两部分,一部分是前向图,另一部分是反向图。反向图就是用来计算梯度的,用在整个训练过程中。而TensorFlow 2.0默认是eager模式,每行代码顺序执行,没有了构建图的过程(也取消了control_dependency的用法)。但也不能每行都计算一下梯度吧?计算量太大,也没必要。因此,需要一个 上下文管理器 (context manager)来连接需要 计算梯度 的函数和变量,方便求解同时也提升效率。 举个例子:计算y=x^2在x = 3时的导数: x = tf.constant(3.0) with tf.GradientTape() as g: g.watch(x) y = x * x dy_dx = g.gradient(y, x) # y’ = 2*x = 2*3 = 6 例子中的watch函数把需要计算梯度的变量x加进来了。GradientTape默认只监控由tf.Variable创建的traiable=True属性(默认)的变量。上面例子中的x是constant,因此计算梯度需要增加g.watch(x)函数。当然,也可以设置不自动监控可训练变量,完全由自己指定,设置watch

Setting up variables for optimizer in tensorflow eager execution

匿名 (未验证) 提交于 2019-12-03 01:25:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: x=tfe.Variable(np.random.uniform(size=[166,]), name='x') optimizer = tf.train.AdamOptimizer() optimizer.minimize(lambda: compute_cost(normed_data[:10], x)) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-28-9ff2a070e305> in <module>() 23 24 optimizer = tf.train.AdamOptimizer() ---> 25 optimizer.minimize(lambda: compute_cost(normed_data[:10], x)) ~/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/optimizer.py in minimize(self, loss,