Spec-Zone.ru › TensorFlow 2.9

tf.sparse.SparseTensor

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

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

Псевдонимы

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

tf.SparseTensor

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

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

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

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

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: тензор любого типа и формы [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=[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 При создании разреженного тензора в режиме Eager, если форма dense_shape неизвестна или содержит неизвестные элементы (None или -1).
Атрибуты
dense_shape 1-мерный тензор int64, представляющий форму плотного тензора.
dtype Количество элементов в этом тензоре.
graph Контейнер, содержащий тензоры индекса, значения и dense_shape.
indices Индексы ненулевых значений в представленном плотном тензоре.
op Операция, которая производит values в качестве выходного значения.
shape Получить тензор, представляющий форму плотного тензора.
values Nенулевые значения в представленном плотном тензоре.

Методы

consumers

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

consumers()

eval

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

eval(
    feed_dict=None, session=None
)

Оценивает этот разреженный тензор в сессии.

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

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

from_value

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

@classmethod
from_value(
    sparse_tensor_value
)

get_shape

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

get_shape()

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

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

with_values

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

with_values(
    new_values
)

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

Этот метод создаёт новый разреженный тензор, который имеет те же ненулевые значения и ту же форму, но обновлённые значения.

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

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

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
)

Элемент-поэлементное деление разреженного тензора на плотный тензор.

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

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

__mul__

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

__mul__(
    y
)

Элемент-поэлементное умножение разреженного тензора на плотный тензор.

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

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

Аргументы
sp_indices A Tensor типа int64. 2-мерная. N x R матрица с индексами ненулевых значений в SparseTensor, возможно, не в каноническом порядке.
sp_values A Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, complex64, int64, qint8, quint8, qint32, bfloat16, uint16, complex128, half, uint32, uint64. 1-мерный. N ненулевые значения, соответствующие sp_indices.
sp_shape A Tensor типа int64. 1-мерный. Форма входного SparseTensor.
dense A Tensor. Должен иметь тот же тип, что и sp_values. R-мерный. Плотное операнд-тензор.
name Имя операции (необязательно).
Возвращаемое значение
A 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/versions/r2.9/api_docs/python/tf/sparse/SparseTensor

Spec-Zone.ru

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