深度学习(五)-全连接神经网络实现 MNIST 手写数字分类

  前面我们讲了这么多理论知识,下面我们来简单的来一个实战学习,利用全连接神经网络实现 M N I S T MNIST MNIST 手写数字分类。 M N I S T MNIST MNIST 数据集是一个手写体数据集,包括 0~9 这 10 个数字,图片大小是 28 x 28 的灰度图。数据集由四部分组成,分别是:

其内容为:

数据处理

  在开始训练网络之前,良好的数据预处理和参数初始化可以使训练效率更高,效果更优 。如果有了解机器学习的童鞋,对这些肯定不陌生,机器学习在处理数据时,也会先将数据标准化后再进行特征的操作,和深度学习是大同小异的。常用有以下几种处理方法:

中心化

  中心化为将每个特征维度都减去相应的均值,这样可以使得数据变成 0 均值,特别对于一些图像数据,为 了方便我们将所有的数据都减去一个相同的值 。

标准化

  在使得数据都变成 0 均值之后,还需要使用标准化的做出让数据不同的特征维度都有着相同的规模。有两种常用的方法:一种是除以标准差,这样可以使得新数据的分布接近标准高斯分布;还有一种做法就是让每个特征维度的最大值和最小值按比例缩放到 -1 ~1 之间。

P C A PCA PCA

  PCA 会将数据中心化,然后计算数据的协方差矩阵,通过这个协方差矩阵来进行奇异值分解 ( S V D SVD SVD),然后对数据进行
去相关性,将其投影到一个特征空间,我们取一些较大的、主要的特征向量来降低数据的维数,去掉一些没有方差的维度。这个操作对于一些线性模型和神经网络,都能取得良好的效果。

白噪声

  白噪声首先会跟 P C A PCA PCA 一样将数据投影到一个特征空间,然后每个维度除以特征值来标准化这些数据,直观上就是一个多元高斯分布转化到了一个 0 均值,协方差矩阵为 1 的多元高斯分布。

M I N S T MINST MINST 数据处理

  pytorch中使用的数据处理的函数为 t o r c h v i s i o n . t r a n s f o r m s torchvision.transforms torchvision.transforms,它提供了很多图片预处理的方法 。

	from torchvision import transforms
	from torchvision.datasets import mnist  # 导入内置的 mnist 数据
	
	transform = transforms.Compose([
	    transforms.ToTensor(),   # 数据转为tensor
	    transforms.Normalize([0.5], [0.5])   # 正则化,均值: 0.5 方差: 0.5
	])
	
	train_set = mnist.MNIST('./data', train=True, transform=transform, download=False)
	test_set = mnist.MNIST('./data', train=False, transform=transform, download=False)

  我们的图片是黑白色,所以图片只有1通道, t r a n s f o r m s . N o r m a l i z e transforms.Normalize transforms.

  • 25
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值