0

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

4

1 回答 1

0

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

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

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

于 2022-02-23T15:47:50.217 回答