news 2026/5/26 8:56:26

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/5/25 7:44:22

49、Bash编程:模式匹配、命令操作与示例代码详解

Bash编程:模式匹配、命令操作与示例代码详解 1. extglob扩展模式匹配运算符 在使用 shopt -s extglob 时,以下运算符会生效。匹配默认区分大小写,但可以使用 shopt -s nocasematch (bash 3.1+)来改变这一特性,该选项会影响 case 和 [[ 命令。 分组 含义 @( …

作者头像 李华
网站建设 2026/5/26 5:36:43

2、深入探索Bash编程:从基础到实用技巧

深入探索Bash编程:从基础到实用技巧 代码获取与结构 代码可从网站(http://www.bashcookbook.com )下载,下载格式为 .tgz 或 .zip 。代码文件通常位于类似 ./chXX/snippet_name 的路径下,其中 chXX 代表章节, snippet_name 是文件名。 “无用的cat使用”探讨…

作者头像 李华
网站建设 2026/5/26 7:22:33

40、计算机日常维护与管理任务实用指南

计算机日常维护与管理任务实用指南 在计算机使用和管理过程中,我们常常会遇到各种任务和问题。本文将为大家介绍一些常见问题的解决方案,涵盖文件重命名、文档查看、文件解压、会话恢复、会话共享、日志记录以及屏幕清理等方面。 1. 批量重命名文件 在实际操作中,我们可能…

作者头像 李华
网站建设 2026/5/26 8:26:37

Kotaemon重排序模型(Re-Ranker)集成教程

Kotaemon重排序模型集成深度指南 在构建企业级智能问答系统时,一个常见的痛点是:即便使用了强大的大语言模型(LLM),系统仍可能给出看似合理却与实际政策或知识不符的回答。这种“幻觉”问题在金融、医疗、人力资源等高…

作者头像 李华
网站建设 2026/5/26 5:57:45

Unity学习笔记(二十)PlayerPrefs(一)

目录 PlayerPrefs是什么 存储原理 读取相关 删除数据 PlayerPrefs数据唯一性 PlayerPrefs是什么 是Unity提供的可以用于存储读取玩家数据的公共类 存储原理 PlayerPrefs的数据存储,类似键值对存储,一个键对应一个值 提供了存储3种数据的方法 &am…

作者头像 李华
网站建设 2026/5/26 5:56:38

书籍-严羽《沧浪诗话》

严羽《沧浪诗话》详细介绍 书籍基本信息 书名:沧浪诗话 作者:严羽(南宋) 成书时间:南宋理宗时期(约公元1230-1250年) 卷数:1卷(分五章) 类别:诗歌…

作者头像 李华