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