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 的数量.
函数参数:
- 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 的类型相同.