RandomZoom 層

[來源]

RandomZoom 類別

keras.layers.RandomZoom(
    height_factor,
    width_factor=None,
    fill_mode="reflect",
    interpolation="bilinear",
    seed=None,
    fill_value=0.0,
    data_format=None,
    **kwargs
)

一個在訓練期間隨機縮放圖片的預處理層。

此層會獨立地隨機縮放圖片的每個軸,並根據 fill_mode 填補空白區域。

輸入像素值可以是任何範圍(例如 [0., 1.)[0, 255])且為整數或浮點數 dtype。預設情況下,此層會輸出浮點數。

輸入形狀

3D (未批次處理) 或 4D (已批次處理) 張量,形狀為:(..., height, width, channels),採用 "channels_last" 格式,或 (..., channels, height, width),採用 "channels_first" 格式。

輸出形狀

3D (未批次處理) 或 4D (已批次處理) 張量,形狀為:(..., target_height, target_width, channels),或 (..., channels, target_height, target_width),採用 "channels_first" 格式。

注意: 此層可以在 tf.data 管道內安全使用(與您使用的後端無關)。

參數

  • height_factor:一個以數值比例表示的浮點數,或大小為 2 的元組,表示垂直縮放的下限和上限。當以單一浮點數表示時,此值會用於上下限。正值表示縮小,負值表示放大。例如,height_factor=(0.2, 0.3) 會產生在 [+20%, +30%] 範圍內隨機縮小的輸出。height_factor=(-0.3, -0.2) 會產生在 [+20%, +30%] 範圍內隨機放大的輸出。
  • width_factor:一個以數值比例表示的浮點數,或大小為 2 的元組,表示水平縮放的下限和上限。當以單一浮點數表示時,此值會用於上下限。例如,width_factor=(0.2, 0.3) 會產生縮放範圍在 20% 到 30% 之間的輸出。width_factor=(-0.3, -0.2) 會產生縮放範圍在 20% 到 30% 之間的輸出。None 表示以保持長寬比的方式縮放垂直和水平方向。預設值為 None
  • fill_mode:根據指定的模式填補輸入邊界之外的點。可用的方法為 "constant""nearest""wrap""reflect"。預設值為 "constant"
    • "reflect"(d c b a | a b c d | d c b a) 輸入透過反射最後一個像素的邊緣來延伸。
    • "constant"(k k k k | a b c d | k k k k) 輸入透過在邊緣之外的所有值填入由 fill_value 指定的相同常數值 k 來延伸。
    • "wrap"(a b c d | a b c d | a b c d) 輸入透過包裝到相反的邊緣來延伸。
    • "nearest"(a a a a | a b c d | d d d d) 輸入透過最近的像素來延伸。請注意,當使用 torch 後端時,"reflect" 會重新導向至 "mirror" (c d c b | a b c d | c b a b),因為 torch 不支援 "reflect"。請注意,torch 後端不支援 "wrap"
  • interpolation:插值模式。支援的值:"nearest""bilinear"
  • seed:整數。用於建立隨機種子。
  • fill_value:一個浮點數,表示當 fill_mode="constant" 時,要在邊界外填入的值。
  • data_format:字串,可以是 "channels_last""channels_first"。輸入中維度的順序。"channels_last" 對應於形狀為 (batch, height, width, channels) 的輸入,而 "channels_first" 對應於形狀為 (batch, channels, height, width) 的輸入。預設值為在您的 Keras 組態檔 ~/.keras/keras.json 中找到的 image_data_format 值。如果您從未設定過,則預設值將為 "channels_last"
  • **kwargs:基礎層關鍵字參數,例如 namedtype

範例

>>> input_img = np.random.random((32, 224, 224, 3))
>>> layer = keras.layers.RandomZoom(.5, .2)
>>> out_img = layer(input_img)