Tensorflow2.0笔记31——卷积神经网络

Tensorflow2.0笔记

本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师

2.5输出特征计算

​ 输出特征尺寸计算:在了解神经网络中卷积计算的整个过程后,就可以对输出特征图的尺寸进行计算,如图 5-8 所示,5×5 的图像经过 3×3 大小的卷积核做卷积计算后输出特征尺寸为 3×3。

2.6全零填充

​ 为了保持输出图像尺寸与输入图像一致,经常会在输入图像周围进行全零填充,如图 5-9 所示,在 5×5 的输入图像周围填 0,则输出特征尺寸同为 5×5。

image-20210624082359377

image-20210624082414296

​ 上下两行分别代表对输入图像进行全零填充或不进行填充,对于 5×5×1 的图像来说,当 padding = ‘SAME’时,输出图像边长为 5;当 padding = ‘VALID’时,输出图像边长为 3。具备以上知识后,就可以在 Tensorflow 框架下利用 Keras 来构建 CNN 中的卷积层,使用的是 tf.keras.layers.Conv2D 函数,具体的使用方法如下:

tf.keras.layers.Conv2D(
input_shape = (高, 宽, 通道数), #仅在第一层有filters = 卷积核个数,
kernel_size = 卷积核尺寸, strides = 卷积步长,
padding = ‘SAME’ or ‘VALID’,
activation = ‘relu’ or ‘sigmoid’ or ‘tanh’ or ‘softmax’等 #如有 BN 则此处不用写
)

​ 使用此函数构建卷积层时,需要给出的信息有:

A) 输入图像的信息,即宽高和通道数;

B) 卷积核的个数以及尺寸,如 filters = 16, kernel_size = (3, 3)代表采用 16 个大小为 3×3 的卷积核;

C) 卷积步长,即卷积核在输入图像上滑动的步长,纵向步长与横向步长通常是相同的,默认值为 1;

D) 是否进行全零填充,全零填充的具体作用上文有描述;

E) 采用哪种激活函数,例如 relu、softmax 等,各种函数的具体效果在前面章节中有详细描述;

​ 这里需要注意的是,在利用 Tensorflow 框架构建卷积网络时,一般会利用 BatchNormalization 函数来构建 BN 层,进行批归一化操作,所以在 Conv2D 函数中经常不写 BN。BN 操作的具体含义和作用见下文。

原文地址:https://www.cnblogs.com/wind-and-sky/p/14925526.html