CNN 的计算是如何进行优化的?

2019-07-27  本文已影响0人  捡个七

传统的卷积计算方式如上图所示(上半部分),是提取一个个与 Kernel 大小一致的图像区域,然后分别和 Kernel 进行计算得到输出结果。

传统的计算方法复杂且耗费时间。然后就提出了 im2col 的方法对 CNN 的计算过程进行了优化(上图中的下半部分)。简单说就是将输入图像转换成一个大矩阵,kernel 也转换成一个大矩阵,然后将这两个矩阵进行相乘计算就可以。这样做的优点是逻辑简单,实现也简单。缺点就是消耗内存。

再来一幅图,展示计算过程:

这两幅图均来自参考 [1] 的论文,更具体的内容可以查阅论文。

im2col 算法实现过程可以参考 [2] 中的代码,感兴趣的话也可以自己从头跟着实现 CNN 的前向传播和反向传播,收获会很大。

参考:

[1]. High Performance Convolutional Neural Networks for Document Processing

[2]. 手把手带你用Numpy实现CNN <零>

[3]. 在 Caffe 中如何计算卷积?

上一篇 下一篇

猜你喜欢

热点阅读