Keras 3 API 文件 / 層 API / 卷積層 / DepthwiseConv1D 層

DepthwiseConv1D 層

[原始碼]

DepthwiseConv1D 類別

keras.layers.DepthwiseConv1D(
    kernel_size,
    strides=1,
    padding="valid",
    depth_multiplier=1,
    data_format=None,
    dilation_rate=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
)

1D 深度卷積層。

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

它通過以下步驟實作

  • 將輸入分割成個別通道。
  • 將每個通道與個別的深度核心進行卷積,輸出 depth_multiplier 個通道。
  • 沿著通道軸串聯卷積後的輸出。

與常規 1D 卷積不同,深度卷積不會混合不同輸入通道之間的資訊。

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

參數

  • kernel_size:int 或 1 個整數的 tuple/list,指定深度卷積窗口的大小。
  • strides:int 或 1 個整數的 tuple/list,指定卷積的步幅長度。strides > 1dilation_rate > 1 不相容。
  • padding:字串,可以是 "valid""same"(不區分大小寫)。"valid" 表示不填充。"same" 會使輸入在左右或上下均勻填充。當 padding="same"strides=1 時,輸出與輸入大小相同。
  • depth_multiplier:每個輸入通道的深度卷積輸出通道數。深度卷積輸出通道總數將等於 input_channel * depth_multiplier
  • data_format:字串,可以是 "channels_last""channels_first"。輸入中維度的順序。"channels_last" 對應於形狀為 (batch, steps, features) 的輸入,而 "channels_first" 對應於形狀為 (batch, features, steps) 的輸入。它預設為在您的 Keras 設定檔 ~/.keras/keras.json 中找到的 image_data_format 值。如果您從未設定它,則它將為 "channels_last"
  • dilation_rate:int 或 1 個整數的 tuple/list,指定用於擴張卷積的擴張率。
  • activation:激活函數。如果為 None,則不應用激活函數。
  • use_bias:bool,如果為 True,則會在輸出中加入偏差。
  • depthwise_initializer:卷積核心的初始化器。如果為 None,將使用預設初始化器 ("glorot_uniform")。
  • bias_initializer:偏差向量的初始化器。如果為 None,將使用預設初始化器 ("zeros")。
  • depthwise_regularizer:卷積核心的可選正規化器。
  • bias_regularizer:偏差向量的可選正規化器。
  • activity_regularizer:輸出的可選正規化函數。
  • depthwise_constraint:可選的投影函數,用於在 Optimizer 更新核心後應用於核心(例如,用於實作層權重的範數約束或值約束)。該函數必須將未投影的變數作為輸入,並且必須返回投影的變數(必須具有相同的形狀)。當進行非同步分散式訓練時,約束不安全使用。
  • bias_constraint:可選的投影函數,用於在 Optimizer 更新偏差後應用於偏差。

輸入形狀

  • 如果 data_format="channels_last":形狀為 (batch_shape, steps, channels) 的 3D 張量
  • 如果 data_format="channels_first":形狀為 (batch_shape, channels, steps) 的 3D 張量

輸出形狀

  • 如果 data_format="channels_last":形狀為 (batch_shape, new_steps, channels * depth_multiplier) 的 3D 張量
  • 如果 data_format="channels_first":形狀為 (batch_shape, channels * depth_multiplier, new_steps) 的 3D 張量

返回

一個 3D 張量,表示 activation(depthwise_conv1d(inputs, kernel) + bias)

引發

  • ValueError:當 strides > 1dilation_rate > 1 時。

範例

>>> x = np.random.rand(4, 10, 12)
>>> y = keras.layers.DepthwiseConv1D(3, 3, 2, activation='relu')(x)
>>> print(y.shape)
(4, 4, 36)