【问题标题】:How are variables shared between concurrent `session.run(...)` calls in tensorflow?tensorflow 中并发的 `session.run(...)` 调用之间如何共享变量?
【发布时间】:2017-03-30 10:48:25
【问题描述】:

如果你对同一个会话进行两次并发调用,sess.run(...),在 tensorflow 中如何同时访问变量?

每次调用是否都会看到调用run 时的变量快照,在整个调用过程中保持一致?还是他们会看到变量的动态更新,只保证每个变量的原子更新?

我正在考虑在单独的 CPU 线程上运行测试集评估,并希望验证它是否与在 CPU 设备上并行运行推理操作一样简单。

我很难弄清楚究竟提供了哪些保证使会话“线程安全”。

【问题讨论】:

    标签: python multithreading tensorflow


    【解决方案1】:

    在做了一些实验之后,似乎每次调用sess.run(...) 确实会看到变量的一致时间点快照。

    为了测试这一点,我执行了 2 次大矩阵乘法运算(每次大约需要 10 秒才能完成),并在之前、之间和之后更新了一个单独的依赖变量。在另一个线程中,我每隔 1/10 秒抓取并打印一次该变量,以查看它是否拾取了在第一个线程仍在运行时在操作之间发生的更改。它没有,我只看到它的初始值和最终值。因此,我得出结论,变量更改仅在运行结束时对 sess.run(...) 的特定调用之外可见。

    【讨论】:

    • 很高兴知道这一点,因为我看不到很多关于 sess.run 线程安全的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2021-03-27
    • 1970-01-01
    • 2013-06-10
    • 2021-01-27
    相关资源
    最近更新 更多