博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
『cs231n』卷积神经网络工程实践技巧_下
阅读量:6701 次
发布时间:2019-06-25

本文共 976 字,大约阅读时间需要 3 分钟。

概述

计算加速

方法一:

由于计算机计算矩阵乘法速度非常快,所以这是一个虽然提高内存消耗但是计算速度显著上升的方法,把feature map中的感受野(包含重叠的部分,所以会加大内存消耗)和卷积核全部拉伸成为向量,组成两个矩阵相乘,再想办法恢复为输出的feature map。

方法二:

 

利用傅里叶变换的特性加速计算,思路来源于信号处理,只对大卷积核有效。

方法三:

 

思路来源于经典算法,用的人很少,老师也没怎么介绍,个人亦是不太感兴趣,需要的时候自己查资料吧。

总结:

比较简要的总结就是,如果真的需要自己实现卷积层的时候,那就使用im2col提高效率吧。

 

GPU/CPU

这一部分老师天南海北的扯了不少,中心思想就是:深度学习使用GPU分布式计算效果更好,英伟达伟光正(历史局限性问题,现在的谷歌的TPU貌似也有崛起的可能)。

不过下图还是展示了,即使GPU在并行计算领域效能非凡(相对应的CPU很擅长顺序处理),面对深度学习的海量数据计算还是力不从心,而且,好的GPU价格往往不菲(不是我吐槽,这是老师说的),

 

 

性能瓶颈

虽然GPU计算速度极其高效,但GPU和CPU数据相互拷贝过程还是会消耗大量时间

 

文件读取,比如打开批量jpg时,由于不同图片存放于硬盘不同位置,随机索引会消耗大量时间,而解压缩也会消耗大量时间,所以一般的做法是进行预处理,解压为顺序存储的像素文件,一般各个框架都有自己的标准文件格式

 

 网瘾少年都知道,GPU么,内存越大(价格越贵)越好,(逃...

 

 浮点类型

深度学习常使用单精度(32位)浮点数,

1.节省内存,可以存储更多的数据

2.更少的位数,更少的计算量,更快的运算速度

 

在课程中的程序中,由于numpy默认精度是64位,一般都给出了显示的类型转换。

 

实际上有很多16位的尝试,也有一些取得了不错的结果,但是16位的表示范围和精度是个问题,有人做过尝试:正常的16位运算由于误差积累较难收敛,如果运算结果使用高精度暂存,然后随机四舍五入(具体怎么随机不太明晰)的话,结果不错,还有人使用10位激活函数+12位参数更新的精度组合进行计算,结果也不错,还有极端人士使用1位(1或-1)进行计算,老师说很酷,我觉得这只是他的中性的口头禅吧... ...

总之,现在老老实实的使用32位即可,以后说不定会使用16位计算。

总结

 

转载地址:http://hogoo.baihongyu.com/

你可能感兴趣的文章
山寨“饿了么”应用中添加菜品数量按钮效果
查看>>
WWDC 2013 Session笔记 - iOS7中弹簧式列表的制作
查看>>
iOS开发出错whose view is not in the window hierarchy!的解决
查看>>
Linux学习之CentOS(三)----将Cent0S 7的网卡名称eno16777736改为eth0
查看>>
解说redis中如何实现高可用
查看>>
小程序类似抖音视频整屏切换
查看>>
19-03-25
查看>>
activity idea编写bpmn流程文件
查看>>
windows Virtualbox下配置Ubuntu,且用ssh连接
查看>>
PAT 1048 数字加密
查看>>
JVM原理探究及调优方法论
查看>>
iphoneX样式兼容
查看>>
Java缓存浅析
查看>>
关于微信小程序swiper的问题
查看>>
android 连接指定wifi
查看>>
爱屋吉屋病死后,链家、中原、我爱我家们却哭不得笑不得
查看>>
《PWA实战:面向下一代的Progressive Web APP》读书笔记
查看>>
redux 源码详解
查看>>
Android屏幕适配
查看>>
你真的懂函数吗?
查看>>