Py学习  »  Git

每日一个github热门学术skill-code-debugging(代码调试):报错三小时,改的是一行缩进

大学圈内事儿 • 2 天前 • 29 次点击  

每天一个学术 Skill | 第 4 组 · 第 03 篇 / 共 8 篇

报错三小时,改的是一行缩进

代码调试 code-debugging | 先分类,再动手


满屏红色 traceback,从第一行往下读,改一处冒出两处。三个小时后发现,是缩进错了一格。

栏 目 背 景

这是「每天一个学术 Skill」第 4 组的第 3 篇,共 8 篇。源头是 GitHub 上 281 个学术科研 Skill 里挑出来的——完整名单见 这篇。这组按实验推进的顺序排:设计 → 代码 → 调试 → 执行 → 日志 → 统计 → 数据声明 → 出图。


这个 Skill 是什么

Skill
code-debugging
 代码调试
来源
lingzhi227 / agent-research-skills
分类
实验 · 调试
谁用得上
卡在一个报错上、翻了一晚上日志的人
一句话
先给报错分类,再按类给下一步该打印什么;失败会带着上一轮报错重试

一、报错分四类,处理顺序完全不同

类型
典型长相
该做什么
语法与缩进
IndentationError / SyntaxError
看最后一行。报错行常常是症状,不是病根
形状不匹配
size 4096 vs 512 / shape mismatch
从输入往下逐层打印张量形状,找第一处不对的
数值异常
loss=nan / inf / 梯度爆炸
按「调小学习率 → 查除零 → 查 log(0)」顺序排
逻辑错
不报错,但结果明显不对
二分注释:注释掉一半,看结果变不变

前三类机器能告诉你位置,第四类只能靠二分。多数人把第四类当第一类查,于是在日志里翻一整晚——日志里当然没有,它根本不报错。

二、它做的是一次结构化分诊

code-debugging 不给你一张「可能的原因」清单。它先判断属于哪一类,再给下一步该打印什么、该注释哪一段。没修好,会带着上一轮的报错继续,最多 4 轮。

4 轮这个上限是有意义的。四轮还没定位,通常说明问题不在你以为的那一层——继续在同一个文件里挖,只会越挖越深。

三、四轮没修好,往上一层找

1. 先看数据,别看代码 打印前 3 个样本的原始内容。标签错位、编码错乱,都会伪装成模型问题。

2. 再看维度链条 从 dataloader 出口开始逐层 print,找第一个和预期不符的。

3. 拿两条样本硬编码测 用小到能口算验证的输入跑一遍,结果对不对立刻知道。

4. 都不对就换环境 重装依赖、换机器跑一次。别在原环境里继续挖,会把环境挖坏。

四、修好了,和修对了


现在 报错消失就往下走。三天后换个输入又崩,还是同一个位置。

之后 修完补一行 assert 或一个单测,把这个输入钉住。修一次挡住后面十次,靠的就是这一行。


它的边界,先说清楚

能做什么
报错分类、给下一步验证动作、带上下文重试
不做什么
不替你判断结果对不对——不报错的错,它看不出来
做不了什么
读不懂你的领域逻辑。它只能说「这里输入输出不符合预期」
要自己核什么
它改的每一处都要自己看一遍。改对了不等于没改坏别的

报错的价值在最后一行,不在第一行。先分类,再动手。


这 一 组 共 8 篇

① 实验设计
② 实验代码
③ 代码调试(本篇)
④ 实验执行
⑤ 实验日志
⑥ 数据分析
⑦ 数据声明
⑧ 投稿级绘图

281 个 Skill 的完整名单(可搜索、按学科筛):
《GitHub 上学做科研最实用的 Skill 大全名单(建议收藏)》


顺带说一句,本号长期维护四个可以直接用的数据库和一份全国人才政策汇总,在读研究生、博士和青椒可能更常用——

① 学术会议日历:按学科查未来 3 个月征稿,只保留未截止、信源可溯的。点击查看,关注公号,点击菜单「学术日历」、后台回复「学术会议」。

② 学术招聘日历:博士、博士后、教职岗位,按截止日期排,每天更新。关注公号,点击菜单「招聘」或后台回复「招聘」。

③ 学术工具推荐:文献调研、文献管理、AI 阅读、投稿选刊、绘图查重,逐个实测。关注公号,点击菜单「学术工具」或后台回复「工具」。

④ 科研项目库:国家自然科学基金、国家社科基金、教育部及各省项目申报指南与截止节点,按申报时间排序,持续更新。关注公号,点击菜单「科研项目申报」或后台回复「项目申报」。

⑤ 人才政策:关注账号,点击菜单栏「人才政策」可以查看全国各地人才政策全貌,按省份、地市、城区三级整理,覆盖本科到博士各学历的补贴标准与申领条件。

⑥ 人生必读书单:本科到博士都能用的一张书单,按认知顺序排,一期 5 本,持续更新。点击查看

更多内容,也请关注我的公众号:大学圈内事儿

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/203162