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>.

Args
row_splits Целочисленный тензор 1-D с формой [nrows+1].
row_lengths Целочисленный тензор 1-D с формой [nrows]
value_rowids Целочисленный тензор 1-D с формой [nvals].
nrows Целочисленный скалярный тензор.
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]
Args
row_lengths Целочисленный тензор 1-D с формой [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)).

Args
row_limits Целочисленный тензор 1-D с формой [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])
END_OF_DOCUMENT_MARKER
Аргументы
row_splits 1-мерный целочисленный тензор с формой [nrows+1]. Не должен быть пустым и должен быть отсортирован по возрастанию. row_splits[0] должно быть равно нулю.
validate Если истинно, то использовать утверждения для проверки того, что аргументы образуют допустимый RowPartition.
dtype Необязательный тип данных для RowPartition. Если отсутствует, тип определяется по типу row_splits, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, когда dtype равен None. В некоторых случаях вызывающий код может не иметь в виду тип данных при преобразовании в тензор, поэтому dtype_hint может использоваться в качестве мягкой рекомендации. Если преобразование в dtype_hint невозможно, этот аргумент не оказывает влияния.
Возвращаемое значение
A 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 Если истинно, то использовать утверждения для проверки того, что аргументы образуют допустимый RowPartition.
dtype Необязательный тип данных для RowPartition. Если отсутствует, тип определяется по типу row_starts, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, когда dtype равен None. В некоторых случаях вызывающий код может не иметь в виду тип данных при преобразовании в тензор, поэтому dtype_hint может использоваться в качестве мягкой рекомендации. Если преобразование в dtype_hint невозможно, этот аргумент не оказывает влияния.
Возвращаемое значение
A 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 Если истинно, то использовать утверждения для проверки того, что аргументы образуют допустимый RowPartition.
dtype Необязательный тип данных для RowPartition. Если отсутствует, тип определяется по типу uniform_row_length, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, когда dtype равен None. В некоторых случаях вызывающий код может не иметь в виду тип данных при преобразовании в тензор, поэтому dtype_hint может использоваться в качестве мягкой рекомендации. Если преобразование в dtype_hint невозможно, этот аргумент не оказывает влияния.
Возвращаемое значение
A 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 Если истинно, то использовать утверждения для проверки того, что аргументы образуют допустимый RowPartition.
dtype Необязательный тип данных для RowPartition. Если отсутствует, тип определяется по типу value_rowids, dtype_hint или tf.int64.
dtype_hint Необязательный тип данных для RowPartition, используемый, когда dtype равен None. В некоторых случаях вызывающий код может не иметь в виду тип данных при преобразовании в тензор, поэтому dtype_hint может использоваться в качестве мягкой рекомендации. Если преобразование в dtype_hint невозможно, этот аргумент не оказывает влияния.
Возвращаемое значение
A 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.

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

nvals

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

nvals()

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

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

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

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-D с формой [self.nrows]. Возвращаемый тензор неотрицательный. tf.reduce_sum(self.row_lengths) == self.nvals().

row_limits

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

row_limits()

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

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

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

row_splits

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

row_splits()

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

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

Возвращает
Целочисленный тензор 1-D 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-D с формой [self.nrows()]. Возвращаемый тензор неотрицательный и отсортирован по возрастанию. self.row_starts()[0] == 0. self.row_starts()[-1] <= self.nvals().

uniform_row_length

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

uniform_row_length()

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

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

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

value_rowids

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

value_rowids()

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

value_rowids указывает индекс строки для каждого значения. В частности, value_rowids[i] является индексом строки для values[i].

Возвращает
Целочисленный тензор 1-D 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