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"。預設為 "reflect"
    • "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)