Python 通过连接最后一维中的数字来减少张量
为了识别唯一的序列,我需要使用tensorflow函数,通过连接最后一个维度中的数字,将2D int张量缩减为1D int张量 比如说,Python 通过连接最后一维中的数字来减少张量,python,tensorflow,Python,Tensorflow,为了识别唯一的序列,我需要使用tensorflow函数,通过连接最后一个维度中的数字,将2D int张量缩减为1D int张量 比如说, [[1, 0], [2, 1], [1, 3], [2, 0], [0, 1]] 应该成为 [10, 21, 13, 20, 1] 到目前为止,我得到的是 def reduce_concat(input): def join(x): dec = tf.range(0, x.shape[-1], 1) dec = tf.map_fn(la
[[1, 0], [2, 1], [1, 3], [2, 0], [0, 1]]
应该成为
[10, 21, 13, 20, 1]
到目前为止,我得到的是
def reduce_concat(input):
def join(x):
dec = tf.range(0, x.shape[-1], 1)
dec = tf.map_fn(lambda x: tf.math.pow(10, x), dec)
return tf.math.reduce_sum(x * dec)
return tf.map_fn(join, input)
这几乎是可行的,但它忽略了零,并且不是很优雅
如果有人能为这个问题提供一个优雅的解决方案,我将不胜感激。谢谢。您可以尝试以下方法:
def reduce_concat(input):
dec = 10**tf.range(input.shape[-1]-1, -1, -1)
return tf.reduce_sum(input * dec, axis=-1)
输入的结果:
[10, 21, 13, 20, 1]
我使用的技巧是创建一个与输入形状相同的
因子
矩阵,其中包含10的幂次使用。然后,进行元素相乘,最后应用reduce和
代码如下:
将tensorflow导入为tf
向量=tf.常数([[1,0],[2,1],[1,3],[2,0],[0,1]])
系数=tf.常数([列表(反向)([10**功率用于功率输入
范围(vector.shape[1]))]
输出=tf.减和(tf.乘(向量,因子),轴=1)