deeplearning模型分析
FLOPs
paddleslim.analysis.flops(program, detail=False)
获得指定网络的浮点运算次数(FLOPs)。
参数:
• program(paddle.fluid.Program) - 待分析的目标网络。更多关于Program的介绍请参考:Program概念介绍。
• detail(bool) - 是否返回每个卷积层的FLOPs。默认为False。
• only_conv(bool) - 如果设置为True,则仅计算卷积层和全连接层的FLOPs,即浮点数的乘加(multiplication-adds)操作次数。如果设置为False,则也会计算卷积和全连接层之外的操作的FLOPs。
返回值:
• flops(float) - 整个网络的FLOPs。
• params2flops(dict) - 每层卷积对应的FLOPs,其中key为卷积层参数名称,value为FLOPs值。
示例:
import paddle.fluid as fluid
from paddle.fluid.param_attr import ParamAttr
from paddleslim.analysis import flops

def conv_bn_layer(input,
num_filters,
filter_size,
name,
stride=1,
groups=1,
act=None):
conv = fluid.layers.conv2d(
input=input,
num_filters=num_filters,
filter_size=filter_size,
stride=stride,
padding=(filter_size - 1) // 2,
groups=groups,
act=None,
param_attr=ParamAttr(name=name + “_weights”),
bias_attr=False,
name=name + “_out”)
bn_name = name + “_bn”
return fluid.layers.batch_norm(
input=conv,
act=act,
name=bn_name + ‘_output’,
param_attr=ParamAttr(name=bn_name + ‘_scale’),
bias_attr=ParamAttr(bn_name + ‘_offset’),
moving_mean_name=bn_name + ‘_mean’,
moving_variance_name=bn_name + ‘_variance’, )

main_program = fluid.Program()
startup_program = fluid.Program()

X X O X O

conv1–>conv2–>sum1–>conv3–>conv4–>sum2–>conv5–>conv6

| ^ | ^

|| |________|

X: prune output channels

O: prune input channels

with fluid.program_guard(main_program, startup_program):
input = fluid.data(name=“image”, shape=[None, 3, 16, 16])
conv1 = conv_bn_layer(input, 8, 3, “conv1”)
conv2 = conv_bn_layer(conv1, 8, 3, “conv2”)
sum1 = conv1 + conv2
conv3 = conv_bn_layer(sum1, 8, 3, “conv3”)
conv4 = conv_bn_layer(conv3, 8, 3, “conv4”)
sum2 = conv4 + sum1
conv5 = conv_bn_layer(sum2, 8, 3, “conv5”)
conv6 = conv_bn_layer(conv5, 8, 3, “conv6”)

print(“FLOPs: {}”.format(flops(main_program)))
model_size
paddleslim.analysis.model_size(program)
获得指定网络的参数数量。
参数:
• program(paddle.fluid.Program) - 待分析的目标网络。更多关于Program的介绍请参考:Program概念介绍。
返回值:
• model_size(int) - 整个网络的参数数量。
示例:
import paddle.fluid as fluid
from paddle.fluid.param_attr import ParamAttr
from paddleslim.analysis import model_size

def conv_layer(input,
num_filters,
filter_size,
name,
stride=1,
groups=1,
act=None):
conv = fluid.layers.conv2d(
input=input,
num_filters=num_filters,
filter_size=filter_size,
stride=stride,
padding=(filter_size - 1) // 2,
groups=groups,
act=None,
param_attr=ParamAttr(name=name + “_weights”),
bias_attr=False,
name=name + “_out”)
return conv

main_program = fluid.Program()
startup_program = fluid.Program()

X X O X O

conv1–>conv2–>sum1–>conv3–>conv4–>sum2–>conv5–>conv6

| ^ | ^

|| |________|

X: prune output channels

O: prune input channels

with fluid.program_guard(main_program, startup_program):
input = fluid.data(name=“image”, shape=[None, 3, 16, 16])
conv1 = conv_layer(input, 8, 3, “conv1”)
conv2 = conv_layer(conv1, 8, 3, “conv2”)
sum1 = conv1 + conv2
conv3 = conv_layer(sum1, 8, 3, “conv3”)
conv4 = conv_layer(conv3, 8, 3, “conv4”)
sum2 = conv4 + sum1
conv5 = conv_layer(sum2, 8, 3, “conv5”)
conv6 = conv_layer(conv5, 8, 3, “conv6”)

print(“FLOPs: {}”.format(model_size(main_program)))
TableLatencyEvaluator
classpaddleslim.analysis.TableLatencyEvaluator(table_file, delimiter=", ")
基于硬件延时表的模型延时评估器。
参数:
• table_file(str) - 所使用的延时评估表的绝对路径。关于演示评估表格式请参考:PaddleSlim硬件延时评估表格式
• delimiter(str) - 在硬件延时评估表中,操作信息之前所使用的分割符,默认为英文字符逗号。
返回值:
• Evaluator - 硬件延时评估器的实例。
latency(graph)
获得指定网络的预估延时。
参数:
o graph(Program) - 待预估的目标网络。
返回值:
o latency - 目标网络的预估延时。

deeplearning模型分析相关推荐

  1. deeplearning模型量化实战

    deeplearning模型量化实战 MegEngine 提供从训练到部署完整的量化支持,包括量化感知训练以及训练后量化,凭借"训练推理一体"的特性,MegEngine更能保证量化 ...

  2. 机器学习(12)欠拟合过拟合、模型分析与正则化

    目录 一.欠拟合 二.过拟合 三.模型分析 四.正则化 4-1.L2正则化 4-2.L1正则化 一.欠拟合 机器学习的特征过少,导致预测不准确.(训练集和测试集表现都不好) 解决方法:增加数据的特征数 ...

  3. RFM模型分析与客户细分

    今天偶然看到沈浩老师的文章<数据挖掘应用案例:RFM模型分析与客户细分>(http://shenhaolaoshi.blog.sohu.com/201923838.html),感慨不少.这 ...

  4. 基于深度学习的脑电图识别 综述篇(三)模型分析

    作者|Memory逆光 本文由作者授权分享 导读 脑电图(EEG)是一个复杂的信号,一个医生可能需要几年的训练并利用先进的信号处理和特征提取方法,才能正确解释其含义.而如今机器学习和深度学习的发展,大 ...

  5. 第4章-无人车UGV模型分析

    第3章 回到目录 第5章 4 无人车UGV模型分析 4.1 建立无人车动力学模型 4.2 一阶控制器通过速度控制小车 4.2.1 一维直线运动 4.2.2 二维平面运动 4.3 二阶控制器通过加速度控 ...

  6. 【视频课】先搞懂你用的模型,深度学习模型分析课程来了!

    前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...

  7. C语言一级指针(char *)易错模型分析

    C语言一级指针char *易错模型分析 char *(字符串)做函数参数出错模型分析 越界 不断修改指针变量的值 你向外面传递什么 重复的错误何时休 char *(字符串)做函数参数出错模型分析 建立 ...

  8. select * 映射错误_高性能IO模型分析-浅析Select、Poll、Epoll机制(三)

    本章(第三章)内容其实和第二章内容,都是第一章内容的延伸.第二章内容是第一章内容的延伸,本章内容则是第一章内容再往底层方面的延伸,也是面试中考察网络方面知识时,可能会问到的几个点. select.po ...

  9. linux i2c adapter 增加设备_LINUX设备驱动模型分析之四 设备模块相关(DEVICE)接口分析...

    本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> <LINUX设备驱动模型分析之三 ...

最新文章

  1. 有关C/C++中,表达式计算顺序的问题,以及表达式内部变量“副作用”问题(转)...
  2. 达观杯_构建模型(四)贝叶斯
  3. 数据库跟尾过多的错误,能够的原因阐发及处置惩罚设备
  4. WaitForSingleObject的用法详细介绍
  5. Android 4.0 Notification
  6. Linux权限中的大写s,Linux文件权限、用户、组、文本实操二
  7. PyQt4编程之如何做菜单栏
  8. 倒计时 2 天 | 神策 2019 数据驱动大会即将开幕
  9. php获取汉字的长度,php中处理汉字字符串长度:strlen和mb_strlen
  10. python二分法查找时间点_Python 二分法查找
  11. nginx 伪静态php去掉后缀_Nginx与PHP是如何进行交互的?
  12. skycut刻字机软件控制选择
  13. FTPS服务器搭建流程
  14. hybrid 单臂路由
  15. 微信公众号申请、微信支付申请教程
  16. 【Docker】No defult Boot2Docer ISO异常
  17. Docker_尚硅谷视频学习笔记
  18. 通过西联快汇收取Google Adsense收入的详细步骤
  19. 《魂斗罗:归来》子弹中没中,没你想得那么简单!
  20. pytorch 模型中的bn层一键转化为同步bn(syncbn)

热门文章

  1. java操作跨页的word cell,“excle如何打印不出现断行“EXCEL中,如何不跨页断行打印或显示,谢谢...
  2. 2022-2028年中国液化石油气(LPG)行业投资分析及前景预测报告
  3. 记录一次简单、高效、无错误的linux上安装pytorch的过程
  4. 建议使用更加安全的ast.literal_eval去替代eval
  5. Kali2021.2 VMware最新版安装步骤
  6. DateGridView列的输出顺序反了
  7. Android数据持久化:文件存储
  8. 自动驾驶公司尴尬处境
  9. OpenCL通用异构开放环境
  10. 将TVM集成到PyTorch上