当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.keras.initializers.Constant用法及代码示例


生成具有常量值的张量的初始化程序。

用法

tf.compat.v1.keras.initializers.Constant(
    value=0, dtype=tf.dtypes.float32, verify_shape=False
)

参数

  • value Python 标量、值列表或元组,或 N 维 numpy 数组。初始化变量的所有元素都将设置为 value 参数中的相应值。
  • dtype 默认数据类型,如果在调用初始化程序时没有提供 dtype 参数,则使用该类型。
  • verify_shape 用于验证 value 形状的布尔值。如果 True ,如果 value 的形状与初始化张量的形状不兼容,则初始化程序将抛出错误。

抛出

  • TypeError 如果输入 value 不是预期类型之一。

迁移到 TF2

警告:这个 API 是为 TensorFlow v1 设计的。继续阅读有关如何从该 API 迁移到本机 TensorFlow v2 等效项的详细信息。见TensorFlow v1 到 TensorFlow v2 迁移指南有关如何迁移其余代码的说明。

虽然它是一个遗留 API 端点,但 tf.compat.v1.constant_initializer 与即刻执行和 tf.function 兼容。

要迁移到非旧版 TF2 API,请改用 tf.constant.initializertf.compat.v1.constant.initializer.init_() 中的 dtype 参数在 tf.constant.initializer.init_() 中不存在。但是,在这两种情况下,您都可以在__call__() 中指定dtype

compat.v1 符号中,如果 verify_shape 设置为 True ,则在初始化具有与 value 不同形状的变量时会引发异常。如果设置为False , value,则在必要时重新整形以初始化变量。仅当元素数量不同时才会引发异常。

TF2 不支持 verify_shape 参数。使用 tf.constant_initializer 相当于将 verify_shape 设置为 False

到 TF2 的结构映射

前:

value = [0, 1, 2, 3, 4, 5, 6, 7]
initializer = tf.compat.v1.constant_initializer(
    value=value,
    dtype=tf.float32,
    verify_shape=False)
variable = tf.Variable(initializer(shape=[2, 4]))

后:

value = [0, 1, 2, 3, 4, 5, 6, 7]
initializer = tf.constant_initializer(value=value)
tf.Variable(initializer(shape=[2, 4], dtype=tf.float32))

如何映射参数

TF1 参数名称 TF2 参数名称 注意
value value 在构造函数中
dtype dtype __call__() 方法中
verify_shape 不支持 相当于设置为False
partition_info - (TF1 中的 __call__ arg)不支持

使用示例之前和之后

前:

value = [1., 2., 3., 4.]
initializer = tf.compat.v1.constant_initializer(
    value=value, dtype=tf.float32, verify_shape=True)
tf.Variable(initializer(shape=[2, 2])).numpy()
Traceback (most recent call last):

TypeError:Expected Tensor's shape:(2, 2), got (4,).
initializer = tf.compat.v1.constant_initializer(
    value=value, dtype=tf.float32, verify_shape=False)
tf.Variable(initializer(shape=[2, 2])).numpy()
array([[1., 2.],
       [3., 4.]], dtype=float32)

后:

value = [1., 2., 3., 4.]
initializer = tf.constant_initializer(value=value)
tf.Variable(initializer(shape=[2, 2], dtype=tf.float32)).numpy()
array([[1., 2.],
       [3., 4.]], dtype=float32)

生成的张量由 dtype 类型的值填充,由新张量的所需 shape 后面的参数 value 指定(参见下面的示例)。

参数 value 可以是常量值,也可以是类型为 dtype 的值的列表。如果value 是一个列表,那么列表的长度必须小于或等于所需张量形状所隐含的元素数。如果value中的元素总数小于张量形状所需的元素数,则将使用value中的最后一个元素来填充剩余的条目。如果 value 中的元素总数大于张量形状所需的元素数,则初始化程序将引发 ValueError

例子:

下面的示例可以使用 numpy.ndarray 而不是 value 列表进行重写,甚至可以重新整形,如 value 列表初始化下方的两个注释行所示。

value = [0, 1, 2, 3, 4, 5, 6, 7]
init = tf.compat.v1.constant_initializer(value)
# fitting shape
with tf.compat.v1.Session():
  x = tf.compat.v1.get_variable('x', shape=[2, 4], initializer=init)
  x.initializer.run()
  print(x.eval())
[[0. 1. 2. 3.]
 [4. 5. 6. 7.]]
# Larger shape
with tf.compat.v1.Session():
  y = tf.compat.v1.get_variable('y', shape=[3, 4], initializer=init)
  y.initializer.run()
  print(y.eval())
[[0.  1.  2.  3.]
 [4.  5.  6.  7.]
 [7.  7.  7.  7.]]
# Smaller shape
with tf.compat.v1.Session():
  z = tf.compat.v1.get_variable('z', shape=[2, 3], initializer=init)
Traceback (most recent call last):

ValueError:Too many elements provided. Needed at most 6, but received 8
# Shape verification
init_verify = tf.compat.v1.constant_initializer(value, verify_shape=True)
with tf.compat.v1.Session():
 u = tf.compat.v1.get_variable('u', shape=[3, 4],
                               initializer=init_verify)
Traceback (most recent call last):

TypeError:Expected Tensor's shape:(3, 4), got (8,).

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.keras.initializers.Constant。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。