Spec-Zone.ru › TensorFlow 1.15

tf.RaggedTensor

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

Представляет разряженный тензор.

Псевдонимы

Псевдонимы для миграции

См. руководство по миграции для получения дополнительных сведений.

tf.compat.v1.RaggedTensor, `tf.compat.v2.RaggedTensor`

tf.RaggedTensor(
    values, row_splits, cached_row_lengths=None, cached_value_rowids=None,
    cached_nrows=None, internal=False
)

Разряженный тензор — это тензор с одной или несколькими разряженными измерениями, измерения, у которых срезы могут иметь различную длину. Например, внутреннее (столбцовое) измерение rt=[[3, 1, 4, 1], [], [5, 9, 2], [6], []] является разряженным, так как столбцовые срезы (rt[0, :], ..., rt[4, :]) имеют различную длину. Измерения, у которых срезы имеют одинаковую длину, называются однородными измерениями. Наружное измерение разряженного тензора всегда однородное, поскольку оно состоит из одного среза (и поэтому нет возможности для различной длины срезов).

Общее количество измерений в разряженном тензоре называется его рангом, а количество разряженных измерений в разряженном тензоре называется его рангом разряженности. Ранг разряженности разряженного тензора фиксируется на этапе создания графа: он не может зависеть от значений Tensor во время выполнения и не может динамически меняться для различных запусков сеанса.

Возможные разряженные тензоры

Многие операции поддерживают как разряженные тензоры, так и обычные тензоры. Термин «возможный разряженный тензор» может использоваться для обозначения тензора, который может быть либо разряженным тензором, либо обычным тензором. Ранг разряженности обычного тензора равен нулю.

Документирование форм RaggedTensor

При документировании формы разряженного тензора разряженные измерения можно указывать, заключая их в скобки. Например, форму 3-мерного разряженного тензора, который хранит вложения слов фиксированной длины для каждого слова в предложении, для каждого предложения в пакете, можно записать как [num_sentences, (num_words), embedding_size]. Скобки вокруг (num_words) указывают, что измерение является разряженным, и что длина каждого списка элементов в этом измерении может различаться для каждого элемента.

Компонентные тензоры

Внутренне разряженный тензор состоит из конкатенированного списка значений, которые разделяются на строки переменной длины. В частности, каждый разряженный тензор состоит из:

  • Тензора values, который конкатенирует строки переменной длины в сплющеный список. Например, тензор values для [[3, 1, 4, 1], [], [5, 9, 2], [6], []] равен [3, 1, 4, 1, 5, 9, 2, 6].

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

Пример:

print(tf.RaggedTensor.from_row_splits(
    values=[3, 1, 4, 1, 5, 9, 2, 6],
    row_splits=[0, 4, 4, 7, 8, 8]))
<tf.RaggedTensor [[3, 1, 4, 1], [], [5, 9, 2], [6], []]>

Альтернативные схемы разбиения строк

В дополнение к row_splits, разряженные тензоры поддерживают четыре других схемы разбиения строк:

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

  • value_rowids и nrows: value_rowids — вектор с формой [nvals], который однозначно соответствует values, и указывает индекс строки для каждого значения. В частности, строка rt[row] состоит из значений rt.values[j], где value_rowids[j]==row. nrows — целочисленный скаляр, указывающий количество строк в RaggedTensor. (nrows используется для обозначения хвостовых пустых строк.)

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

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

Пример: следующие разряженные тензоры эквивалентны и все представляют вложенный список [[3, 1, 4, 1], [], [5, 9, 2], [6], []].

values = [3, 1, 4, 1, 5, 9, 2, 6]
rt1 = RaggedTensor.from_row_splits(values, row_splits=[0, 4, 4, 7, 8, 8])
rt2 = RaggedTensor.from_row_lengths(values, row_lengths=[4, 0, 3, 1, 0])
rt3 = RaggedTensor.from_value_rowids(
    values, value_rowids=[0, 0, 0, 0, 2, 2, 2, 3], nrows=5)
rt4 = RaggedTensor.from_row_starts(values, row_starts=[0, 4, 4, 7, 8])
rt5 = RaggedTensor.from_row_limits(values, row_limits=[4, 4, 7, 8, 8])

Множественные разряженные измерения

Разряженные тензоры с несколькими разряженными измерениями могут быть определены с помощью вложенного RaggedTensor для тензора values. Каждый вложенный RaggedTensor добавляет одно разряженное измерение.

inner_rt = RaggedTensor.from_row_splits(  # =rt1 from above
    values=[3, 1, 4, 1, 5, 9, 2, 6], row_splits=[0, 4, 4, 7, 8, 8])
outer_rt = RaggedTensor.from_row_splits(
    values=inner_rt, row_splits=[0, 3, 3, 5])
print outer_rt.to_list()
[[[3, 1, 4, 1], [], [5, 9, 2]], [], [[6], []]]
print outer_rt.ragged_rank
2

Функция-фабрикат RaggedTensor.from_nested_row_splits может быть использована для непосредственного построения разряженного тензора с несколькими разряженными измерениями, предоставив список тензоров row_splits.

RaggedTensor.from_nested_row_splits(
    flat_values=[3, 1, 4, 1, 5, 9, 2, 6],
    nested_row_splits=([0, 3, 3, 5], [0, 4, 4, 7, 8, 8])).to_list()
[[[3, 1, 4, 1], [], [5, 9, 2]], [], [[6], []]]

Однородные внутренние измерения

Разряженные тензоры с однородными внутренними измерениями могут быть определены с помощью многомерного Tensor для values.

rt = RaggedTensor.from_row_splits(values=tf.ones([5, 3]),
..                                    row_splits=[0, 2, 5])
print rt.to_list()
[[[1, 1, 1], [1, 1, 1]],
 [[1, 1, 1], [1, 1, 1], [1, 1, 1]]]
print rt.shape
 (2, ?, 3)

Ограничения формы RaggedTensor

Форма разряженного тензора в настоящее время ограничена следующей формой:

  • Одно однородное измерение
  • За ним следует одно или несколько разряженных измерений
  • За ним следует ноль или более однородных измерений.

Это ограничение вытекает из того, что каждый вложенный RaggedTensor заменяет однородное внешнее измерение его values на однородное измерение, за которым следует разряженное измерение.

Аргументы
values Потенциально разряженный тензор любого типа и формы [nvals, ...].
row_splits Целочисленный тензор 1-го измерения с формой [nrows+1].
cached_row_lengths Целочисленный тензор 1-го измерения с формой [nrows]
cached_value_rowids Целочисленный тензор 1-го измерения с формой [nvals].
cached_nrows Целочисленный тензор скалярного 1-го измерения.
internal True, если конструктор вызывается одной из функций-фабрикатов. В противном случае будет выброшено исключение.
Исключения
TypeError Если тензор разбиения строк имеет неподходящий тип данных.
TypeError Если ровно один аргумент разбиения строк не был указан.
ValueError Если тензор разбиения строк имеет неподходящую форму.
ValueError Если указаны несколько аргументов разбиения.
ValueError Если nrows указан, но value_rowids не равно None.
Атрибуты
dtype Значения тензора.
flat_values Внутренний тензор разряженного тензора.

Если rt.values — разряженный тензор, то rt.flat_values равен rt.values; в противном случае rt.flat_values равен rt.values.flat_values.

Концептуально, flat_values — тензор, полученный путём сплющивания внешнего измерения и всех разряженных измерений в одно измерение.

rt.flat_values.shape = [nvals] + rt.shape[rt.ragged_rank + 1:] (где nvals — количество элементов в сплющенных измерениях).

Пример:

rt = ragged.constant([[[3, 1, 4, 1], [], [5, 9, 2]], [], [[6], []]])
print rt.flat_values()
tf.Tensor([3, 1, 4, 1, 5, 9, 2, 6])
nested_row_splits Кортеж, содержащий row_splits для всех разряженных измерений.

rt.nested_row_splits — кортеж, содержащий тензоры row_splits для всех разряженных измерений в rt, упорядоченных от внешнего к внутреннему. В частности, rt.nested_row_splits = (rt.row_splits,) + value_splits где:

  • value_splits = () если rt.values — разряженный тензор.
  • value_splits = rt.values.nested_row_splits в противном случае.

Пример:

rt = ragged.constant([[[[3, 1, 4, 1], [], [5, 9, 2]], [], [[6], []]]])
for i, splits in enumerate(rt.nested_row_splits()):
  print('Splits for dimension %d: %s' % (i+1, splits))
Splits for dimension 1: [0, 1]
Splits for dimension 2: [0, 3, 3, 5]
Splits for dimension 3: [0, 4, 4, 7, 8, 8]
ragged_rank Количество разряженных измерений в этом разряженном тензоре.
row_splits Индексы разбиения строк для разряженного тензора.

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

Пример:

>>> rt = ragged.constant([[3, 1, 4, 1], [], [5, 9, 2], [6], []])
>>> print rt.row_splits  # indices of row splits in rt.values
tf.Tensor([0, 4, 4, 7, 8, 8])
shape Статически известная форма этого разряженного тензора.
values Конкатенированные строки для данного разряженного тензора.

rt.values — потенциально разряженный тензор, полученный путём сплющивания двух внешних измерений rt в одно измерение.

rt.values.shape = [nvals] + rt.shape[2:] (где nvals — количество элементов во внешних двух измерениях rt).

rt.ragged_rank = self.ragged_rank - 1

Пример:

>>> rt = ragged.constant([[3, 1, 4, 1], [], [5, 9, 2], [6], []])
>>> print rt.values
tf.Tensor([3, 1, 4, 1, 5, 9, 2, 6])

Методы

bounding_shape

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

bounding_shape(
    axis=None, name=None, out_type=None
)

Возвращает форму ограничивающей прямоугольной области для данного разряженного тензора.

Аргументы
axis Целочисленный скаляр или вектор, указывающий, для каких осей возвращать ограничивающую рамку. Если не указано, возвращается полная ограничивающая рамка.
name Префикс имени для возвращаемого тензора (необязательно).
out_type dtype для возвращаемого тензора. По умолчанию self.row_splits.dtype.
Возвращаемое значение
Целочисленный Tensor (dtype=self.row_splits.dtype). Если axis не указано, то output — это вектор с output.shape=[self.shape.ndims]. Если axis — это скаляр, то output — это скаляр. Если axis — это вектор, то output — это вектор, где output[i] — это размер ограничивающей рамки для измерения axis[i].

Пример:

>>> rt = ragged.constant([[1, 2, 3, 4], [5], [], [6, 7, 8, 9], [10]])
>>> rt.bounding_shape()
[5, 4]

consumers

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

consumers()

from_nested_row_lengths

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

@classmethod
from_nested_row_lengths(
    flat_values, nested_row_lengths, name=None, validate=True
)

Создает RaggedTensor из вложенного списка row_lengths тензоров.

Эквивалентно:

result = flat_values
for row_lengths in reversed(nested_row_lengths):
  result = from_row_lengths(result, row_lengths)
Аргументы
flat_values Возможно разреженный тензор.
nested_row_lengths Список 1-мерных целочисленных тензоров. i-й тензор используется в качестве row_lengths для i-го разреженного измерения.
name Префикс имени для RaggedTensor (необязательно).
validate Если True, используются утверждения для проверки того, что аргументы образуют допустимый RaggedTensor.
Возвращаемое значение
RaggedTensor (или flat_values если nested_row_lengths пусто).

from_nested_row_splits

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

@classmethod
from_nested_row_splits(
    flat_values, nested_row_splits, name=None, validate=True
)

Создает RaggedTensor из вложенного списка row_splits тензоров.

Эквивалентно:

result = flat_values
for row_splits in reversed(nested_row_splits):
  result = from_row_splits(result, row_splits)
Аргументы
flat_values Возможно разреженный тензор.
nested_row_splits Список 1-мерных целочисленных тензоров. i-й тензор используется в качестве row_splits для i-го разреженного измерения.
name Префикс имени для RaggedTensor (необязательно).
validate Если True, используются утверждения для проверки того, что аргументы образуют допустимый RaggedTensor.
Возвращаемое значение
RaggedTensor (или flat_values если nested_row_splits пусто).

from_nested_value_rowids

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

@classmethod
from_nested_value_rowids(
    flat_values, nested_value_rowids, nested_nrows=None, name=None, validate=True
)

Создаёт RaggedTensor из вложенного списка value_rowids тензоров.

Эквивалентно:

result = flat_values
for (rowids, nrows) in reversed(zip(nested_value_rowids, nested_nrows)):
  result = from_value_rowids(result, rowids, nrows)
Аргументы
flat_values Возможно разреженный тензор.
nested_value_rowids Список 1-мерных целочисленных тензоров. i-й тензор используется в качестве value_rowids для i-го разреженного измерения.
nested_nrows Список целочисленных скаляров. i-й скаляр используется в качестве nrows для i-го разреженного измерения.
name Префикс имени для RaggedTensor (необязательно).
validate Если True, используются утверждения для проверки того, что аргументы образуют допустимый RaggedTensor.
Возвращаемое значение
RaggedTensor (или flat_values если nested_value_rowids пусто).
Исключения
ValueError Если len(nested_values_rowids) != len(nested_nrows).

from_row_lengths

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

@classmethod
from_row_lengths(
    values, row_lengths, name=None, validate=True
)

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

Возвращаемый RaggedTensor соответствует списку Python, определённому:

result = [[values.pop(0) for i in range(length)]
          for length in row_lengths]
Аргументы
values Возможный разряженный тензор с формой [nvals, ...].
row_lengths 1-мерный целочисленный тензор с формой [nrows]. Должен быть неотрицательным. sum(row_lengths) должен быть nvals.
name Префикс имени для RaggedTensor (необязательно).
validate Если True, то использовать утверждения для проверки того, что аргументы образуют допустимый RaggedTensor.
Возвращаемое значение
A RaggedTensor. result.rank = values.rank + 1. result.ragged_rank = values.ragged_rank + 1.

Пример:

>>> print(tf.RaggedTensor.from_row_lengths(
...     values=[3, 1, 4, 1, 5, 9, 2, 6],
...     row_lengths=[4, 0, 3, 1, 0]))
<tf.RaggedTensor [[3, 1, 4, 1], [], [5, 9, 2], [6], []])>

from_row_limits

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

@classmethod
from_row_limits(
    values, row_limits, name=None, validate=True
)

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

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

Аргументы
values Возможный разряженный тензор с формой [nvals, ...].
row_limits 1-мерный целочисленный тензор с формой [nrows]. Должен быть отсортирован по возрастанию. Если nrows>0, тогда row_limits[-1] должен быть nvals.
name Префикс имени для RaggedTensor (необязательно).
validate Если True, то использовать утверждения для проверки того, что аргументы образуют допустимый RaggedTensor.
Возвращаемое значение
A RaggedTensor. result.rank = values.rank + 1. result.ragged_rank = values.ragged_rank + 1.

Пример:

>>> print(tf.RaggedTensor.from_row_limits(
...     values=[3, 1, 4, 1, 5, 9, 2, 6],
...     row_limits=[4, 4, 7, 8, 8]))
<tf.RaggedTensor [[3, 1, 4, 1], [], [5, 9, 2], [6], []]>

from_row_splits

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

@classmethod
from_row_splits(
    values, row_splits, name=None, validate=True
)

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

Возвращаемый RaggedTensor соответствует списку Python, определённому:

result = [values[row_splits[i]:row_splits[i + 1]]
          for i in range(len(row_splits) - 1)]
Аргументы
values Возможный разряженный тензор с формой [nvals, ...].
row_splits 1-мерный целочисленный тензор с формой [nrows+1]. Не должен быть пустым и должен быть отсортирован по возрастанию. row_splits[0] должен быть нулём, а row_splits[-1] должен быть nvals.
name Префикс имени для RaggedTensor (необязательно).
validate Если True, то использовать утверждения для проверки того, что аргументы образуют допустимый RaggedTensor.
Возвращаемое значение
A RaggedTensor. result.rank = values.rank + 1. result.ragged_rank = values.ragged_rank + 1.
Исключения
ValueError Если row_splits является пустым списком.

Пример:

>>> print(tf.RaggedTensor.from_row_splits(
...     values=[3, 1, 4, 1, 5, 9, 2, 6],
...     row_splits=[0, 4, 4, 7, 8, 8]))
<tf.RaggedTensor [[3, 1, 4, 1], [], [5, 9, 2], [6], []]>

from_row_starts

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

@classmethod
from_row_starts(
    values, row_starts, name=None, validate=True
)

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

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

Аргументы
values Возможный нерегулярный тензор с формой [nvals, ...].
row_starts 1-мерный целочисленный тензор с формой [nrows]. Должен быть неотрицательным и отсортированным по возрастанию. Если nrows>0, то row_starts[0] должно быть нулём.
name Префикс имени для RaggedTensor (необязательно).
validate Если true, то использовать утверждения для проверки, что аргументы образуют корректный RaggedTensor.
Возвращаемое значение
RaggedTensor. result.rank = values.rank + 1. result.ragged_rank = values.ragged_rank + 1.

Пример:

>>> print(tf.RaggedTensor.from_row_starts(
...     values=[3, 1, 4, 1, 5, 9, 2, 6],
...     row_starts=[0, 4, 4, 7, 8]))
<tf.RaggedTensor [[3, 1, 4, 1], [], [5, 9, 2], [6], []]>

from_sparse

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

@classmethod
from_sparse(
    st_input, name=None, row_splits_dtype=tf.dtypes.int64
)

Преобразует двумерный tf.SparseTensor в RaggedTensor.

Каждая строка output RaggedTensor будет содержать явные значения из той же строки в st_input. st_input должен быть справа-растянутым. Если нет, то будет сгенерирована ошибка.

Пример:

st = SparseTensor(indices=[[0, 1], [0, 2], [0, 3], [1, 0], [3, 0]],
                  values=[1, 2, 3, 4, 5],
                  dense_shape=[4, 3])
rt.RaggedTensor.from_sparse(st).eval().tolist()
[[1, 2, 3], [4], [], [5]]

В настоящее время поддерживаются только двумерные SparseTensors.

Аргументы
st_input Преобразуемый разреженный тензор. Должен иметь ранг 2.
name Префикс имени для возвращаемых тензоров (необязательно).
row_splits_dtype dtype для RaggedTensor тензора возвращаемого row_splits значения. Один из tf.int32 или tf.int64.
Возвращаемое значение
RaggedTensor с теми же значениями, что и st_input. output.ragged_rank = rank(st_input) - 1. output.shape = [st_input.dense_shape[0], None].
Исключения
ValueError Если количество измерений в st_input не известно статически или не равно двум.

from_tensor

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

@classmethod
from_tensor(
    tensor, lengths=None, padding=None, ragged_rank=1, name=None,
    row_splits_dtype=tf.dtypes.int64
)

Преобразует tf.Tensor в RaggedTensor.

Множество отсутствующих/значений по умолчанию может быть указано с помощью вектора длин или значения заполнения (но не обоих). Если lengths указано, то возвращаемый тензор будет удовлетворять output[row] = tensor[row][:lengths[row]]. Если 'lengths' - список списков или кортеж списков, эти списки будут использоваться как вложенные длины строк. Если padding указано, то любой суффикс строки, состоящий целиком из padding будет исключен из возвращаемого RaggedTensor. Если ни lengths ни padding не указаны, то возвращаемый RaggedTensor не будет содержать отсутствующих/значений по умолчанию.

Примеры:

dt = tf.constant([[5, 7, 0], [0, 3, 0], [6, 0, 0]])
tf.RaggedTensor.from_tensor(dt)
<tf.RaggedTensor [[5, 7, 0], [0, 3, 0], [6, 0, 0]]>
tf.RaggedTensor.from_tensor(dt, lengths=[1, 0, 3])
<tf.RaggedTensor [[5], [], [6, 0, 0]]>

tf.RaggedTensor.from_tensor(dt, padding=0)

<pre class="devsite-click-to-copy prettyprint lang-py">
<code class="devsite-terminal" data-terminal-prefix="&gt;&gt;&gt;">dt = tf.constant([[[5, 0], [7, 0], [0, 0]],</code>
<code class="no-select nocode">                      [[0, 0], [3, 0], [0, 0]],</code>
<code class="no-select nocode">                      [[6, 0], [0, 0], [0, 0]]])</code>
<code class="devsite-terminal" data-terminal-prefix="&gt;&gt;&gt;">tf.RaggedTensor.from_tensor(dt, lengths=([2, 0, 3], [1, 1, 2, 0, 1]))</code>
<code class="no-select nocode">&lt;tf.RaggedTensor [[[5], [7]], [], [[6, 0], [], [0]]]&gt;</code>
</pre>

Аргументы
tensor Преобразуемый Tensor. Должен иметь ранг ragged_rank + 1 или выше.
lengths Необязательный набор длин строк, заданный с помощью 1-мерного целочисленного Tensor длиной, равной tensor.shape[0] (количество строк в tensor). Если указано, то output[row] будет содержать tensor[row][:lengths[row]]. Отрицательные длины обрабатываются как нулевые. Вы можете необязательно передать список или кортеж длин в этот аргумент, который будет использован как вложенные длины строк для построения разрозненного тензора с несколькими разрозненными измерениями.
padding Необязательное значение заполнения. Если указано, то любой суффикс строки, состоящий целиком из padding будет исключён из возвращаемого RaggedTensor. padding является Tensor с тем же типом, что и tensor и с shape=tensor.shape[ragged_rank + 1:].
ragged_rank Целое число, определяющее ранг разрозненности для возвращаемого RaggedTensor. Должно быть больше нуля.
name Префикс имени для возвращаемых тензоров (необязательно).
row_splits_dtype dtype для тензора RaggedTensor возвращаемого row_splits значения. Один из tf.int32 или tf.int64.
Возвращаемое значение
RaggedTensor со специфицированными ragged_rank. Форма возвращаемого разрозненного тензора совместима с формой tensor.
Исключения
ValueError Если оба lengths и padding указаны.

from_value_rowids

Просмотр исходного кода

@classmethod
from_value_rowids(
    values, value_rowids, nrows=None, name=None, validate=True
)

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

Возвращаемый RaggedTensor соответствует списку Python, определённому:

result = [[values[i] for i in range(len(values)) if value_rowids[i] == row]
          for row in range(nrows)]
Аргументы
values Вероятно, разряженный тензор с формой [nvals, ...].
value_rowids 1-мерный целочисленный тензор с формой [nvals], который однозначно соответствует values, и определяет индекс строки каждого значения. Должен быть неотрицательным и отсортирован по возрастанию.
nrows Целочисленная скалярная величина, определяющая количество строк. Она должна быть указана, если RaggedTensor может содержать пустые строки обучения. Должна быть больше value_rowids[-1] (или нуля, если value_rowids пустой). По умолчанию value_rowids[-1] (или ноль, если value_rowids пустой).
name Префикс имени для RaggedTensor (необязательно).
validate Если True, то использовать утверждения для проверки того, что аргументы образуют допустимый RaggedTensor.
Возвращаемое значение
RaggedTensor. result.rank = values.rank + 1. result.ragged_rank = values.ragged_rank + 1.
Исключения
ValueError Если nrows несовместимо с value_rowids.

Пример:

>>> print(tf.RaggedTensor.from_value_rowids(
...     values=[3, 1, 4, 1, 5, 9, 2, 6],
...     value_rowids=[0, 0, 0, 0, 2, 2, 2, 3],
...     nrows=5))
<tf.RaggedTensor [[3, 1, 4, 1], [], [5, 9, 2], [6], []]>

nested_row_lengths

Просмотр исходного кода

nested_row_lengths(
    name=None
)

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

rt.nested_row_lengths() является кортежем, содержащим row_lengths тензоры для всех разряженных измерений в rt, упорядоченных снаружи вовнутрь.

Аргументы
name Префикс имени для возвращаемых тензоров (необязательно).
Возвращаемое значение
Кортеж 1-мерных целочисленных Tensors. Длина кортежа равна self.ragged_rank.

nested_value_rowids

Просмотр исходного кода

nested_value_rowids(
    name=None
)

Возвращает кортеж, содержащий value_rowids для всех разряженных измерений.

rt.nested_value_rowids является кортежем, содержащим value_rowids тензоры для всех разряженных измерений в rt, упорядоченных снаружи вовнутрь. В частности, rt.nested_value_rowids = (rt.value_rowids(),) + value_ids где:

* `value_ids = ()` if `rt.values` is a `Tensor`.
* `value_ids = rt.values.nested_value_rowids` otherwise.
Аргументы
name Префикс имени для возвращаемых тензоров (необязательно).
Возвращаемое значение
Кортеж 1-мерных целочисленных Tensors.

Пример:

rt = ragged.constant([[[[3, 1, 4, 1], [], [5, 9, 2]], [], [[6], []]]])
for i, ids in enumerate(rt.nested_value_rowids()):
  print('row ids for dimension %d: %s' % (i+1, ids))
  row ids for dimension 1: [0]
  row ids for dimension 2: [0, 0, 0, 2, 2]
  row ids for dimension 3: [0, 0, 0, 0, 2, 2, 2, 3]
  

nrows

Просмотр исходного кода

nrows(
    out_type=None, name=None
)

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

То есть, размер внешнего измерения тензора.

Аргументы
out_type dtype для возвращаемого тензора. По умолчанию self.row_splits.dtype.
name Префикс имени для возвращаемого тензора (необязательно).
Возвращаемое значение
Скалярный Tensor с типом out_type.

Пример:

>>> rt = ragged.constant([[3, 1, 4, 1], [], [5, 9, 2], [6], []])
>>> rt.nrows()  # rt has 5 rows.
5

row_lengths

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

row_lengths(
    axis=1, name=None
)

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

rt.row_lengths()[i] указывает количество значений в i-й строке rt.

Аргументы
axis Целочисленная константа, указывающая ось, длины строк которой должны быть возвращены.
name Префикс имени для возвращаемого тензора (необязательно).
Возвращаемое значение
Возможный разрозненный целочисленный тензор с формой self.shape[:axis].
Исключения
ValueError Если axis выходит за пределы.

Пример:

>>> rt = ragged.constant([[[3, 1, 4], [1]], [], [[5, 9], [2]], [[6]], []])
>>> rt.row_lengths(rt)  # lengths of rows in rt
tf.Tensor([2, 0, 2, 1, 0])
>>> rt.row_lengths(axis=2)  # lengths of axis=2 rows.
<tf.RaggedTensor [[3, 1], [], [2, 1], [1], []]>

row_limits

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

row_limits(
    name=None
)

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

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

Аргументы
name Префикс имени для возвращаемого тензора (необязательно).
Возвращаемое значение
Целочисленный тензор 1-D с формой [nrows]. Возвращаемый тензор неотрицательный и отсортирован по возрастанию.

Пример:

>>> rt = ragged.constant([[3, 1, 4, 1], [], [5, 9, 2], [6], []])
>>> rt.values
tf.Tensor([3, 1, 4, 1, 5, 9, 2, 6])
>>> rt.row_limits()  # indices of row limits in rt.values
tf.Tensor([4, 4, 7, 8, 8])

row_starts

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

row_starts(
    name=None
)

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

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

Аргументы
name Префикс имени для возвращаемого тензора (необязательно).
Возвращаемое значение
Целочисленный тензор 1-D с формой [nrows]. Возвращаемый тензор неотрицательный и отсортирован по возрастанию.

Пример:

>>> rt = ragged.constant([[3, 1, 4, 1], [], [5, 9, 2], [6], []])
>>> rt.values
tf.Tensor([3, 1, 4, 1, 5, 9, 2, 6])
>>> rt.row_starts()  # indices of row starts in rt.values
tf.Tensor([0, 4, 4, 7, 8])

to_list

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

to_list()

Возвращает вложенный Python list со значениями для этого RaggedTensor.

Требуется, чтобы rt был создан в режиме выполнения eager.

Возвращаемое значение
Вложенный Python list.

to_sparse

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

to_sparse(
    name=None
)

Преобразует этот RaggedTensor в tf.SparseTensor.

Пример:

rt = ragged.constant([[1, 2, 3], [4], [], [5, 6]])
rt.to_sparse().eval()
SparseTensorValue(indices=[[0, 0], [0, 1], [0, 2], [1, 0], [3, 0], [3, 1]],
                  values=[1, 2, 3, 4, 5, 6],
                  dense_shape=[4, 3])
Аргументы
name Префикс имени для возвращаемых тензоров (необязательно).
Возвращаемое значение
SparseTensor с теми же значениями, что и self.

to_tensor

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

to_tensor(
    default_value=None, name=None
)

Преобразует этот RaggedTensor в tf.Tensor.

Пример:

rt = ragged.constant([[9, 8, 7], [], [6, 5], [4]])
print rt.to_tensor()
[[9 8 7]
 [0 0 0]
 [6 5 0]
 [4 0 0]]
Аргументы
default_value Значение для установки для индексов, не указанных в self. По умолчанию ноль. default_value должен быть совместим для передачи в self.shape[self.ragged_rank + 1:].
name Префикс имени для возвращаемых тензоров (необязательно).
Возвращаемое значение
Tensor с формой ragged.bounding_shape(self) и значениями, заданными непустыми значениями в self. Пустые значения присваиваются default_value.

value_rowids

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

value_rowids(
    name=None
)

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

rt.value_rowids() соответствует один к одному внешнему измерению rt.values и указывает строку, содержащую каждое значение. В частности, строка rt[row] состоит из значений rt.values[j] где rt.value_rowids()[j] == row.

Аргументы
name Префикс имени для возвращаемого тензора (необязательно).
Возвращаемое значение
Целочисленный Tensor 1-D с формой self.values.shape[:1]. Возвращаемый тензор неотрицательный и отсортирован по возрастанию.

Пример:

>>> rt = ragged.constant([[3, 1, 4, 1], [], [5, 9, 2], [6], []])
>>> rt.values
tf.Tensor([3, 1, 4, 1, 5, 9, 2, 6])
>>> rt.value_rowids()
tf.Tensor([0, 0, 0, 0, 2, 2, 2, 3])  # corresponds 1:1 with rt.values

with_flat_values

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

with_flat_values(
    new_values
)

Возвращает копию self со значениями flat_values замененными на new_value.

Сохраняет кэшированные тензоры разбиения строк, такие как self.cached_nrows и self.cached_value_rowids если у них есть значения.

Аргументы
new_values Возможный разрозненный тензор, который должен заменить self.flat_values. Должен иметь rank > 0, и должно быть то же количество строк, что и в self.flat_values.
Возвращаемое значение
RaggedTensor. result.rank = self.ragged_rank + new_values.rank. result.ragged_rank = self.ragged_rank + new_values.ragged_rank.

with_row_splits_dtype

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

with_row_splits_dtype(
    dtype
)

Возвращает копию этого RaggedTensor с заданным типом row_splits.

Для RaggedTensor с несколькими разрозненными измерениями row_splits для всех вложенных RaggedTensor объектов преобразуются в указанный тип.

Аргументы
dtype Тип row_splits. Один из tf.int32 или tf.int64.
Возвращаемое значение
Копия этого RaggedTensor, с row_splits преобразованием в указанный тип.

with_values

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

with_values(
    new_values
)

Возвращает копию self со значениями values замененными на new_value.

Сохраняет кэшированные тензоры разбиения строк, такие как self.cached_nrows и self.cached_value_rowids если у них есть значения.

Args
new_values Возможный разреженный тензор, используемый в качестве values для возвращаемого RaggedTensor. Должен иметь rank > 0, и количество строк должно совпадать с количеством строк в self.values.
Returns
A RaggedTensor. result.rank = 1 + new_values.rank. result.ragged_rank = 1 + new_values.ragged_rank

__abs__

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

__abs__(
    x, name=None
)

Вычисляет абсолютное значение тензора.

Принимая тензор целочисленных или вещественных значений, эта операция возвращает тензор того же типа, где каждый элемент содержит абсолютное значение соответствующего элемента на входе.

Принимая тензор x комплексных чисел, эта операция возвращает тензор типа float32 или float64, который представляет собой абсолютное значение каждого элемента в x. Все элементы в x должны быть комплексными числами вида \(a + bj\). Абсолютное значение вычисляется как \( \sqrt{a^2 + b^2}\). Например:

x = tf.constant([[-2.25 + 4.75j], [-3.25 + 5.75j]])
tf.abs(x)  # [5.25594902, 6.60492229]
Args
x A Tensor или SparseTensor типа float16, float32, float64, int32, int64, complex64 или complex128.
name Имя операции (необязательно).
Returns
A Tensor или SparseTensor того же размера, типа и разреженности, что и x с абсолютными значениями. Обратите внимание, что для complex64 или complex128 входных данных, возвращаемый Tensor будет типа float32 или float64, соответственно.

Если x является SparseTensor, возвращает SparseTensor(x.indices, tf.math.abs(x.values, ...), x.dense_shape)

__add__

__add__(
    x, y, name=None
)

Возвращает x + y поэлементно.

Примечание: math.add поддерживает векторизацию. AddN не поддерживает. Подробнее о векторизации здесь
Args
x A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, uint8, int8, int16, int32, int64, complex64, complex128, string.
y A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Returns
A Tensor. Имеет тот же тип, что и x.

__and__

__and__(
    x, y, name=None
)

Возвращает логическое И поэлементно.

Примечание: math.logical_and поддерживает векторизацию. Подробнее о векторизации здесь
Args
x A Tensor типа bool.
y A Tensor типа bool.
name Имя операции (необязательно).
Returns
A Tensor типа bool.

__bool__

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

__bool__(
    _
)

Метод-заглушка для предотвращения использования RaggedTensor как Python bool.

__div__

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

__div__(
    x, y, name=None
)

Делит x / y поэлементно (используя семантику оператора деления Python 2). (устарело)

Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: Устарело в пользу оператора или tf.math.divide.
Примечание: Предпочтительнее использовать оператор деления тензора или tf.divide, которые подчиняются семантике оператора деления Python 3.

Эта функция делит x и y, принуждая к семантике Python 2. То есть, если x и y являются целыми числами, результат будет целым числом. Это в отличие от Python 3, где деление с / всегда является вещественным числом, а деление с // всегда является целым числом.

Args
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Returns
x / y возвращает частное x и y.

__floordiv__

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

__floordiv__(
    x, y, name=None
)

Делит x / y поэлементно, округляя к ближайшему меньшему целому.

То же самое, что и tf.compat.v1.div(x,y) для целых чисел, но использует tf.floor(tf.compat.v1.div(x,y)) для вещественных аргументов, чтобы результат всегда был целым числом (возможно, целым числом, представленным как вещественное число). Эта операция генерируется операцией деления по модулю в Python 3 и в Python 2.7 с from __future__ import division.

x и y должны иметь одинаковый тип, и результат также будет иметь тот же тип.

Args
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Returns
x / y округляется вниз.
Raises
TypeError Если входные данные являются комплексными.

__ge__

__ge__(
    x, y, name=None
)

Возвращает логическое значение (x >= y) поэлементно.

Примечание: math.greater_equal поддерживает векторизацию. Подробнее о векторизации здесь
Args
x A Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Returns
A Tensor типа bool.

__getitem__

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

__getitem__(
    key
)

Возвращает указанный фрагмент этого RaggedTensor.

Поддерживает многомерную индексацию и срезы с одним ограничением: индексация в разреженную внутреннюю размерность не разрешена. Этот случай проблематичен, поскольку указанное значение может существовать в некоторых строках, но не в других. В таких случаях неясно, следует ли (1) сообщать об ошибке IndexError; (2) использовать значение по умолчанию; или (3) пропустить это значение и вернуть тензор с меньшим количеством строк, чем первоначальное. Следуя руководящим принципам Python («В случае неоднозначности, откажитесь от искушения догадываться»), мы просто запрещаем эту операцию.

Любые измерения, добавленные array_ops.newaxis, будут разреженными, если следующий размер разреженный.

Аргументы
self Объект RaggedTensor, который нужно разделить.
key Указывает, какой фрагмент RaggedTensor вернуть, используя стандартную семантику Python (например, отрицательные значения индексируют с конца). key может иметь любой из следующих типов:
  • int константа
  • Скалярное целое число Tensor
  • slice содержащий целочисленные константы и/или скалярные целые Tensor
  • Ellipsis
  • tf.newaxis
  • tuple содержащий любой из вышеперечисленных (для многомерной индексации)
Возвращаемое значение
Объект Tensor или RaggedTensor. Значения, содержащие по крайней мере одну раздробленную размерность, возвращаются как RaggedTensor. Значения, не содержащие раздробленных размерностей, возвращаются как Tensor. Смотрите примеры выражений, возвращающих Tensor по сравнению с RaggedTensor выше.
Исключения
ValueError Если key выходит за пределы границ.
ValueError Если key не поддерживается.
TypeError Если индексы в key имеют неподдерживаемый тип.

Примеры:

# A 2-D ragged tensor with 1 ragged dimension.
rt = ragged.constant([['a', 'b', 'c'], ['d', 'e'], ['f'], ['g']])
rt[0].eval().tolist()       # First row (1-D `Tensor`)
['a', 'b', 'c']
rt[:3].eval().tolist()      # First three rows (2-D RaggedTensor)
[['a', 'b', 'c'], ['d', 'e'], '[f'], [g']]
rt[3, 0].eval().tolist()    # 1st element of 4th row (scalar)
'g'

Трехмерный раздробленный тензор с двумя раздробленными измерениями.

rt = ragged.constant([[[1, 2, 3], [4]], ... [[5], [], [6]], ... [[7]], ... [[8, 9], [10]]]) rt[1].eval().tolist() # Вторая строка (2-мерный раздробленный тензор) [[5], [], [6]] rt[3, 0].eval().tolist() # Первый элемент четвёртой строки (1-мерный тензор) [8, 9] rt[:, 1:3].eval().tolist() # Элементы 1-3 каждой строки (3-мерный раздробленный тензор) [[[4]], [[], [6]], [], [[10]]] rt[:, -1:].eval().tolist() # Последний элемент каждой строки (3-мерный раздробленный тензор) [[[4]], [[6]], [[7]], [[10]]]

__gt__

__gt__(
    x, y, name=None
)

Возвращает логическое значение (x > y) поэлементно.

Примечание: math.greater поддерживает векторизацию. Подробнее о векторизации здесь
Аргументы
x Объект Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Объект Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
Объект Tensor типа bool.

__invert__

__invert__(
    x, name=None
)

Возвращает логическое значение НЕ x поэлементно.

Аргументы
x Объект Tensor типа bool.
name Имя операции (необязательно).
Возвращаемое значение
Объект Tensor типа bool.

__le__

__le__(
    x, y, name=None
)

Возвращает логическое значение (x <= y) поэлементно.

Примечание: math.less_equal поддерживает векторизацию. Подробнее о векторизации здесь
Аргументы
x Объект Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Объект Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
Объект Tensor типа bool.

__lt__

__lt__(
    x, y, name=None
)

Возвращает логическое значение (x < y) поэлементно.

Примечание: math.less поддерживает векторизацию. Подробнее о векторизации здесь
Аргументы
x Объект Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Объект Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
Объект Tensor типа bool.

__mod__

__mod__(
    x, y, name=None
)

Возвращает побитовое остаток от деления. Когда x < 0 или y < 0 истинно,

это соответствует семантике Python, где результат здесь согласуется с усечением при делении. Например: floor(x / y) * y + mod(x, y) = x.

Примечание: math.floormod поддерживает векторизацию. Подробнее о векторизации здесь
Аргументы
x Объект Tensor. Должен быть одного из следующих типов: int32, int64, bfloat16, half, float32, float64.
y Объект Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
Объект Tensor. Имеет тот же тип, что и x.

__mul__

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

__mul__(
    x, y, name=None
)

Возвращает x * y поэлементно.

Примечание: tf.multiply поддерживает векторизацию. Подробнее о векторизации здесь
Аргументы
x Объект Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128.
y Объект Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
Объект Tensor. Имеет тот же тип, что и x.

__neg__

__neg__(
    x, name=None
)

Вычисляет численное отрицательное значение поэлементно.

Т.е., \(y = -x\).

Аргументы
x Объект Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, int32, int64, complex64, complex128.
name Имя операции (необязательно).
Возвращает
A Tensor. Имеет тот же тип, что и x.

Если x является SparseTensor, возвращает SparseTensor(x.indices, tf.math.negative(x.values, ...), x.dense_shape)

__nonzero__

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

__nonzero__(
    _
)

Метод-заглушка для предотвращения использования RaggedTensor в качестве Python bool.

__or__

__or__(
    x, y, name=None
)

Возвращает логическое ИЛИ значений x и y поэлементно.

Примечание: math.logical_or поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Аргументы
x A Tensor типа bool.
y A Tensor типа bool.
name Имя операции (необязательно).
Возвращает
A Tensor типа bool.

__pow__

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

__pow__(
    x, y, name=None
)

Вычисляет степень одного значения по отношению к другому.

Учитывая тензор x и тензор y, эта операция вычисляет \(x^y\) для соответствующих элементов в x и y. Например:

x = tf.constant([[2, 2], [3, 3]])
y = tf.constant([[8, 16], [2, 3]])
tf.pow(x, y)  # [[256, 65536], [9, 27]]
Аргументы
x A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128.
y A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128.
name Имя операции (необязательно).
Возвращает
A Tensor.

__radd__

__radd__(
    x, y, name=None
)

Возвращает x + y поэлементно.

Примечание: math.add поддерживает вещание. AddN нет. Дополнительную информацию о вещании можно найти здесь
Аргументы
x A Tensor. Должен быть одним из следующих типов: bfloat16, half, float32, float64, uint8, int8, int16, int32, int64, complex64, complex128, string.
y A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращает
A Tensor. Имеет тот же тип, что и x.

__rand__

__rand__(
    x, y, name=None
)

Возвращает логическое И значений x и y поэлементно.

Примечание: math.logical_and поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Аргументы
x A Tensor типа bool.
y A Tensor типа bool.
name Имя операции (необязательно).
Возвращает
A Tensor типа bool.

__rdiv__

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

__rdiv__(
    x, y, name=None
)

(Устаревшая) Делит x / y поэлементно (используя семантику оператора деления Python 2).

Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: Заменена на оператор или tf.math.divide.
Примечание: Предпочтительнее использовать оператор деления тензоров или tf.divide, которые подчиняются семантике оператора деления Python 3.

Эта функция делит x и y, принуждая к семантике Python 2. То есть, если x и y являются целыми числами, результат будет целым числом. Это отличается от Python 3, где деление с / всегда является числом с плавающей точкой, а деление с // всегда является целым числом.

Аргументы
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Возвращает
x / y возвращает частное x и y.

__rfloordiv__

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

__rfloordiv__(
    x, y, name=None
)

Делит x / y поэлементно, округляя к ближайшему наименьшему целому числу.

То же самое, что и tf.compat.v1.div(x,y) для целых чисел, но использует tf.floor(tf.compat.v1.div(x,y)) для аргументов с плавающей точкой, так что результат всегда является целым числом (хотя, возможно, целое число, представленное с плавающей точкой). Эта операция генерируется оператором целочисленного деления с округлением в Python 3 и в Python 2.7 с from __future__ import division.

x и y должны иметь тот же тип, и результат также будет иметь тот же тип.

Аргументы
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Возвращает
x / y округленное вниз.
Исключения
TypeError Если входные данные являются комплексными.

__rmod__

__rmod__(
    x, y, name=None
)

Возвращает поэлементное остаток от деления. Когда x < 0 xor y < 0 истинно, это соответствует семантике Python, в том, что результат здесь согласуется с делением с округлением до ближайшего целого. Например: floor(x / y) * y + mod(x, y) = x.

Примечание: math.floormod поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Аргументы
x A Tensor. Должен быть одним из следующих типов: int32, int64, bfloat16, half, float32, float64.
y A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращает
A Tensor. Имеет тот же тип, что и x.

__rmul__

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

__rmul__(
    x, y, name=None
)

Возвращает x * y поэлементно.

Примечание: tf.multiply поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Args
x A Tensor. Must be one of the following types: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128.
y A Tensor. Must have the same type as x.
name A name for the operation (optional).
Returns
A Tensor. Has the same type as x.

__ror__

__ror__(
    x, y, name=None
)

Возвращает истинностное значение x ИЛИ y поэлементно.

Примечание: math.logical_or поддерживает вещание. Дополнительная информация о вещании здесь
Args
x A Tensor of type bool.
y A Tensor of type bool.
name A name for the operation (optional).
Returns
A Tensor of type bool.

__rpow__

View source

__rpow__(
    x, y, name=None
)

Вычисляет степень одного значения по отношению к другому.

Учитывая тензор x и тензор y, эта операция вычисляет \(x^y\) для соответствующих элементов в x и y. Например:

x = tf.constant([[2, 2], [3, 3]])
y = tf.constant([[8, 16], [2, 3]])
tf.pow(x, y)  # [[256, 65536], [9, 27]]
Args
x A Tensor of type float16, float32, float64, int32, int64, complex64, or complex128.
y A Tensor of type float16, float32, float64, int32, int64, complex64, or complex128.
name A name for the operation (optional).
Returns
A Tensor.

__rsub__

View source

__rsub__(
    x, y, name=None
)

Возвращает x - y поэлементно.

Примечание: Subtract поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Args
x A Tensor. Must be one of the following types: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128.
y A Tensor. Must have the same type as x.
name A name for the operation (optional).
Returns
A Tensor. Has the same type as x.

__rtruediv__

View source

__rtruediv__(
    x, y, name=None
)

Делит x / y поэлементно (используя семантику оператора деления Python 3).

Примечание: Предпочтительнее использовать оператор Tensor или tf.divide, которые следуют семантике оператора деления Python.

Эта функция принуждает семантику оператора деления Python 3, где все целочисленные аргументы сначала преобразуются в типы с плавающей запятой. Эта операция генерируется обычным оператором деления x / y в Python 3 и в Python 2.7 с from __future__ import division. Если вам нужна целочисленная операция деления, округляющая вниз, используйте x // y или tf.math.floordiv.

x и y должны иметь одинаковый числовой тип. Если входные данные являются числами с плавающей запятой, выходной тип будет таким же. Если входные данные являются целыми, входные данные преобразуются в float32 для int8 и int16 и float64 для int32 и int64 (соответствуя поведению Numpy).

Args
x Tensor числитель числового типа.
y Tensor знаменатель числового типа.
name A name for the operation (optional).
Returns
x / y вычисленное в формате с плавающей запятой.
Raises
TypeError Если x и y имеют разные типы.

__rxor__

View source

__rxor__(
    x, y, name='LogicalXor'
)

Логическая функция XOR.

x ^ y = (x | y) & ~(x & y)

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

Usage:

x = tf.constant([False, False, True, True], dtype = tf.bool)
y = tf.constant([False, True, False, True], dtype = tf.bool)
z = tf.logical_xor(x, y, name="LogicalXor")
#  here z = [False  True  True False]
Args
x A Tensor type bool.
y A Tensor of type bool.
Returns
A Tensor of type bool с таким же размером, как x или y.

__sub__

View source

__sub__(
    x, y, name=None
)

Возвращает x - y поэлементно.

Примечание: Subtract поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Args
x A Tensor. Must be one of the following types: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128.
y A Tensor. Must have the same type as x.
name A name for the operation (optional).
Returns
A Tensor. Has the same type as x.

__truediv__

View source

__truediv__(
    x, y, name=None
)

Делит x / y поэлементно (используя семантику оператора деления Python 3).

Примечание: Предпочтительнее использовать оператор Tensor или tf.divide, которые следуют семантике оператора деления Python.

Эта функция принуждает семантику оператора деления Python 3, где все целочисленные аргументы сначала преобразуются в типы с плавающей запятой. Эта операция генерируется обычным оператором деления x / y в Python 3 и в Python 2.7 с from __future__ import division. Если вам нужна целочисленная операция деления, округляющая вниз, используйте x // y или tf.math.floordiv.

x и y должны иметь одинаковый числовой тип. Если входные данные являются числами с плавающей запятой, выходной тип будет таким же. Если входные данные являются целыми, входные данные преобразуются в float32 для int8 и int16 и float64 для int32 и int64 (соответствуя поведению Numpy).

Аргументы
x Tensor числитель числового типа.
y Tensor знаменатель числового типа.
name Имя операции (необязательно).
Возвращает
x / y вычисленное в формате с плавающей точкой.
Возможные исключения
TypeError Если x и y имеют разные типы данных.

__xor__

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

__xor__(
    x, y, name='LogicalXor'
)

Логическая функция XOR.

x ^ y = (x | y) & ~(x & y)

Ввод — это тензор, и если тензор содержит более одного элемента, вычисляется поэлементное логическое XOR.

Использование:

x = tf.constant([False, False, True, True], dtype = tf.bool)
y = tf.constant([False, True, False, True], dtype = tf.bool)
z = tf.logical_xor(x, y, name="LogicalXor")
#  here z = [False  True  True False]
Аргументы
x Тип Tensor bool.
y Тип Tensor bool.
Возвращает
Тип Tensor bool с тем же размером, что и x или y.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/RaggedTensor

Spec-Zone.ru

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