Рваный тензор в TensorFlow
Обычный тензор требует, чтобы все строки в таблице имели одну длину. В тексте и списках событий длина строк часто разная. Рваный тензор хранит каждую строку отдельно и не тратит память на выравнивание нулями.
Класс RaggedTensor задаёт
данные как набор строк переменной
длины. Создать такой объект можно
из списка списков через фабрику
ragged.constant. Форма
показывает число строк и нефиксированную
длину по второй оси.
Соберём две строки разной длины и выведем форму и плотный вид с добивкой нулями:
import tensorflow as tf
rows = tf.ragged.constant([[4, 5], [1, 2, 3]])
print(rows.shape)
print(rows.to_tensor())
# выведет (2, None)
# выведет [[4 5 0] [1 2 3]]
При переводе в обычный тензор короткую строку дополняют нулями до длины самой длинной строки в наборе. Число строк при этом не меняется:
import tensorflow as tf
rows = tf.ragged.constant([[9], [7, 8, 6]])
dense = rows.to_tensor()
print(dense.shape)
Задайте три строки [1],
[2, 3] и [4, 5, 6, 7]
в одном рваном наборе. Выведите
форму объекта.
Создайте рваный набор из строк
[0, 1] и [2].
Переведите его в плотный тензор
и выведите форму результата.
Соберите две строки длины
5 и 2 из целых
чисел. Выведите плотный тензор
и укажите длину второй оси
в форме.