1.逐步构建卷积网络
本次要构建的网络基本架构:
注:每进行一次前向传播操作,都会有与之对应的后向传播,前向传播的参数将被存储,这些参数在后向传播过程中将被用来计算梯度。
2.卷积神经网络
2.1零值填充
使用零值填充的好处:
- 填充帮助你使用卷积层而不需要收缩输入数据的高和宽,这在深度网络中十分重要;
- 帮助保留图片边缘信息
使用函数 numpy.pad 介绍:
numpy.pad(array, pad_width, mode=‘constant’, **kwargs)
array:要填充的数组
pad_width:(before,after)简单来说就是前面填几和后面填几,如(2,3)就是前填2后填3
“constant”:默认填常数,可以选择别的
2.2 卷积中的一步
在本部分中,实现卷积的单个步骤,将滤波器应用于输入的单个位置。这将用于构建卷积单元。
2.3 卷积神经网络的前向传播
在这一节中,使用单个过滤器进行卷积操作,得到的结果是2D的将所得结果叠加到一起生成一个3D结果。
过程:
1.选择一个切片2*2
提示:a_slice_prev = a_prev[0:2,0:2,: ] “a_prev” (shape (5,5,3))
2.定义一个切片
需要定义4个角:vert_start, vert_end, horiz_start ,horiz_end
vert_start = h * stride
vert_end = vert_start + f
horiz_start = w * stride
horiz_end = horiz_start + f
定义3D切片:
a_slice_prev = a_prev_pad[vert_start : vert_end, horiz_start : horiz_end, :]
2.4池化层
2.4.1前向池化
设计最大池化层和平均池化层