前言

本文以CNNs 为例,说明含有全连接层的网络,为什么需要固定输入图像的大小

CNN

在处理图像级的分类任务时,CNNs是常用的模型。我们输入图像,网络会输出一个向量,该向量中每个位置的值,往往代表我们的输入图像属于对应的类的概率,概率最大的类就是图像所属的类别。

因为输出是一个向量,而我们的输入是图像,至少是二维的(因为包含位置信息)。因此,我们需要利用全连接层来消除位置信息,将其转换成一维向量。

我们知道CNNs网络的最后几层,往往是全连接层。我们对前一层的输出进行flatten操作(将矩阵展开成一维向量,比如将28*28的矩阵展开成1*784的向量),作为全连接层的输入,然后与全连接层进行矩阵乘法,得到分类的结果向量。

当网络结构固定下来后,全连接层的参数个数也就固定下来了。比如每个神经元有28*28 = 784个参数,一共有5个神经元(也就是5个候选类别)。

我们进行矩阵乘法一维cnn输入是什么 cnn 一维数据_一维cnn输入是什么

  • 一维cnn输入是什么 cnn 一维数据_全连接_02是全连接层的参数矩阵,大小为 一维cnn输入是什么 cnn 一维数据_全连接_03
  • 一维cnn输入是什么 cnn 一维数据_一维cnn输入是什么_04是全连接层的输入,大小需要为 一维cnn输入是什么 cnn 一维数据_cnn_05
  • 一维cnn输入是什么 cnn 一维数据_cnn_06是全连接层的输出,大小为 一维cnn输入是什么 cnn 一维数据_一维cnn输入是什么_07

一维cnn输入是什么 cnn 一维数据_全连接_08

可见,flatten后的数据的第一维大小,与全连接层参数第二维大小必须相同。而网络结构(卷积层,池化层等)是固定的,输入图像的尺寸会经过一个固定的变换。因此,输入图像的大小必须是固定的,这样才能与全连接层进行矩阵乘运算。

FCN

FCN为全卷积网络,就是将CNNs后面的全连接层都换成了卷积层。FCN处理的是像素级的分类任务,常用于语义分割。网络输出的尺寸与输入图像的尺寸相同,给予每个像素一个类别。因为网络结构中没有全连接层,因此对于一个固定的FCN网络,对输入图像的尺寸没有限制,可以接受各种尺寸的输入图像。

FCN与CNN的区别和详细介绍