阅读(4370) (12)

TensorFlow数学函数:tf.segment_sum函数

2018-01-12 10:09:52 更新

tf.segment_sum 函数

segment_sum(
    data,
    segment_ids,
    name = None
)

请参阅指南:数学函数>分割

沿张量的片段计算总和。

计算的张量,例如  \ (output_i = \ sum_j data_j \ ) ,其中求和是在 j 上,例如:segment_ids[j] == i 。

如果给定 ID i 的分段的和为空,则有 output[i] = 0 。

TensorFlow函数

函数参数

  • data:一个 Tensor ;必须是下列类型之一:float32, float64, int64, int32, uint8, uint16, int16, int8, complex64, complex128, qint8, quint8, qint32, half .
  • segment_ids:一个Tensor;必须是以下类型之一:int32, int64 ;一维张量,其秩等于 data 第一维的秩;值应该被排序,并且可以是重复的.
  • name:操作的名称(可选).

函数返回值

tf.segment_sum 函数返回的是一个 Tensor ,它与 data 有相同的类型,与 data 具有相同的形状,但大小为 k (段的数目)的维度 0 除外。

详解

Computes a tensor such that (output_i = \ sum_j data_j) where sum is over j such that segment_ids[j] == i.
If the sum is empty for a given segment ID i, output[i] = 0.
segment_ids 中的值相当于对 data 数据第一维度的索引。输出数据的第一个维度(output[0])为 segment_ids == 0 的下标所对应的 data 的数据的求和。

示例

data = [5 1 7 2 3 4 1 3]
segment_ids = [0 2 4 1 5 2 4 1]
output = tf.segment_sum(
    data,
    segment_ids,
    name = None
)

  • segment_ids 的大小与 data 第一维度相同。(=8)且 segment_ids 的每个值 <8。
  • output[0] = data[segment_ids==0] = 5
  • output[2] = data[segment_ids==2] = 1+4 = 5
  • 对于 segment_ids 没有指定的下标(output[3])直接等于0,output[3]=0