【问题标题】:Does tf.stop_gradient() help memory wise?tf.stop_gradient() 是否有助于记忆?
【发布时间】:2020-06-08 14:39:09
【问题描述】:

tf.stop_gradient 是否真的有助于节省 GPU 内存。我在问,因为 stop_gradient 后面的层的一些中间输出可能不需要存储(否则梯度计算是必需的)。

【问题讨论】:

  • 我认为应该这样做,因为中间张量将不再用于累积梯度。

标签: python tensorflow deep-learning neural-network gradient


【解决方案1】:

是的,它节省了 GPU 内存。在tf.stop_gradient 的文档中,它指出在构建计算梯度的操作时,此操作会阻止考虑其输入的贡献。

关于tf.stop_gradient()的更多解释:它是一个操作,充当forward direction中的identity function,但阻止累积的gradient流过backward direction中的该运算符。它不会完全阻止backpropagation,而是阻止单个张量对为表达式计算的gradients 做出贡献。

这意味着传递给tf.stop_gradient的操作中包含的权重在反向传播期间不会更新。

通常,在反向传播期间,权重使用公式更新,

W(i+1) = W(i) - Learning Rate * Gradient

当我们使用tf.stop_gradient 时,作为输入传递给此操作的权重将保持为常量。由于Back Propagation 期间的计算减少了,内存消耗也减少了

有关tf.stop_gradient的更多信息,请参考Tensorflow documentationAbhishek's Stack Overflow Answermrry's Stack Overflow Answerthis article

希望这会有所帮助。快乐学习!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-30
    • 2021-05-23
    • 2015-08-08
    • 2012-09-30
    • 2016-03-30
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多