阅读(1070) (12)

TensorFlow聚合梯度的条件累加器

2017-09-12 15:44:39 更新

tf.ConditionalAccumulator

tf.ConditionalAccumulator 类

定义在:tensorflow/python/ops/data_flow_ops.py

用于聚合梯度的条件累加器.

最新的梯度(即计算梯度的时间步长等于累加器的时间步长)被加到累加器中.

平均梯度的提取被阻塞,直到所需数量的梯度被累积为止.

属性

  • accumulator_ref:底层累加器参考.
  • dtype:该累加器积累的梯度的数据类型.
  • name:底层累加器的名称.

方法

__init__

__init__ (  
    dtype ,  
    shape = None ,  
    shared_name = None ,  
    name = 'conditional_accumulator' 
)

创建一个新的 ConditionalAccumulator.

ARGS:
  • dtype:累积梯度的数据类型.
  • shape:累积梯度的形状.
  • shared_name:可选.如果非空,这个累加器将在多个会话的给定名称下共享.
  • name:累加器的可选名称.

apply_grad

apply_grad (  
    grad ,  
    local_step = 0 ,  
    name = None
  )

尝试向累加器应用梯度.

如果梯度是陈旧的,即 local_step 小于累加器的全局时间步长,则该尝试将被静默地丢弃.

ARGS:

  • grad:要应用的梯度张量.
  • local_step:计算梯度的时间步长.
  • name:操作的可选名称.

返回:

(有条件地) 将梯度应用于累加器的操作.

注意:

  • ValueError:如果 grad 是错误的形状

num_accumulated

num_accumulated ( name = None )

目前在累加器中聚合的梯度数.

ARGS:

  • name:操作的可选名称.

返回:

累加器中当前累积的梯度数.

set_global_step

set_global_step (  
    new_global_step ,  
    name = None
  )

设置累加器的全局时间步长.

如果尝试设置的时间步长低于累加器自己的时间步长, 则操作会记录一个警告.

ARGS:

  • new_global_step:新的时间步长的值,可以是变量或常量.
  • name:操作的可选名称.

返回:

设置累加器时间步长的操作.

take_grad

take_grad (  
    num_required ,  
    name = None
  )

尝试从累加器中提取平均梯度.

操作阻止直到足够数量的梯度已成功应用于累加器.

一旦成功,还会触发以下操作:

  • 累加梯度的计数器复位为0.
  • 聚合梯度被重置为0张量.
  • 累加器的内部时间步长增加1.

ARGS:

  • num_required:需要聚合的梯度次数
  • name:操作的可选名称

返回:

一个持续平均梯度值的张量.

注意:

  • InvalidArgumentError:如果 num_required <1