神经网络:手写数字图像识别

server/2024/9/23 1:12:56/

一、导入相关库函数

python">import matplotlib.pyplot as plt
import tensorflow as tf
import keras
import numpy as np

二、载入mnist数据集 

使用keras.中的mnist数据集

python">(train_images, train_labels), (test_images, test_labels)=\
keras.datasets.mnist.load_data()

三、测试数据的情况,数据集图像和label标签

python">x = train_images[2]
y = train_labels[2]
plt.title('label: %i' % y)
plt.imshow(x, cmap=plt.cm.gray_r, interpolation='nearest')

四、建立神经网络模型

keras中有API帮助建立,用Sequential的AIP建立

python">model = keras.Sequential([#模型是多层的,底层是输入层,做Flatten,input_shape分辨率28*28keras.layers.Flatten(input_shape=(28,28)),#隐藏层,使用relukeras.layers.Dense(128, activation=tf.nn.relu),#输出层,10分类,数字从0~9,一共10种(选择softmax)keras.layers.Dense(10,activation=tf.nn.softmax)
])

五、将模型进行compile,优化器optimizers.Adam(),选择损失函数loss,用精度来度量

python">model.compile(optimizer=tf.optimizers.Adam(),loss='sparse_categorical_crossentropy',metrics=['accuracy'])

六、打印model,神经网络模型,三层结构

看一下神经网络模型结构:三层,输入层784,隐藏层128,输出层10

python">model.summary()

七、训练神经网络模型,精度在增长,loss减少 

epochs迭代次数,这里选择10次迭代

python">model.fit(train_images,train_labels,epochs=10)

八、评估,测试模型性能

python">test_loss,test_acc = model.evaluate(test_images, test_labels)

九、训练的模型进行预测

python">predictions = model.predict(test_images)

十、测试模型,用测试集进行

预测结果为

[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.],1的index为2,预测值为2,和真实值一致,预测成功。
python">x_test = test_images[888]
y_test = test_labels[888]
y_pred = predictions[888]#打印x_test图像
plt.imshow(x_test,cmap=plt.cm.gray_r,interpolation='nearest')y_pred2 = np.around(y_pred,decimals=1
)
print(y_pred2)
output:[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]

十一、完整代码 

python">import matplotlib.pyplot as plt
import tensorflow as tf
import keras
import numpy as np#载入mnist数据集
(train_images, train_labels), (test_images, test_labels)=\
keras.datasets.mnist.load_data()#建立神经网络模型
#keras中有API帮助建立,用Sequential的AIP建立
model = keras.Sequential([#模型是多层的,底层是输入层,做Flatten,input_shape分辨率28*28keras.layers.Flatten(input_shape=(28,28)),#隐藏层,使用relukeras.layers.Dense(128, activation=tf.nn.relu),#输出层,10分类,数字从0~9,一共10种(选择softmax)keras.layers.Dense(10,activation=tf.nn.softmax)
])#将模型进行compile,优化器optimizers.Adam(),选择损失函数loss,用精度来度量
model.compile(optimizer=tf.optimizers.Adam(),loss='sparse_categorical_crossentropy',metrics=['accuracy'])#训练神经网络模型,精度在增长,loss减少
#epochs迭代次数,这里选择10次迭代
model.fit(train_images,train_labels,epochs=10)#评估,测试模型性能
#在测试数据集上进行评估
test_loss,test_acc = model.evaluate(test_images, test_labels)#刚刚训练的模型进行预测
predictions = model.predict(test_images)x_test = test_images[888]
y_test = test_labels[888]
y_pred = predictions[888]#打印x_test图像
plt.imshow(x_test,cmap=plt.cm.gray_r,interpolation='nearest')y_pred2 = np.around(y_pred,decimals=1
)
print(y_pred2)


http://www.ppmy.cn/server/27486.html

相关文章

【网络】gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ”

gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ” 一、提供web静态资源服务1.1、web静态资源服务是什么1.2、web静态资源服务有什么作用1.3、web静态资源服务怎么实现 二、提供Restful服务器路由转发三、支持Eureka服务发现四、服务检查五、灰度发布 一、提供web静态…

智能化未来:Agent AI智能体的崛起与全球挑战

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

element-plus中使用el-switch时,用‘0,1’或者0,1来代替true,false绑定

介绍 switch 开关默认用 true, false来绑定的,但是在实际的项目中,有时候根据后端的接口返回,也可能会用字符串0 和 1 ,或者数字 0,1来代替; 具体实现如下 详情: 主要实现方式是通过使用el-switch组件里的 active-val…

unity 专项一 localPosition与anchoredPosition(3D)的区别

一 、RectTransform 概念 1、RectTransform继承自Transform,用于描述矩形的坐标(Position),尺寸(Size),锚点(anchor)和中心点(pivot)等信息,每个2D布局下的元素都会自动生成该组件。 2、当我们在处理UI组件时,往往容易…

ffmpeg中stream_loop参数不生效原因分析

问题 使用ffmpeg把一个视频文件发布成一个rtmp流,并设置成循环推流,此时需要使用参数stream_loop,命令如下: ffmpeg.exe -stream_loop -1 -re -i D:\tools\ffmpeg-5.1.2\bin\sei.h264 -c copy -f flv -safe 0 rtmp://localhost:1935/live/te…

linux系列—— 使用systemd 的单元文件来定义如何挂载一个文件系统

使用systemd 的单元文件来定义如何挂载一个文件系统 1.打开文件2.写入内容3.启动4.解释 1.打开文件 sudo gedit /etc/systemd/system/your-unit-file-name.mount2.写入内容 [Unit] Description mount disk[Mount] What /dev/nvmexxxx Where /mnt/cf Type ntfs Options d…

30 OpenCV 点多边形测试

文章目录 点多边形测试pointPolygonTest示例 点多边形测试 pointPolygonTest pointPolygonTest( InputArray contour,// 输入的轮廓 Point2f pt, // 测试点 bool measureDist // 是否返回距离值,如果是false,1表示在内面,0表示在边界上&a…

探索Headless组件与Tailwind CSS的魔力——前端开发的新选择

探索Headless组件与Tailwind CSS的魔力——前端开发的新选择 引言 前端技术日新月异,新的框架和工具层出不穷。今天,我将与大家深入探讨两个在前端开发中备受瞩目的技术:Headless组件和Tailwind CSS。它们各自在前端领域有着独特的价值和影…