人工智能大数据

人工智能00039 深度学习与图像识别书摘39 卷积神经网络基础

2024-02-28  本文已影响0人  水晓朴

全连接层

全连接层(Fully Connected Layer)可以简单地理解为前面章节中提到的神经网络的一个隐藏层,它包含权重向量W和激活函数。

具体来说,对于一张32*32*3的图片(宽和高均为32个像素,有RGB三个通道,可以将其理解为一个32*32*3的矩阵),要通过全连接层,首先要将其拉伸为3072*1的向量作为神经网络隐藏层的输入,然后该向量与权重向量W做点乘操作,再将点乘后的结果作为激活函数(如Sigmoid或tanh)的输入,最终,激活函数输出的结果便是全连接层的最终结果。

说明:

当完成激活(activation)后的结果为一维向量时,通常将该结果称为特征向量(或激活向量);当激活后的结果为二维向量时,通常称为特征层(feature map,有时也称为激活层,activation map)。由于后面要介绍的卷积层也需要经过激活函数,因此卷积操作得到的结果通常被称为“特征层”。

卷积层

(Convolution Layer)与全连接层不同,它保留了输入图像的空间特征,即对于一张32*32*3的图片而言,卷积层的输入就是32*32*3的矩阵,不需要做任何改变。

在卷积层中,我们引入了一个新的概念:卷积核kernel(常简称为卷积,有时也称为滤波器filter)。

卷积的大小可以在实际需要时自定义其长和宽(常见的卷积神经网络中通常将其设置为1*1、3*3、5*5等),其通道个数一般设置为与输入图片通道数量一致。

必要的概念已经介绍完毕,接下来我们讲一下卷积的过程:让卷积(核)在输入图片上依次进行滑动,滑动方向为从左到右,从上到下;每滑动一次,卷积(核)就与其滑窗位置对应的输入图片x做一次点积计算并得到一个数值。 这里需要提到另外一个概念:步长(stride)。

步长是指卷积在输入图片上移动时需要移动的像素数,如步长为1时,卷积每次只移动1个像素,计算过程不会跳过任何一个像素,而步长为2时,卷积每次移动2个像素。

补充说明: 卷积每次滑动覆盖的格子范围在图像处理中被称为“感受野”,这个名词在后文中还会用到。

卷积神经网络是由一系列卷积层经过激活来得到的。

与传统神经网络不同的是,卷积层的计算是含有空间信息的。 PyTorch中的卷积函数代码具体如下:  classtorch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

in_channels (int) :输入图片的channel

out_channels (int) :输出图片(特征层)的channel kernel_size (int or tuple) :kernel的大小

stride (int or tuple, optional) :卷积的步长,默认为1

padding (int or tuple, optional) :四周pad的大小,默认为0

dilation (int or tuple, optional) :kernel元素间的距离,默认为1(dilation翻译为扩张,有时候也称为“空洞”,有专门的文章研究dilation convolution)

groups (int, optional) :将原始输入channel划分成的组数,默认为1(初级读者暂时可以不必细究其用处)

bias (bool, optional) :如果是Ture,则输出的bias可学,默认为True

上一篇 下一篇

猜你喜欢

热点阅读