Fills empty rows in the input 2-D SparseTensor with a default value.

The input SparseTensor is represented via the tuple of inputs (indices, values, dense_shape). The output SparseTensor has the same dense_shape but with indices output_indices and values output_values.

This op inserts a single entry for every row that doesn't have any values. The index is created as [row, 0, ..., 0] and the inserted value is default_value.

For example, suppose sp_input has shape [5, 6] and non-empty values:

[0, 1]: a
[0, 3]: b
[2, 0]: c
[3, 1]: d

Rows 1 and 4 are empty, so the output will be of shape [5, 6] with values:

[0, 1]: a
[0, 3]: b
[1, 0]: default_value
[2, 0]: c
[3, 1]: d
[4, 0]: default_value

The output SparseTensor will be in row-major order and will have the same shape as the input.

This op also returns an indicator vector shaped [dense_shape[0]] such that

empty_row_indicator[i] = True iff row i was an empty row.

And a reverse index map vector shaped [indices.shape[0]] that is used during backpropagation,

reverse_index_map[j] = out_j s.t. indices[j, :] == output_indices[out_j, :]

indices A Tensor of type int64. 2-D. the indices of the sparse tensor.
values A Tensor. 1-D. the values of the sparse tensor.
dense_shape A Tensor of type int64. 1-D. the shape of the sparse tensor.
default_value A Tensor. Must have the same type as values. 0-D. default value to insert into location [row, 0, ..., 0] for rows missing from the input sparse tensor. output indices: 2-D. the indices of the filled sparse tensor.
name A name for the operation (optional).

A tuple of Tensor objects (output_indices, output_values, empty_row_indicator, reverse_index_map).
output_indices A Tensor of type int64.
output_values A Tensor. Has the same type as values.
empty_row_indicator A Tensor of type bool.
reverse_index_map A Tensor of type int64.