CNN训练中哪一层会花费更多时间?卷积层与FC层


Answers:


11

注意:我推测性地进行了这些计算,因此一些错误可能已悄悄蔓延。请告知任何此类错误,以便我进行纠正。

通常,在任何CNN中,训练的最大时间都取决于完全连接层中的错误的反向传播(取决于图像大小)。同样,最大内存也被它们占用。这是斯坦福大学关于VGG Net参数的幻灯片:

在此处输入图片说明

在此处输入图片说明

显然,您可以看到完全连接的层约占参数的90%。因此,它们占用了最大的内存。

就训练时间而言,它多少取决于所使用图像的大小(像素*像素)。在FC层中,很简单,您必须计算的导数等于参数的数量。就卷积层而言,让我们看一个示例,让我们以第二层为例:它具有64个维度的滤镜要更新。错误从第三层传播。第三层中的每个通道将其错误传播到其相应的过滤器。因此,像素将有助于大约权重更新。而且由于有这样的(333)(333)224224224224(333)64224224通道,我们将要执行的计算总数为计算。64224224(333)87106

现在让我们来看看最后一层。它将渐变传递到上一层。每个像素将更新滤镜。并且由于有256个这样的因此所需的总计算量将为。56562565656(33256)56562565656(33256)1850106

因此,卷积层中的计算数量实际上取决于滤波器的数量和图片的大小。总的来说,我使用以下公式来计算一层中的过滤器所需的更新次数,而且我也考虑过因为这将是最坏的情况:stride=1

channelsoutput(pixelOutputheightpixelOutputwidth)(filterheightfilterwidthchannelsinput)

借助快速的GPU,我们可以轻松处理这些庞大的计算。但是在FC层中,需要加载整个矩阵,这会导致存储问题,而卷积层通常不会出现这种问题,因此训练卷积层仍然很容易。同样,所有这些都必须加载到GPU内存本身中,而不是CPU的RAM中。

这也是AlexNet的参数表:

在此处输入图片说明

以下是各种CNN架构的性能比较:

在此处输入图片说明

我建议您阅读斯坦福大学的CS231n第9讲,以更好地了解CNN体系结构的细节


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.