此页面由 Cloud Translation API 翻译。
Switch to English

tf.constant

TensorFlow 1版 GitHub上查看源代码

创建了一个从张量状物体的恒定张量。

用在笔记本电脑

使用的指南使用教程

如果参数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 ,它甚至发送梯度:

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失败的象征性的张量:

i = tf.keras.layers.Input(shape=[None, None])
t = tf.constant(i)
Traceback (most recent call last):

NotImplementedError: ...

tf.constant始终创建CPU(主机)张量。为了建立在其他设备上张量,使用tf.identity 。 (如果该value是一个热切张量,但是,张量将被如上所述返回的未修饰的)。

    i = tf.keras.layers.Input(shape=[None, None])
    t = tf.convert_to_tensor(i)
        
  • tf.fill :在几个方面有所不同:
    • tf.constant支持任意常数,而不仅仅是均匀标张量像tf.fill
    • tf.fill创建在在运行时膨胀,所以它可以有效地表示大张量的曲线的运算。
    • 由于tf.fill没有嵌入的值,它可以产生动态大小的输出。

value 输出类型的恒定值(或列表) dtype
dtype 类型所得到的张量的元素。
shape 导致张量的可选尺寸。
name 可选的名字为张量。

一个常数张量。

TypeError 如果形状指定错误或不支持的。
ValueError 如果叫上一个象征性的张量。