cs231n: CNN训练的提醒

训练时的小技巧

增强(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值