Метод to_sparse
Метод to_sparse применяется к объекту RaggedTensor и преобразует его в разреженный тензор SparseTensor. Первым параметром можно передать значение, которым будут заполнены пропущенные элементы default_value. Вторым параметром задается имя операции name.
Рваный тензор содержит строки разной длины, а разреженный тензор хранит только ненулевые значения вместе с их индексами. Метод to_sparse выполняет это преобразование автоматически.
Синтаксис
RaggedTensor.to_sparse(default_value=None, name=None)
Пример
Давайте создадим рваный тензор из вложенных списков и преобразуем его в разреженный тензор:
import tensorflow as tf
rt = tf.ragged.constant([[1, 2], [3], [4, 5, 6]])
sp = rt.to_sparse()
print(sp)
Результат выполнения кода:
tf.SparseTensor(indices=tf.Tensor(
[[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
[2 2]], shape=(6, 2), dtype=int64), values=tf.Tensor([1 2 3 4 5 6], shape=(6,), dtype=int32), dense_shape=tf.Tensor([3 3], shape=(2,), dtype=int64))
Пример
Давайте преобразуем рваный тензор в разреженный с заполнением пропусков значением 0:
import tensorflow as tf
rt = tf.ragged.constant([[1, 2], [3], [4, 5, 6]])
sp = rt.to_sparse(default_value=0)
print(sp)
Результат выполнения кода:
tf.SparseTensor(indices=tf.Tensor(
[[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
[2 2]], shape=(6, 2), dtype=int64), values=tf.Tensor([1 2 3 4 5 6], shape=(6,), dtype=int32), dense_shape=tf.Tensor([3 3], shape=(2,), dtype=int64))
Пример
Давайте проверим, что полученный объект действительно является разреженным тензором:
import tensorflow as tf
rt = tf.ragged.constant([[1, 2, 3], [4, 5], [6]])
sp = rt.to_sparse()
print(type(sp))
print(sp.values)
Результат выполнения кода:
<class 'tensorflow.python.framework.sparse_tensor.SparseTensor'>
tf.Tensor([1 2 3 4 5 6], shape=(6,), dtype=int32)
Смотрите также
-
класс
RaggedTensor,
который представляет рваный тензор -
метод
to_tensor,
который преобразует рваный тензор в плотный -
метод
to_list,
который преобразует рваный тензор в список -
метод
with_row_splits_dtype,
который меняет тип данных разбиения по строкам