If the argument dtype is not specified, then the type is inferred from
the type of value.
# Constant 1-D Tensor from a python list.tf.constant([1,2,3,4,5,6])<tf.Tensor:shape=(6,),dtype=int32,numpy=array([1,2,3,4,5,6],dtype=int32)># Or a numpy arraya=np.array([[1,2,3],[4,5,6]])tf.constant(a)<tf.Tensor:shape=(2,3),dtype=int64,numpy=array([[1,2,3],[4,5,6]])>
If dtype is specified the resulting tensor values are cast to the requested
dtype.
tf.constant will always create CPU (host) tensors. In order to create
tensors on other devices, use tf.identity. (If the value is an eager
Tensor, however, the tensor will be returned unmodified as mentioned above.)
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2020-10-01 UTC."],[],[],null,["# tf.constant\n\n\u003cbr /\u003e\n\n|---------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|\n| [TensorFlow 1 version](/versions/r1.15/api_docs/python/tf/constant) | [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/framework/constant_op.py#L164-L262) |\n\nCreates a constant tensor from a tensor-like object. \n\n tf.constant(\n value, dtype=None, shape=None, name='Const'\n )\n\n| **Note:** All eager [`tf.Tensor`](../tf/Tensor) values are immutable (in contrast to [`tf.Variable`](../tf/Variable)). There is nothing especially *constant* about the value returned from [`tf.constant`](../tf/constant). This function it is not fundamentally different from [`tf.convert_to_tensor`](../tf/convert_to_tensor). The name [`tf.constant`](../tf/constant) comes from the symbolic APIs (like [`tf.data`](../tf/data) or keras functional models) where the `value` is embeded in a `Const` node in the [`tf.Graph`](../tf/Graph). [`tf.constant`](../tf/constant) is useful for asserting that the value can be embedded that way.\n\nIf the argument `dtype` is not specified, then the type is inferred from\nthe type of `value`. \n\n # Constant 1-D Tensor from a python list.\n tf.constant([1, 2, 3, 4, 5, 6])\n \u003ctf.Tensor: shape=(6,), dtype=int32,\n numpy=array([1, 2, 3, 4, 5, 6], dtype=int32)\u003e\n # Or a numpy array\n a = np.array([[1, 2, 3], [4, 5, 6]])\n tf.constant(a)\n \u003ctf.Tensor: shape=(2, 3), dtype=int64, numpy=\n array([[1, 2, 3],\n [4, 5, 6]])\u003e\n\nIf `dtype` is specified the resulting tensor values are cast to the requested\n`dtype`. \n\n tf.constant([1, 2, 3, 4, 5, 6], dtype=tf.float64)\n \u003ctf.Tensor: shape=(6,), dtype=float64,\n numpy=array([1., 2., 3., 4., 5., 6.])\u003e\n\nIf `shape` is set, the `value` is reshaped to match. Scalars are expanded to\nfill the `shape`: \n\n tf.constant(0, shape=(2, 3))\n \u003ctf.Tensor: shape=(2, 3), dtype=int32, numpy=\n array([[0, 0, 0],\n [0, 0, 0]], dtype=int32)\u003e\n tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])\n \u003ctf.Tensor: shape=(2, 3), dtype=int32, numpy=\n array([[1, 2, 3],\n [4, 5, 6]], dtype=int32)\u003e\n\n[`tf.constant`](../tf/constant) has no effect if an eager Tensor is passed as the `value`, it\neven transmits gradients: \n\n v = tf.Variable([0.0])\n with tf.GradientTape() as g:\n loss = tf.constant(v + v)\n g.gradient(loss, v).numpy()\n array([2.], dtype=float32)\n\nBut, since [`tf.constant`](../tf/constant) embeds the value in the [`tf.Graph`](../tf/Graph) this fails for\nsymbolic tensors: \n\n i = tf.keras.layers.Input(shape=[None, None])\n t = tf.constant(i)\n Traceback (most recent call last):\n\n NotImplementedError: ...\n\n[`tf.constant`](../tf/constant) will *always* create CPU (host) tensors. In order to create\ntensors on other devices, use [`tf.identity`](../tf/identity). (If the `value` is an eager\nTensor, however, the tensor will be returned unmodified as mentioned above.)\n\n#### Related Ops:\n\n- [`tf.convert_to_tensor`](../tf/convert_to_tensor) is similar but:\n - It has no `shape` argument.\n - Symbolic tensors are allowed to pass through.\n\n i = tf.keras.layers.Input(shape=[None, None])\n t = tf.convert_to_tensor(i)\n \n- [`tf.fill`](../tf/fill): differs in a few ways:\n - [`tf.constant`](../tf/constant) supports arbitrary constants, not just uniform scalar Tensors like [`tf.fill`](../tf/fill).\n - [`tf.fill`](../tf/fill) creates an Op in the graph that is expanded at runtime, so it can efficiently represent large tensors.\n - Since [`tf.fill`](../tf/fill) does not embed the value, it can produce dynamically sized outputs.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------|----------------------------------------------------|\n| `value` | A constant value (or list) of output type `dtype`. |\n| `dtype` | The type of the elements of the resulting tensor. |\n| `shape` | Optional dimensions of resulting tensor. |\n| `name` | Optional name for the tensor. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| A Constant Tensor. ||\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|--------------|---------------------------------------------------|\n| `TypeError` | if shape is incorrectly specified or unsupported. |\n| `ValueError` | if called on a symbolic tensor. |\n\n\u003cbr /\u003e"]]