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


Python tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt用法及代碼示例


用法

adapt(
    data, batch_size=None, steps=None
)

參數

  • data 要訓​​練的數據。它可以作為 tf.data 數據集或作為 numpy 數組傳遞。
  • batch_size 整數或 None 。每個狀態更新的樣本數。如果未指定,batch_size 將默認為 32。如果您的數據是數據集、生成器或 keras.utils.Sequence 實例的形式(因為它們生成批次),請不要指定 batch_size
  • steps 整數或 None 。步驟總數(樣本批次)使用輸入張量(例如 TensorFlow 數據張量)進行訓練時,默認 None 等於數據集中的樣本數量除以批次大小,如果無法確定,則為 1。如果 x 是 tf.data 數據集,並且 'steps' 為 None,則 epoch 將運行直到輸入數據集用完。傳遞無限重複數據集時,您必須指定 steps 參數。數組輸入不支持此參數。

使預處理層的狀態適合正在傳遞的數據。

在層上調用adapt 後,預處理層的狀態在訓練期間不會更新。為了使預處理層在任何分布上下文中高效,它們對於調用該層的任何已編譯 tf.Graph 保持不變。這不會影響每個層僅調整一次時的層使用,但如果您多次調整層,則需要注意重新編譯任何已編譯的函數,如下所示:

  • 如果要將預處理層添加到 keras.Model ,則需要在每次後續調用 adapt 之後調用 model.compile
  • 如果您在 tf.data.Dataset.map 中調用預處理層,則應在每個 adapt 之後在輸入 tf.data.Dataset 上再次調用 map
  • 如果您使用 tf.function 直接調用預處理層,則需要在每次後續調用 adapt 後再次在可調用對象上調用 tf.function

tf.keras.Model 具有多個適應的示例:

layer = tf.keras.layers.Normalization(
    axis=None)
layer.adapt([0, 2])
model = tf.keras.Sequential(layer)
model.predict([0, 1, 2])
array([-1.,  0.,  1.], dtype=float32)
layer.adapt([-1, 1])
model.compile() # This is needed to re-compile model.predict!
model.predict([0, 1, 2])
array([0., 1., 2.], dtype=float32)

tf.data.Dataset 具有多個適應的示例:

layer = tf.keras.layers.Normalization(
    axis=None)
layer.adapt([0, 2])
input_ds = tf.data.Dataset.range(3)
normalized_ds = input_ds.map(layer)
list(normalized_ds.as_numpy_iterator())
[array([-1.], dtype=float32),
 array([0.], dtype=float32),
 array([1.], dtype=float32)]
layer.adapt([-1, 1])
normalized_ds = input_ds.map(layer) # Re-map over the input dataset.
list(normalized_ds.as_numpy_iterator())
[array([0.], dtype=float32),
 array([1.], dtype=float32),
 array([2.], dtype=float32)]

adapt() 僅用作計算層狀態的單個機器實用程序。要分析無法容納在單台機器上的數據集,請參閱用於多機的 Tensorflow 變換 map-reduce 解決方案。

相關用法


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