Keras快速上手 ——学习笔记(一)端到端的MNIST训练数字识别

本文介绍了使用Keras进行端到端的MNIST数字识别,包括数据预处理、构建卷积神经网络模型,以及模型训练。通过序列模型.Sequential构建网络,包含卷积层、池化层和随机失活层。尽管最终准确率未达到99%,但展示了基本的图像识别流程。
摘要由CSDN通过智能技术生成

端到端的MNIST训练数字识别

下面介绍端到端的MNIST训练数字识别过程。
这个数据集是由LeCun Yang教授和他团队整理的,囊括了6万个训练集和1万个测试集。每个样本都是32×32的像素值,并且是黑白的,没有R、G、B三层。我们要做的是把每个图片分到0~9类别中。
下图是一些手写数字的样本
这里写图片描述
接下来用Keras搭建卷积网络训练模型。

1、导入数据和keras卷积模块

快速开始序贯(Sequential)模型 序贯模型是多个网络层的线性堆叠,也就是“一条路走到黑”。 可以通过向 Sequential 模型传递一个layer的list来构造该模型: from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential([ De

import numpy as np
from keras.datasets import mnist  # 数据集
# 导入keras的卷积模块
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D

先读入数据,看一下数据集长什么样子
没有下载过的可能要等一段时间下载

(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
print(X_train[0].shape)
print(Y_train[0])

输出:

(28, 28)
5

3、对数据进行预处理

(1)对数据的维度进行转化,为我们需要的维度,其中astype是必须的,规定了浮点精度
(2)数据归一化 因为是图片,图层是0-255,所以就直接255归一
(3)对数据集进行热点化(one_hot)

X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32')
X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32')

X_train /= 255
X_test /= 255

def tran_y(y):
    y_ohe = np.zeros(10)
    y_ohe[y] = 1
    return y_ohe

Y_train_ohe = np.array([tran_y(Y_train[i]) for i in range(len(Y_train))])
Y_test_ohe = np.array([tran_y(Y_test[i]) for i in range(len(Y_test))])

4、构建模型

选用Sequential方法构建,然后不断放入神经层。
(1)第一层是卷积层,过滤器filters为64个,过滤器大小为3x3,步幅为1x1,填充成相同的大小,输入层的形状为(28, 28, 1),在第一次输入数据的时候这个参数input_shape是必须的,后面的不再需要。激活函数选用relu。
(2)第二层是最大池,池化器大小为2x2。
(3)第三个是随机失活dropout,目的是为了防止过拟合,选用0.5意思是随机失活该层50%的节点。
(4)接下来重复构建。
(5)最后展平节点

model = Sequential()

model.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值