『cs231n』卷积神经网络工程实践技巧_下
概述

计算加速
方法一:

由于计算机计算矩阵乘法速度非常快,所以这是一个虽然提高内存消耗但是计算速度显著上升的方法,把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位计算。
总结

『cs231n』卷积神经网络工程实践技巧_下的更多相关文章
- 『cs231n』卷积神经网络工程实践技巧_上
概述 数据增强 思路:在训练的时候引入干扰,在测试的时候避免干扰. 翻转图片增强数据. 随机裁切图片后调整大小用于训练,测试时先图像金字塔制作不同尺寸,然后对每个尺寸在固定位置裁切固定大小进入训练,最 ...
- 『cs231n』卷积神经网络的可视化与进一步理解
cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解,其中原论文翻译比博文更容易理解,但是太长,而博文是业者而非 ...
- Stanford CS231n实践笔记(课时22卷积神经网络工程实践技巧与注意点 cnn in practise 上)
本课主要2个实践内容: 1.keras中数据集丰富,从数据集中提取更多特征(Data augmentation) 2.迁移学习(Tranform learning) 代码:https://github ...
- 『cs231n』循环神经网络RNN
循环神经网络 循环神经网络介绍摘抄自莫凡博士的教程 序列数据 我们想象现在有一组序列数据 data 0,1,2,3. 在当预测 result0 的时候,我们基于的是 data0, 同样在预测其他数据的 ...
- 『cs231n』通过代码理解风格迁移
『cs231n』卷积神经网络的可视化应用 文件目录 vgg16.py import os import numpy as np import tensorflow as tf from downloa ...
- 『cs231n』计算机视觉基础
线性分类器损失函数明细: 『cs231n』线性分类器损失函数 最优化Optimiz部分代码: 1.随机搜索 bestloss = float('inf') # 无穷大 for num in range ...
- 『TensorFlow』通过代码理解gan网络_中
『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 上篇是一个尝试生成minist手写体数据的简单GAN网络,之前有介绍过,图片维度是28*28*1,生成器的上采样使 ...
- 【cs231n】卷积神经网络
较好的讲解博客: 卷积神经网络基础 深度卷积模型 目标检测 人脸识别与神经风格迁移 译者注:本文翻译自斯坦福CS231n课程笔记ConvNet notes,由课程教师Andrej Karpathy授权 ...
- 『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上
GAN网络架构分析 上图即为GAN的逻辑架构,其中的noise vector就是特征向量z,real images就是输入变量x,标签的标准比较简单(二分类么),real的就是tf.ones,fake ...
随机推荐
- HDU 4825 Xor Sum(01字典树)题解
思路:先把所有数字存进字典树,然后从最高位贪心. 代码: #include<set> #include<map> #include<stack> #include& ...
- vue 弹性布局 实现长图垂直居上,短图垂直居中
vue 弹性布局 实现长图垂直居上,短图垂直居中 大致效果如下图,只考虑垂直方向.长图可以通过滚动条看,短图居中效果,布局合理 html代码(vue作用域内): <div class=" ...
- 杭电hdu-6168 Numbers
这一题是考察排序与后续数据处理的题.我是用了map来给“和”做标记,把确定为a数组内数的数两两求和.给这些和标记,这样就可以很好的处理带有重复数的数据了~~ 贴个碼: #include<iost ...
- 在 JSDOM v11 中使用jQuery
在JSDOM v11中使用jQuery 从v10开始,jsdom提供了更灵活的API. https://swashata.me/blog/use-jquery-jsdom-v11/ const tes ...
- RN 数据持久化存储服务API
一些数据信息需要存储在手机内存中,比如用户的登录名密码 token啥的,所以这就需要了来存这些信息 在RN中 采用了AsyncStorage是一个简单的.异步的.持久化的Key-Value存储系统,它 ...
- 改变input中的placeholder样式
1.input[placeholder]{ color:#d5d5d5; } 2.input::-moz-placeholder { color: #d5d5d5; } input:-ms-input ...
- P4391 [BOI2009]Radio Transmission
描述: 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 输入格式: 第一行给出字符串的长度,1 < L ≤ 1,000,000. ...
- selenium打开chrome时,出现 "您使用的是不受支持的命令行标记:--ignore-certificate-errors""
from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_experimental_option(&qu ...
- spring集成shiro报错解决(no bean named 'shiroFilter' is defined)
引言: 本人在使用spring集成shiro是总是报“no bean named 'shiroFilter' is defined”,网上的所有方式挨个试了一遍,又检查了一遍, 还是没有解决,最后,抱 ...
- Javascript 常用设计模式
转载自:https://blog.csdn.net/buptlyz/article/details/52018193 单例模式(模块模式):确保始终只创建一个实例的对象时使用的设计模式. 为什么需要采 ...