MEC —— 优化内存与速度的卷积计算

本文介绍了一种名为MEC的内存高效且速度快的卷积计算方法,针对深度学习中的卷积神经网络。MEC通过改进im2col + GEMM策略减少了内存消耗,同时提高了计算速度。文章详细阐述了初级和高级版本的算法,并提供了实验对比,显示了在内存占用和计算速度上的提升。
摘要由CSDN通过智能技术生成

本次介绍一种内存利用率高且速度较快的卷积计算方法。 来自ICML2017, 《MEC: Memory-efficient Convolution for Deep Neural Network》

1. 背景工作

目前的CNN模型中,全连接层往往在最后一层才会使用。 意思也就是说,网络的主体是由卷积层构成的。 因此,加快卷积层的计算对于整个网络的性能至关重要。

目前,卷积的计算大多采用间接计算的方式,主要有以下三种实现方式:

  • im2col + GEMM。 caffe等很多框架中都使用了这种计算方式,原因是将问题转化为矩阵乘法后可以方便的使用很多矩阵运算库(如MKL、openblas、Eigen等)。
  • FFT变换。 时域卷积等于频域相乘,因此可将问题转化为简单的乘法问题。
  • Winograd。 这种不太熟悉,据说在GPU上效率更高。 NNPACK就是FFT和Winograd方法的结合。

上面三种方法执行效率都还不错,但对内存占用比较高,因为需要存储中间结果或者临时辅助变量。

本文的方法主要改进了im2col + GEMM的策略,目的主要是减少内存消耗的同时顺便提升点速度。由于同样可以利用目前成熟的矩阵运算库,因此算法的实现难度并不大。

下图分别是直接计算卷积以及im2col + GEMM的实现方式。 可见后者需要比较多的内存存储一个临时矩阵(用于保存im2col的结果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值