# tensorflow:: ops:: SparseTensorDenseMatMul

``` #include <sparse_ops.h> ```

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 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).

Args:

• scope: A 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.

Optional attributes (see ``` 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).

Returns:

• ``` Output ``` : The product tensor.

### Constructors and Destructors

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

### Public attributes

``` operation ```
``` Operation ```
``` product ```
``` :: tensorflow::Output ```

### Public functions

``` node () const ```
``` ::tensorflow::Node * ```
``` operator::tensorflow::Input () const ```
``` ```
``` operator::tensorflow::Output () const ```
``` ```

### Public static functions

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

### Structs

tensorflow:: ops:: SparseTensorDenseMatMul:: Attrs

Optional attribute setters for SparseTensorDenseMatMul .

## 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
)```
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]