对于CNN输入的数据,常见的有三种处理方式:

1.Mean subtraction.  将数据的每一维特征都减去平均值。在numpy 中 X -= np.mean(X, axis = 0)

2.Normalization  归一化数据,使数据在相同尺度。 在numpy 中 X /= np.std(X, axis = 0)

3. PCA and Whitening.  首先均值化数据,然后求协方差矩阵。
      X -= np.mean(X, axis = 0) //求均值

cov = np.dot( X.T, X) / X.shape[0] // 求协方差矩阵

U,S,V = np.linalg.svd(cov) //奇异值分解,其中 U 为特征向量,S为奇异值分解向量为特征向量的平方

Xrot = np.dot(X, U) //去除数据相关性

Xrot_reduced = np.dot(X, U[:,:100]) 降维到 100 维

Xwhite = Xrot / np. sqrt(s + 1e-5) //白化数据 1e-5 为防止除0

可视化数据:例子为CIFAR-10  images

左边第一张图片为CIFAR-10 中的49张图片(每张图片有3072个特征),第二张图片为3072特征向量中的前144个特征,第三张图片为通过PCA降维降到144维,使用的是图二中的前144维,第四张图片为白化后的图片。

常见的数据处理是 Mean substraction 和 Normalization.

权重的设置

陷阱:全零初始化  如果参数是全零,导致输出的结果相同,那么通过反向传播计算梯度也相同,那么参数也不会更新。

用较小的数随机化: W = 0.01*  np.random.randn(D,H) randn 返回的样本满足标准正态分布.

标准化变量 1/sqrt(n)  W = np.random.randn(n) / sqrt(n)  或者 W = np.random.randn(n) / sqrt(2.0/n)

  初始化偏置项

很常见的是将偏置项设置为0,ReLu 激活函数有些人会设置为 0.01, 在实际中通常设置为 W =  np. random.randn(n) * sqrt(2.0/n)

Batch Normalization 

发现一个讲解Batch Normalization 的博客 详见http://blog.csdn.net/hjimce/article/details/50866313

正则化

 有多种方法来防止神经网络的过拟合。

L2 范式 w = w + 1/2 λw2  

L1 范式 w = w + λ|w|  向量各元素绝对值之和

L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0

Dropout 

Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。如下图所示

主要参考CS231n 课程。

CNN- 数据预处理的更多相关文章

  1. 【深度学习系列】PaddlePaddle之数据预处理

    上篇文章讲了卷积神经网络的基本知识,本来这篇文章准备继续深入讲CNN的相关知识和手写CNN,但是有很多同学跟我发邮件或私信问我关于PaddlePaddle如何读取数据.做数据预处理相关的内容.网上看的 ...

  2. 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率

    原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...

  3. R语言进行数据预处理wranging

    R语言进行数据预处理wranging li_volleyball 2016年3月22日 data wrangling with R packages:tidyr dplyr Ground rules ...

  4. Scikit-Learn模块学习笔记——数据预处理模块preprocessing

    preprocessing 模块提供了数据预处理函数和预处理类,预处理类主要是为了方便添加到 pipeline 过程中. 数据标准化 标准化预处理函数: preprocessing.scale(X, ...

  5. Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

    理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一 ...

  6. R语言--数据预处理

    一.日期时间.字符串的处理 日期 Date: 日期类,年与日 POSIXct: 日期时间类,精确到秒,用数字表示 POSIXlt: 日期时间类,精确到秒,用列表表示 Sys.date(), date( ...

  7. weka数据预处理

    Weka数据预处理(一) 对于数据挖掘而言,我们往往仅关注实质性的挖掘算法,如分类.聚类.关联规则等,而忽视待挖掘数据的质量,但是高质量的数据才能产生高质量的挖掘结果,否则只有"Garbag ...

  8. 对数据预处理的一点理解[ZZ]

    数据预处理没有统一的标准,只能说是根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择相关的数据预处理技术,一般会用到多种预处理技术,而且对每种处理之后的效果做些分析对比,这里面经 ...

  9. Python数据预处理—归一化,标准化,正则化

    关于数据预处理的几个概念 归一化 (Normalization): 属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现. 常用的 ...

  10. sklearn数据预处理-scale

    对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...

随机推荐

  1. RTB撕开黑盒子 Part 4: Shady Bidding

    在这篇文章中,我将告诉你"真实的出价"比你想的微妙,并且你可以使用基于ROI的pacing策略,不需要构建一个期望扣费的模型,你就可以得到完美的期望扣费模型. Same Same ...

  2. mmDeferred

    前端异步解决方案——mmDeferred Deferred是前端解决异步操作的一种编程范式,后来出现的Promise规范更是让其普适性大大提高.不过Promise规范也存在分岐.现在最流行的是Prom ...

  3. bootstrap插件学习-bootstrap.dropdown.js

    bootstrap插件学习-bootstrap.dropdown.js 先看bootstrap.dropdown.js的结构 var toggle = '[data-toggle="drop ...

  4. revel框架教程之权限控制

    Go语言实战 - revel框架教程之权限控制 一个站点上面最基本都会有三种用户角色,未登录用户.已登录用户和管理员.这一次我们就来看看在revel框架下如何进行权限控制. 因为revel是MVC结构 ...

  5. ckeditor:复制内容到ckeditor时,只保留文本,忽略其样式解决方法

    打开ckeditor 包下的config.js,在 CKEDITOR.editorConfig= function(config){...}添加一句配置: config.forcePasteAsPla ...

  6. CentOS下Eclipse的安装教程

    CentOS下Eclipse的安装教程 据了解,在Linux下的Java开发很多时候都比较喜欢使用vim + 插件,反而很少使用Eclipse,但是我是第一次使用Linux来进行Java编程,就什么都 ...

  7. gearman with postgresql as persistent Queuing

    gearman is a good thing gearman client --------------> gearman server <----------------------- ...

  8. python 中文字数统计/分词

    因为想把一段文字分词,所以,需要明确一定的词语关系. 在网上随便下载了一篇中文小说.随便的txt小说,就1mb多.要数数这1mb多的中文到底有多少字,多少分词,这些分词的词性是什么样的. 这里是思路 ...

  9. WCF 学习笔记之双工实现

    WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...

  10. Python学习入门基础教程(learning Python)--6.3 Python的list切片高级

    上节"6.2 Python的list访问索引和切片"主要学习了Python下的List的访问技术:索引和切片的基础知识,这节将就List的索引index和切片Slice知识点做进一 ...