我开始记录渐变,tf.GradientTape(persistent=True)
以便能够gradient_tape.gradient()
多次调用。由于这意味着在调用该gradient()
方法后没有释放渐变,我是否必须__exit__
在末尾调用类似的东西train_step
?
问问题
22 次
1 回答
0
根据https://www.tensorflow.org/api_docs/python/tf/GradientTape:
默认情况下, GradientTape 持有的资源会在调用 GradientTape.gradient() 方法后立即释放。要在同一计算中计算多个梯度,请创建一个持久梯度磁带。这允许对 gradient() 方法的多次调用,因为当磁带对象被垃圾回收时资源被释放。
在训练步骤之后,只要没有其他对象引用该磁带,垃圾收集器就会收集它。
于 2022-02-23T15:47:50.217 回答