Keras - 卷积层

Keras 包含许多层,用于创建基于卷积的 ANN,通常称为卷积神经网络 (CNN)。所有卷积层都具有某些属性(如下所列),这些属性将其与其他层(例如密集层)区分开来。

过滤器 − 它指的是卷积中要应用的过滤器数量。它会影响输出形状的维度。

内核大小 − 它指的是卷积窗口的长度。

步幅 − 它指的是卷积的步幅长度。

填充 − 它指的是如何在卷积的输出上进行填充。它有三个值,如下所示 −

  • valid 表示无填充

  • causal 表示因果卷积。

  • same 表示输出应与输入具有相同的长度,因此应相应地应用填充

Dilation Rate − 用于扩张卷积的扩张率。 −

卷积层的另一个重要方面是数据格式。数据格式可能有两种类型,

channel_last: channel_last − 指定通道数据作为最后一个条目放置。这里,通道指的是实际数据,它将被放置在输入空间的最后一个维度中。 −

例如,让我们考虑一个输入形状,(30, 10, 128)。这里,第一维的值 30 表示批量大小,第二维的值 10 表示时间卷积中的 timesteps,第三维的值 128 表示输入的实际值。这是 Keras 中的默认设置。

channel_first: channel_firstchannet_last 正好相反。在这里,输入值被放置在第二维中,紧挨着批次大小。

让我们看看本章中 Keras 层提供的用于 CNN 的所有层。

Conv1D

Conv1D 层 用于基于时间的 CNN。 ConvID 的输入形状将采用以下格式 −

(batch_size, timesteps, features)

其中,

  • batch_size 表示批次的大小。

  • timesteps 表示输入中提供的时间步数。

  • features 表示输入中可用的特征数量。

Conv1D 的输出形状如下 −

(batch_size, new_steps, filters)

其中,filters 表示过滤器指定为参数之一。

ConvID 函数及其具有默认值的参数的签名如下。 −

keras.layers.Conv1D( 
   filters, 
   kernel_size, 
   strides = 1, 
   padding = 'valid', 
   data_format = 'channels_last', 
   dilation_rate = 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
)

Conv2D

这是一个卷积 2D 层。它创建一个卷积核,层输入创建一个输出张量。input_shape 指的是 data_format = "channels_last" 中 RGB 值的整数元组。

Conv2D 函数的签名及其具有默认值的参数如下 −

keras.layers.Conv2D 
   (filters, kernel_size, 
   strides = (1, 1), 
   padding = 'valid', 
   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
)

此处,

  • strides 指的是一个整数,指定卷积沿高度和宽度的步幅。