TensorFlow 1 version
|
View source on GitHub
|
Creates a constant tensor from a tensor-like object.
tf.constant(
value, dtype=None, shape=None, name='Const'
)
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([1, 2, 3, 4, 5, 6], dtype=tf.float64)<tf.Tensor: shape=(6,), dtype=float64,numpy=array([1., 2., 3., 4., 5., 6.])>
If shape is set, the value is reshaped to match. Scalars are expanded to
fill the shape:
tf.constant(0, shape=(2, 3))<tf.Tensor: shape=(2, 3), dtype=int32, numpy=array([[0, 0, 0],[0, 0, 0]], dtype=int32)>tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])<tf.Tensor: shape=(2, 3), dtype=int32, numpy=array([[1, 2, 3],[4, 5, 6]], dtype=int32)>
tf.constant has no effect if an eager Tensor is passed as the value, it
even transmits gradients:
v = tf.Variable([0.0])with tf.GradientTape() as g:loss = tf.constant(v + v)g.gradient(loss, v).numpy()array([2.], dtype=float32)
But, since tf.constant embeds the value in the tf.Graph this fails for
symbolic tensors:
i = tf.keras.layers.Input(shape=[None, None])t = tf.constant(i)Traceback (most recent call last):NotImplementedError: ...
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.)
Related Ops:
tf.convert_to_tensoris similar but:- It has no
shapeargument. - Symbolic tensors are allowed to pass through.
- It has no
i = tf.keras.layers.Input(shape=[None, None])t = tf.convert_to_tensor(i)
tf.fill: differs in a few ways:tf.constantsupports arbitrary constants, not just uniform scalar Tensors liketf.fill.tf.fillcreates an Op in the graph that is expanded at runtime, so it can efficiently represent large tensors.- Since
tf.filldoes not embed the value, it can produce dynamically sized outputs.
Args | |
|---|---|
value
|
A constant value (or list) of output type dtype.
|
dtype
|
The type of the elements of the resulting tensor. |
shape
|
Optional dimensions of resulting tensor. |
name
|
Optional name for the tensor. |
Returns | |
|---|---|
| A Constant Tensor. |
Raises | |
|---|---|
TypeError
|
if shape is incorrectly specified or unsupported. |
ValueError
|
if called on a symbolic tensor. |
TensorFlow 1 version
View source on GitHub