【问题标题】:Calling __exit_ after GradientTape(persistent=True)在 GradientTape(persistent=True) 之后调用 __exit_
【发布时间】:2021-11-10 11:15:37
【问题描述】:

我开始使用tf.GradientTape(persistent=True) 记录渐变,以便能够多次调用gradient_tape.gradient()。由于这意味着在调用gradient() 方法后没有释放渐变,我是否必须在train_step 的末尾调用__exit__ 之类的东西?

【问题讨论】:

    标签: tensorflow tensorflow2.0 automatic-differentiation gradienttape


    【解决方案1】:

    根据https://www.tensorflow.org/api_docs/python/tf/GradientTape

    默认情况下,GradientTape 持有的资源会尽快释放 因为 GradientTape.gradient() 方法被调用。计算多个 在相同计算上的梯度,创建一个持久梯度 胶带。这允许对 gradient() 方法的多次调用作为资源 当磁带对象被垃圾回收时释放。

    在训练步骤之后,只要没有其他对象引用该磁带,垃圾收集器就会收集它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多