阅读(2564) (15)

TensorFlow:tf.SparseConditionalAccumulator函数

2018-01-30 09:56:59 更新

tf.SparseConditionalAccumulator 函数

SparseConditionalAccumulator 类

继承自: ConditionalAccumulatorBase

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

请参阅指南:输入和读取器>条件累加器

用于聚合稀疏渐变的条件累加器.

稀疏渐变由IndexedSlices表示.

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

平均渐变的提取被阻止,直到所需数量的渐变被累积.

函数参数:

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

SparseConditionalAccumulator 属性

  • accumulator_ref
    基础累加器引用.
  • dtype
    该累加器累加的渐变的数据类型.
  • name
    基础累加器的名称.

SparseConditionalAccumulator 方法

__init__

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

apply_grad

apply_grad(
    grad_indices,
    grad_values,
    grad_shape=None,
    local_step=0,
    name=None
)

尝试将稀疏渐变应用于累加器.

如果渐变是陈旧的,即local_step小于累加器的全局时间步长,那么这个尝试会被默认地丢弃.

稀疏渐变由其索引、值和可能为空或无形状表示.索引必须是表示张量中非零项的位置的向量.值是渐变的非零切片,并且必须与索引具有相同的第一维,即由索引和值表示的nnz必须一致.如果不为空或无,则形状必须与累加器的形状一致(如果还提供).

示例:张量[[0,0],[0,1],[2,3]];可以表示为索引:[1,2];值:[[0,1],[2,3]];形状​​:[3,2]

apply_grad 方法参数:

  • grad_indices:要应用的稀疏渐变的索引.
  • grad_values:要应用的稀疏渐变的值.
  • grad_shape:要应用的稀疏渐变的形状.
  • local_step:计算渐变的时间步长.
  • name:操作的可选名称.

apply_grad 方法返回:

(有条件地)对累加器应用渐变的操作.

apply_grad 方法可能引发的异常:

  • InvalidArgumentError:如果毕业是错误的形状

apply_indexed_slices_grad

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

尝试对累加器应用渐变.

如果渐变是陈旧的,即local_step小于累加器的全局时间步长,那么这个尝试会被默认地丢弃.

apply_indexed_slices_grad 方法参数:

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

apply_indexed_slices_grad 方法返回:

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

apply_indexed_slices_grad 方法可能引发的异常:

  • InvalidArgumentError:如果毕业是错误的形状

num_accumulated

num_accumulated ( name = None )

累加器中当前累计的渐变数.

num_accumulated 方法参数

  • name:操作的可选名称.

num_accumulated 方法返回

累加器当前的累加渐变数.

set_global_step

set_global_step(
    new_global_step,
    name=None
)

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

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

p>set_global_step 方法参数

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

set_global_step 方法返回

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

take_grad

take_grad(
    num_required,
    name=None
)

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

操作阻塞,直到累加器成功地应用了足够数量的渐变.

一旦成功,以下操作也会被触发:累计渐变的计数器重置为0;累计渐变重置为0张量;累加器的内部时间步长增加1.

take_grad 方法参数:

  • num_required:需要聚合的渐变的数量
  • name:操作的可选名称

take_grad 方法返回:

代表平均梯度的索引,值和形状的元组.

take_grad 方法可能引发的异常:

  • InvalidArgumentError:如果num_required <1

take_indexed_slices_grad

take_indexed_slices_grad(
    num_required,
    name=None
)

尝试从累加器中提取平均渐变.

操作阻塞,直到累加器成功地应用了足够数量的渐变.

一旦成功,以下操作也会被触发:累计渐变的计数器重置为0;累计渐变重置为0张量;累加器的内部时间步长增加1.

take_indexed_slices_grad 方法参数:

  • num_required:需要聚合的渐变的数量
  • name:操作的可选名称

take_indexed_slices_grad 方法返回:

IndexedSlices保存平均渐变的值.

take_indexed_slices_grad 方法可能引发的异常:

  • InvalidArgumentError:如果num_required <1