我正在阅读tensorflow模型的代码: https://github.com/tensorflow/models/blob/master/slim/train_image_classifier.py
我对此代码部分非常困惑:
train_tensor = control_flow_ops.with_dependencies([update_op], total_loss,
name='train_op')
control_flow_ops.with_dependencies是什么意思?
答案 0 :(得分:2)
该函数有两个参数control_flow_ops.with_dependencies(dependencies, output_tensor)
。第二个参数output_tensor
(在您的情况下为total_loss
仅在评估dependencies
中的所有操作后才计算。顾名思义,output_tensor
取决于正确评估的依赖关系。此函数强制执行此行为。
依赖关系是一个可迭代的操作,在您的情况下是列表中的单个update_op
。
答案 1 :(得分:1)
首先with_dependencies
是deprecated,请改用tf.control_dependencies
。
关于它的作用,只有在计算依赖关系后,它才会生成某些值的输出。我通常使用它来声明一些值。例如:
assert_op = tf.Assert(tf.less_equal(tf.reduce_max(x), 1.), [x]) # max(x) <= 1
with tf.control_dependencies([assert_op]):
x= tf.identity(x)