tf.segment_sum 分段计算函数

  • Post author:
  • Post category:其他


tf.segment_sum






定义

tf.segment_sum(
    data,
    segment_ids,
    name=None
)

Computes the sum along segments of a tensor.

对输入数据data进行分割,并按对应下标进行求和。






输入数据

data为待分割数据

segment_ids为分割下标。segment_ids的大小应与data的第一个维度长度(k)相同。且segment_ids的值应小于k。

name是该操作命名。






详解

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

tf.unsorted_segment_sum函数

tf.unsorted_segment_sum(
    data,
    segment_ids,
    num_segments,
    name=None
)

计算张量片段的和.

计算一个张量,使得 (output[i] = sum_{j…} data[j…] 总和超过元组 j…,例如,segment_ids[j…] == i.与 SegmentSum 不同,segment_ids 不需要排序,不需要覆盖整个有效值范围内的所有值.

如果给定段 ID i 的和为空,则 output[i] = 0.如果给定的分段 ID i 为负值,则该值将被删除并且不会被添加到该段的总和中.

num_segments 应等于不同的段 ID 的数量.

TensorFlow函数

函数参数:

  • data:一个 Tensor,必须是下列类型之一:float32,float64,int32,uint8,int16,int8,complex64,int64,qint8,quint8,qint32,bfloat16,uint16,complex128,half,uint32,uint64.
  • segment_ids:一个 Tensor,必须是以下类型之一:int32,int64,张量的形状是一个 data.shape 的前缀.

  • num_segments:一个 Tensor,必须是以下类型之一:int32,int64.
  • name:操作的名称(可选).

函数返回值:

tf.unsorted_segment_sum函数返回一个 Tensor,它与 data 的类型相同.