卷积神经网络笔记--吴恩达深度学习课程笔记(一)

一.卷积神经网络(一)

1.1 计算机视觉

卷积神经网络一般应用于计算机视觉领域,由于有的时候图片的像素点很多,导致神经网络输入特征值的维数很多。

1.2 边缘检测示例

如下图所示,原图是一个661的矩阵,卷积核是一个331的矩阵,经过卷积后得到一个441的矩阵。
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第1张图片
计算过程如下:

| 3 | 0 | 1 |… … … …| 1 | 0 | -1 |
| 1 | 5 | 8 |…*… . … .| 1 | 0 | -1 | =3+1+2-1-8-2=-5
| 2 | 7 | 2 |… … … …| 1 | 0 | -1 |

1.3 更多边缘检测例子

垂直边缘检测不仅可以检测垂直方向的边缘,还可以区分该边是从亮到暗(正边)还是从暗到亮(负边)。
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第2张图片

1.4 Padding(在边缘是否填充)

对于之前介绍的卷积方式,其存在两个缺陷:
一是当一个66的图像经过33的卷积核卷积后会变成一个4*4的图像,这使图像经过卷积后变小了;
二是原矩阵边缘处只被运算一次,而中心处会被运算多次,导致边缘处大部分信息被丢失了。
下图是两种卷积方式:
Valid卷积是令padding为0;
Same卷积是通过添加padding使卷积前和卷积后图像的大小相同(p=(f-1)/2)。
引入padding后维数的公式为n+2p-f+1

1.5 卷积步长stride(filer每次移动的长度)

当步长为2时,每进行一次运算后都要向左或者下移动两个像素点,如下图。
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第3张图片
有步长的情况下维数的计算公式:
n×n * f×f =(n+2p-f)/s+1 × (n+2p-f)/s+1
镜像操作(mirroring operation):
| 3 | 0 | 1 |                      | 2 | 8 | 1 |
| 1 | 5 | 8 | ========>  | 7 | 5 | 0 |
| 2 | 7 | 2 |                      | 2 | 1 | 3 |
沿着对角线进行对称交换数值。

1.6 三维卷积

对三维图像进行卷积时,卷积核的通道数要与三维图像的通道数相等。当我们想对图像的多个边缘特征进行检测时,我们可以使用多个卷积核,这样卷积后生成图像的通道数为使用的卷积核的个数。

对于三维卷积具体运算的实例如下:如果使用的是下图333的卷积核,则一共有27个参数,进行卷积运算时让数值与相应的参数相乘后求和,这就是最后441矩阵中的一个值。
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第4张图片

1.7 单层卷积网络

通过下图来说明卷积层所做的操作,但我们有一个663的图片输入时,我们想要提取图片的两个特征值,所以我们用了两个333的卷积核,从而生成了442的两个矩阵,然后对矩阵增添一个偏置量b,这样就相当于完成了完成了全连接神经网络的线性运算z=w*a+b。之后对得到的矩阵运用激活函数就可以完成该卷积层的运算,其中relu函数表示小于0的数值转换为0。
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第5张图片
下图是对各个变量以及参数的维数的总结
f[l] = filter size
p[l] = padding
s[l] = stride
n_c[l] = number of filters
Each filter is: f[l] × f[l] × n_c[l]
Activations: a[l] —> n_h[l] × n_w[l] × n_c[l]
Weights: n_h[l] × n_w[l] × n_c[l] × n_c[l]
bias: n_c[l] —>(1,1,1,n_c[l])
input:n_h[l-1] × n_w[l-1] × n_c[l-1]
output:n_h[l] × n_w[l] × n_c[l]
n_h[l]=[(n_h[l-1] +2p[l] -f[l])/s[l] +1 ]
问题:10 filters 3×3×3有多少参数
答:共有(27+1)×10个参数

1.8 简单卷积网络示例

下图展示了使用一个卷积神经网络实现图片分类,在最后我们要将得到的矩阵展开成一个向量,然后输入到输出层的sigmoid函数或者softmax函数。对于卷积神经网络来说,通常图片会变小,通道数会增加。
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第6张图片

1.9 池化层

下图是最大池化,在每个作用区域内选择值最大的一个放在输出的方格上。当输入有多层时,对每一层都采用相同的操作,这样输入和输出的层数是相同的。最大池化的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大池化的输出里。最大池化运算的实际作用就是,如果在过滤器中提取到某个特征,那么保留其最大值,如果没有提取的这个特征,那么其最大值也是很小的。
Max pooling
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第7张图片
average pooling
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第8张图片
需要注意的是,池化过程中的参数都是静态的,不需要进行学习。并且,卷积过程中计算维数的公式也可以应用在池化过程中。池化层的主要作用是特征降维,提高模型的鲁棒性。

n_h[l] × n_w[l] × n_c[l]----> (n_h-f)/s+1 × (n_w-f)/s+1

1.10 卷积神经网络示例

一个卷积神经网络通常包含卷积层、池化层和全连接层,一般将卷积层和池化层作为一层。下图就是一个卷积神经网络的示例:
卷积神经网络笔记--吴恩达深度学习课程笔记(一)_第9张图片

1.11 为什么使用卷积

与只使用全连接层相比,卷积层有两个优势:参数共享和稀疏连接。这样可以有效减少参数的数量。

你可能感兴趣的:(深度学习,神经网络,卷积,计算机视觉,深度学习)