“control_flow_ops.with_dependencies”对tenoflow意味着什么?

时间:2017-03-28 03:33:34

标签: python tensorflow computer-vision deep-learning conv-neural-network

我正在阅读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是什么意思?

2 个答案:

答案 0 :(得分:2)

该函数有两个参数control_flow_ops.with_dependencies(dependencies, output_tensor)。第二个参数output_tensor(在您的情况下为total_loss仅在评估dependencies中的所有操作后才计算。顾名思义,output_tensor取决于正确评估的依赖关系。此函数强制执行此行为。

依赖关系是一个可迭代的操作,在您的情况下是列表中的单个update_op

答案 1 :(得分:1)

首先with_dependenciesdeprecated,请改用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)