cs231n: CNN训练的提醒
来源:互联网 发布:win10仿linux主题 编辑:程序博客网 时间:2024/06/05 02:12
- 训练时的小技巧
- 增强augmentation
- 迁移学习Transfer learning
- 计算卷积
- 如何存储
- 怎么加速
- 计算的机器
训练时的小技巧
增强(augmentation)
对训练集进行比如翻折,选择,颜色取反,颜色加入offset,PCA,白化等等手段,是训练集变大,以提高训练模型的泛化性能。有时候还会加入噪声,还进行dropout,以解决过拟合的问题。
迁移学习(Transfer learning)
初始化权重时使用别人已经训练好的模型。
对于大中小的数据集,训练层都不一样。
caffe有个model zoo:
https://github.com/BVLC/caffe/wiki/Model-Zoo
计算卷积
如何存储
一般来说,网络约多,filter size越小,就越合适。
当size是1x1的时候,就是传说中的NiN。
GoogleNet的perception层就是用了很多1x1。
怎么加速
第一种就是把卷积变成矩阵的乘法。
第二种就是使用快速傅立叶变换。但是在filter size比较小的时候,傅立叶变换的优势不是很明显。
第三种就是使用加速矩阵算法:Strassen’s Algorithm
在15年的时候,就有一篇论文使用了这种方法做加速:
Lavin and Gray, “Fast Algorithms for Convolutional Neural Networks”, 2015
总结一下上面三种方法就是:
计算的机器
使用GPU比CPU快不少,除了Google自家弄了一个超大的CPU集群系统来算网络(这种系统在数据同步,数据通信会有不少麻烦)。
Udacity上一门讲并行计算的课程->Udacity: Intro to Parallel Programming https://www.udacity.com/course/cs344
还有一个问题就是数据的存储,因为参数很多。这里的话就有了不少改进。有64bit浮点,到32bit浮点,再到16,12,8,1bit的浮点。
还有1bit的表示。
Courbariaux et al, “BinaryNet: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1”, arXiv 2016
之前在训练faster rcnn和r-fcn的时候,zf,vgg16,resnet训练下来差不多是10~15h,还是比较快的。使用的GPU是GTX1080,而且是64G内存,使用的是迁移学习。
PS:
以上截图来自于cs231课程的ppt。
cs231n课程的视频:
https://www.youtube.com/watch?v=XgFlBsl0Lq4&list=PLlJy-eBtNFt6EuMxFYRiNRS07MCWN5UIA&index=11#t=6.993481
- cs231n: CNN训练的提醒
- cs231n:第三讲 CNN的初体验
- 训练一个简单的神经网络(基于CS231n)
- cnn训练出现的问题
- CNN训练
- CS231N-12-Visualizing & Understanding CNN
- 训练Faster R-CNN出现的errors
- faster r-cnn训练自己的数据
- CNN的权重更新方法-训练过程
- cnn分类器训练遇到的错误
- 训练样本不平衡对CNN训练结果的影响
- [CS231n-assignment2] Python从零实现的CNN在CIFAR-10上的实验报告
- cs231n 笔记 --- 训练配置细节
- CS231n CNN for Visual Recognition Module (1)
- CS231n CNN for Visual Recognition Module (2)
- CS231n - CNN for Visual Recognition Assignment1 ---- KNN
- CS231n - CNN for Visual Recognition Assignment1 ---- SVM
- CS231n学习笔记--9.CNN Architectures
- TimeBake:part1
- JavaEE复习笔记(4)——JSP2和Servlet3.0的新特性
- Razor基础语法简介
- 损失函数:Hinge Loss(max margin)
- zuul源码分析之Filter管理
- cs231n: CNN训练的提醒
- week5、study the protocol of 802.1ag and config the topology of olt agg and bng
- RtlInitUnicodeString、IoCreateDevice、IoCreateSymbolicLink、IoDeleteDevice 四个 API 驱动函数的使用
- Loss Function view---关于损失函数的介绍
- 何为AppID、 AppKey、AppSecret?
- Linux SCP 基于expect密码传输
- C++析构函数必须要用virtual修饰的原因
- 深入理解Java:注解(Annotation)--注解处理器
- hibernate 查询实体类的list