码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 卷积神经网络参数量和计算量的计算


    卷积神经网络参数量和计算量的计算

    提示:据说是科大讯飞算法面试题


    文章目录

    • 卷积神经网络参数量和计算量的计算
      • @[TOC](文章目录)
    • 题目
    • 一、计算量
      • 1. 首先一次卷积的计算量:
      • 2. 在一个特征图上执行卷积需要进行卷积的次数:
      • 3. C个特征图上进行卷积运算的次数
      • 4. 输出一个特征图通道需要的加法次数
      • 5. 输出O个特征图需要计算的次数
    • 二、参数量
    • 总结

    题目

    我们在设计一个CNN网络时,通常要考虑两个事情,

    一个是这个网络需要的计算量有多大,
    一个是这个模型的参数量有多少。

    前者决定了网络训练的快慢(硬件设备确定的情况),
    后者决定了计算设备需要多大的内存或显存。

    不就是算法的时间复杂度和空间复杂度吗???

    本文CNN的计算量以计算机做乘加次数为单位,即完成某个操作,需要执行多少次乘法和加法操作。

    参数量以参数个数为单位,要计算内存或显存的,用参数量乘以每个参数所占的字节数即可。


    一、计算量

    对于输入特征图f=(B,H,W,C),
    卷积核张量kernel=(K,S,C,O),
    其中,B是batch size大小,H,W,C分别是输入特征图的高,宽和通道数,
    K,S,C,O分别是卷积操作时,卷积核的大小,移动步长(stride),特征图输入通道及输出通道数。

    先分开来看一下一个数据样本每一小步需要的计算次数:

    1. 首先一次卷积的计算量:

    在这里插入图片描述

    2. 在一个特征图上执行卷积需要进行卷积的次数:

    在这里插入图片描述

    3. C个特征图上进行卷积运算的次数

    C个输入特征图上进行卷积运算的次数为C

    4. 输出一个特征图通道需要的加法次数

    在C个输入特征图上进行卷积之后需要将卷积的结果相加,得到一个输出特征图上卷积结果,C个相加需要C-1次加法,所以输出一个特征图需要的计算量是
    在这里插入图片描述

    5. 输出O个特征图需要计算的次数

    在这里插入图片描述
    上面的式子得到的是卷积神经网路的一层所需要的计算量,

    将每层的计算量相加就可以得到整个网络的计算量。

    通常包含乘加的操作有Pool,Relu,BN(含有除法),卷积等。

    一般都是卷积操作占主要。

    o(kN)=o(n),一层就是老大了


    二、参数量

    在这里插入图片描述
    需要注意的是,上面计算的仅仅是模型的参数量,

    若要计算模型实际需要多少显存,还要考虑特征图的大小,

    因为每一层卷积的输出都需要缓存,
    还要BN计算出来的均值和偏差也需要缓存,
    权重的梯度也需要缓存。

    通常模型参数所占用的显存比例很小。


    总结

    提示:重要经验:

    1)卷积神经网络参数量和计算量的计算,需要清楚知道卷积怎么卷,卷积核的KSCO都是啥含义,K是卷积核大小,S是步长,C是通道,O输出通道
    3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

  • 相关阅读:
    msfconsole之制作windows木马并成功获取shell
    Ubuntu系统下Nginx安装
    静态HTML CSS网站制作成品 简单的学生网页作业代码【带视频演示】
    RocketMQ源码阅读(十二)Consumer-消息拉取
    将Apache访问日志保存到MySQL数据库
    Python每日一练——第5天:闰年问题升级版
    springboot + solr
    微信小程序修改van-popup的背景颜色
    53、springboot对websocket的支持有两种方式-------1、基于注解开发 WebSocket ,简洁实现多人聊天界面
    SpringBoot:(三)SpringBoot的特性
  • 原文地址:https://blog.csdn.net/weixin_46838716/article/details/125493613
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号