news 2026/7/14 22:20:37

25.12.18_第P5周:运动鞋识别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
25.12.18_第P5周:运动鞋识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客

  • 🍖 原作者:K同学啊

一、我的环境

二、动态学习率

这个地方使用的是官方的动态学习率接口,最开始源代码中0.92 ** (epoch // 2),在多轮实验中,后期的模型都训练不动,loss不降我采用了Adam、标签平滑、正则化,都没有讲test_acc提升到84%。掉回头来修改衰减梯度,在最后两轮达到了最终目标,修改代码是0.95*epoch,减缓了衰减速度,让模型更容易收敛。我也不懂为啥就实现了目标,我问ai,ai建议如下。最近建议我尝试余弦退火策略,因为我的acc曲线最终还是掉了一些下去,

为什么“平滑”能提高准确率?

你可以看看这两个对比图(想象):

  1. 配合动量(Momentum)

    • 现在的优化器(如 Adam)都有“惯性”。

    • 旧方案的突变会打断惯性,导致模型在那个瞬间方向迷失。

    • 新方案顺应惯性,让模型在减速的同时依然保持方向感,更容易滑入“全局最优解”(Global Minima)。

  2. 更早的干预

    • 旧方案前 2 轮学习率完全没变。如果初始学习率这就有点大,前 2 轮可能已经跑偏了。

    • 新方案从第 1 轮就开始减速(乘以 0.95)。这种“尽早介入、温柔介入”的策略,能防止模型在训练初期因为步子太大而跳出最优解的坑。

三 代码

# # 调用官方动态学习率接口时使用 learn_rate = 1e-4 lambda1 = lambda epoch: (0.95 ** epoch) optimizer = torch.optim.SGD(model.parameters(), lr=learn_rate) scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda1) #选定调整方法
loss_fn = nn.CrossEntropyLoss() # 创建损失函数 epochs = 40 train_loss = [] train_acc = [] test_loss = [] test_acc = [] for epoch in range(epochs): # 更新学习率(使用自定义学习率时使用) model.train() epoch_train_acc, epoch_train_loss = train(train_dl, model, loss_fn, optimizer) # scheduler.step() # 更新学习率(调用官方动态学习率接口时使用) model.eval() epoch_test_acc, epoch_test_loss = test(test_dl, model, loss_fn) scheduler.step() train_acc.append(epoch_train_acc) train_loss.append(epoch_train_loss) test_acc.append(epoch_test_acc) test_loss.append(epoch_test_loss) # 获取当前的学习率 lr = optimizer.state_dict()['param_groups'][0]['lr'] template = ('Epoch:{:2d}, Train_acc:{:.1f}%, Train_loss:{:.3f}, Test_acc:{:.1f}%, Test_loss:{:.3f}, Lr:{:.2E}') print(template.format(epoch+1, epoch_train_acc*100, epoch_train_loss, epoch_test_acc*100, epoch_test_loss, lr)) print('Done')
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 17:12:47

深入理解Golang并发模型与CSP理论

lang 在设计上另辟蹊径,其并发哲学的核心信条是:“不要通过共享内存来通信,而要通过通信来共享内存。” (Do not communicate by sharing memory; instead, share memory by communicating.) 这一理念源自通信顺序进程(Communicat…

作者头像 李华
网站建设 2026/7/11 11:47:52

48、Linux 命令操作与格式化输出全解析

Linux 命令操作与格式化输出全解析 在 Linux 系统的操作中,有许多实用的命令和操作符,它们能帮助我们更高效地完成各种任务。下面将详细介绍测试操作符、I/O 重定向、 echo 选项与转义序列、 printf 命令以及日期时间格式化等内容。 测试操作符 测试操作符常用于 tes…

作者头像 李华
网站建设 2026/7/14 9:04:35

43、高效Shell操作技巧与实践

高效Shell操作技巧与实践 1. 数据处理与日志记录 在处理数据时,我们经常需要将合适的数据通过管道输入到 while read 循环中,并根据需要使用 printf 进行输出。例如,要打印主机名 $HOSTNAME ,后面跟一个制表符,再跟上 last 命令输出的非空行,可以使用以下命令:…

作者头像 李华
网站建设 2026/7/14 14:36:16

测试技术创新:驱动软件质量的新引擎‌

在软件行业高速发展的今天,测试技术已从传统的手工检查演变为智能、自动化的核心驱动力。随着人工智能、云原生和DevOps实践的普及,测试创新正重塑质量保障体系,帮助从业者应对快速迭代、复杂系统的挑战。本文结合当前行业实践,探…

作者头像 李华
网站建设 2026/7/14 3:33:55

中科米堆CASAIM自动化三维检测-0.02mm计量级精度产品尺寸快速检测

在精密零件加工过程中,准确测量产品尺寸对于保障生产流畅性和产品质量至关重要。过去常用的检测方式主要依靠人工完成,操作人员使用卡尺、千分尺等工具进行手动测量。这种方法不仅测量速度慢,而且不同人员操作时容易产生测量误差,…

作者头像 李华
网站建设 2026/7/14 5:08:01

基于三菱PLC的智能温室大棚控制系统设计与实践:塑料大棚的环保控制技术解析

基于三菱PLC的温室大棚控制系统的设计塑料大棚温室控制系统设计 塑料大棚种菜最怕啥?半夜两点突然降温没人管,大中午太阳太毒忘记开遮阳帘。去年老王就因为这两件事赔进去三亩地的草莓苗,现在他大棚里装了个会自己思考的钢铁管家——基于三菱…

作者头像 李华