我希望实现在多个backward()
操作之后执行forward()
的函数,以便增加具有有限GPU内存的实际batch_size
。所以我来到tf.ConditionalAccumulator
。
在tf.ConditionalAccumulator().apply_grad()
的论证中,有一个论证local_step
,我不明白如何任命。该文件解释如下:
尝试将渐变应用于累加器。
如果渐变是陈旧的,则会以静默方式删除该尝试,即local_step小于累加器的全局时间步长。
参数数量:
grad
:要应用的渐变张量。
local_step
:计算渐变的时间步。
name
:操作的可选名称。
我尝试搜索tf.CondionalAccumentor().apply_grad()
的实现,但没有找到成员变量引用global_time_step
。根据我的理解,如果我们想在一次渐变更新之前累积10次,那么应该有十个渐变槽。 global_time_step
用作指示符以指出应使用哪个插槽。如果local_step
小于global_time_step
,这意味着已使用相应的广告位,那么渐变是陈旧的,应该被丢弃。
在我的实现中,我为它分配了global_step
变量,该变量用于记录训练过程中的梯度更新次数,并且在每次batch_size
次迭代中增加一次,因此它增加一次batch_size
示例前进。我不确定我的实施是否正确。
我希望有人可以帮助解释tf.ConditionalAccumulator
的机制。