tf.experimental.DynamicRaggedShape
Форма разряженного или плотного тензора.
Наследуется от: ExtensionType
tf.experimental.DynamicRaggedShape(
row_partitions, inner_shape, dtype=None, validate=False
)
Разряженные формы кодируются с помощью двух полей:
-
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, применяется динамическая проверка формы. |
| Атрибуты | |
|---|---|
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/versions/r2.9/api_docs/python/tf/experimental/DynamicRaggedShape