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

DepthwiseConv2D 層

[原始碼]

DepthwiseConv2D 類別

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

深度可分離 2D 卷積。

深度可分離卷積是一種卷積類型,其中每個輸入通道都與不同的核心(稱為深度核心)進行卷積。您可以將深度可分離卷積理解為深度可分離卷積的第一步。

它透過以下步驟實現:

  • 將輸入拆分為單獨的通道。
  • 將每個通道與具有 depth_multiplier 輸出通道的單獨深度核心進行卷積。
  • 沿通道軸串聯卷積的輸出。

與常規 2D 卷積不同,深度可分離卷積不會混合不同輸入通道的資訊。

depth_multiplier 參數決定了有多少濾波器應用於一個輸入通道。因此,它控制了在深度可分離步驟中每個輸入通道產生的輸出通道數量。

參數

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

回傳

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

引發

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