Разреженная матрица умножает две матрицы CSR `a` и `b`.
Выполняет матричное умножение разреженной матрицы «a» на разреженную матрицу «b»; возвращает разреженную матрицу `a * b`, если только `a` или `b` не транспонированы или не присоединены.
Каждая матрица может быть транспонирована или присоединена (сопряжена и транспонирована) в соответствии с логическими параметрами `transpose_a`, `adjoint_a`, `transpose_b` и `adjoint_b`. Максимум одно из значений `transpose_a` или `adjoint_a` может быть истинным. Аналогично, не более одного из значений `transpose_b` или `adjoint_b` может быть истинным.
Входные данные должны иметь совместимые формы. То есть внутренний размер «а» должен быть равен внешнему размеру «b». Это требование корректируется в зависимости от того, транспонировано или присоединено либо `a`, либо `b`.
Параметр type обозначает тип элементов матрицы. И `a`, и `b` должны иметь один и тот же тип. Поддерживаемые типы: float32, float64, complex64 и complex128.
И `a`, и `b` должны иметь одинаковый ранг. Вещание не поддерживается. Если они имеют ранг 3, каждая партия 2D CSRSparseMatrics внутри `a` и `b` должна иметь одинаковую плотную форму.
Продукт разреженной матрицы может иметь числовые (неструктурные) нули. TODO(anudhyan): Рассмотрите возможность добавления логического атрибута, чтобы контролировать, нужно ли удалять нули.
Пример использования:
from tensorflow.python.ops.linalg.sparse import sparse_csr_matrix_ops
a_indices = np.array([[0, 0], [2, 3], [2, 4], [3, 0]])
a_values = np.array([1.0, 5.0, -1.0, -2.0], np.float32)
a_dense_shape = [4, 5]
b_indices = np.array([[0, 0], [3, 0], [3, 1]])
b_values = np.array([2.0, 7.0, 8.0], np.float32)
b_dense_shape = [5, 3]
with tf.Session() as sess:
# Define (COO format) Sparse Tensors over Numpy arrays
a_st = tf.sparse.SparseTensor(a_indices, a_values, a_dense_shape)
b_st = tf.sparse.SparseTensor(b_indices, b_values, b_dense_shape)
# Convert SparseTensors to CSR SparseMatrix
a_sm = sparse_csr_matrix_ops.sparse_tensor_to_csr_sparse_matrix(
a_st.indices, a_st.values, a_st.dense_shape)
b_sm = sparse_csr_matrix_ops.sparse_tensor_to_csr_sparse_matrix(
b_st.indices, b_st.values, b_st.dense_shape)
# Compute the CSR SparseMatrix matrix multiplication
c_sm = sparse_csr_matrix_ops.sparse_matrix_sparse_mat_mul(
a=a_sm, b=b_sm, type=tf.float32)
# Convert the CSR SparseMatrix product to a dense Tensor
c_sm_dense = sparse_csr_matrix_ops.csr_sparse_matrix_to_dense(
c_sm, tf.float32)
# Evaluate the dense Tensor value
c_sm_dense_value = sess.run(c_sm_dense)
`c_sm_dense_value` хранит продукт плотной матрицы: [[ 2. 0. 0.]
[ 0. 0. 0.]
[ 35. 40. 0.]
[ -4. 0. 0.]]
a: CSRSparseMatrix. b: CSRSparseMatrix того же типа и ранга, что и a. type: Тип `a` и `b`. transpose_a: Если True, `a` транспонируется перед умножением. transpose_b: Если True, `b` транспонируется перед умножением. adjoint_a: Если True, `a` присоединяется перед умножением. adjoint_b: если True, `b` присоединяется перед умножением. Вложенные классы
сорт | SparseMatrixSparseMatMul.Options | Дополнительные атрибуты для SparseMatrixSparseMatMul |
Константы
Нить | OP_NAME | Название этой операции, известное основному движку TensorFlow. |
Публичные методы
статический SparseMatrixSparseMatMul.Options | adjointA (логическое значение adjointA) |
статический SparseMatrixSparseMatMul.Options | adjointB (логическое значение adjointB) |
Выход < Ттип > | какВывод () Возвращает символический дескриптор тензора. |
Вывод <?> | в () CSRSparseMatrix. |
static <T расширяет TType > SparseMatrixSparseMatMul | create (Область действия , Операнд <?> a, Операнд <?> b, Тип Class<T>, Параметры... параметры) Фабричный метод для создания класса, обертывающего новую операцию SparseMatrixSparseMatMul. |
статический SparseMatrixSparseMatMul.Options | transposeA (логическое значение transposeA) |
статический SparseMatrixSparseMatMul.Options | transposeB (логическое значение transposeB) |
Унаследованные методы
Константы
общедоступная статическая финальная строка OP_NAME
Название этой операции, известное основному движку TensorFlow.
Публичные методы
общедоступный статический SparseMatrixSparseMatMul.Options adjointA (логическое значение adjointA)
Параметры
примыкающийА | Указывает, должно ли `a` быть сопряженно-транспонированным. |
---|
общедоступный статический SparseMatrixSparseMatMul.Options adjointB (логическое значение adjointB)
Параметры
примыкающий B | Указывает, должен ли `b` быть сопряженно-транспонированным. |
---|
публичный вывод < TType > asOutput ()
Возвращает символический дескриптор тензора.
Входные данные для операций TensorFlow являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.
public static SparseMatrixSparseMatMul create ( область действия, операнд <?> a, операнд <?> b, тип класса<T>, параметры... параметры)
Фабричный метод для создания класса, обертывающего новую операцию SparseMatrixSparseMatMul.
Параметры
объем | текущий объем |
---|---|
а | CSRSparseMatrix. |
б | CSRSparseMatrix. |
параметры | содержит значения необязательных атрибутов |
Возврат
- новый экземпляр SparseMatrixSparseMatMul
public static SparseMatrixSparseMatMul.Options transposeA (логическое значение transposeA)
Параметры
транспонироватьА | Указывает, следует ли транспонировать `a`. |
---|
общедоступный статический SparseMatrixSparseMatMul.Options transposeB (логическое значение transposeB)
Параметры
транспонировать Б | Указывает, следует ли транспонировать `b`. |
---|