Обратный трейлинг в ведущие нули в тензор последовательности в тензорном потоке

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