每天一个学术 Skill | 第 4 组 · 第 03 篇 / 共 8 篇
报错三小时,改的是一行缩进
代码调试 code-debugging | 先分类,再动手
满屏红色 traceback,从第一行往下读,改一处冒出两处。三个小时后发现,是缩进错了一格。
栏 目 背 景
这是「每天一个学术 Skill」第 4 组的第 3 篇,共 8 篇。源头是 GitHub 上 281 个学术科研 Skill 里挑出来的——完整名单见 这篇。这组按实验推进的顺序排:设计 → 代码 → 调试 → 执行 → 日志 → 统计 → 数据声明 → 出图。
这个 Skill 是什么
| code-debugging |
| lingzhi227 / agent-research-skills |
| |
| |
| 先给报错分类,再按类给下一步该打印什么;失败会带着上一轮报错重试 |
一、报错分四类,处理顺序完全不同
| | |
| IndentationError / SyntaxError | |
| size 4096 vs 512 / shape mismatch | |
| | 按「调小学习率 → 查除零 → 查 log(0)」顺序排 |
| | |
前三类机器能告诉你位置,第四类只能靠二分。多数人把第四类当第一类查,于是在日志里翻一整晚——日志里当然没有,它根本不报错。
二、它做的是一次结构化分诊
code-debugging 不给你一张「可能的原因」清单。它先判断属于哪一类,再给下一步该打印什么、该注释哪一段。没修好,会带着上一轮的报错继续,最多 4 轮。
4 轮这个上限是有意义的。四轮还没定位,通常说明问题不在你以为的那一层——继续在同一个文件里挖,只会越挖越深。
三、四轮没修好,往上一层找
1. 先看数据,别看代码 打印前 3 个样本的原始内容。标签错位、编码错乱,都会伪装成模型问题。
2. 再看维度链条 从 dataloader 出口开始逐层 print,找第一个和预期不符的。
3. 拿两条样本硬编码测 用小到能口算验证的输入跑一遍,结果对不对立刻知道。
4. 都不对就换环境 重装依赖、换机器跑一次。别在原环境里继续挖,会把环境挖坏。
四、修好了,和修对了
现在 报错消失就往下走。三天后换个输入又崩,还是同一个位置。
之后 修完补一行 assert 或一个单测,把这个输入钉住。修一次挡住后面十次,靠的就是这一行。
它的边界,先说清楚
| |
| |
|
读不懂你的领域逻辑。它只能说「这里输入输出不符合预期」 |
| 它改的每一处都要自己看一遍。改对了不等于没改坏别的 |
报错的价值在最后一行,不在第一行。先分类,再动手。
顺带说一句,本号长期维护四个可以直接用的数据库和一份全国人才政策汇总,在读研究生、博士和青椒可能更常用——
① 学术会议日历:按学科查未来 3 个月征稿,只保留未截止、信源可溯的。点击查看,关注公号,点击菜单「学术日历」、后台回复「学术会议」。
② 学术招聘日历:博士、博士后、教职岗位,按截止日期排,每天更新。关注公号,点击菜单「招聘」或后台回复「招聘」。
③ 学术工具推荐:文献调研、文献管理、AI 阅读、投稿选刊、绘图查重,逐个实测。关注公号,点击菜单「学术工具」或后台回复「工具」。
④ 科研项目库:国家自然科学基金、国家社科基金、教育部及各省项目申报指南与截止节点,按申报时间排序,持续更新。关注公号,点击菜单「科研项目申报」或后台回复「项目申报」。
⑤ 人才政策:关注账号,点击菜单栏「人才政策」可以查看全国各地人才政策全貌,按省份、地市、城区三级整理,覆盖本科到博士各学历的补贴标准与申领条件。
⑥ 人生必读书单:本科到博士都能用的一张书单,按认知顺序排,一期 5 本,持续更新。点击查看
更多内容,也请关注我的公众号:大学圈内事儿