Класс RaggedTensor
Класс RaggedTensor создает рваный тензор, то есть тензор,
в котором вложенные последовательности могут иметь разную длину.
Обычный тензор требует одинаковой длины по каждой оси, а рваный
тензор это ограничение снимает. Первым параметром передаются
значения вложенных последовательностей, а дополнительными
параметрами можно задать структуру вложенности. Такой класс удобен
для работы с текстами, списками переменной длины и разреженными
данными.
Создать рваный тензор можно напрямую из вложенных списков через
метод tf.ragged.constant или с помощью служебных методов
from_row_splits и from_row_lengths. Объект класса
поддерживает приведение к обычному тензору, к списку и к разреженному
тензору.
Синтаксис
tf.ragged.constant(pylist, [dtype], [ragged_rank], [inner_shape])
Пример
Давайте создадим рваный тензор из вложенных списков разной длины:
import tensorflow as tf
t = tf.ragged.constant([[1, 2, 3], [4, 5], [6]])
print(t)
Результат выполнения кода:
<tf.RaggedTensor [[1, 2, 3], [4, 5], [6]]>
Пример
Давайте создадим рваный тензор с типом float32:
import tensorflow as tf
t = tf.ragged.constant([[1, 2, 3], [4, 5], [6]], dtype=tf.float32)
print(t)
Результат выполнения кода:
<tf.RaggedTensor [[1.0, 2.0, 3.0], [4.0, 5.0], [6.0]]>
Пример
Давайте посмотрим на служебные атрибуты рваного тензора, которые хранят значения и границы строк:
import tensorflow as tf
t = tf.ragged.constant([[1, 2, 3], [4, 5], [6]])
print(t.values)
print(t.row_splits)
Результат выполнения кода:
tf.Tensor([1 2 3 4 5 6], shape=(6,), dtype=int32)
tf.Tensor([0 3 5 6], shape=(4,), dtype=int64)
Пример
Давайте преобразуем рваный тензор в обычный тензор
с помощью метода to_tensor:
import tensorflow as tf
t = tf.ragged.constant([[1, 2, 3], [4, 5], [6]])
res = t.to_tensor()
print(res)
Результат выполнения кода:
tf.Tensor(
[[1 2 3]
[4 5 0]
[6 0 0]], shape=(3, 3), dtype=int32)
Смотрите также
-
метод
to_tensor,
который преобразует рваный тензор в обычный -
метод
to_list,
который преобразует рваный тензор в список -
метод
to_sparse,
который преобразует рваный тензор в разреженный -
метод
from_row_splits,
который создает рваный тензор из границ строк