gpt4 book ai didi

python - tf 操作 control_inputs 与 inputs

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:07 25 4
gpt4 key购买 nike

tf.Operationcontrol_inputsinputs 之间有什么区别? tf.Operation 分别描述了它们,但在正常的事件过程中,我希望“每个数据输入都已准备好”正是当前操作能够运行的条件。我错过了什么?

最佳答案

在tensorflow中,可以通过tf.control_dependencies添加额外的依赖项函数,除了普通依赖项(对应于输入)之外, tensorflow 还遵循这些函数。这正是tf.Operation.control_inputs成立。

这是一个例子:

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 个普通输入,并且没有 control_inputs。评估后,c 值为 1.0

但是如果您添加额外的依赖项,它将改变图表和计算方式:

a = tf.Variable(name='a', initial_value=1.0, trainable=False)
b = tf.Variable(name='b', initial_value=0.0, trainable=False)

dependent_op = tf.assign(b, a * 3, name='dependent_op')
with tf.control_dependencies([dependent_op]):
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) # [<tf.Operation 'dependent_op' type=Assign>]

请注意,inputs 列表没有更改,但 control_inputs 现在包含 dependent_op。 Tensorflow 保证 dependent_op 将在 sum 之前计算,因此,c 将获得值 4.0。如果您定义的 c 没有 tf.control_dependency block ,则 c 将被评估为 1.0,因为 dependent_op 即使在图中,也不会被执行。

关于python - tf 操作 control_inputs 与 inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com