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: двумерный тензор int64 формы [N, ndims], задающий индексы элементов разреженного тензора, содержащих ненулевые значения (индексация элементов начинается с нуля). Например, indices=[[1,3], [2,4]] указывает, что ненулевые значения есть у элементов с индексами [1,3] и [2,4].

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

  • dense_shape: одномерный тензор 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 Двумерный тензор int64 формы [N, ndims].
values Одномерный тензор любого типа формы [N].
dense_shape Одномерный тензор int64 формы [ndims].
Исключения
ValueError При создании SparseTensor в eager-режиме, если dense_shape не определен или содержит неизвестные элементы (None или -1).
Атрибуты
dense_shape Одномерный тензор int64, представляющий форму плотного тензора.
dtype DType элементов в этом тензоре.
graph Graph, содержащий тензоры индексов, значений и dense_shape.
indices Индексы ненулевых значений в представленном плотном тензоре.
op Operation, возвращающий values в качестве выходных данных.
shape Получить TensorShape, представляющий форму плотного тензора.
values Ненулевые значения в представленном плотном тензоре.

Методы

consumers

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

consumers()

eval

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

eval(
    feed_dict=None, session=None
)

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

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

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

from_value

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

@classmethod
from_value(
    sparse_tensor_value
)

get_shape

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

get_shape() -> tf.TensorShape

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

Возвращает
Объект TensorShape.

set_shape

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

set_shape(
    shape
)

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

При eager-выполнении этот метод выполняет проверку формы. В этом примере формы совпадают:

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, представляющий форму этого тензора, TensorShapeProto, список, кортеж или 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 на плотный тензор.

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

Аргументы
sp_indices Tensor типа int64. Двумерная матрица 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. Одномерный тензор N непустых значений, соответствующих sp_indices.
sp_shape Tensor типа int64. Одномерный тензор, задающий форму входного SparseTensor.
dense Tensor. Должен иметь тот же тип, что и sp_values. Тензор R-D — плотный операнд.
name Имя операции (необязательно).
Возвращает
Tensor. Имеет тот же тип, что и sp_values.

__mul__

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

__mul__(
    y
)

Выполняет поэлементное умножение SparseTensor на плотный тензор.

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

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

Аргументы
sp_indices Tensor типа int64. Двумерная матрица 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. Одномерный тензор N непустых значений, соответствующих sp_indices.
sp_shape Tensor типа int64. Одномерный тензор, задающий форму входного SparseTensor.
dense Tensor. Должен иметь тот же тип, что и sp_values. Тензор R-D — плотный операнд.
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