【发布时间】:2019-03-11 03:42:04
【问题描述】:
我正在努力加强对 TensorFlow 的掌握。我遇到了控制依赖的概念。我了解我们指定的操作顺序在执行期间与 Tensorflow 并不真正相关。为了优化执行速度,TensorFlow 自己决定计算节点的顺序。 但是我们可以使用 tf.control_dependencies 自定义执行顺序。 我无法理解该功能的用例。任何人都可以将我引导至某些资源(文档除外)或解释此功能的工作原理吗? 一个例子:
tf.reset_default_graph()
x = tf.Variable(5)
y=tf.Variable(3)
assign = tf.assign(x,x+y)
z = x+assign
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
with tf.control_dependencies([assign]):
z_out = sess.run(z)
print(z_out)
代码的输出是 8。所以我推断由于 z=x+y,assign 节点还没有被评估(对吗?)。但这不是说tensorflow的结果可能是错误的吗?这意味着我们需要在每次操作期间创建新节点,以强制 TensorFlow 计算导致结果的所有节点。但是如果说训练一个有 10000 步的神经网络,如果每一步都创建一组新的 1000 个权重/参数,空间复杂度不会爆炸吗?
【问题讨论】:
-
tf.control_dependencies在那个 sn-p 中没有做任何事情。当您创建控制依赖关系上下文时,它会影响在其中创建的新操作,但该块内没有新操作,只是对现有操作的评估。 -
可以举个例子吗?
标签: python tensorflow machine-learning controls