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


Python tf.compat.v1.keras.initializers.RandomUniform用法及代碼示例


生成具有均勻分布的張量的初始化程序。

繼承自:random_uniform_initializer

用法

tf.compat.v1.keras.initializers.RandomUniform(
    minval=-0.05, maxval=0.05, seed=None, dtype=tf.dtypes.float32
)

參數

  • minval python 標量或標量張量。要生成的隨機值範圍的下限。
  • maxval python 標量或標量張量。要生成的隨機值範圍的上限。浮點類型默認為 1。
  • seed 一個 Python 整數。用於創建隨機種子。有關行為,請參見tf.compat.v1.set_random_seed
  • dtype 默認數據類型,如果在調用初始化程序時沒有提供 dtype 參數,則使用該類型。

遷移到 TF2

警告:這個 API 是為 TensorFlow v1 設計的。繼續閱讀有關如何從該 API 遷移到本機 TensorFlow v2 等效項的詳細信息。見TensorFlow v1 到 TensorFlow v2 遷移指南有關如何遷移其餘代碼的說明。

雖然它是一個遺留的 compat.v1 api,但 tf.compat.v1.keras.initializers.RandomUniform 與即刻執行和 tf.function 兼容。

要切換到本機 TF2,請切換到使用 tf.keras.initializers.RandomUniform(不是從 compat.v1 ),如果需要更改默認 dtype,請使用 tf.keras.backend.set_floatx(float_dtype) 或在調用初始化程序時傳遞 dtype,而不是在構造初始化程序時傳遞它。

隨機種子行為:

另請注意,如果您將種子傳遞給 TF2 初始化程序 API,它將在每次初始化時重用相同的種子(與 TF1 初始化程序不同)

到原生 TF2 的結構映射

前:

initializer = tf.compat.v1.keras.initializers.RandomUniform(
  minval=minval,
  maxval=maxval,
  seed=seed,
  dtype=dtype)

weight_one = tf.Variable(initializer(shape_one))
weight_two = tf.Variable(initializer(shape_two))

後:

initializer = tf.keras.initializers.RandomUniform(
  minval=minval,
  maxval=maxval,
  # seed=seed,  # Setting a seed in the native TF2 API
                # causes it to produce the same initializations
                # across multiple calls of the same initializer.
  )

weight_one = tf.Variable(initializer(shape_one, dtype=dtype))
weight_two = tf.Variable(initializer(shape_two, dtype=dtype))

如何映射參數

TF1 參數名稱 TF2 參數名稱 注意
minval minval 沒有更改默認值
maxval maxval 沒有更改默認值
seed seed 不同的隨機數生成語義(在未來版本中更改)。如果設置,TF2 版本將使用無狀態隨機數生成,即使在多次調用初始化程序實例時也會產生完全相同的初始化。 compat.v1 版本每次都會生成新的初始化。如果您每次都需要不同的初始化,請不要設置種子。相反,如果您需要確定性,可以使用 tf.random.set_seed 設置全局 tf 種子,或者使用單獨的初始化程序實例和不同的種子來初始化每個權重。
dtype dtype TF2 原生 api 僅將其作為 __call__ arg,而不是構造函數 arg。
partition_info - (TF1 中的 __call__ arg)不支持

fixed-seed 行為差異示例

compat.v1 固定種子行為:

initializer = tf.compat.v1.keras.initializers.RandomUniform(seed=10)
a = initializer(shape=(2, 2))
b = initializer(shape=(2, 2))
tf.reduce_sum(a - b) == 0
<tf.Tensor:shape=(), dtype=bool, numpy=False>

後:

initializer = tf.keras.initializers.RandomUniform(seed=10)
a = initializer(shape=(2, 2))
b = initializer(shape=(2, 2))
tf.reduce_sum(a - b) == 0
<tf.Tensor:shape=(), dtype=bool, numpy=True>

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.keras.initializers.RandomUniform。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。