# tf.compat.v1.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#L3120-L3172) |

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

    tf.compat.v1.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.placeholder`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/compat/v1/placeholder).
[`tf.function`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/function) arguments also do the job of [`tf.compat.v1.placeholder`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/compat/v1/placeholder).
For more details please read [Better
performance with tf.function](https://www.tensorflow.org/guide/function).

<br />

<br />

## Description

> [!IMPORTANT]
> **Important:** This 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.placeholder(tf.float32, shape=(1024, 1024))
    y = tf.matmul(x, x)

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

      rand_array = np.random.rand(1024, 1024)
      print(sess.run(y, feed_dict={x: rand_array}))  # Will succeed.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `dtype` | The type of 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 tensor of any shape. |
| `name` | A name for the operation (optional). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `Tensor` 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 />