當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。