当前位置:网站首页>【深度学习实践(二)】上手手写数字识别
【深度学习实践(二)】上手手写数字识别
2022-08-04 05:39:00 【梦想new的出来】
活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
热爱写作,愿意让自己成为更好的人…
【深度学习实践(二)】上手手写数字识别
1 设置运行设备
tf.config.set_visible_devices([gpu0],"GPU")
2 加载数据集
先得到训练数据集,这里使用MNIST手写数字数据集,该数据集来源于美国国家标准与技术研究所,是著名的公开数据集之一。数据集中的数字图片是由250个不同职业的人纯手写绘制,如下图所示:
datasets.mnist.load_data()


- 打印出一部分训练数据查看

3 构建神经网络模型并进行训练
图片识别的原理就是 每张图可以看成是含有28*28的像素,然后转化为向量的形式就是 (1,784),数据训练集中一共含有60000张图片,那么向量组可以表示为(60000,784)
然后构建神经网络模型,通过卷积层将数据进行压缩**,池化层**进行数据(图像特征)的进一步抽样,以达到减少训练量的目的,最后全连接层 起到“特征提取器”的作用,输出层进行输出
将构建好的模型 通过优化,损失函数,性能评估,然后进行训练,通过反馈自行调整模型
#调整数据到我们需要的格式
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))
train_images.shape,test_images.shape,train_labels.shape,test_labels.shape
""" 输出:((60000, 28, 28, 1), (10000, 28, 28, 1), (60000,), (10000,)) """
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), # 卷积层1,卷积核3*3
layers.MaxPooling2D((2, 2)), # 池化层1,2*2采样
layers.Conv2D(64, (3, 3), activation='relu'), # 卷积层2,卷积核3*3
layers.MaxPooling2D((2, 2)), # 池化层2,2*2采样
layers.Flatten(), # Flatten层
layers.Dense(64, activation='relu'), # 全连接层
layers.Dense(10) # 输出层
])
# 打印网络结构
model.summary()
- 编译与训练模型
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))


4 预测结果
将训练好的模型 进行预测,输入一张图片,这里选择image[3],预测后得到图像特征结果(1,10)的一个向量
plt.imshow(test_images[3])
plt.show()
newT=test_images[3].reshape(1,784)
print('Test图片向量化为:'+str(newT))

print('预测ing...')
resT=test_images[3].reshape(1,28,28,1)
pre=model.predict(resT)
print('即得到预测结果'+str(pre))

学习随笔
1,学习的收货
动手实践深度学习,搭建神经网络,预测模型结果,体验炼丹入门的快乐
2,学习遇到的问题
提示:关于在Pycharm上想要通过qt窗口出图时,需要将设置plt.show(block=True)此时程序会在此被阻塞,当绘图窗口关闭后才会继续往下运行
边栏推荐
- A priori box (Anchor) in target detection
- unicloud 腾讯云 上传文件 Have no access right to the storage uniapp
- RHCE之路----全
- Base64编码原理
- Hardware Knowledge: Introduction to RTMP and RTSP Traditional Streaming Protocols
- LeetCode(剑指 Offer)- 18. 删除链表的节点
- SQL去重的三种方法汇总
- 自适应迁移学习核极限学习机用于预测
- this关键字,构造函数
- Online public account article content to audio file practical gadget
猜你喜欢

目标检测中的IoU、GIoU、DIoU与CIoU

子空间结构保持的多层极限学习机自编码器(ML-SELM-AE)

Database: Organize Four Practical SQL Server Scripting Functions

Database document generation tool V1.0

U-Net详解:为什么它适合做医学图像分割?(基于tf-Kersa复现代码)

如何用matlab做高精度计算?【第二辑】

Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv

ResNet详解:ResNet到底在解决什么问题?

指定区域内随机填充圆之matlab实现

pycharm专业版使用
随机推荐
this关键字,构造函数
SENet detailed explanation and Keras reproduction code
数组的一些方法
2DCNN, 1DCNN, BP, SVM fault diagnosis and result visualization of matlab
窥探晶体世界的奥秘 —— 230种空间群晶体结构模型全在这里
软件:给大家推荐一款国产非常好用的效率软件uTools
matlab科研绘图模板,直接奉上源代码!
软件稳定性思考
SegNet——论文笔记
Database Skills: Organize SQL Server's Very Practical Scripts
golang rtsp拉流测试
狗都能看懂的变化检测网络Siam-NestedUNet讲解——解决工业检测的痛点
HbuilderX 启动微信小程序 无法打开项目
系统流量预估、架构设计方案
MySQL面试题大全(陆续更新)
如何用matlab做高精度计算?【第一辑】
Faster - RCNN principle and repetition code
MySQL大总结
IDEA 控制台 中文乱码问题(如果网上教程都无法解决你的问题的话)
CMDB 腾讯云部分实现