Spec-Zone.ru › TensorFlow

tf.sparse.SparseTensor

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

Просмотр псевдонимов

Основные псевдонимы

tf.SparseTensor

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

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

tf.compat.v1.SparseTensor, tf.compat.v1.sparse.SparseTensor

tf.sparse.SparseTensor(
    indices, values, dense_shape
)

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

Используется в руководстве Используется в учебных пособиях
  • Работа с разреженными тензорами
  • Миграция с TPU embedding_columns на слой TPUEmbedding
  • tf.data: Создание входных конвейеров TensorFlow
  • Разреженные тензоры
  • Введение в тензоры
  • Эффективное для клиентов обучение больших моделей с помощью `federated_select` и разреженной агрегации
  • Генерация текста с помощью RNN
  • Обучающее пособие по компоненту TFX Estimator
  • Обучающее пособие по компоненту TFX Keras
  • Обучение нейронным структурам на основе графов в TFX

TensorFlow представляет разреженный тензор в виде трех отдельных плотных тензоров: indices, values и dense_shape. В Python три тензора объединены в класс SparseTensor для удобства использования. Если у вас есть отдельные indices, values и dense_shape тензоры, оберните их в объект SparseTensor перед передачей в операции ниже.

Конкретно, разреженный тензор SparseTensor(indices, values, dense_shape) состоит из следующих компонентов, где N и ndims — количество значений и размерность в SparseTensor соответственно:

  • indices: 2-мерный тензор int64 формы [N, ndims], который указывает индексы элементов в разреженном тензоре, содержащие ненулевые значения (элементы нумеруются с нуля). Например, indices=[[1,3], [2,4]] указывает, что элементы с индексами [1,3] и [2,4] имеют ненулевые значения.

  • values: 1-мерный тензор любого типа и формы [N], который предоставляет значения для каждого элемента в indices. Например, учитывая indices=[[1,3], [2,4]], параметр values=[18, 3.6] указывает, что элемент [1,3] разреженного тензора имеет значение 18, а элемент [2,4] — значение 3,6.

  • dense_shape: 1-мерный тензор int64 формы [ndims], который указывает dense_shape разреженного тензора. Принимает список, указывающий количество элементов в каждой размерности. Например, dense_shape=[3,6] указывает двумерный тензор 3x6, dense_shape=[2,3,4] указывает трехмерный тензор 2x3x4, а dense_shape=[9] указывает одномерный тензор с 9 элементами.

Соответствующий плотный тензор удовлетворяет:

dense.shape = dense_shape
dense[tuple(indices[i])] = values[i]

Согласно соглашению, indices должен быть отсортирован в порядке строк (или, эквивалентно, в лексикографическом порядке по кортежам indices[i]). Это не проверяется при создании объектов SparseTensor, но большинство операций предполагают правильный порядок. Если порядок разреженного тензора st неверен, можно получить исправленную версию, вызвав tf.sparse.reorder(st).

Пример: Разреженный тензор

SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])

представляет плотный тензор

[[1, 0, 0, 0]
 [0, 0, 2, 0]
 [0, 0, 0, 0]]
Аргументы
indices 2-мерный тензор int64 формы [N, ndims].
values 1-мерный тензор любого типа и формы [N].
dense_shape 1-мерный тензор int64 формы [ndims].
Исключения
ValueError При создании нетерпеливого SparseTensor, если dense_shape неизвестно или содержит неизвестные элементы (None или -1).
Атрибуты
dense_shape 1-мерный тензор int64, представляющий форму плотного тензора.
dtype Количество элементов в этом тензоре.
graph Контейнер индексов, значений и dense_shape тензоров.
indices Индексы ненулевых значений в представленном плотном тензоре.
op Операция, производящая values в качестве выходного значения.
shape Получить TensorShape, представляющий форму плотного тензора.
values Не нулевые значения в представленном плотном тензоре.

Методы

consumers

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

consumers()

eval

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

eval(
    feed_dict=None, session=None
)

Вычисляет этот разреженный тензор в Session.

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

Примечание: Перед вызовом SparseTensor.eval() его граф должен быть запущен в сессии, и либо должна быть доступна сессия по умолчанию, либо session должна быть указана явно.
Аргументы
feed_dict Словарь, сопоставляющий объекты Tensor со значениями подкачки. См. tf.Session.run для описания допустимых значений подкачки.
session (Необязательно.) Сессия, которая будет использоваться для вычисления этого разреженного тензора. Если None, будет использована сессия по умолчанию.
Возвращаемое значение
Объект SparseTensorValue.

from_value

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

@classmethod
from_value(
    sparse_tensor_value
)

get_shape

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

get_shape() -> tf.TensorShape

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

Возвращаемое значение
Объект TensorShape.

set_shape

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

set_shape(
    shape
)

Обновляет TensorShape, представляющий форму плотного тензора.

При нетерпеливом выполнении это работает как утверждение формы. Здесь формы совпадают:

st = tf.SparseTensor(
  indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])
st.set_shape([3, 4])

Передача None в новой форме позволяет любое значение для этой оси:

st.set_shape([3, None])

Если передана несовместимая форма, возникает ошибка.

st.set_shape([1, 4])
Traceback (most recent call last):

ValueError: Tensor's shape (3, 4) is not compatible with supplied
shape [1, 4]

При выполнении в tf.function или построении модели с использованием tf.keras.Input, SparseTensor.set_shape объединит заданную shape с текущей формой этого тензора и установит форму тензора в объединенное значение (см. tf.TensorShape.merge_with для получения подробностей):

st = tf.keras.Input(shape=[None, None, 3], sparse=True)
print(st.shape)
(None, None, None, 3)

Размеры, заданные None, не обновляются:

st.set_shape([None, 224, 224, None])
print(st.shape)
(None, 224, 224, 3)

Основной сценарий использования этого — предоставление дополнительной информации о форме, которую нельзя вывести только из графа.

Внимание: set_shape гарантирует, что применённая форма совместима с существующей формой, но не проверяет это во время выполнения. Установка неправильных форм может привести к несоответствиям между статически известным графом и значением тензоров во время выполнения.
Аргументы
shape Представление формы этого тензора, являющееся TensorShape, списком, кортежем или None.
Исключения
ValueError Если shape несовместим с текущей формой этого тензора.

with_values

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

with_values(
    new_values
)

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

Этот метод создаёт новый SparseTensor, имеющий те же ненулевые indices и ту же dense_shape, но обновлённые значения.

Аргументы
new_values Значения нового SparseTensor. Должны иметь ту же форму, что и текущие значения .values Tensor. Могут иметь другой тип, чем текущие values.
Возвращаемое значение
SparseTensor с идентичными индексами и формой, но обновлёнными значениями.

Пример использования:

st = tf.sparse.from_dense([[1, 0, 2, 0], [3, 0, 0, 4]])
tf.sparse.to_dense(st.with_values([10, 20, 30, 40]))  # 4 nonzero values
<tf.Tensor: shape=(2, 4), dtype=int32, numpy=
array([[10,  0, 20,  0],
       [30,  0,  0, 40]], dtype=int32)>

__div__

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

__div__(
    y
)

Делит SparseTensor на плотный Tensor поэлементно.

Ограничение: этот оператор только транслирует плотный тензор к разреженному, но не наоборот.

Аргументы
sp_indices Tensor типа int64. 2-мерный. Матрица N x R с индексами ненулевых значений в SparseTensor, возможно, не в каноническом порядке.
sp_values Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, complex64, int64, qint8, quint8, qint32, bfloat16, qint16, quint16, uint16, complex128, half, uint32, uint64. 1-мерный. N ненулевые значения, соответствующие sp_indices.
sp_shape Tensor типа int64. 1-мерный. Форма входного SparseTensor.
dense Tensor. Должен иметь тот же тип, что и sp_values. R-мерный. Плотный операнд Tensor.
name Имя операции (необязательно).
Возвращаемое значение
Tensor. Имеет тот же тип, что и sp_values.

__mul__

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

__mul__(
    y
)

Поэлементно перемножает SparseTensor и плотный Tensor.

Местоположения выходных данных, соответствующие неявно нулевым элементам в разреженном тензоре, будут нулевыми (т.е. не будут занимать место в памяти), независимо от содержимого плотного тензора (даже если он +/-INF и INF*0 == NaN).

Ограничение: этот оператор только транслирует плотный тензор к разреженному, но не наоборот.

Аргументы
sp_indices Tensor типа int64. 2-мерный. Матрица N x R с индексами ненулевых значений в SparseTensor, возможно, не в каноническом порядке.
sp_values Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, complex64, int64, qint8, quint8, qint32, bfloat16, qint16, quint16, uint16, complex128, half, uint32, uint64. 1-мерный. N ненулевые значения, соответствующие sp_indices.
sp_shape Tensor типа int64. 1-мерный. Форма входного SparseTensor.
dense Tensor. Должен иметь тот же тип, что и sp_values. R-мерный. Плотный операнд Tensor.
name Имя операции (необязательно).
Возвращаемое значение
Tensor. Имеет тот же тип, что и sp_values.

__truediv__

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

__truediv__(
    y
)

Внутренняя вспомогательная функция для 'sp_t / dense_t'.

© 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/sparse/SparseTensor

Spec-Zone.ru

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