【问题标题】:What caching model does TensorFlow use?TensorFlow 使用什么缓存模型?
【发布时间】:2017-01-15 18:15:11
【问题描述】:

我在这里阅读了这个问题 TensorFlow - get current value of a Variable 答案让我很困惑。

一方面,dga 说“并且非常清楚:运行变量将 只产生变量的当前值;它不会运行任何 分配与之相关的操作。很便宜。”

另一方面,萨尔瓦多·达利说“@dga 是的,如果变量取决于 在 n 个其他变量上,它们也需要被评估。”

那么,它是什么?评估变量是否只返回其当前 值,或者它是否从它的变量从头开始重新计算它的值 取决于?

如果我连续两次评估同一个变量会发生什么?做 Tensorflow 有任何“陈旧”变量的概念,即 需要重新计算,因为它们的依赖关系实际上发生了变化(即像 构建系统)?

我问是因为我使用多个网络,其中一个网络的部分输出 net 成为另一个网络的部分输入。我想取 在一个网络的输入层计算梯度并将它们合并+应用到 另一个网络的输出层。我希望手动做到这一点 在图形的变量中检索/存储梯度,然后 运行图操作以反向传播梯度。因此我需要 了解这一切是如何运作的。

我做的和这个类似 How to use Tensorflow Optimizer without recomputing activations in reinforcement learning program that returns control after each iteration?,但我无法根据上一个答案得出结论是否可能(现在有实验支持吗?)

谢谢!

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    @dga 是正确的。如果您将tf.Variable 对象传递给tf.Session.run(),TensorFlow 将返回变量的当前值,并且不会执行任何计算。它很便宜(内存副本的成本,或者在分布式 TensorFlow 设置的情况下可能是网络传输的成本)。 TensorFlow 不保留任何关于 tf.Variable 的值如何更新的历史*,因此它通常无法从头开始重新计算其值。


    (* 从技术上讲,TensorFlow 会记住用于初始化每个变量的tf.Tensor,因此可以重新计算变量的初始值。)

    【讨论】:

    • 好的,一切都被缓存了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2017-05-07
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多