基于TensorFlow框架实现人工神经网络完成手写数字识别任务【多测师】

复制代码
使用人工神经网络完成手写数字识别任务。具体要求如下:
(1)batch_size和step_num自定义,把loss值打印出来。
(2)神经网络的层数、节点数目、激活函数自定义。(记录心得)
(3)使用tensorboard把计算图显示出来。

一、初始数据如下:
batch_size=64
lr = 0.01 #学习率
step_num = 6000 #计算6000次
计算的神经元层数是3层
使用的是随机梯度下降算法 tf.train.GradientDescentOptimizer()
计算出来的准确度为:0.717

 

二、参数调优过程数据如下:
1、调参数据:初次尝试参数改为如下batch_size=640 ,step_num=6000 ,计算层
数是3层,使用的反向传播算法是GradientDescentOptimizer(),收敛的比较慢,最
终训练出来的准确度为71.72%,接着改参数。
2、调参数据:base_size=640 ,step_num=6000,计算层数还是3层,使用的反向
传播算法是AdamOptimizer, 最后得到损失函数是0.0003的时候,准确度非常稳定
的保持在0.958附近最终准确度可收敛到95.88%

3、调参数据:base_size=640 ,step_num=6000,修改计算层数数值,
计算6层,使用的反向传播算法是AdamOptimizer, 准确度只能达到0.9468%,
在此次调优过程中发现修改层数对最终的准确度不会提升,反而还下降了1%

复制代码

 

 

复制代码
4、调参数据:base_size=640,step_num=12000,修改计算层数数值, 计算6层,
使用的反向传播算法是AdamOptimizer,最好结果是损失函数0.15 的时候,可收敛
到96%

三、计算图如下:
1、打开terminal输入 D:\tensorflow> tensorboard logdir D:\AI\work2.py
2、在谷歌浏览器输入:http://127.0.0.1:6006
3、显示如下图:

复制代码

 

 

复制代码
四、结论:
1、发现在调参过程当中起重大作用的还是选择了AdamOptimizer这个优化器,在一
开始训练的时候就可以快速的进行收敛并且在训练过程中,准确度的递增是比较均匀
的,没有出现较大的偏差的波动。
2、相对来说改动batch_size和增加神经元的层数对此次的神经网络的训练的效果和
作用不是很大。
3、改动学习率对此次神经网络的训练效果作用也不是很大。
4、在此次调优过程中step_num如果超过12000反而会出现准确率下降的现 象,会
出现过拟合的情况,测试结果step_num在6000到12000之间会比较合理。
复制代码

 

posted @   多测师_树哥  阅读(352)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示