在Tensorflow中的序列张量中反向拖入前导填充零

时间:2018-07-23 19:44:42

标签: python tensorflow tensorflow-transform

我有一个稀疏张量(该张量是使用tf.Transform对分类值生成的),我可以使用以下命令将其转换为密集表示形式

bow_indecies = tf.sparse_tensor_to_dense(sparse_bow_indecies, default_value=0)

,其结果为大小为batch_size x max_seq_length的矩阵。数组看起来像这样

[[ 597 1157   60    0    0    0]
 [ 939 1212  169   10    0    0]
 [ 242  719  215  520   57    6]]

我想将零填充从尾随反转为前导,以便看起来像这样

[[   0    0    0   597  1157  60]
 [   0    0  939  1212   169  10]
 [ 242  719  215   520    57   6]]

关于如何执行此操作的任何想法?

1 个答案:

答案 0 :(得分:0)

如果可以指定SparseTesor的索引,则有一种不礼貌的方法。

我的意思是,您必须告诉SparseTesor对象(sparse_bow_indecies)非零值的索引。

文档说:“不在sp_input中的索引被分配了default_value。” https://www.tensorflow.org/api_docs/python/tf/sparse_tensor_to_dense

所以就您而言

对于您期望的结果,SparseTesor对象(sparse_bow_indecies)中的索引可能与下面类似。

SparseTensor(indices=[[0, 3], [0, 4],[0, 5],[1, 2],[1, 3],.....], values=[............], dense_shape=[3, 6])

或尝试覆盖索引,如果SparseTensor对象已经在您身边了。

sparse_bow_indecies.indices = =[[0, 3], [0, 4],[0, 5],[1, 2],[1, 3],.....] #Kept dots for continuation.