详解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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!