Обратный трейлинг в ведущие нули в тензор последовательности в тензорном потоке
У меня есть разреженный тензор (тензор был сгенерирован с использованием 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 ответ
Есть один грубый способ сделать это, если вы можете указать индексы 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.