# tf.compat.v1.sparse_placeholder

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.13.1/tensorflow/python/ops/array_ops.py#L3227-L3336) |

Inserts a placeholder for a sparse tensor that will be always fed.

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.sparse.placeholder`](https://www.tensorflow.org/api_docs/python/tf/compat/v1/sparse_placeholder)

<br />

    tf.compat.v1.sparse_placeholder(
        dtype, shape=None, name=None
    )

<br />

## Migrate to TF2

<br />

> [!CAUTION]
> **Caution:** This API was designed for TensorFlow v1. Continue reading for details on how to migrate from this API to a native TensorFlow v2 equivalent. See the [TensorFlow v1 to TensorFlow v2 migration guide](https://www.tensorflow.org/guide/migrate) for instructions on how to migrate the rest of your code.

This API is not compatible with eager execution and [`tf.function`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/function). To migrate
to TF2, rewrite the code to be compatible with eager execution. Check the
[migration
guide](https://www.tensorflow.org/guide/migrate#1_replace_v1sessionrun_calls)
on replacing `Session.run` calls. In TF2, you can just pass tensors directly
into ops and layers. If you want to explicitly set up your inputs, also see
[Keras functional API](https://www.tensorflow.org/guide/keras/functional) on
how to use [`tf.keras.Input`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/keras/Input) to replace [`tf.compat.v1.sparse_placeholder`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/compat/v1/sparse_placeholder).
[`tf.function`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/function) arguments also do the job of [`tf.compat.v1.sparse_placeholder`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/compat/v1/sparse_placeholder).
For more details please read [Better
performance with tf.function](https://www.tensorflow.org/guide/function).

<br />

<br />

## Description

> [!IMPORTANT]
> **Important:** This sparse tensor will produce an error if evaluated. Its value must be fed using the `feed_dict` optional argument to `Session.run()`, [`Tensor.eval()`](https://www.tensorflow.org/api_docs/python/tf/Tensor#eval), or [`Operation.run()`](https://www.tensorflow.org/api_docs/python/tf/Operation#run).

#### For example:

    x = tf.compat.v1.sparse.placeholder(tf.float32)
    y = tf.sparse.reduce_sum(x)

    with tf.compat.v1.Session() as sess:
      print(sess.run(y))  # ERROR: will fail because x was not fed.

      indices = np.array([[3, 2, 0], [4, 5, 1]], dtype=np.int64)
      values = np.array([1.0, 2.0], dtype=np.float32)
      shape = np.array([7, 9, 2], dtype=np.int64)
      print(sess.run(y, feed_dict={
        x: tf.compat.v1.SparseTensorValue(indices, values, shape)}))  # Will
        succeed.
      print(sess.run(y, feed_dict={
        x: (indices, values, shape)}))  # Will succeed.

      sp = tf.sparse.SparseTensor(indices=indices, values=values,
                                  dense_shape=shape)
      sp_value = sp.eval(session=sess)
      print(sess.run(y, feed_dict={x: sp_value}))  # Will succeed.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `dtype` | The type of `values` elements in the tensor to be fed. |
| `shape` | The shape of the tensor to be fed (optional). If the shape is not specified, you can feed a sparse tensor of any shape. |
| `name` | A name for prefixing the operations (optional). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `SparseTensor` that may be used as a handle for feeding a value, but not evaluated directly. ||

<br />

<br />

<br />

<br />

| ## Raises ||
|---|---|
| `RuntimeError` | if eager execution is enabled |

<br />