TensorFlow提供了一些操作,你可以使用基本的算术运算来分割输入的tensor
。这里的分割操作是沿着第一个维度的一个分区,等价于这里定义了一个从第一个维度到第segment_ids
维度的一个映射。segment_ids
张量的长度必须和需要分割的tensor
的第一维度的尺寸d0
一样,其中segment_ids
中的编号从0
到k
,并且k < d0
。举个例子,如果我们需要分割的tensor
是一个矩阵,那么segment_ids
的映射就指向矩阵的每一行。
tf.segment_sum(data, segment_ids, name=None)
解释:这个函数的作用是沿着segment_ids
指定的维度,分割张量data
中的值,并且返回累加值。
计算公式为:
其中,segment_ids[j] == i
。
比如:
c = tf.constant([[
1,
2,
3,
4], [
-1,
-2,
-3,
-4], [
5,
6,
7,
8]])
tf.segment_sum(c, tf.constant([
0,
0,
1]))
==> [[
00
0
0
]
[
56
7
8
]]
a = tf.constant([[1,2,3,4], [-1,-2,-3,-4], [5,6,7,8], [-1,-2,-3,-4]])
c = tf.segment_sum(a, tf.constant([0, 0, 1, 2]))
sess = tf.Session()
print (sess.run(c))
sess.close()
输出:
[[ 0 0 0 0]
[ 5 6 7 8]
[-1 -2 -3 -4]]