tf.experimental.DynamicRaggedShape
Форма разряженного или плотного тензора.
Наследуется от: BatchableExtensionType, ExtensionType
tf.experimental.DynamicRaggedShape(
row_partitions: Sequence[tf.experimental.RowPartition],
inner_shape: tf.types.experimental.TensorLike,
dtype: Optional[tf.dtypes.DType] = None,
validate: bool = False,
static_inner_shape: ... = None
)
Используется в блокнотах
| Используется в руководстве |
|---|
Разряженные формы кодируются с использованием двух полей:
-
inner_shape: Целочисленный вектор, задающий форму плотного тензора. -
row_partitions: Список объектовRowPartition, описывающих, как эта плоская форма должна быть раздроблена для добавления разряженных осей.
Если DynamicRaggedShape является формой RaggedTensor rt, то:
- row_partitions = rt._nested_row_partitions (и, следовательно, len(row_partitions) > 0)
- inner_shape — это форма rt.flat_values
Если DynamicRaggedShape является формой плотного тензора t, то:
- row_partitions = []
- inner_shape — это форма t.
Примеры:
В следующей таблице приведены несколько примеров (где RP(lengths) — сокращение для RowPartition.from_lengths(lengths)):
| Разбиения строк | Внутренняя форма | Пример тензора |
|---|---|---|
| [] | [2, 3] | [[1, 2, 3], [4, 5, 6]] |
| [RP([2, 0, 3])] | [5] | [[1, 2], [], [3, 4, 5]] |
| [RP([2, 1])] | [3, 2] | [[[1, 2], [3, 4]], [[5, 6]]] |
| [RP([2, 1]), RP([2, 1, 2])] | [5] | [[[1, 2], [3]], [[4, 5]]] |
| Аргументы | |
|---|---|
row_partitions | разбиения строк формы. |
inner_shape | если len(row_partitions) > 0, форма flat_values. В противном случае, форма тензора. |
dtype | tf.int64, tf.int32 или None, представляющий предпочтительный тип данных. |
validate | если true, применяется динамическая проверка формы. |
static_inner_shape | если len(row_partitions) > 0, статическая форма flat_values. В противном случае, статическая форма тензора. Должен быть преобразуем в TensorShape. |
| Атрибуты | |
|---|---|
dtype | Тип данных формы — один из tf.int32 или tf.int64. |
inner_rank | ранг inner_shape. |
inner_shape | Размеры внутренних измерений для этой формы. |
num_row_partitions | Количество разбиений строк формы. |
rank | Количество измерений в этой форме, или None, если неизвестно. |
row_partitions | Разбиения строк формы. |
Подклассы
Методы
from_lengths
@classmethod
from_lengths(
lengths: Sequence[Union[Sequence[int], int]],
num_row_partitions=None,
dtype=tf.dtypes.int64
)
Создает форму с заданными длинами и num_row_partitions.
Длины могут быть либо целым неотрицательным числом, либо списком неотрицательных целых чисел.
Если num_row_partitions равно None, используется минимальное значение num_row_partitions.
Например, [2, (3, 2)] — это форма [[0, 0, 0], [0, 0]], а [2, 2] — форма [[0, 0], [0, 0]]
Выбирается минимальное значение num_row_partitions, необходимое (включая ноль).
В следующей таблице приведены несколько примеров (где RP(lengths) — сокращение для RowPartition.from_lengths(lengths)):
Например:
| from_lengths | row_partitions | inner_shape |
|---|---|---|
| [] | [] | [] |
| [2, (3, 2)] | [RP([3, 2])] | [5] |
| [2, 2] | [] | [2, 2] |
| [2, (3, 2), 7] | [RP([3, 2])] | [5, 7] |
| [2, (2, 2), 3] | [RP([2, 2])] | [4, 3] |
| [2, 2, 3] | [] | [2, 2, 3] |
| [2, (2, 1), (2, 0, 3)] | [RP(2, 1), RP([2, 0, 3])] | [5] |
Если мы хотим, чтобы разбиения строк завершались равномерными разбиениями строк, мы можем установить num_row_partitions.
Например, ниже URP(3, 12) — это RowPartition.from_uniform_row_length(3, 12)
| from_lengths | num_row_partitions | row_partitions | inner_shape |
|---|---|---|---|
| [2, (3, 2), 2] | 2 | [RP([3, 2]), URP(2, 10)] | [10] |
| [2, 2] | 1 | [URP(2, 4)] | [4] |
| [2, 2, 3] | 0 | [] | [2, 2, 3] |
| [2, 2, 3] | 1 | [URP(2, 4)] | [4, 3] |
| [2, 2, 3] | 2 | [URP(2, 4), URP(3, 12)] | [12] |
Представление форм из init():
| from_lengths | Пример тензора |
|---|---|
[2, 3] | [[1, 2, 3], [4, 5, 6]] |
[3, (2, 0, 3)] | [[1, 2], [], [3, 4, 5]] |
[2, (2, 1), 2] | [[[1, 2], [3, 4]], [[5, 6]]] |
[2, (2, 1), (2, 1, 2)] | [[[1, 2], [3]], [[4, 5]]] |
| Аргументы | |
|---|---|
lengths | длины подсписков вдоль каждой оси. |
num_row_partitions | num_row_partitions результата или None, указывающий минимальное количество row_partitions. |
dtype | тип данных формы (tf.int32 или tf.int64). |
| Возвращает | |
|---|---|
| новый DynamicRaggedShape |
from_row_partitions
@classmethod
from_row_partitions(
row_partitions, dtype=None
)
Создает форму из row_partitions.
| Аргументы | |
|---|---|
row_partitions | непустой список объектов RowPartition. |
dtype | используемый тип данных или None для использования типа данных row_partitions. |
| Возвращает | |
|---|---|
| DynamicRaggedShape с inner_rank==1. |
from_tensor
@classmethod
from_tensor(
t, dtype=None
)
Создаёт разряженную форму для потенциально разряженного тензора.
is_uniform
is_uniform(
axis
)
Возвращает true, если указанное измерение однородное.
static_lengths
static_lengths(
ragged_lengths=True
)
Возвращает список статически известных длин осей.
Это представляет собой известные значения. Для каждого разбиения строк он предоставляет либо равномерную длину строки (если она статически известна), либо список длин строк, либо None, если она не статически известна. Для внутренней формы, если ранг известен, то каждое измерение сообщается, если известно, и None в противном случае. Если ранг внутренней формы не известен, то возвращаемый список заканчивается многоточием.
| Аргументы | |
|---|---|
ragged_lengths | Если false, возвращает None для всех разряженных измерений. |
| Возвращает | |
|---|---|
| Последовательность [Объединение [Последовательность [int], int, None]] длин с возможным многоточием в конце. |
with_dtype
with_dtype(
dtype
)
Изменить тип данных формы.
__eq__
__eq__(
other
)
Возвращает self==value.
__getitem__
__getitem__(
index
)
Возвращает размерность или срез формы.
Растянутые формы могут иметь растянутые размерности, которые зависят от других размерностей. Поэтому, если вы запрашиваете размерность, которая является растянутой, эта функция возвращает ValueError. По аналогичным причинам, если выбран срез, который включает растянутую размерность без включения нулевой размерности, то это также приводит к ошибке.
Любой срез, который не начинается с нуля, вернёт форму с num_row_partitions == 0.
| Аргументы | |
|---|---|
index | индекс: может быть целым числом или срезом. |
| Исключения | |
|---|---|
IndexError | если индекс не входит в диапазон. |
ValueError | если ранг неизвестен или неправильно запрашивается ранг растянутой формы. |
__ne__
__ne__(
other
)
Возвращает self!=value.
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/experimental/DynamicRaggedShape