Se usó la API de Cloud Translation para traducir esta página.
Switch to English

tf.constant

Versión de TensorFlow 1 Ver fuente en GitHub

Crea un tensor constante a partir de un objeto similar a un tensor.

Usado en los cuadernos

Usado en la guía Usado en los tutoriales

Si no se especifica el argumento dtype , el tipo se infiere del tipo de 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 array
a = 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]])>

Si se especifica dtype los valores del tensor resultantes se dtype en el dtype solicitado.

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.])>

Si shape se establece, el value se forma de nuevo al partido. Los escalares se expanden para llenar la 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 no tiene ningún efecto si se pasa un tensor ansioso como value , incluso transmite gradientes:

v = tf.Variable([0.0])
with tf.GradientTape() as g:
    loss = tf.constant(v + v)
g.gradient(loss, v).numpy()
array([2.], dtype=float32)

Pero, dado que tf.constant incrusta el valor en el tf.Graph esto falla para los tensores simbólicos:

i = tf.keras.layers.Input(shape=[None, None])
t = tf.constant(i)
Traceback (most recent call last):

NotImplementedError: ...

tf.constant siempre creará tensores de CPU (host). Para crear tensores en otros dispositivos, use tf.identity . (Sin embargo, si el value es un tensor ansioso, el tensor se devolverá sin modificar como se mencionó anteriormente).

  • tf.convert_to_tensor es similar pero:
    • No tiene argumento de shape .
    • Se permite el paso de tensores simbólicos.
    i = tf.keras.layers.Input(shape=[None, None])
    t = tf.convert_to_tensor(i)
        
  • tf.fill : difiere de varias formas:
    • tf.constant admite constantes arbitrarias, no solo tensores escalares uniformes como tf.fill .
    • tf.fill crea una Op en el gráfico que se expande en tiempo de ejecución, por lo que puede representar de manera eficiente tensores grandes.
    • Dado que tf.fill no incrusta el valor, puede producir salidas de tamaño dinámico.

value Un valor constante (o lista) de tipo de salida dtype .
dtype El tipo de los elementos del tensor resultante.
shape Dimensiones opcionales del tensor resultante.
name Nombre opcional para el tensor.

Un tensor constante.

TypeError si la forma se especifica incorrectamente o no es compatible.
ValueError si se llama en un tensor simbólico.