在张量流中跨维度添加连续元素

时间:2019-06-01 08:08:25

标签: tensorflow

是否有张量流功能或执行以下任务的优雅方式

考虑我有2d张量,尺寸为$ 3 \ times 10 $。现在我想沿尺寸$ 1 $(或行)添加连续元素,其中要添加的连续元素的数量由张量决定。如果它说$ [ 2,2,4,2] $输出张量的大小应为3美元乘以4美元。因为$ [a_1 + a_2,a_3 + a_4,a_5 + a_6 + a_7 + a_8,a_9 + a_10] $会在每一行上张量

例如:

$\begin{bmatrix}
1 & 2 & 3 & 4 & 5 & 6 & 1 & 2 & 3 &4\\ 
7 & 8 & 9 & 10 &11  &12 & 7 & 8 & 9 & 10\\ 
13 &14  &15  &16  &17  &18 & 13 &14 &15 &16
\end{bmatrix}$

,输出应紧随

$\begin{bmatrix}
3 & 7 & 14 & 7\\ 
15 & 19 &38 &19\\ 
27  &66 & 27 &31
\end{bmatrix}$

编辑:在numpy np.add.reduceat

中似乎有此功能

1 个答案:

答案 0 :(得分:0)

在张量流中没有这样的功能。但是您可以通过拆分数组来构造它:

DB connect

运行结果产生:

def tf_reduceat(data, at_array, axis=-1):
    split_data = tf.split(data, at_array, axis=axis)
    return tf.stack([tf.reduce_sum(i, axis=axis) for i in split_data], axis=axis)


a = tf.constant([[1, 2, 3, 4, 5, 6, 1, 2, 3, 4], 
                 [7, 8, 9, 10, 11, 12, 7, 8, 9, 10], 
                 [13, 14, 15, 16, 17, 18, 13, 14, 15, 16]])
result = tf_reduceat(a, [2, 2, 4, 2])