通过多层感知机实现MNIST手写体识别

本文通过MNIST数据集训练了一个三层多层感知机模型,经过数据预处理、模型创建、定义优化器和损失函数、模型训练,最终实现手写数字的高准确率识别,验证后准确率超过95%。
摘要由CSDN通过智能技术生成

1.问题描述

        通过MNIST内含有60000个数据进行训练的图像(train),图片为28*28的像素矩阵,并定义一个三层的多层感知机。经过训练,最终可以对测试的数字图像又较为准确的识别。

2.数据导入

        由于要用到MNIST中的图像,我可以利用keras.datasets直接导入MNIST中的数据,包括输入集和输出集。

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
(train_image, train_labels), (test_image, test_labels) = tf.keras.datasets.mnist.load_data()

3.图像处理

        首先对图像增加通道维度。输入的训练图像(train)和测试图像(test)可以看作是四维的,训练的图像可看作([60000,28,28,1])。之后要对训练图像和测试图像进行归一化处理,目的是将图片中的这些值缩小到0和1之间,方便其送到神经网络模型之中。因此我们首先将这些图像组件的数据类型从整型转为浮点型,然后除以255,从而更方便接下来的训练。图像处理的代码如图所示:

train_image = tf.expand_dims(train_image, -1)
test_image = tf.expand_dims(test_image, -1)
train_image = tf.cast(train_image/255, tf.float32)
test_image = tf.cast(test_image/255, tf.float32)
train_labels = tf.cast(train_labels, tf.int64)
test_labels = tf.cast(test_labels, tf.int64)
dataset = tf.data.Dataset.from_tensor_slices((train_image, train_labels)).shuffle(60000).batch(256)
test_dataset = tf.data.Dataset.from_tensor_slices((test_image, test_labels)).batch(256)

4.创建模型(MLP多层感知机)

      

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值