Keras 2 API 文件 / 層 API / 卷積層 / Conv2DTranspose 層

Conv2DTranspose 層

[原始碼]

Conv2DTranspose 類別

tf_keras.layers.Conv2DTranspose(
    filters,
    kernel_size,
    strides=(1, 1),
    padding="valid",
    output_padding=None,
    data_format=None,
    dilation_rate=(1, 1),
    activation=None,
    use_bias=True,
    kernel_initializer="glorot_uniform",
    bias_initializer="zeros",
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    **kwargs
)

轉置卷積層(有時稱為反卷積)。

對轉置卷積的需求通常源於希望使用與一般卷積相反方向的轉換,也就是說,從具有某些卷積輸出的形狀轉換為具有其輸入形狀的同時,保持與該卷積相容的連接模式。

當使用此層作為模型中的第一層時,請提供關鍵字參數 input_shape(整數或 None 的元組,不包括樣本軸),例如,針對 data_format="channels_last" 中 128x128 RGB 圖片,input_shape=(128, 128, 3)

參數

  • filters:整數,輸出空間的維度(即卷積中的輸出濾波器數量)。
  • kernel_size:一個整數或 2 個整數的元組/列表,指定 2D 卷積視窗的高度和寬度。可以使用單個整數來為所有空間維度指定相同的值。
  • strides:一個整數或 2 個整數的元組/列表,指定沿高度和寬度的卷積步幅。可以使用單個整數來為所有空間維度指定相同的值。指定任何步幅值 != 1 與指定任何 dilation_rate 值 != 1 不相容。
  • padding"valid""same" 其中之一(不區分大小寫)。"valid" 表示不填充。"same" 會將零均勻地填充到輸入的左/右或上/下,以便輸出具有與輸入相同的高度/寬度維度。
  • output_padding:一個整數或 2 個整數的元組/列表,指定沿輸出張量的高度和寬度的填充量。可以使用單個整數來為所有空間維度指定相同的值。沿給定維度的輸出填充量必須低於沿同一維度的步幅。如果設定為 None(預設值),則會推斷輸出形狀。
  • data_format:字串,channels_last(預設值)或 channels_first 其中之一。輸入中維度的順序。channels_last 對應於形狀為 (batch_size, height, width, channels) 的輸入,而 channels_first 對應於形狀為 (batch_size, channels, height, width) 的輸入。如果未指定,則會使用在您的 Keras 設定檔 ~/.keras/keras.json 中找到的 image_data_format 值(如果存在),否則使用 'channels_last'。預設值為 "channels_last"。
  • dilation_rate:一個整數,指定擴張卷積的所有空間維度的擴張率。不支援為不同維度指定不同的擴張率。目前,指定任何 dilation_rate 值 != 1 與指定任何步幅值 != 1 不相容。
  • activation:要使用的啟動函數。如果沒有指定任何內容,則不會應用啟動函數(請參閱 keras.activations)。
  • use_bias:布林值,表示層是否使用偏差向量。
  • kernel_initializer:用於 kernel 權重矩陣的初始化器(請參閱 keras.initializers)。預設值為 'glorot_uniform'。
  • bias_initializer:用於偏差向量的初始化器(請參閱 keras.initializers)。預設值為 'zeros'。
  • kernel_regularizer:應用於 kernel 權重矩陣的正規化函數(請參閱 keras.regularizers)。
  • bias_regularizer:應用於偏差向量的正規化函數(請參閱 keras.regularizers)。
  • activity_regularizer:應用於圖層輸出(即其「啟動」)的正規化函數(請參閱 keras.regularizers)。
  • kernel_constraint:應用於核矩陣的約束函數(請參閱 keras.constraints)。
  • bias_constraint:應用於偏差向量的約束函數(請參閱 keras.constraints)。

輸入形狀

如果 data_format='channels_first',則為形狀為 (batch_size, channels, rows, cols) 的 4D 張量;如果 data_format='channels_last',則為形狀為 (batch_size, rows, cols, channels) 的 4D 張量。

輸出形狀

如果 data_format='channels_first',則為形狀為 (batch_size, filters, new_rows, new_cols) 的 4D 張量;如果 data_format='channels_last',則為形狀為 (batch_size, new_rows, new_cols, filters) 的 4D 張量。rowscols 的值可能會因為填充而改變。如果指定了 output_padding

new_rows = ((rows - 1) * strides[0] + kernel_size[0] - 2 * padding[0] +
output_padding[0])
new_cols = ((cols - 1) * strides[1] + kernel_size[1] - 2 * padding[1] +
output_padding[1])

傳回

代表 activation(conv2dtranspose(inputs, kernel) + bias) 的 4 階張量。

觸發

  • ValueError:如果 padding 為 "causal"。
  • ValueError:當 strides > 1 且 dilation_rate > 1 時。

參考資料