Skip to main content

A.8 学习卡住时的急救指南

学习卡点排查地图

最小复现与提问流程图

卡住时,先把“我学不会”变成“我能定位这个失败”。

先判断问题类型

现象可能问题第一反应
ModuleNotFoundError环境错了或依赖没装查 Python 和 pip 路径
找不到文件工作目录或相对路径错了打印 Path.cwd()
代码能跑但结果奇怪输入、标签或指标有问题打印样本和中间值
训练不变好数据、loss、学习率或标签格式问题先让模型过拟合极小数据
GPU 显存爆了batch、输入或模型太大先减小 batch size
项目太大无从下手没有最小闭环定义一个输入、一个处理、一个输出

先跑这些检查

python --version
which python
pip --version
pip list
pwd
ls

如果使用 NVIDIA GPU:

nvidia-smi

路径问题可以这样查:

from pathlib import Path

print(Path.cwd())
print(Path("data").exists())

预期输出:

你当前所在目录会不同,形式大致是:

/your/current/project
False

按这个顺序调试代码

  1. 打印前 2 条输入和标签。
  2. 打印 shape、长度和值范围。
  3. 打印进入模型前的一个中间结果。
  4. 打印计算指标前的一个模型输出。
  5. 最后才改模型或参数。

最小检查示例:

texts = ["refund request", "invoice copy", "shipping delay"]
labels = ["support", "billing", "support"]

print("samples:", len(texts))
print("first texts:", texts[:2])
print("first labels:", labels[:2])
print("label set:", sorted(set(labels)))

预期输出:

samples: 3
first texts: ['refund request', 'invoice copy']
first labels: ['support', 'billing']
label set: ['billing', 'support']

用完整问题请求帮助

我正在做什么:
我期待看到什么:
实际发生了什么:
完整错误最后 20 行:
我已经尝试过什么:
最小可复现代码:

养成最小复现习惯

项目很乱时,先缩到能跑:

def predict(x):
return x * 2

data = [1, 2, 3]
preds = [predict(x) for x in data]
print(preds)

预期输出:

[2, 4, 6]

然后一层一层把真实逻辑加回去。哪一层加回去后坏了,就检查哪一层。

暂停还是继续?

情况更好的动作
已经随机尝试 30 分钟停下来写假设
复制命令但说不清作用停下来检查环境
已经有 1-2 个清晰假设继续测试
知道下一个可观察结果继续推进