# tensorflow::ops::SparseTensorDenseMatMul

`#include <sparse_ops.h>`

[Multiply](https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/multiply#classtensorflow_1_1ops_1_1_multiply) SparseTensor (of rank 2) "A" by dense matrix "B".

## Summary

No validity checking is performed on the indices of A. However, the following input format is recommended for optimal behavior:

if adjoint_a == false: A should be sorted in lexicographically increasing order. Use [SparseReorder](https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-reorder#classtensorflow_1_1ops_1_1_sparse_reorder) if you're not sure. if adjoint_a == true: A should be sorted in order of increasing dimension 1 (i.e., "column major" order instead of "row major" order).

Arguments:

- scope: A [Scope](https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope) object
- a_indices: 2-D. The `indices` of the `SparseTensor`, size `[nnz, 2]` Matrix.
- a_values: 1-D. The `values` of the `SparseTensor`, size `[nnz]` Vector.
- a_shape: 1-D. The `shape` of the `SparseTensor`, size `[2]` Vector.
- b: 2-D. A dense Matrix.

<br />

Optional attributes (see `https://www.tensorflow.org/versions/r2.0/api_docs/cc/struct/tensorflow/ops/sparse-tensor-dense-mat-mul/attrs#structtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1_1_attrs`):

- adjoint_a: Use the adjoint of A in the matrix multiply. If A is complex, this is transpose(conj(A)). Otherwise it's transpose(A).
- adjoint_b: Use the adjoint of B in the matrix multiply. If B is complex, this is transpose(conj(B)). Otherwise it's transpose(B).

<br />

Returns:

- `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output`: The product tensor.

<br />

| ### Constructors and Destructors ||
|---|---|
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1adf1f689b8b8d0d72c059efbea5fb9cac(const ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input a_indices, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input a_values, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input a_shape, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input b)` ||
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1a3643c83b6940a54319e70b0bc094f948(const ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input a_indices, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input a_values, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input a_shape, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input b, const https://www.tensorflow.org/versions/r2.0/api_docs/cc/struct/tensorflow/ops/sparse-tensor-dense-mat-mul/attrs#structtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1_1_attrs & attrs)` ||

| ### Public attributes ||
|---|---|
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1a5213c7ac11f10109585773e8fe2cd041` | `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/operation#classtensorflow_1_1_operation` |
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1a8895f99af9af5585d8bd937b817bb0ae` | `::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output` |

| ### Public functions ||
|---|---|
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1a3c65317b9c1886136c7de4e03ec51641() const ` | `::tensorflow::Node *` |
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1ac394c138be85d3c36ae20b40f867d72c() const ` | ` `` ` |
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1a888b8f4b59aea6d4ff0bdeeba2ad5338() const ` | ` `` ` |

| ### Public static functions ||
|---|---|
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1a972ac5b3a5538d477e96e8d1d857ccca(bool x)` | `https://www.tensorflow.org/versions/r2.0/api_docs/cc/struct/tensorflow/ops/sparse-tensor-dense-mat-mul/attrs#structtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1_1_attrs` |
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1ac3e772adcb84c991bdd702ba2f6f7b98(bool x)` | `https://www.tensorflow.org/versions/r2.0/api_docs/cc/struct/tensorflow/ops/sparse-tensor-dense-mat-mul/attrs#structtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul_1_1_attrs` |

| ### Structs ||
|---|---|
| [tensorflow::ops::SparseTensorDenseMatMul::Attrs](https://www.tensorflow.org/versions/r2.0/api_docs/cc/struct/tensorflow/ops/sparse-tensor-dense-mat-mul/attrs) | Optional attribute setters for [SparseTensorDenseMatMul](https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-tensor-dense-mat-mul#classtensorflow_1_1ops_1_1_sparse_tensor_dense_mat_mul). |

## Public attributes

### operation

```
Operation operation
```

### product

```
::tensorflow::Output product
```

## Public functions

### SparseTensorDenseMatMul

```
 SparseTensorDenseMatMul(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input a_indices,
  ::tensorflow::Input a_values,
  ::tensorflow::Input a_shape,
  ::tensorflow::Input b
)
```

### SparseTensorDenseMatMul

```
 SparseTensorDenseMatMul(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input a_indices,
  ::tensorflow::Input a_values,
  ::tensorflow::Input a_shape,
  ::tensorflow::Input b,
  const SparseTensorDenseMatMul::Attrs & attrs
)
```

### node

```
::tensorflow::Node * node() const 
```

### operator::tensorflow::Input

```
 operator::tensorflow::Input() const 
```

### operator::tensorflow::Output

```
 operator::tensorflow::Output() const 
```

## Public static functions

### AdjointA

```
Attrs AdjointA(
  bool x
)
```

### AdjointB

```
Attrs AdjointB(
  bool x
)
```