首页 > 其他分享 >神经网络在机器学习中的应用:手写数字识别

神经网络在机器学习中的应用:手写数字识别

时间:2024-07-02 22:02:15浏览次数:20  
标签:layers 28 神经网络 train test 手写 识别 MNIST

        机器学习是人工智能的一个分支,它使计算机能够从数据中学习并做出决策或预测。神经网络作为机器学习的核心算法之一,因其强大的非线性拟合能力而广泛应用于各种领域,包括图像识别、自然语言处理和游戏等。本文将介绍如何使用神经网络对MNIST数据集中的手写数字进行识别。

❤❤❤喜欢的点个关注吧~~~

神经网络基础

神经网络由多个层组成,每层包含多个神经元。每个神经元对输入数据进行加权求和,然后通过一个激活函数来生成输出。最常见的激活函数包括ReLU、Sigmoid和Tanh。神经网络通过前向传播计算输出,并通过反向传播算法调整权重,以此来最小化损失函数。

手写数字识别问题

        MNIST数据集是一个包含了70000个手写数字的图像集,每个图像是一个28x28像素的灰度图,标签是0到9的数字。这个数据集通常用于训练和测试图像识别模型。

使用TensorFlow构建神经网络

        TensorFlow是一个开源的机器学习库,广泛用于神经网络的构建和训练。以下是使用TensorFlow和Keras API构建一个简单的神经网络模型来识别MNIST手写数字的示例代码。

import tensorflow as tf
from tensorflow.keras import layers, models

# 下载MNIST数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 数据预处理
x_train, x_test = x_train / 255.0, x_test / 255.0
x_train = x_train.reshape(-1, 28, 28, 1)  # 添加单通道维度
x_test = x_test.reshape(-1, 28, 28, 1)

# 构建模型
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型
model.fit(x_train, y_train, epochs=5)

# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)

结果分析

        上述代码首先下载并预处理MNIST数据集,然后构建了一个包含卷积层、池化层和全连接层的神经网络模型。模型使用Adam优化器和稀疏分类交叉熵作为损失函数进行编译。经过5轮迭代训练后,模型在测试集上的准确率可以超过98%。

结论

        神经网络在图像识别任务中表现出色,通过简单的卷积神经网络结构,我们就能在MNIST数据集上达到很高的准确率。随着网络结构的复杂化和训练数据的增加,神经网络的性能还有进一步提升的空间。

        这篇文章和代码提供了一个神经网络在机器学习中应用的基本示例。神经网络的潜力巨大,通过不断的研究和开发,它们将在更多领域展现其强大的能力。

请注意,运行上述代码需要安装Python环境和TensorFlow库。您可以通过运行

pip install tensorflow

来安装TensorFlow。

 

标签:layers,28,神经网络,train,test,手写,识别,MNIST
From: https://blog.csdn.net/weixin_49816293/article/details/140087151

相关文章

  • 实例--通过反射手写持久层框架
    简介涉及技术栈:javamysql反射自定义注解泛型jdbc持久层框架:与数据库交互的一层称为持久层(俗称dao层)作用:可以无需写sql语句即可完成对表单的CRUD操作引用相关jar包<dependency><groupId>junit</groupId><artifactId>junit</artifactId><ve......
  • python系列&deep_study系列:Whisper——部署fast-whisper中文语音识别模型
    Whisper——部署fast-whisper中文语音识别模型Whisper——部署fast-whisper中文语音识别模型环境配置准备tiny模型模型转换代码Whisper——部署fast-whisper中文语音识别模型whisper:https://github.com/openai/whisper/tree/main参考文章:WhisperOpenAI开源语音......
  • 51单片机外部中断(按键识别)
    欢迎入群共同学习交流时间记录:2024/7/2一、电路原理图51单片机包含INT0、INT1两个外部中断接口二、知识点介绍1.中断寄存器位介绍(1)TCON定时控制寄存器,位0(IT0)中断INT0请求信号选择位,1表示下降沿信号、0表示低电平信号,位1(IE0)中断INT0信号标志位,1产生中断信号、0未产生......
  • Python TensorFlow双向Bi-LSTM长短期记忆神经网络深度学习可视化用户传感器活动数据
    全文链接:https://tecdat.cn/?p=36613原文出处:拓端数据部落公众号在本文中,我们旨在利用深度学习技术,特别是TensorFlow框架下的Keras库,对WISDM(无线传感器数据挖掘)数据集进行活动识别。WISDM数据集包含了从用户身上佩戴的加速度传感器收集的三轴加速度数据,这些数据被用于识别用户的......
  • PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子|附代码数据
    全文下载链接:http://tecdat.cn?p=26519最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。一个简单的编码器-解码器LSTM神经网络应用于时间序列预测问题:预测天然气价格,预测范围为10天。“进入”时间步长也设置为10天。)只需要10天来推断接下来的10天。......
  • 服务器无法识别raid数据恢复
    故障服务器环境描述:故障服务器是一台HP的,共有10块146GSCSI硬盘组成一组RAID5。因机房环境太差需要进行搬迁,所以将服务器的所有连接线拔出,到新机房重新连接线路后发现服务器无法识别RAID,服务器未做初始化操作。故障服务器检测分析:经检测发现,服务器无法识别raid,raid磁盘阵列数据......
  • ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
    ONNXRuntime简介ONNXRuntime是一个跨平台的推理和训练机器学习加速器。ONNX运行时推理可以实现更快的客户体验和更低的成本,支持来自深度学习框架(如PyTorch和TensorFlow/Keras)以及经典机器学习库(如scikit-learn、LightGBM、XGBoost等)的模型。ONNX运行时与不同的硬件、......
  • 图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比
    KolmogorovArnoldNetworks(KAN)最近作为MLP的替代而流行起来,KANs使用Kolmogorov-Arnold表示定理的属性,该定理允许神经网络的激活函数在边缘上执行,这使得激活函数“可学习”并改进它们。目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有类似的实验......
  • 【打卡】003 p3 Pytorch实现天气识别
    打卡~555我的环境:●语言环境:Python ●编译器:jupyternotebook●深度学习环境:Pytorch>-**......
  • 神经网络图像数据训练集成应用 | 可视化图像处理 | 可视化训练器
    〇、写在前面本应用基于开源UI框架PyDracula进行开发,除去最基本的UI框架外,所有功能的前后端实现都由我个人开发完成,但也有部分UI(如开关控件和进度条)是参考其他大佬的分享。这个应用是我的本科毕业设计,但因为个人能力不足,姑且只能使用Python+PySide6开发。开发这个应用的启发是,......