tf.constant
| Просмотр исходного кода на GitHub |
Создаёт тензор-константу из объекта, подобного тензору.
tf.constant(
value, dtype=None, shape=None, name='Const'
)
Примечание: Все значения Eager тензоров неизменяемы (в отличие от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 тензор, и даже передаёт градиенты:
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.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 | если вызвана на символическом тензоре. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/constant