tf.constant
Создаёт тензор-константу из объекта, подобного тензору.
tf.constant(
value, dtype=None, shape=None, name='Const'
) -> Union[tf.Operation, ops._EagerTensorBase]
Используется в ноутбуках
| Используется в руководстве | Используется в учебных пособиях |
|---|---|
Примечание: Все значения 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 тензор, он даже передаёт градиенты:
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/api_docs/python/tf/constant