提问人:joel 提问时间:1/7/2020 最后编辑:joel 更新时间:10/26/2023 访问量:3922
如何在 TensorFlow 2 中重置初始化
How to reset initialization in TensorFlow 2
问:
如果我在初始化 TensorFlow 2 后尝试更改并行度,tf.Variable
import tensorflow as tf
_ = tf.Variable([1])
tf.config.threading.set_inter_op_parallelism_threads(1)
我收到错误
RuntimeError:初始化后无法修改操作间并行性。
我理解为什么会这样,但它(可能还有其他因素)导致我的测试相互干扰。例如
def test_model(): # this test
v = tf.Variable([1])
...
def test_threading(): # is breaking this test
tf.config.threading.set_inter_op_parallelism_threads(1)
...
如何重置 TensorFlow 状态以便设置线程?
答:
4赞
thushv89
1/7/2020
#1
这可以通过“黑客”的方式实现。但我建议以正确的方式执行此操作(即在开始时设置配置)。
import tensorflow as tf
from tensorflow.python.eager import context
_ = tf.Variable([1])
context._context = None
context._create_context()
tf.config.threading.set_inter_op_parallelism_threads(1)
编辑:在开始时设置配置是什么意思,
import tensorflow as tf
from tensorflow.python.eager import context
tf.config.threading.set_inter_op_parallelism_threads(1)
_ = tf.Variable([1])
但在某些情况下,你不能总是这样做。只是指出了在 中设置配置的传统方法。因此,如果您的情况不允许您在开始时进行修复,则必须重置您的解决方案,如上面的解决方案所示。tf
tf.config
tf.eager.context
评论
0赞
joel
1/7/2020
您能详细说明一下在开始时设置配置吗?
0赞
thushv89
1/7/2020
我是说,首先设置所有必要的属性,然后继续进行计算。在您的示例中,它将是第一个和 .但我明白,根据您的情况,这可能是不可能的。只是建议尽可能坚持这种格式。tf.config
tf.config.threading....
tf.Variable(...)
0赞
joel
1/7/2020
我不明白您的建议是否(以及如何)清除上下文。你能在回答中解释一下吗?例如,我认为没有办法为 或tf.config.threading
tf.Variable
0赞
joel
1/7/2020
请记住,我无法控制 VS 的执行顺序:每个调用都在单独的测试中,顺序由测试运行程序确定tf config.threading...
tf.Variable
0赞
thushv89
1/7/2020
是的,正如我所说,那么我的第一点不适用于你。但我说的是首先要有你的 Graph 相关组件和操作。但是我发布的解决方案应该适合您。tf.config
tf
0赞
Sarah Masud
10/26/2023
#2
扩展 @thushv89 提供的解决方案,我们还可以通过以下方式直接设置上下文
from tensorflow.python.eager import context
context.context().intra_op_parallelism_threads = <num_threads>
context.context().inter_op_parallelism_threads = <num_threads>
import tensorflow as tf
此处提供了 和 thread 函数的详细信息get()
set()
评论