fb09e66d09
- 将原始单环境训练代码重构为模块化结构,添加向量化环境支持以提高数据采集效率 - 实现完整的PPO训练流水线,包括共享CNN的Actor-Critic网络、向量化经验回放缓冲和GAE优势估计 - 添加训练脚本(train_vec.py)、评估脚本(evaluate.py)和SB3基线对比脚本(train_sb3_baseline.py) - 提供详细的文档和开发日志,包含问题解决记录和实验分析 - 移除旧版项目文件,统一项目结构到CW1_id_name目录下
5.8 KiB
5.8 KiB
Submission Checklist
最后提交前逐项核对,避免格式扣分。
1. 命名格式
- zip 文件名:
CW1_<学号>_<姓名拼音>.zip- 例:
CW1_2012345_ZhangSan.zip
- 例:
- PDF 文件名:
CW1_<学号>_<姓名拼音>.pdf - 学号 + 姓名拼写全程一致(zip / pdf / 报告封面页)
- PDF 不放进 zip!分两个文件单独上传
2. zip 内容(提交前检查)
CW1_<ID>_<Name>.zip
├── README.md ✅
├── requirements.txt ✅
├── train.py ✅ 单环境 legacy
├── train_vec.py ✅ 主训练脚本
├── train_sb3_baseline.py ✅ SB3 基线
├── evaluate.py ✅ 评估脚本
├── scan_checkpoints.py ✅ checkpoint 扫描
├── src/
│ ├── __init__.py
│ ├── env_wrappers.py
│ ├── vec_env_wrappers.py
│ ├── networks.py
│ ├── rollout_buffer.py
│ ├── vec_rollout_buffer.py
│ ├── ppo_agent.py
│ ├── eval_utils.py
│ └── utils.py
├── notebooks/
│ ├── 01_explore_env.ipynb
│ ├── 02_test_network.ipynb
│ ├── 03_test_buffer.ipynb
│ ├── 04_test_ppo.ipynb
│ └── 05_evaluate.ipynb
├── models/
│ └── ppo_final.pt ⭐ 最佳 checkpoint,重命名后唯一一个
├── runs/
│ └── vec_main_v3/ ⭐ 主训练 TensorBoard 日志
└── docs/ ✅ 报告素材(可全部保留)
├── step00_skeleton.md
├── step01_env_exploration.md
├── ...
├── step07_evaluation.md
├── issues_and_fixes.md
├── report_outline.md
├── eval_summary.json
├── checkpoint_scan_*.json
├── fig_eval_bar.png
├── fig_training_curves.png
└── demo.mp4
3. zip 不应包含的东西(提交前删除)
__pycache__/目录(src/ 下可能有,删掉)*.pyc文件.ipynb_checkpoints/目录runs/smoke_test/、runs/smoke_v2/、runs/n8_speed_test/、runs/vec_smoke*/等无用日志models/main_v1_baseline/、models/smoke_*/、models/n8_speed_test/等无用 checkpointmodels/vec_main_v3/iter_*.pt中除最佳外的所有中间 checkpointanaconda_projects/等 IDE 自动产生目录(如果存在)
一键清理命令
cd D:\projects\CW1_xxx
# 1. 把最佳 checkpoint 复制为 ppo_final.pt
Copy-Item models\vec_main_v3\<最佳iter>.pt models\ppo_final.pt
# 2. 删除中间 checkpoints
Remove-Item -Recurse -Force models\vec_main_v3
Remove-Item -Recurse -Force models\main_v1_baseline -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force models\smoke_test, models\smoke_v2, models\n8_speed_test, models\vec_smoke -ErrorAction SilentlyContinue
# 3. 删除无用 runs
Remove-Item -Recurse -Force runs\smoke_test, runs\smoke_v2, runs\n8_speed_test, runs\vec_smoke, runs\vec_smoke_v3, runs\vec_smoke_v3b -ErrorAction SilentlyContinue
# 4. 把 vec_main_v3 重命名成 main(提交时更清晰)
Move-Item runs\vec_main_v3 runs\main
# 5. 删除 __pycache__ 和 .ipynb_checkpoints
Get-ChildItem -Recurse -Force -Include "__pycache__",".ipynb_checkpoints" | Remove-Item -Recurse -Force
Get-ChildItem -Recurse -Filter "*.pyc" | Remove-Item -Force
4. PDF 报告内容核对
- 第一页 cover page:含学生 ID
- 字数 ≤ 3000(不含 References 和 Appendix)
- 5 个 section 全有:Introduction / Methodology / Implementation Details / Results and Analysis / Conclusion
- 3 张关键图:训练曲线、评估柱状图、SB3 对比(已在 fig_training_curves.png)
- 超参数表(Table 1 in Section 3.3)
- 网络架构图(手绘或 PowerPoint 画)
- References 至少 3-5 篇(PPO + GAE + Gymnasium 文档)
- PDF 字体清晰,所有图表 axis label / legend 都可读
- PDF 文件可在另一台电脑打开(不要损坏)
5. 代码可复现性(致关键)
提交前在不同目录或不同电脑做这个测试:
# 假设你解压 zip 到一个新位置
cd C:\test_dir\CW1_<ID>_<Name>
# 1. 装依赖
pip install -r requirements.txt
# 2. 加载模型测试
python -c "from src.ppo_agent import PPOAgent; agent = PPOAgent(); agent.load('models/ppo_final.pt'); print('OK')"
# 3. 跑评估(最少 5 episodes)
python evaluate.py --ckpt models/ppo_final.pt --episodes 5
如果以上 3 步全过,提交内容复现性 OK。
6. 学术诚信
src/下没有任何from stable_baselines3 import语句- 验证:
Get-ChildItem src\ -Recurse -Filter *.py | Select-String "stable_baselines3"
- 验证:
train_sb3_baseline.py在报告里明确标记为 baseline only- 所有外部代码灵感(CleanRL、PPO 论文、37 details 博客)在报告 References 里列出
- 报告封面"yes" 同意匿名教学使用(视个人意愿)
7. 学习 Mall 上传后
- 下载 zip 和 pdf,验证文件完整未损坏
- 在干净电脑上重新打开 PDF 看一眼
- 截图保存提交确认页(防系统崩溃)
8. 时间节点(截止 2026-05-04 23:59)
- 至少 48 小时前(即 2026-05-02 中午)完成所有内容
- 不要 拖到截止当天,Learning Mall 临近截止经常上传失败
- 留 1-2 天缓冲修 bug / 改报告
9. 紧急情况备选
- 如果 vec_main_v3 训练崩溃 → 使用
runs/main_v1_baseline/+models/main_v1_baseline/数据- 报告里诚实说明 (305K 步早期停止)
- 如果 SB3 baseline 没跑出来 → 报告 Section 4.3 删掉对比,改成"plan to compare in future work"
- 如果 PDF 超字数 → 删 Implementation Details 里的次要细节,保留 Methodology 和 Results