前言
本文以CNNs 为例,说明含有全连接层的网络,为什么需要固定输入图像的大小
CNN
在处理图像级的分类任务时,CNNs 是常用的模型。我们输入图像,网络会输出一个向量,该向量中每个位置的值,往往代表我们的输入图像属于对应的类的概率,概率最大的类就是图像所属的类别。
因为输出是一个向量,而我们的输入是图像,至少是二维的(因为包含位置信息)。因此,我们需要利用全连接层来消除位置信息,将其转换成一维向量。
我们知道CNNs 网络的最后几层,往往是全连接层。我们对前一层的输出进行flatten 操作(将矩阵展开成一维向量,比如将28*28 的矩阵展开成1*784 的向量),作为全连接层的输入,然后与全连接层进行矩阵乘法,得到分类的结果向量。
当网络结构固定下来后,全连接层的参数个数也就固定下来了。比如每个神经元有28*28 = 784 个参数,一共有5 个神经元(也就是5个候选类别)。
我们进行矩阵乘法
W
?
X
=
V
W* X = V
W?X=V
-
W
W
W是全连接层的参数矩阵,大小为
5
?
784
5 * 784
5?784
-
X
X
X是全连接层的输入,大小需要为
784
?
1
784 * 1
784?1
-
V
V
V是全连接层的输出,大小为
5
?
1
5 * 1
5?1
可见,flatten 后的数据的第一维大小,与全连接层参数第二维大小必须相同。而网络结构(卷积层,池化层等)是固定的,输入图像的尺寸会经过一个固定的变换。因此,输入图像的大小必须是固定的,这样才能与全连接层进行矩阵乘运算。
FCN
FCN 为全卷积网络,就是将CNNs 后面的全连接层都换成了卷积层。FCN 处理的是像素级的分类任务,常用于语义分割。网络输出的尺寸与输入图像的尺寸相同,给予每个像素一个类别。因为网络结构中没有全连接层,因此对于一个固定的FCN 网络,对输入图像的尺寸没有限制,可以接受各种尺寸的输入图像。
FCN 与CNN 的区别和详细介绍
|