Spec-Zone.ru › TensorFlow 2.4

tf.constant

Просмотреть исходный код на GitHub

Создаёт тензор-константу из объекта, подобного тензору.

tf.constant(
    value, dtype=None, shape=None, name='Const'
)
Примечание: Все значения eager tf.Tensor неизменяемы (в отличие от tf.Variable). В значении, возвращаемом из tf.constant, нет ничего особенно постоянного. Эта функция не принципиально отличается от tf.convert_to_tensor. Название tf.constant происходит от того, что value встраивается в узел Const в tf.Graph. tf.constant полезна для подтверждения, что значение может быть встроено таким образом.

Если аргумент dtype не указан, тип определяется по типу 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]])>

Если dtype указан, значения результирующего тензора приводятся к указанному 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.])>

Если shape задан, value переформировывается для соответствия. Скаляры расширяются для заполнения 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 не имеет эффекта, если в качестве value передан eager Tensor, она даже передаёт градиенты:

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

Однако, поскольку tf.constant встраивает значение в tf.Graph, это не работает для символических тензоров:

with tf.compat.v1.Graph().as_default():
  i = tf.compat.v1.placeholder(shape=[None, None], dtype=tf.float32)
  t = tf.constant(i)
Traceback (most recent call last):

TypeError: ...

tf.constant всегда создаёт тензоры на ЦП (хост). Для создания тензоров на других устройствах используйте tf.identity. (Однако, если value является eager Tensor, тензор будет возвращён без изменений, как указано выше.)

Связанные операции:

  • tf.convert_to_tensor аналогична, но:
    • У неё нет аргумента shape.
    • Символические тензоры могут проходить сквозь неё.
with tf.compat.v1.Graph().as_default():
  i = tf.compat.v1.placeholder(shape=[None, None], dtype=tf.float32)
  t = tf.convert_to_tensor(i)
  
  • tf.fill: отличается в нескольких аспектах:
    • tf.constant поддерживает произвольные константы, а не только однородные скалярные тензоры, как tf.fill.
    • tf.fill создаёт операцию в графе, которая расширяется во время выполнения, поэтому она эффективно представляет большие тензоры.
    • Поскольку tf.fill не встраивает значение, она может производить выходные данные с динамическим размером.
Аргументы
value Постоянное значение (или список) выходного типа dtype.
dtype Тип элементов результирующего тензора.
shape Необязательные размеры результирующего тензора.
name Необязательное имя тензора.
Возвращаемое значение
Тензор-константа.
Исключения
TypeError если форма указана или не поддерживается неправильно.
ValueError если вызов выполнен на символическом тензоре.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/constant

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API