机器学习:基于全连接神经网络的MNIST手写数字识别实战

本文介绍使用全连接神经网络进行MNIST手写数字识别的方法。包括数据集划分、图片预处理、网络构建等步骤,并给出完整的代码实现。

1-前期准备

1,首先需要了解神经网络结构的知识,参考链接: 吃瓜教程学习笔记-CH5神经网络.
2,需要下载keras框架和tensorflow框架,参考链接:Keras环境的安装
基于以上环境和知识的储备,才能更好的理解项目流程。

2-项目流程

一般的深度学习项目的流程分为以下固定步骤:

  1. 数据集的划分
  2. 图片的预处理
  3. 构建网络模型
  4. 模型的编译
  5. 模型的训练
  6. 模型的验证
  7. 模型的优化

模型的优化,减缓过拟合,模型的优化下节进行叙述,本节主要讲述前6个步骤。

3-代码实践

1-数据集的划分

在机器学习中,通常将原始数据集划分成三个部分:

  1. 训练集 training set:用于模型训练
  2. 验证集validation set:用于每次模型训练结束后衡量模型的预测准确度,判断是否过拟合。
  3. 测试集testing set:评估模型

通常情况下,会将数据集分为6:2:2比例
keras框架中有自动划分训练集和验证集的方式。

model.fit(x_train,y_train,validation_split=0.2)

2-图片预处理

在全连接神经网络中,需要对图片进行扁平化处理,再送到构建好的模型中去训练。keras中提供了扁平化操作的层,可以作为全连接神经网络的第一层。
因为MNIST数据集中每一张图片为28*28,扁平化第一层的input_shape=(28,28).
代码如下:

#构建模型
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.optimizers import RMSprop
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))

3-网络构建

3个隐藏层,第一个单元数64,其余32,所有的单元使用函数ReLU函数作为激活函数,最后加上输出层。输出层使用softmax函数。

model.add(Dense
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值