tf.constant
| Просмотреть исходный код на GitHub |
Создаёт тензор-константу из объекта, подобного тензору.
tf.constant(
value, dtype=None, shape=None, name='Const'
)
Примечание: Все значения eagertf.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