当前位置: 首页 > news >正文

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分 二)

训练神经网络的几个重要组成部分 二

2,2 Data Preprocessing数据的预处理

数据预处理的几种方法

2,2,1 数据的零点中心化

        数据的零点中心化的目的就是为了把数据的整体分布拉回到原点附近,也就是让数据的整体均值变为0。


 2,2,2 数据的标准化

        数据的标准化这个词比较难理解,从统计学的角度讲,经过这一步的处理,原始数据的标准差会变为1。换句话说,我的个人理解是如果原始数据分散的比较开,也就是高斯曲线的sigma比较大,则经过这一步处理后,分散的比较开的数据会被拉拢回来。比如说下图黄色曲线的数据分布。

如果,原始数据本来分布的就过于集中,经过这一步处理后,数据反而会变的相对松散。例如下图蓝色曲线的数据分布。

        数据的零点中心化和标准化是神经网络的数据预处理中最为常见的两个方法。可以用公式总结为:

y=\frac{x-mean}{sigma}

其中,mean表示均值,sigma表示标准差。下面我通过两个例子看看这一过程究竟发生了什么。

以一维数据为例:

        下图是我在jupyter notebook中所画的5个狗狗身高的一维数据集。x表示的是样本数,y表示的是该样本的高度。

import numpy as np
import matplotlib.pyplot as pltdata = [600,470,170,430,300]
num=len(data)
x=np.arange(num)
plt.figure()
plt.stem(x,data,label='dog(mm)')
plt.legend()

分别求出这组数据的mean和sigma并在图中表示出来

print('data=',data)
mean_data=np.mean(data)
print('mean=',mean_data)
sigma_data=np.std(data)
print('sigma=',sigma_data)

plt.figure
plt.stem(x,data,label='dog(mm)')
plt.plot(x,[mean_data]*num,'r-',label='mean')
plt.plot(x,[mean_data+sigma_data]*num,'b--',label='mean+sigma')
plt.plot(x,[mean_data-sigma_data]*num,'b--',label='mean-sigma')
plt.legend(loc='upper right')

​原始数据的直方图 

plt.hist(data)
plt.title('Histogram of dog(mm)')

减去均值后的数据与直方图: 

        与原始数据相比减去均值后的数据均值为0,也就是说,原来以394mm为中心分布的数据变成了以0为中心分布的数据。

plt.hist(data1)
plt.title('Histogram of dog-mean (mm)')

​减去均值后再除以标准差后的数据及其分布:

        除以标准差之后的数据,整个数据的标准差会变为1。这一变化在图像上会表现为数据的分布从原始状态中比较分散的情况,变成了比较集中的分布。        

data2=data1/sigma_data
mean_data2=np.mean(data2)
sigma_data2=np.std(data2)
print('(dog-mean)/std=',data2)
print('mean=',mean_data2)
print('sigma=',sigma_data2)
plt.figure
plt.stem(x,data2,label='dog(mm)')
plt.plot(x,[mean_data2]*num,'r-',label='mean')
plt.plot(x,[mean_data2+sigma_data2]*num,'b--',label='mean+sigma')
plt.plot(x,[mean_data2-sigma_data2]*num,'b--',label='mean-sigma')
plt.legend(loc='upper right')

plt.hist(data2)
plt.title('Histogram of (dog-mean)/std (mm)')


(全文完) 

--- 作者,松下J27

 参考文献(鸣谢): 

1,Stanford University CS231n: Deep Learning for Computer Vision

2,训练神经网络(第一部分)_哔哩哔哩_bilibili

3,10 Training Neural Networks I_哔哩哔哩_bilibili

4,Schedule | EECS 498-007 / 598-005: Deep Learning for Computer Vision 

5,标准差和方差

版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27

相关文章:

  • 开源AGV调度系统OpenTCS中的路由器(router)详解
  • 检查HIVE分区是否连续
  • Python第二语言(十三、PySpark实战)
  • 使用Python进行机器学习入门指南
  • 【机器学习】从理论到实践:决策树算法在机器学习中的应用与实现
  • Android SDK是什么?
  • hadoop/hive/DBeaver启动流程
  • 告别夏季粉尘螨虫困扰,这些空气净化器品牌你不能错过!
  • K8s持久化存储PV和PVC(通俗易懂)
  • mvn dependency -D outputFile=dependency_tree.txt
  • Shell 编程之正则表达式与文本处理器
  • clickhouse学习笔记(四)库、表、分区相关DDL操作
  • 如何解决虚拟仿真教学中的设备限制和卡顿问题?|点量云流技术解决方案
  • performance_schema.events_statements_current
  • MavenPlus插件的基础功能完善
  • JavaScript-如何实现克隆(clone)函数
  • 2017届校招提前批面试回顾
  • Cookie 在前端中的实践
  • JavaScript实现分页效果
  • js ES6 求数组的交集,并集,还有差集
  • Lsb图片隐写
  • tab.js分享及浏览器兼容性问题汇总
  • Windows Containers 大冒险: 容器网络
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 聚类分析——Kmeans
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 排序算法学习笔记
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 悄悄地说一个bug
  • 我建了一个叫Hello World的项目
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • (12)Linux 常见的三种进程状态
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (接口自动化)Python3操作MySQL数据库
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net 路由处理厉害了
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .NET下的多线程编程—1-线程机制概述
  • .NET之C#编程:懒汉模式的终结,单例模式的正确打开方式
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @staticmethod和@classmethod的作用与区别
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [BFS广搜]迷阵