tf.sparse.SparseTensor
| Просмотреть исходный код на GitHub |
Представляет разреженный тензор.
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: двумерный тензор 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=[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, если dense_shape неизвестно или содержит неизвестные элементы (None или -1). |
| Атрибуты | |
|---|---|
dense_shape | Одномерный тензор int64, представляющий форму плотного тензора. |
dtype | Количество элементов в этом тензоре. |
graph | Объект, содержащий тензоры индексов, значений и dense_shape. |
indices | Индексы ненулевых значений в представленном плотном тензоре. |
op | Операция, которая генерирует values в качестве выходного значения. |
shape | Получить форму, представляющую форму плотного тензора. |
values | Ненулевые значения в представленном плотном тензоре. |
Методы
consumers
consumers()
eval
eval(
feed_dict=None, session=None
)
Вычисляет этот разреженный тензор в сессии.
Вызов этого метода выполнит все предыдущие операции, необходимые для получения входных данных для операции, производящей этот тензор.
Примечание: Прежде чем вызыватьSparseTensor.eval(), граф должен быть запущен в сессии, и либо должна быть доступна стандартная сессия, либоsessionдолжна быть указана явно.
| Аргументы | |
|---|---|
feed_dict | Словарь, сопоставляющий объекты Tensor со значениями данных. См. tf.Session.run для описания допустимых значений данных. |
session | (Необязательно.) Сессия, которая будет использоваться для вычисления этого разреженного тензора. Если None, будет использована стандартная сессия. |
| Возвращает | |
|---|---|
Объект SparseTensorValue . |
from_value
@classmethod
from_value(
sparse_tensor_value
)
get_shape
get_shape()
Получить форму, представляющую форму плотного тензора.
| Возвращает | |
|---|---|
Объект TensorShape . |
__div__
__div__(
sp_x, y
)
Делит разреженный тензор на плотный тензор покомпонентно.
Ограничение: эта операция транслирует только плотный тензор в разреженный, но не в обратную сторону.
| Аргументы | |
|---|---|
sp_indices | Разреженный тензор типа int64. Двумерный. Матрица с индексами ненулевых значений в SparseTensor, возможно, не в каноническом порядке. |
sp_values | Плотный тензор. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, complex64, int64, qint8, quint8, qint32, bfloat16, uint16, complex128, half, uint32, uint64. Одномерный. |
sp_shape | Одномерный тензор типа int64. Форма входного разреженного тензора. |
dense | Плотный тензор. Должен иметь тот же тип, что и sp_values. Многомерный. Операнд плотного тензора. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Разреженный тензор. Имеет тот же тип, что и sp_values. |
__mul__
__mul__(
sp_x, 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__(
sp_x, y
)
Внутренняя вспомогательная функция для 'sp_t / dense_t'.
© 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/r2.3/api_docs/python/tf/sparse/SparseTensor