当前位置:网站首页>【深度学习实践(二)】上手手写数字识别
【深度学习实践(二)】上手手写数字识别
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)此时程序会在此被阻塞,当绘图窗口关闭后才会继续往下运行
边栏推荐
- SENet detailed explanation and Keras reproduction code
- unicloud 腾讯云 上传文件 Have no access right to the storage uniapp
- Mac安装PHP开发环境
- DropBlock: 卷积层的正则化方法及复现代码
- 用matlab打造的摩斯电码加解码器音频版,支持包括中文在内的任意字符
- Detailed explanation of DenseNet and Keras reproduction code
- ffmpeg打开rtsp流应该设置的几个参数
- QT 出现多冲定义问题
- this关键字,构造函数
- 手把手教你Charles抓包工具使用
猜你喜欢
反射与枚举
FCN——语义分割的开山鼻祖(基于tf-Kersa复现代码)
Faster RCNN原理及复现代码
Time Series Forecasting Based on Reptile Search RSA Optimized LSTM
MySQL面试题大全(陆续更新)
matlab科研绘图模板,直接奉上源代码!
matlab的2DCNN、1DCNN、BP、SVM故障诊断与结果可视化
无监督特征对齐的迁移学习理论框架
Faster - RCNN principle and repetition code
Error occurred while trying to proxy request项目突然起不来了
随机推荐
VS 2017编译 QT no such slot || 找不到*** 问题
用手机也能轻松玩转MATLAB编程
用matlab打造的摩斯电码加解码器音频版,支持包括中文在内的任意字符
类图规范总结
QT QOpenGLWidget 全屏导致其他控件显示问题
MySQL复制表结构、表数据的方法
Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案
如何用matlab做高精度计算?【第一辑】
Jenkins pipeline 自动部署实践
Hardware Knowledge: Introduction to RTMP and RTSP Traditional Streaming Protocols
缓存穿透、击穿、雪崩
Microsoft computer butler 2.0 beta experience
无监督特征对齐的迁移学习理论框架
狗都能看懂的CenterNet讲解及代码复现
SQL如何从字符串截取指定字符(LEFT、MID、RIGHT三大函数)
MySQL大总结
golang chan
解决腾讯云DescribeInstances api查询20条记录以上的问题
unicloud 腾讯云 上传文件 Have no access right to the storage uniapp
curl (7) Failed connect to localhost8080; Connection refused