详解Keras3.0 Layers API: Convolution layers(Conv1D、Conv2D、Conv3D)

2023-12-13 21:41:29

1、Conv1D layer

通常对一维度数组(例:arr = np.array([1, 2, 3, 4, 5]))进行卷积操作

keras.layers.Conv1D(
    filters,
    kernel_size,
    strides=1,
    padding="valid",
    data_format=None,
    dilation_rate=1,
    groups=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
)
参数说明
  • filters:?输出空间的维度,即卷积核的数量
  • kernel_size:卷积核的大小,可以是一个整数或一个整数元组
  • strides:卷积步长,默认为1
  • padding:填充方式,可以是"valid"(不填充)或"same"(填充以保持输入和输出的尺寸相同)
  • data_format:数据格式,可以是"channels_first"(通道在前)或"channels_last"(通道在后),默认为None,将根据后端自动确定
  • dilation_rate:空洞卷积的扩张率,定义卷积核中间的位置与周围位置的间隔大小默认为1
  • groups:分组卷积的组数,默认为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 :其他关键字参数
示例
#创建一个形状为(4, 10, 128)的随机数组作为输入数据
x = np.random.rand(4, 10, 128)

#使用Conv1D层进行卷积操作,32表示输出通道数,即卷积后的特征图数量;3表示卷积核的大小,即卷积核的高度为3。激活函数选择为ReLU
y = keras.layers.Conv1D(32, 3, activation='relu')(x)

print(y.shape)
(4, 8, 32)

2、?Conv2D layer

通常对二维度数组(例:arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))进行卷积操作

keras.layers.Conv2D(
    filters,
    kernel_size,
    strides=(1, 1),
    padding="valid",
    data_format=None,
    dilation_rate=(1, 1),
    groups=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
)
参数说明?

对于Conv2D主要用于处理二维平面数据,其参数与Conv1D的略有不同。如:

  • kernel_size:表示卷积核的大小,可以是单个整数或一个元组/列表。对于一维卷积,它表示卷积核的高度;对于二维卷积,它表示卷积核的高度、宽度。
  • strides:表示卷积操作的步长,可以是单个整数或一个元组/列表。对于一维卷积,它表示卷积核在输入数据上移动的距离;对于二维卷积,它表示卷积核在每个维度上移动的距离。
  • padding:表示输入数据周围填充的值,可以是"valid"(不进行填充)、"same"(使用相同的填充值)或其他字符串。对于一维卷积,填充应用于输入序列的两侧;对于二维卷积,填充应用于输入数据的每个维度的两侧。
  • dilation_rate:是用于定义卷积核中间的位置与周围位置的间隔大小,主要影响了特征图的大小和感受野的范围,对于二维卷积,它表示卷积核在每个维度上间隔的大小。
示例
#创建一个形状为(4, 10, 10, 128)的随机数组作为输入数据
x = np.random.rand(4, 10, 10, 128)

#使用Conv2D层进行卷积操作,输出通道数为32,卷积核大小为3x3,激活函数为ReLU
y = keras.layers.Conv2D(32, 3, activation='relu')(x)

print(y.shape)
(4, 8, 8, 32)

?3、Conv3D layer

通常对二维度数组(例:np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]]))进行卷积操作

keras.layers.Conv3D(
    filters,
    kernel_size,
    strides=(1, 1, 1),
    padding="valid",
    data_format=None,
    dilation_rate=(1, 1, 1),
    groups=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
)
参数说明?

对于Conv3D主要用于处理三维数据,其参数与Conv1D的略有不同。如:

  • kernel_size:表示卷积核的大小,可以是单个整数或一个元组/列表。对于一维卷积,它表示卷积核的高度;对于三维卷积,它表示卷积核的高度、宽度、深度。
  • strides:表示卷积操作的步长,可以是单个整数或一个元组/列表。对于一维卷积,它表示卷积核在输入数据上移动的距离;对于三维卷积,它表示卷积核在每个维度上移动的距离。
  • padding:表示输入数据周围填充的值,可以是"valid"(不进行填充)、"same"(使用相同的填充值)或其他字符串。对于一维卷积,填充应用于输入序列的两侧;对于三维卷积,填充应用于输入数据的每个维度的两侧。
  • dilation_rate:是用于定义卷积核中间的位置与周围位置的间隔大小,主要影响了特征图的大小和感受野的范围,对于三维卷积,它表示卷积核在每个维度上间隔的大小。
?示例
#生成一个形状为(4, 10, 10, 10, 128)的随机张量
#其中4表示批次大小,10、10和10分别表示每个3D张量的深度、高度和宽度
#128表示每个3D张量的通道数
x = np.random.rand(4, 10, 10, 10, 128)

#创建一个3D卷积层,该层具有32个输出通道(即卷积核的数量)
#每个卷积核的大小为3x3x3,激活函数为ReLU
#这个卷积层被应用到输入张量x上,得到输出张量y
y = keras.layers.Conv3D(32, 3, activation='relu')(x)

print(y.shape)
(4, 8, 8, 8, 32)

文章来源:https://blog.csdn.net/lymake/article/details/134910710
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。