目录:

1、经典的卷积层是如何计算的

2、分析卷积层的计算量

3、分析卷积层的参数量

4、pytorch实现自动计算卷积层的计算量和参数量


1、卷积操作如下:

http://cs231n.github.io/assets/conv-demo/index.html

假设卷积层的输入特征图大小为C_in x H x W, 卷积核大小为K_1 x K_2, padding = P_1 x P_2, stride = S_1 x S_2, filter 数目为C_out。

输出的特征图大小为C_out x H_out x W_out, 其中

  H_out = [(H - K_1 + 2P_1) / S_1] + 1

  W_out = [(W - K_2 + 2P_2) / S_2] + 1

[]表示向下取整。


2、计算量分析

只考虑乘法计算量:

为了得到输出的特征图的某一个位置的像素值,需要 C_in x K_1 x K_2次乘法操作,而特征图总共有C_out x H_out x W_out个像素,因此总计算量为

                    C_out x H_out x W_out x ( C_in x K_1 x K_2)

同时考虑乘法和加法计算量:

1)bias=true,即考虑偏置的情况

乘法操作计算量:

为了得到输出的特征图的某一个位置的像素值,需要 C_in x K_1 x K_2 次乘法操作,而特征图总共有C_out x H_out x W_out个像素,因此总计算量为

                    C_out x H_out x W_out x ( C_in x K_1 x K_2)

加法操作计算量:

为了得到输出的特征图的某一个位置的像素值,需要 (C_in x (K_1 x K_2 - 1)) + (C_in - 1) + 1  = C_in x K_1 x K_2 次加法操作,可以看成三部分,第一部分表示在某一个通道进行一个K_1 x K_2 大小的卷积操作需要 (K_1 x K_2 - 1)次加法,有C_in个通道,故 C_in x (K_1 x K_2 - 1)次加法,每个通道都卷积后,得到C_in个数,接下来需要有 C_in - 1次加法,最后加上bias又1次加法。 而特征图总共有C_out x H_out x W_out个像素,因此总加法计算量为

                    C_out x H_out x W_out x ( C_in x K_1 x K_2)

因此综上所述,乘加法计算量为 2 x  C_out x H_out x W_out x (C_in x K_1 x K_2)次

Note that:

当前一般浮点操作数(flops),一般只看卷积乘法以及加上bias的一次加法。

bias=true, flops = C_out x H_out x W_out x ( C_in x K_1 x K_2 + 1)

bias=false, flops= C_out x H_out x W_out x ( C_in x K_1 x K_2)

2)bias=false,不考虑偏置情况。根据上述分析,无bias情况下乘加法计算量为C_out x H_out x W_out x (2 x C_in x K_1 x K_2 - 1)次


3、参数量分析

卷积核参数量:

C_out x C_in x K_1 x K_2

bias参数量:

C_out

因此总参数量为 C_out x C_in x K_1 x K_2 + C_out


4、pytorch实现

深度学习之(经典)卷积层计算量以及参数量总结 (考虑有无bias,乘加情况)的更多相关文章

  1. [源码解析] 深度学习流水线并行 PipeDream(2)--- 计算分区

    [源码解析] 深度学习流水线并行 PipeDream(2)--- 计算分区 目录 [源码解析] 深度学习流水线并行 PipeDream(2)--- 计算分区 0x00 摘要 0x01 前言 1.1 P ...

  2. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  3. 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)

    一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...

  4. 学习笔记TF014:卷积层、激活函数、池化层、归一化层、高级层

    CNN神经网络架构至少包含一个卷积层 (tf.nn.conv2d).单层CNN检测边缘.图像识别分类,使用不同层类型支持卷积层,减少过拟合,加速训练过程,降低内存占用率. TensorFlow加速所有 ...

  5. SIGAI深度学习第九集 卷积神经网络3

    讲授卷积神经网络面临的挑战包括梯度消失.退化问题,和改进方法包括卷积层.池化层的改进.激活函数.损失函数.网络结构的改 进.残差网络.全卷机网络.多尺度融合.批量归一化等 大纲: 面临的挑战梯度消失问 ...

  6. 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统

    基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...

  7. 如何可视化深度学习网络中Attention层

    前言 在训练深度学习模型时,常想一窥网络结构中的attention层权重分布,观察序列输入的哪些词或者词组合是网络比较care的.在小论文中主要研究了关于词性POS对输入序列的注意力机制.同时对比实验 ...

  8. 深度学习之depthwise separable convolution,计算量及参数量

    目录: 1.什么是depthwise separable convolution? 2.分析计算量.flops 3.参数量 4.与传统卷积比较 5.reference

  9. 自己动手实现深度学习框架-7 RNN层--GRU, LSTM

    目标         这个阶段会给cute-dl添加循环层,使之能够支持RNN--循环神经网络. 具体目标包括: 添加激活函数sigmoid, tanh. 添加GRU(Gate Recurrent U ...

随机推荐

  1. win7如何设置以管理员身份运行

    一.对所有程序以管理员身份运行 1.右键单击桌面“计算机”,选择“管理” 2.在页面左侧,依此打开“计算机管理(本地)→ 系统工具→本地用户和组→用户”,在右侧找到“Administrator”,双击 ...

  2. MongoDB操作:update()

    @Override public boolean update(String dbName, String collectionName, DBObject oldValue, DBObject ne ...

  3. PID221 / 烦人的幻灯片☆ x

    超详细解释!我都被我自己惊呆了! (这个题目意思我缓冲了很久!一定要读懂题!否则做不出来) 题目不懂就多读呀~ 提交你的代码 查看讨论和题解 题目描述 李教授于今天下午做一个非常重要的演讲.不幸的是他 ...

  4. Halcon10.0 + VS2010

    新建一个C++空项目 添加c1.pp 复制example1.cpp的代码 配置include\lib\bin\Linker之后

  5. js中的 for, for in, for of foreach,filter使用

    下面是对数组进行循环 var array = [ { id: , name: 'ohzri', birth: '1999.09.09', city: '湖北', salary: }, { id: , ...

  6. (转)IIS Express介绍与使用

    IIS Express是什么?IIS Express是为开发人员优化的轻量级.自包含版本的IIS.IIS Express使使用当前最新版本的IIS来开发和测试网站变得容易.它具有IIS 7及以上的所有 ...

  7. 将项目发布到neuxs私服

    需要在 pom.xml中配置 <distributionManagement> <repository> <id>user-release</id> & ...

  8. C# Setting.settings . 用法

    1.定义 在Settings.settings文件中定义配置字段.把作用范围定义为:User则运行时可更改,Applicatiion则运行时不可更改.可以使用数据网格视图,很方便: 2.读取配置值 t ...

  9. WCF 配置说明

    关于WCF中的地址和绑定,需要补充一下. WCF中支持的传输协议包括HTTP.TCP.Peer network(对等网).IPC(基于命名管道的内部进程通信)以及MSMQ(微软消息队列),每个协议对应 ...

  10. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍