(三十六)练习与下一轮修改
完成两条主流程后,每次增加一项需求,并为它补一份输入、预期状态和失败时的检查。
| 练习 | 先推导什么 | 完成时核对什么 |
|---|---|---|
| 书目修改记录 | 新旧字段在哪里保存,哪个批次触发变化 | 修改一次后能比较前后值,再采集不增加假修改 |
| 原始快照重清洗 | 同一原始输入、清洗规则版本和旧报告怎样关联 | 新规则可复查,旧报告仍有明确解释 |
| 大目录批量导入 | 页面数量、内存占用、批次完整与中断恢复怎样协调 | 中断后能继续,失败不留下不完整业务批次 |
| 新模型特征 | CSV、FEATURES、预处理、网络输入和元数据分别要改哪处 | 旧版仍可预测,新版特征有明确解释 |
| 增加固定评估记录 | 固定哪一组数据,怎样保存逐条误差 | 两个候选在相同划分与指标上比较 |
| 发布失败恢复 | 在文件保存、指向切换、进程启动哪步制造失败 | 旧版完整可读,恢复后请求能核对版本 |
训练与推理可以继续运行 逐步预测演示:
# 项目文件:demos/prediction_walk.py
from pathlib import Path
import numpy as np
import torch
from modeldelivery.predict import Predictor
# 从 model_project 运行,读取同一套权重和四个缩放数组。
predictor = Predictor(Path("models"), "v1")
x = np.asarray([[35, 3]], dtype=np.float32)
s = predictor.scaler
z = ((x - s["x_mean"]) / s["x_scale"]).astype(np.float32)
with torch.inference_mode():
standard_y = predictor.model(torch.from_numpy(z)).numpy()
pages = standard_y * s["y_scale"] + s["y_mean"]
print("x:", x, "z:", z, "标准化目标:", standard_y, "页数:", pages)
assert float(pages.item()) == predictor.pages(35, 3)# 在 model_project 中,已经发布 v1 后运行,观察四个中间数组。
uv run python ../demos/prediction_walk.py
阅读过程中,先从图中手算标准化输入,再与演示输出比较。接着改成另一条输入,确认变化发生在哪列、模型怎样组合两个特征、目标最后怎样还原单位。前面的每个库都在这里承担一个具体动作;下一轮扩展时,就可以沿着输入、状态和输出找到该修改的位置。
本章习题解答与推导 按题号整理实现、过程说明与运行检查,可在完成练习后逐项对照。