当前位置:网站首页>【深度学习实践(二)】上手手写数字识别
【深度学习实践(二)】上手手写数字识别
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)此时程序会在此被阻塞,当绘图窗口关闭后才会继续往下运行
边栏推荐
- mysql月份比較是否相等
- 无监督特征对齐的迁移学习理论框架
- 如何用matlab做高精度计算?【第三辑】(完)
- Microsoft computer butler 2.0 beta experience
- RuntimeError: You called this URL via POST, but the URL doesn‘t end in a slash and you have APPEND_S
- 90多款matlab工具箱打包放送
- 基于EEMD+GRU+MLR的时间序列预测
- QT 显示窗口到最前面(非置顶)
- MySQL重置root密码
- Time Series Forecasting Based on Reptile Search RSA Optimized LSTM
猜你喜欢
随机推荐
狗都能看懂的变化检测网络Siam-NestedUNet讲解——解决工业检测的痛点
JVM 快速检测死锁
U-Net详解:为什么它适合做医学图像分割?(基于tf-Kersa复现代码)
golang rtsp拉流测试
代码小变化带来的大不同
SegNet——论文笔记
网络技巧:教你给路由器装上电池,断电照样可以上网!
Provide 和 Inject 的用法
数据库:整理四个实用的SQLServer脚本函数
mysql月份比較是否相等
Faster - RCNN principle and repetition code
FCN——语义分割的开山鼻祖(基于tf-Kersa复现代码)
Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案
EfficientNet解读:神经网络的复合缩放方法(基于tf-Kersa复现代码)
Network skills: teach you to install batteries on the router, you can still surf the Internet when the power is cut off!
系统流量预估、架构设计方案
SENet详解及Keras复现代码
2DCNN, 1DCNN, BP, SVM fault diagnosis and result visualization of matlab
JVM工具之 JPS
E-R图总结规范









