44、BatchNorm 为什么可以和卷积融合?
2023-12-24 20:32:08
conv 算法和 bn 算法都介绍过了,这里来看一个属于两者优化方面的知识:
为什么在一些情况下,我们需要将 conv 和 bn 融合起来呢,为什么他们可以融合以及怎么融合呢?
融合的目的
首先神经网络的性能很重要这是老生常谈的话题了。将两个算法融合成一个算法,目的肯定就是为了提高神经网络的性能。
这里引入一点计算机中计算的知识:
传统的冯诺依曼架构的计算机,是将数据的存储和计算分离开的。
也就是说,要计算的数据是放在存储器上,而负责计算的硬件是另一个单独的计算单元。在计算时需要将数据从存储器上搬运到计算单元上,完成计算后再搬运回存储器上。
就像是在厨房做饭,数据就是菜,如果做饭需要先将菜从冰箱里拿出来,放在锅里炒,炒完再放回餐盘中。
这其中,冰箱就是存储器,锅就是计算单元,而餐盘是另一个存储器。
这是典型的冯诺依曼架构,现在大部分电脑和计算芯片依旧采用的还是这个架构。
在我们的笔记本电脑中,存储器一般指的是内存或者硬盘,计算单元就是CPU。
将数据从内存搬运到 CPU 中是需要时间的,虽然时间很短。
假设 conv 计算的输出数据是 [1, ho, wo, co],然后给到下一层 BN 来计算。如果将这个输出数据 [ho, wo, co] 存回存储器,下一层 BN 再去存储器上搬过来,这一来一回的时间就浪费了。
于是,我们就想到了一个方法,将 conv 和 bn 融合成一个算法,这样只需要在锅里做一道 conv+bn 的菜,做完后直接放回餐盘中即可,而conv 的输
文章来源:https://blog.csdn.net/dongtuoc/article/details/135185282
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!