概念(个人理解)
创建了一个2D的卷积层,2D convolution layer。
作用:
用以上tf.keras.layers.Conv2D创建一个卷积层对象,用来处理图片的矩阵张量,我们看看简单的代码
# The inputs are 28x28 RGB images with `channels_last` and the batch
# size is 4.
input_shape = (4, 28, 28, 3)
x = tf.random.normal(input_shape)
y = tf.keras.layers.Conv2D(
2, 3, activation='relu', input_shape=input_shape[1:])(x)
print(y.shape)
结果是:(4,26,26,2)
可以看到该对象的实例输入矩阵张量后,函数返回的是处理后的张量。接下来我们看看该函数中参数作用
参数解析
tf.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
)
filters参数决定卷积核的个数,这个参数一般决定你经过卷尺层矩阵张量形状的通道数,只说你能看到的最直接的效果,至于这个通道数的数学原理以及能带来什么效果一时半会说不清楚(省略)。
kernel_size参数决定每个卷积核的尺寸
padding参数决定是否需要在输入张量上补数据,一般只有两种模式
strides卷积步长,卷积步长和卷积核大小尺寸决定以及是否padding输出的矩阵张量的高宽,即矩阵的尺寸
data_format参数时设置你输入矩阵参量的形式,一般两种模式channels_last(默认)或channels_first之一。 输入中尺寸的排序。 channels_last对应于具有形状(batch_size、高度、宽度、通道)的输入,而channels_first对应于具有形状(batch_size、通道、高度、宽度)的输入。
activation参数决定你的激活函数是什么,一半relu,sigmoid等
dilation_rate参数是一个数或者一个元组,指定用于扩展卷积的膨胀率。 可以是单个整数来为所有空间维度指定相同的值
其他参数
kernel_initializer=tf.zeros_initializer()
bias_initializer=tf.zeros_initializer()
根据其英文解释可以理解bias_constraint意思就是偏置限制
等参数我就不一一解释了,都是用来设置卷积核的权重和偏置