解释一下:
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 (滤波器)
filters又叫滤波器或者卷积核。每一层卷积有多少卷积核,以及一共有多少层卷积,这些暂时没有理论支撑,一般都是靠感觉去设置几组候选值,然后通过实验挑选出其中的最佳值。
滤波器的数量就是神经元的数量,因为每个神经元对该层的输入进行不同的卷积(更准确地说,神经元的输入权重形成卷积核)。一个特征图是一个经过滤波器后的结果,因此有多少个特征图就有多少个滤波器(有些复杂的数据,往往需要更多的滤波器),其大小是你的滤波器的窗口/内核大小和跨度的结果。经过N个卷积核的卷积,就生成了N维的特征数据,即feature map。
下面举个实例:
这里输入的图片尺寸是(32, 32),经过6个滤波器(即6个特征图)后,就得到了一个(28, 28, 6)的数据。那么不同的卷积核,就会得到不同的特征,下面是比较简单常见的卷积核,分别提取了图片的特征,对CSDN猴子进行操作(以 3 × 3\times 3×的卷积核为例):
- 不对图像处理的卷积核:
[ 0 0 0 0 1 0 0 0 0 ] \left[ \begin{matrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{matrix} \right] ⎣⎡000010000⎦⎤
卷积后的结果:
- 边缘检测(突出边缘差异性):
[ 1 0 − 1 0 0