我正在尝试更深入地掌握 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)
Run Code Online (Sandbox Code Playgroud)
代码的输出是 8。所以我推断,因为 z=x+y,分配节点没有被评估(对吧?)。但这不是说tensorflow的结果可能是错误的吗?这意味着我们需要在每次操作期间创建新节点,以强制 TensorFlow 计算导致结果的所有节点。但是在说训练一个 10000 步的神经网络时,如果每一步创建一组新的 1000 个权重/参数,空间复杂度会不会爆炸?