Spec-Zone.ru › TensorFlow

tf.experimental.RowPartition

Разбиение последовательности значений на смежные подпоследовательности («строки»).

Альтернативные имена

Альтернативные имена для совместимости при миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.experimental.RowPartition

tf.experimental.RowPartition(
    row_splits,
    row_lengths=None,
    value_rowids=None,
    nrows=None,
    uniform_row_length=None,
    nvals=None,
    internal=False
)

Используется в блокнотах

Используется в руководстве
  • Разреженные тензоры

Объект RowPartition описывает, как последовательность из nvals элементов следует разделить на nrows смежных подпоследовательностей («строк»). Например, RowPartition можно использовать для разбиения вектора [1, 2, 3, 4, 5] на подпоследовательности [[1, 2], [3], [], [4, 5]]. Обратите внимание, что RowPartition хранит информацию о способе разбиения значений, но не содержит сами разделённые значения. tf.RaggedTensor используется для объединения тензора values с одним или несколькими объектами RowPartition, обеспечивая полное представление разреженного тензора (то есть тензора с измерениями переменной длины).

Объекты RowPartition можно определить с помощью нескольких разных схем:

  • row_lengths: целочисленный вектор с формой [nrows], задающий длину каждой строки.

  • row_splits: целочисленный вектор с формой [nrows+1], задающий «точки разделения» между строками.

  • row_starts: целочисленный вектор с формой [nrows], задающий начальное смещение каждой строки. Эквивалентно row_splits[:-1].

  • row_limits: целочисленный вектор с формой [nrows], задающий конечное смещение каждой строки. Эквивалентно row_splits[1:].

  • value_rowids — целочисленный вектор с формой [nvals], соответствующий значениям последовательности один к одному и задающий строку, к которой относится каждое значение. Если разбиение содержит пустые строки в конце, необходимо также указать nrows.

  • uniform_row_length — целочисленный скаляр, задающий длину каждой строки. Эту схему можно использовать, только если все строки имеют одинаковую длину.

Например, следующие объекты RowPartition представляют разбиение 8 значений на 5 подсписков следующим образом: [[*, *, *, *], [], [*, *, *], [*], []].

p1 = RowPartition.from_row_lengths([4, 0, 3, 1, 0])
p2 = RowPartition.from_row_splits([0, 4, 4, 7, 8, 8])
p3 = RowPartition.from_row_starts([0, 4, 4, 7, 8], nvals=8)
p4 = RowPartition.from_row_limits([4, 4, 7, 8, 8])
p5 = RowPartition.from_value_rowids([0, 0, 0, 0, 2, 2, 2, 3], nrows=5)

Подробнее о каждой схеме см. в документации к соответствующему фабричному методу. Дополнительные примеры см. в документации по tf.RaggedTensor.

Предварительно вычисленные кодировки

Объект RowPartition всегда хранит как минимум одну кодировку разбиения, но его также можно настроить для кэширования дополнительных кодировок. Это позволяет избежать ненужных повторных вычислений в eager-режиме. (В режиме графа оптимизации, такие как устранение общих подвыражений, обычно предотвращают эти ненужные повторные вычисления.) Чтобы проверить, какие кодировки вычислены заранее, используйте RowPartition.has_precomputed_<encoding>. Чтобы кэшировать дополнительную кодировку, используйте RowPartition.with_precomputed_<encoding>.

Аргументы
row_splits Целочисленный тензор ранга 1 с формой [nrows+1].
row_lengths Целочисленный тензор ранга 1 с формой [nrows]
value_rowids Целочисленный тензор ранга 1 с формой [nvals].
nrows Целочисленный скалярный тензор ранга 1.
uniform_row_length Скалярный тензор.
nvals Скалярный тензор.
internal Значение закрытого ключа, необходимое для гарантии, что этот закрытый конструктор вызывается только фабричными методами.
Исключения
TypeError Если тензор разбиения строк имеет недопустимый тип данных.
TypeError Если не указан ровно один аргумент разбиения строк.
ValueError Если тензор разбиения строк имеет недопустимую форму.
ValueError Если указано несколько аргументов разбиения.
ValueError Если указан nrows, но value_rowids не равен None.
Атрибуты
dtype DType, используемый для кодирования разбиения строк (int32 или int64).
static_nrows Количество строк в этом разбиении, если оно известно статически.
self.row_lengths().shape == [self.static_nrows]
self.row_starts().shape == [self.static_nrows]
self.row_limits().shape == [self.static_nrows]
self.row_splits().shape == [self.static_nrows + 1]
static_nvals Количество значений в этом разбиении, если оно известно статически.
self.value_rowids().shape == [self.static_vals]
static_uniform_row_length Количество значений в каждой строке этого разбиения, если оно известно статически.

Методы

from_row_lengths

Посмотреть исходный код

@classmethod
from_row_lengths(
    row_lengths, validate=True, dtype=None, dtype_hint=None
)

Создаёт объект RowPartition с разбиением строк по row_lengths.

Этот RowPartition делит последовательность values на строки, задавая длину каждой строки:

partitioned_rows = [[values.pop(0) for _ in range(length)]
                    for length in row_lengths]
Аргументы
row_lengths Целочисленный тензор ранга 1 с формой [nrows]. Значения должны быть неотрицательными.
validate Если значение равно true, используются проверки-утверждения, чтобы проверить, что аргументы образуют допустимый объект RowPartition.
dtype Необязательный тип данных для RowPartition. Если он не указан, тип определяется на основе типа row_lengths, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, если dtype равен None. В некоторых случаях вызывающая сторона может не знать, какой тип данных использовать при преобразовании в тензор, поэтому dtype_hint можно задать как предпочтительный вариант. Если преобразование в dtype_hint невозможно, этот аргумент не влияет на результат.
Возвращает
Объект RowPartition.

from_row_limits

Посмотреть исходный код

@classmethod
from_row_limits(
    row_limits, validate=True, dtype=None, dtype_hint=None
)

Создаёт объект RowPartition с разбиением строк по row_limits.

Эквивалентно: from_row_splits(values, concat([0, row_limits], axis=0)).

Аргументы
row_limits Целочисленный тензор ранга 1 с формой [nrows]. Значения должны быть отсортированы по возрастанию.
validate Если значение равно true, используются проверки-утверждения, чтобы проверить, что аргументы образуют допустимый объект RowPartition.
dtype Необязательный тип данных для RowPartition. Если он не указан, тип определяется на основе типа row_limits, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, если dtype равен None. В некоторых случаях вызывающая сторона может не знать, какой тип данных использовать при преобразовании в тензор, поэтому dtype_hint можно задать как предпочтительный вариант. Если преобразование в dtype_hint невозможно, этот аргумент не влияет на результат.
Возвращает
Объект RowPartition.

from_row_splits

Посмотреть исходный код

@classmethod
from_row_splits(
    row_splits, validate=True, dtype=None, dtype_hint=None
)

Создаёт объект RowPartition с разбиением строк по row_splits.

Этот RowPartition делит последовательность values на строки, указывая, где начинается и заканчивается каждая строка:

partitioned_rows = []
for i in range(len(row_splits) - 1):
  row_start = row_splits[i]
  row_end = row_splits[i + 1]
  partitioned_rows.append(values[row_start:row_end])
Аргументы
row_splits Целочисленный тензор ранга 1 с формой [nrows+1]. Он не должен быть пустым и должен быть отсортирован по возрастанию. row_splits[0] должен быть равен нулю.
validate Если значение равно true, используются проверки-утверждения, чтобы проверить, что аргументы образуют допустимый объект RowPartition.
dtype Необязательный тип данных для RowPartition. Если он не указан, тип определяется на основе типа row_splits, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, если dtype равен None. В некоторых случаях вызывающая сторона может не знать, какой тип данных использовать при преобразовании в тензор, поэтому dtype_hint можно задать как предпочтительный вариант. Если преобразование в dtype_hint невозможно, этот аргумент не влияет на результат.
Возвращает
Объект RowPartition.
Исключения
ValueError Если row_splits — пустой список.

from_row_starts

Посмотреть исходный код

@classmethod
from_row_starts(
    row_starts, nvals, validate=True, dtype=None, dtype_hint=None
)

Создаёт объект RowPartition с разбиением строк по row_starts.

Эквивалентно: from_row_splits(concat([row_starts, nvals], axis=0)).

Аргументы
row_starts Целочисленный тензор ранга 1 с формой [nrows]. Значения должны быть неотрицательными и отсортированными по возрастанию. Если nrows>0, то row_starts[0] должен быть равен нулю.
nvals Скалярный тензор, указывающий количество значений.
validate Если значение равно true, используются проверки-утверждения, чтобы проверить, что аргументы образуют допустимый объект RowPartition.
dtype Необязательный тип данных для RowPartition. Если он не указан, тип определяется на основе типа row_starts, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, если dtype равен None. В некоторых случаях вызывающая сторона может не знать, какой тип данных использовать при преобразовании в тензор, поэтому dtype_hint можно задать как предпочтительный вариант. Если преобразование в dtype_hint невозможно, этот аргумент не влияет на результат.
Возвращает
Объект RowPartition.

from_uniform_row_length

Посмотреть исходный код

@classmethod
from_uniform_row_length(
    uniform_row_length,
    nvals=None,
    nrows=None,
    validate=True,
    dtype=None,
    dtype_hint=None
)

Создаёт объект RowPartition с разбиением строк по uniform_row_length.

Этот RowPartition делит последовательность values на строки одинаковой длины:

partitioned_rows = [[values.pop(0) for _ in range(uniform_row_length)]
         for _ in range(nrows)]

Обратите внимание, что необходимо указать nvals, nrows или оба параметра.

Аргументы
uniform_row_length Целочисленный скалярный тензор. Значение должно быть неотрицательным. Размер внешней оси values должен делиться на uniform_row_length без остатка.
nvals Неотрицательный целочисленный скалярный тензор, задающий количество значений. Его необходимо указать, если nrows не задан. Если параметр не указан, по умолчанию используется uniform_row_length*nrows.
nrows Количество строк в созданном объекте RowPartition. Если параметр не указан, по умолчанию используется nvals/uniform_row_length (или 0, если uniform_row_length==0). nrows необходимо указывать только в том случае, если uniform_row_length может быть равен нулю. uniform_row_length*nrows должно быть равно nvals.
validate Если значение равно true, используются проверки-утверждения, чтобы проверить, что аргументы образуют допустимый объект RowPartition.
dtype Необязательный тип данных для RowPartition. Если он не указан, тип определяется на основе типа uniform_row_length, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, если dtype равен None. В некоторых случаях вызывающая сторона может не знать, какой тип данных использовать при преобразовании в тензор, поэтому dtype_hint можно задать как предпочтительный вариант. Если преобразование в dtype_hint невозможно, этот аргумент не влияет на результат.
Возвращает
Объект RowPartition.

from_value_rowids

Посмотреть исходный код

@classmethod
from_value_rowids(
    value_rowids, nrows=None, validate=True, dtype=None, dtype_hint=None
)

Создаёт объект RowPartition с разбиением строк по value_rowids.

Этот RowPartition делит последовательность values на строки, указывая, к какой строке следует добавить каждое значение:

partitioned_rows = [[] for _ in nrows]
for (value, rowid) in zip(values, value_rowids):
  partitioned_rows[rowid].append(value)
Аргументы
value_rowids Целочисленный тензор ранга 1 с формой [nvals], соответствующий values один к одному и задающий индекс строки для каждого значения. Значения должны быть неотрицательными и отсортированными по возрастанию.
nrows Целочисленный скаляр, задающий количество строк. Его следует указать, если объект RowPartition может содержать пустые строки в конце. Значение должно быть больше value_rowids[-1] (или больше либо равно нулю, если value_rowids пуст). По умолчанию используется value_rowids[-1] + 1 (или ноль, если value_rowids пуст).
validate Если значение равно true, используются проверки-утверждения, чтобы проверить, что аргументы образуют допустимый объект RowPartition.
dtype Необязательный тип данных для RowPartition. Если он не указан, тип определяется на основе типа value_rowids, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, если dtype равен None. В некоторых случаях вызывающая сторона может не знать, какой тип данных использовать при преобразовании в тензор, поэтому dtype_hint можно задать как предпочтительный вариант. Если преобразование в dtype_hint невозможно, этот аргумент не влияет на результат.
Возвращает
Объект RowPartition.
Исключения
ValueError Если nrows несовместим с value_rowids.

Пример:

print(RowPartition.from_value_rowids(
    value_rowids=[0, 0, 0, 0, 2, 2, 2, 3],
    nrows=4))
tf.RowPartition(row_splits=[0 4 4 7 8])

is_uniform

Посмотреть исходный код

is_uniform()

Возвращает true, если статически известно, что разбиение является равномерным.

Это определяется наличием self._uniform_row_length. Например: RowPartition.from_row_lengths([3,3,3]).is_uniform()false RowPartition.from_uniform_row_length(5, nvals=20).is_uniform()true RowPartition.from_row_lengths([2,0,2]).is_uniform()==false

Возвращает
Является ли RowPartition статически равномерным.

nrows

Посмотреть исходный код

nrows()

Возвращает количество строк, созданных этим объектом RowPartition.

Возвращает
скалярный целочисленный Tensor

nvals

Посмотреть исходный код

nvals()

Возвращает количество значений, разбитых на части этим объектом RowPartition.

Если последовательность, разбитая этим объектом RowPartition, является тензором, то nvals — это размер самого внешнего измерения этого тензора, то есть nvals == values.shape[0].

Возвращает
скалярный целочисленный Tensor

offsets_in_rows

Посмотреть исходный код

offsets_in_rows()

Возвращает смещение каждого значения.

RowPartition принимает массив x и преобразует его в подсписки. offsets[i] — это индекс x[i] в соответствующем подсписке. Для структуры вида [,,],[,],[],[,*] возвращается: 0,1,2,0,1,0,1

Возвращает
смещение для каждого значения.

row_lengths

Посмотреть исходный код

row_lengths()

Возвращает длины строк в этом объекте RowPartition.

Возвращает
Целочисленный тензор ранга 1 с формой [self.nrows]. Возвращаемый тензор содержит неотрицательные значения. tf.reduce_sum(self.row_lengths) == self.nvals().

row_limits

Посмотреть исходный код

row_limits()

Возвращает индексы границ строк в этом разбиении строк.

Эти индексы указывают, где заканчиваются значения каждой строки. partition.row_limits() равно partition.row_splits()[:-1].

Возвращает
Целочисленный тензор ранга 1 с формой [self.nrows]. Возвращаемый тензор содержит неотрицательные значения, отсортированные по возрастанию. self.row_limits()[-1] == self.nvals().

row_splits

Посмотреть исходный код

row_splits()

Возвращает индексы разделения строк для этого разбиения строк.

row_splits указывает, где начинаются и заканчиваются значения каждой строки. В частности, значения строки i хранятся в срезе values[row_splits[i]:row_splits[i+1]].

Возвращает
Целочисленный тензор ранга 1 Tensor с формой [self.nrows+1]. Возвращаемый тензор не пуст и отсортирован по возрастанию. self.row_splits()[0] == 0. self.row_splits()[-1] == self.nvals().

row_starts

Посмотреть исходный код

row_starts()

Возвращает начальные индексы строк в этом разбиении строк.

Эти индексы указывают, где начинаются значения каждой строки. partition.row_starts() равно partition.row_splits()[:-1].

Возвращает
Целочисленный тензор ранга 1 с формой [self.nrows()]. Возвращаемый тензор содержит неотрицательные значения, отсортированные по возрастанию. self.row_starts()[0] == 0. self.row_starts()[-1] <= self.nvals().

uniform_row_length

Посмотреть исходный код

uniform_row_length()

Возвращает длину каждой строки в этом разбиении, если строки равномерны.

Если все строки в этом объекте RowPartition имеют одинаковую длину, этот метод возвращает эту длину в виде скалярного целочисленного Tensor. В противном случае он возвращает None.

Возвращает
скалярный Tensor с type=self.dtype или None.

value_rowids

Посмотреть исходный код

value_rowids()

Возвращает индексы строк для этого разбиения строк.

value_rowids задаёт индекс строки для каждого значения. В частности, value_rowids[i] — это индекс строки для values[i].

Возвращает
Целочисленный тензор ранга 1 Tensor с формой [self.nvals()]. Возвращаемый тензор содержит неотрицательные значения, отсортированные по возрастанию.

with_dtype

Посмотреть исходный код

with_dtype(
    dtype
)

Возвращает копию этого объекта RowPartition с указанным типом данных кодировки.

Аргументы
dtype Тип данных для кодирующих тензоров, таких как row_splits и nrows. Один из вариантов: tf.int32 или tf.int64.
Возвращает
Копию этого объекта RowPartition, в которой кодирующие тензоры приведены к указанному типу.

© 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/RowPartition

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API