gpt4 book ai didi

python - 在 tensorflow 中嵌套控制依赖上下文

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:26 24 4
gpt4 key购买 nike

运行下面的测试

from unittest import TestCase

import tensorflow as tf

class TestControl(TestCase):

def test_control_dep(self):
print(tf.__version__)
a = tf.get_variable('a', initializer=tf.constant(0.0))
d_optim = tf.assign(a, a + 2)
g_optim = tf.assign(a, a * 2)
with tf.control_dependencies([d_optim]):
with tf.control_dependencies([g_optim]):
with tf.control_dependencies([g_optim]):
op = tf.Print(a, [a])
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(op)
sess.run(op)
sess.run(op)

打印(例如):

1.4.0
2018-03-18 16:58:08.943349: I C:\tf_jenkins\...\logging_ops.cc:79] [0]
2018-03-18 16:58:08.943349: I C:\tf_jenkins\...\logging_ops.cc:79] [2]
2018-03-18 16:58:08.943349: I C:\tf_jenkins\...\logging_ops.cc:79] [4]

但我也看到了其他输出,如[2,8,10]。我希望它打印 [8, 40, 168] (实际上我想确保 g_optim 会执行两次,但我不确定它会执行两次)。为什么打印不是确定性的,为什么它似乎并不总是执行 g_optim

注意:在 EC2 上的 Ubuntu GPU 服务器上运行此命令(使用 Tensorflow 1.6)始终生成 0:

python3 -m unittest tf_test.TestControl.test_control_dep
1.6.0
2018-03-19 08:06:11.614220: ...
2018-03-19 08:06:12.282375: I tensorflow/core/common_runtime/gpu/gpu_device.cc:993] Creating TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 9610 MB memory) -> physical GPU (device: 0, name: Tesla K80, pci bus id: 0000:00:1e.0, compute capability: 3.7)
[0]
[0]
[0]
0.0
.
----------------------------------------------------------------------
Ran 1 test in 0.833s

OK

也许相关:

最佳答案

它不是确定性的,因为您正在创建没有控制依赖项的分配操作,因此它们可以按任何顺序执行。

要按照您希望的方式执行分配,它们的操作需要在创建时具有控制依赖关系。类似的东西

a = tf.get_variable('a', initializer=tf.constant(0.0))
with tf.control_dependencies([tf.assign(a, a + 2)]):
with tf.control_dependencies([tf.assign(a, a * 2)]):
with tf.control_dependencies([tf.assign(a, a * 2)]):
op = tf.Print(a, [a])

您的代码正在做的是构建一组两个控制依赖项并将这些依赖项添加到 tf.Print 操作中。

关于python - 在 tensorflow 中嵌套控制依赖上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49358306/

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