Keras 2 API 文件 / 層 API / 卷積層 / 可分離卷積 2D 層

可分離卷積 2D 層 (SeparableConv2D layer)

[原始碼]

SeparableConv2D 類別

tf_keras.layers.SeparableConv2D(
    filters,
    kernel_size,
    strides=(1, 1),
    padding="valid",
    data_format=None,
    dilation_rate=(1, 1),
    depth_multiplier=1,
    activation=None,
    use_bias=True,
    depthwise_initializer="glorot_uniform",
    pointwise_initializer="glorot_uniform",
    bias_initializer="zeros",
    depthwise_regularizer=None,
    pointwise_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    depthwise_constraint=None,
    pointwise_constraint=None,
    bias_constraint=None,
    **kwargs
)

深度可分離 2D 卷積。

可分離卷積首先執行深度方向的空間卷積(分別作用於每個輸入通道),然後進行逐點卷積,混合產生的輸出通道。depth_multiplier 參數控制在深度方向步驟中每個輸入通道生成多少個輸出通道。

直觀上,可分離卷積可以理解為將一個卷積核分解為兩個較小的核,或者理解為 Inception 區塊的極端版本。

參數

  • filters: 整數,輸出空間的維度 (即卷積中的輸出濾波器數量)。
  • kernel_size: 整數或包含 2 個整數的元組/列表,指定 2D 卷積窗口的高度和寬度。 可以是單個整數,為所有空間維度指定相同的值。
  • strides: 整數或包含 2 個整數的元組/列表,指定卷積沿高度和寬度的步幅。 可以是單個整數,為所有空間維度指定相同的值。 目前的實作僅支援在行和列維度中相等長度的步幅。 指定任何步幅值 != 1 與指定任何 dilation_rate 值 != 1 不相容。
  • padding: "valid""same" 其中之一(不區分大小寫)。"valid" 表示不填充。"same" 表示用零均勻地填充輸入的左/右或上/下,以便輸出與輸入具有相同的高度/寬度維度。
  • data_format: 字串,channels_last (預設值) 或 channels_first 其中之一。 輸入中維度的順序。 channels_last 對應於形狀為 (batch_size, height, width, channels) 的輸入,而 channels_first 對應於形狀為 (batch_size, channels, height, width) 的輸入。 如果未指定,則使用在 ~/.keras/keras.json (如果存在) 內的 Keras 設定檔中找到的 image_data_format 值,否則使用 'channels_last'。預設為 'channels_last'。
  • dilation_rate: 整數或包含 2 個整數的元組/列表,指定用於擴張卷積的擴張率。
  • depth_multiplier: 每個輸入通道的深度卷積輸出通道數。深度卷積輸出通道的總數將等於 filters_in * depth_multiplier
  • activation: 要使用的激活函數。 如果您不指定任何內容,則不會應用任何激活函數 (請參閱 keras.activations)。
  • use_bias: 布林值,表示該層是否使用偏置向量。
  • depthwise_initializer: 深度卷積核的初始化器 (請參閱 keras.initializers)。 如果為 None,則將使用預設初始化器 ('glorot_uniform')。
  • pointwise_initializer: 逐點卷積核的初始化器 (請參閱 keras.initializers)。 如果為 None,則將使用預設初始化器 ('glorot_uniform')。
  • bias_initializer: 偏置向量的初始化器。 如果為 None,則將使用預設初始化器 ('zeros') (請參閱 keras.initializers)。
  • depthwise_regularizer: 應用於深度方向核矩陣的正規化函數 (請參閱 keras.regularizers)。
  • pointwise_regularizer: 應用於逐點核矩陣的正規化函數 (請參閱 keras.regularizers)。
  • bias_regularizer: 應用於偏置向量的正規化函數 (請參閱 keras.regularizers)。
  • activity_regularizer: 應用於該層輸出 (其「激活函數」) 的正規化函數 (請參閱 keras.regularizers)。
  • depthwise_constraint: 應用於深度方向核矩陣的約束函數 (請參閱 keras.constraints)。
  • pointwise_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 值可能會因填充而改變。

回傳值

表示 activation(separableconv2d(inputs, kernel) + bias) 的秩為 4 的張量。

觸發

  • ValueError: 如果 padding 為 "causal"。