Python 基于卷积神经网络手写数字识别

Ubuntu系统:22.04

python版本:3.9

安装依赖库:

pip install tensorflow==2.13 matplotlib numpy -i https://mirrors.aliyun.com/pypi/simple

代码实现:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
import numpy as np
import matplotlib.pyplot as plt# 加载MNIST数据集
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()# 数据预处理
train_images = train_images.reshape(train_images.shape[0], 28, 28, 1).astype('float32') / 255
test_images = test_images.reshape(test_images.shape[0], 28, 28, 1).astype('float32') / 255# 构建CNN模型
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型
history = model.fit(train_images, train_labels,batch_size=128,epochs=5,verbose=1,validation_data=(test_images, test_labels))# 评估模型
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=0)
print(f"\n测试准确率: {test_acc:.4f}")# 保存模型
model.save('mnist_cnn_model.keras')
print("模型已保存为 mnist_cnn_model.keras")# 可视化训练过程
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.plot(history.history['accuracy'], label='训练准确率')
plt.plot(history.history['val_accuracy'], label='验证准确率')
plt.title('模型准确率')
plt.ylabel('准确率')
plt.xlabel('训练轮次')
plt.legend()plt.subplot(1, 2, 2)
plt.plot(history.history['loss'], label='训练损失')
plt.plot(history.history['val_loss'], label='验证损失')
plt.title('模型损失')
plt.ylabel('损失')
plt.xlabel('训练轮次')
plt.legend()plt.tight_layout()
plt.savefig('training_history.png')
print("训练过程图表已保存为 training_history.png")# 测试预测
sample_idx = np.random.randint(0, len(test_images))
sample_image = test_images[sample_idx].reshape(1, 28, 28, 1)
prediction = model.predict(sample_image, verbose=0)plt.figure(figsize=(5, 3))
plt.imshow(test_images[sample_idx].reshape(28, 28), cmap='gray')
plt.title(f"真实标签: {test_labels[sample_idx]}\n预测结果: {np.argmax(prediction)}")
plt.axis('off')
plt.savefig('sample_prediction.png')
print(f"样本预测图已保存为 sample_prediction.png\n真实标签: {test_labels[sample_idx]},预测结果: {np.argmax(prediction)}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElectronBot复刻-电路测试篇

typec-16p 接口部分 USB1(Type - C 接口):这是通用的 USB Type - C 接口,具备供电和数据传输功能。 GND 引脚(如 A1、A12、B1、B12 等):接地引脚,用于提供电路的参考电位&#xff0…

ESP8266+STM32 AT驱动程序,心知天气API 记录时间: 2025年5月26日13:24:11

接线为 串口2 接入ESP8266 esp8266.c #include "stm32f10x.h"//8266预处理文件 #include "esp8266.h"//硬件驱动 #include "delay.h" #include "usart.h"//用得到的库 #include <string.h> #include <stdio.h> #include …

CDN安全加速:HTTPS加密最佳配置方案

CDN安全加速的HTTPS加密最佳配置方案需从证书管理、协议优化、安全策略到性能调优进行全链路设计&#xff0c;以下是核心实施步骤与注意事项&#xff1a; ​​一、证书配置与管理​​ ​​证书选择与格式​​ ​​证书类型​​&#xff1a;优先使用受信任CA机构颁发的DV/OV/EV证…

【前端】Twemoji(Twitter Emoji)

目录 注意使用Vue / React 项目 验证 Twemoji 的作用&#xff1a; Twemoji 会把你网页/应用中的 Emoji 字符&#xff08;如 &#x1f604;&#xff09;自动替换为 Twitter 风格的图片&#xff08;SVG/PNG&#xff09;&#xff1b; 它不依赖系统字体&#xff0c;因此在 Android、…

GCN图神经网络的光伏功率预测

一、GCN图神经网络的核心优势 图结构建模能力 GCN通过邻接矩阵&#xff08;表示节点间关系&#xff09;和节点特征矩阵&#xff08;如气象数据、历史功率&#xff09;进行特征传播&#xff0c;能够有效捕捉光伏电站间的空间相关性。其核心公式为&#xff1a; H ( l 1 ) σ (…

按照状态实现自定义排序的方法

方法一&#xff1a;使用 MyBatis-Plus 的 QueryWrapper 自定义排序 在查询时动态构建排序规则&#xff0c;通过 CASE WHEN 语句实现优先级排序&#xff1a; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Ser…

【计算机网络】IPv6和NAT网络地址转换

IPv6 IPv6协议使用由单/双冒号分隔一组数字和字母&#xff0c;例如2001:0db8:85a3:0000:0000:8a2e:0370:7334&#xff0c;分成8段。IPv6 使用 128 位互联网地址&#xff0c;有 2 128 2^{128} 2128个IP地址无状态地址自动配置&#xff0c;主机可以通过接口标识和网络前缀生成全…

【Redis】string

String 字符串 字符串类型是 Redis 最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a; 首先 Redis 中所有的键的类型都是字符串类型&#xff0c;而且其他几种数据结构也都是在字符串的基础上构建的。字符串类型的值实际可以是字符串&#xff0c;包含一般格式的…

基于ELK的分布式日志实时分析与可视化系统设计

目录 一、ELK平台介绍 1.ELK概述 2.Elasticsearch 3.Logstash 4.Kibana 二、部署ES群集 1.资源清单 2.基本配置 3.安装Elasticsearch&#xff08;elk1上、elk2上、elk3上&#xff09; 4.安装logstash&#xff08;elk1上&#xff09; 5.Filebeat 6.安装Kibana&#x…

电机控制选 STM32 还是 DSP?技术选型背后的现实博弈

现在搞电机控制&#xff0c;圈里人都门儿清 —— 主流方案早就被 STM32 这些 Cortex-M 单片机给拿捏了。可要是撞上系统里的老甲方&#xff0c;技术认知还停留在诺基亚砸核桃的年代&#xff0c;非揪着 DSP 不放&#xff0c;咱也只能赔笑脸&#xff1a;“您老说的对&#xff0c;…

【案例分享】蓝牙红外线影音遥控键盘:瑞昱RTL8752CJF

蓝牙红外线影音遥控键盘 Remotec的无线控制键盘采用瑞昱蓝牙RTL8752CJF解决方案&#xff0c;透过蓝牙5.0与手机配对后&#xff0c;连线至 Remotec 红外 code server 取得对应影音视觉设备的红外 code后&#xff0c;即可控制多达2个以上的影音视觉设备&#xff0c;像是智能电视…

PostgreSQL如何更新和删除表数据

这节说下怎样更新和删除表数据&#xff0c;当然认识命令了&#xff0c;可以问AI帮忙写。 接上节先看下天气表weather的数据&#xff0c;增加了杭州和西安的数据&#xff1a; 一.UPDATE更新命令 用UPDATE命令更新现有的行。 假设所有 杭州 5月12日的温度低了两度&#xff0c;用…

简单三步FastAdmin 开源框架的安装

简单三步FastAdmin 开源框架的安装 第一步&#xff1a;新建站点1&#xff0c;在宝塔面板中&#xff0c;创建一个新的站点&#xff0c;并填写项目域名。 第二步&#xff1a;上传框架1&#xff0c;框架下载2&#xff0c;上传解压缩 第三步&#xff1a;配置并安装1&#xff0c;进入…

使用 pytesseract 构建一个简单 OCR demo

简介 pytesseract 库是 Google Tesseract OCR &#xff08;光学字符识别&#xff09;引擎的一个 Python 封装库&#xff0c;使用广泛且功能强大。 构建 使用 pytesseract 构建一个简单 OCR demo。 步骤一&#xff1a;安装必要的库 您需要在您的 Python 环境中安装 pytessera…

十三: 神经网络的学习

这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。为了使神经网络能进行学习&#xff0c;将导入损失函数这一指标。而学习的目的就是以该损失函数为基准&#xff0c;找出能使它的值达到最小的权重参数。为了找出尽可能小的损失函数的值&#xff0c;我们将介绍利…

AWS 创建VPC 并且添加权限控制

AWS 创建VPC 并且添加权限控制 以下是完整的从0到1在AWS中创建VPC并配置权限的步骤&#xff08;包含网络配置、安全组权限和实例访问&#xff09;&#xff1a; 1. 创建VPC 步骤&#xff1a; 登录AWS控制台 访问 AWS VPC控制台&#xff0c;点击 创建VPC。 配置基础信息 名称…

ICASSP2025丨融合语音停顿信息与语言模型的阿尔兹海默病检测

阿尔兹海默病&#xff08;Alzheimers Disease, AD&#xff09;是一种以认知能力下降和记忆丧失为特征的渐进性神经退行性疾病&#xff0c;及早发现对于其干预和治疗至关重要。近期&#xff0c;清华大学语音与音频技术实验室&#xff08;SATLab&#xff09;提出了一种将停顿信息…

C# 导出word 插入公式问题

最近遇到了一个问题&#xff0c;下载一个文档时需要下载word可编辑的公式。找了很久终于找到了一种解决办法。下面是以C#代码来实现在Word中插入公式的功能。 目录 一、引入dll程序集文件1、通过 NuGet 引入dll&#xff08;2种方法&#xff09;的方法&#xff1a;2、手动添加d…

智汇云舟携最新无人机2D地图快速重建技术亮相广西国际矿业展览会

5月22至25日&#xff0c;广西国际矿业展览会&#xff08;以下简称 “矿业展”&#xff09;在南宁国际会展中心成功举办。智汇云舟与合作伙伴广西空驭数智信息技术有限公司携无人机 2D地图快速重建技术&#xff0c;以及视频孪生智慧矿山解决方案参会&#xff0c;为矿山行业数字化…

OpenSSL 签名验证详解:PKCS7* p7、cafile 与 RSA 验签实现

OpenSSL 签名验证详解&#xff1a;PKCS7* p7、cafile 与 RSA 验签实现 摘要 本文深入剖析 OpenSSL 中 PKCS7* p7 数据结构和 cafile 的作用及相互关系&#xff0c;详细讲解基于 OpenSSL 的 RSA 验签字符串的 C 语言实现&#xff0c;涵盖签名解析、证书加载、验证流程及关键要…