2024-05-14 20:17:29 发布
网友
在^{}中,control_inputs和{有什么区别?tf.Operation分别对它们进行了描述,但在正常情况下,我希望“每个数据输入都准备就绪”正好是当前操作能够运行的条件。我错过了什么?在
control_inputs
tf.Operation
在tensorflow中,可以通过^{}函数添加额外的依赖项,除了普通的依赖项(与输入相对应)外,tensorflow还遵循这些依赖项。这正是^{}包含的内容。在
下面是一个例子:
a = tf.Variable(name='a', initial_value=1.0, trainable=False) b = tf.Variable(name='b', initial_value=0.0, trainable=False) c = tf.add(a, b, name='sum') op = tf.get_default_graph().get_operation_by_name('sum') print(list(op.inputs)) # [<tf.Tensor 'a/read:0' shape=() dtype=float32>, <tf.Tensor 'b/read:0' shape=() dtype=float32>] print(op.control_inputs) # []
这是一个标准的情况,不出意外,c只有2个普通输入,没有{}。经过计算,c值将为1.0。在
c
1.0
但是,如果添加额外的依赖项,它将更改图形和计算方式:
注意,inputs的列表没有改变,但是control_inputs现在包含了dependent_op。Tensorflow保证dependent_op将在sum之前求值,因此,c将得到值4.0。如果定义c而不使用tf.control_dependencies块,c将被计算为1.0,因为dependent_op,即使它在图中,也不会被执行。在
inputs
dependent_op
sum
4.0
tf.control_dependencies
在tensorflow中,可以通过^{} 函数添加额外的依赖项,除了普通的依赖项(与输入相对应)外,tensorflow还遵循这些依赖项。这正是^{} 包含的内容。在
下面是一个例子:
这是一个标准的情况,不出意外,}。经过计算,
c
只有2个普通输入,没有{c
值将为1.0
。在但是,如果添加额外的依赖项,它将更改图形和计算方式:
^{pr2}$注意,
inputs
的列表没有改变,但是control_inputs
现在包含了dependent_op
。Tensorflow保证dependent_op
将在sum
之前求值,因此,c
将得到值4.0
。如果定义c
而不使用tf.control_dependencies
块,c
将被计算为1.0
,因为dependent_op
,即使它在图中,也不会被执行。在相关问题 更多 >
编程相关推荐