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 равно None, используется минимальное значение num_row_partitions.
Например, [2, (3, 2)] — это форма [[0, 0, 0], [0, 0]], а [2, 2] — форма [[0, 0], [0, 0]]
При этом выбирается минимальное необходимое количество разделов строк (включая ноль).
В следующей таблице приведено несколько примеров (где RP(lengths) — это сокращение от RowPartition.from_lengths(lengths)):
Например:
| from_lengths | разделы строк | внутренняя форма |
|---|---|---|
| [] | [] | [] |
| [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 | разделы строк | внутренняя форма |
|---|---|---|---|
| [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 | количество разделов строк результата или None, указывающее минимальное количество разделов строк. |
dtype | тип данных формы (tf.int32 или tf.int64). |
| Возвращает | |
|---|---|
| новый объект DynamicRaggedShape |
from_row_partitions
@classmethod
from_row_partitions(
row_partitions, dtype=None
)
Создаёт форму из разделов строк.
| Аргументы | |
|---|---|
row_partitions | непустой список объектов RowPartition. |
dtype | используемый тип данных или None, чтобы использовать тип данных разделов строк. |
| Возвращает | |
|---|---|
| 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. |
| Возвращает | |
|---|---|
| Sequence[Union[Sequence[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