154 lines
4.2 KiB
Markdown
154 lines
4.2 KiB
Markdown
|
|
# 更新日志 (Changelog)
|
|||
|
|
|
|||
|
|
## [2.0.0] - 2025-10-27
|
|||
|
|
|
|||
|
|
### ✨ 新增功能
|
|||
|
|
|
|||
|
|
#### 训练改进
|
|||
|
|
- **训练集/验证集划分**: 自动划分80%训练集和20%验证集
|
|||
|
|
- **双Loss监控**: 每个epoch同时显示训练Loss和验证Loss
|
|||
|
|
- **早停机制(Early Stopping)**: 验证Loss连续20轮不降则自动停止训练
|
|||
|
|
- **最佳模型保存**: 自动保存验证Loss最低的模型,而非最后一轮
|
|||
|
|
- **智能训练**: 最多训练500轮,但通常会在150-200轮触发早停
|
|||
|
|
|
|||
|
|
#### 可视化功能
|
|||
|
|
- **训练曲线图**: 自动生成 `training_loss.png`
|
|||
|
|
- 双曲线对比(训练Loss vs 验证Loss)
|
|||
|
|
- 标记最佳模型的epoch位置
|
|||
|
|
- 提供完整曲线和后期收敛细节两个子图
|
|||
|
|
- 支持中文字体显示
|
|||
|
|
|
|||
|
|
#### 诊断功能
|
|||
|
|
- **训练总结报告**: 训练结束后自动输出
|
|||
|
|
- 总训练轮数
|
|||
|
|
- 最佳模型epoch
|
|||
|
|
- 最佳验证Loss
|
|||
|
|
- 最终训练Loss和验证Loss
|
|||
|
|
- 训练/验证Loss差异分析
|
|||
|
|
- **智能诊断**: 自动判断模型状态
|
|||
|
|
- ✓ 良好:没有明显过拟合
|
|||
|
|
- ⚠ 尚可:有轻微过拟合倾向
|
|||
|
|
- ✗ 警告:可能存在过拟合
|
|||
|
|
|
|||
|
|
### 📝 文档更新
|
|||
|
|
|
|||
|
|
#### README.md
|
|||
|
|
- 更新训练流程说明,详细说明新增功能
|
|||
|
|
- 新增"如何判断模型训练效果好坏"FAQ
|
|||
|
|
- 新增"验证Loss远高于训练Loss"问题解答
|
|||
|
|
- 更新训练参数表格,包含早停和验证集信息
|
|||
|
|
- 更新性能基准数据
|
|||
|
|
- 标注版本号为2.0.0并列出更新内容
|
|||
|
|
|
|||
|
|
#### 提示词文件
|
|||
|
|
- **prompt_simple.txt**: 更新训练脚本要求,包含验证集和早停
|
|||
|
|
- **prompt_professional.txt**: 详细补充所有新功能的实现要求
|
|||
|
|
- 验证集监控
|
|||
|
|
- 早停机制
|
|||
|
|
- 最佳模型保存
|
|||
|
|
- 训练可视化
|
|||
|
|
- 智能诊断
|
|||
|
|
- 更新成功标准和重要提示
|
|||
|
|
|
|||
|
|
### 🔧 代码优化
|
|||
|
|
|
|||
|
|
#### train_lstm.py
|
|||
|
|
- 代码从150行扩展到~330行(增加了大量功能但保持可读性)
|
|||
|
|
- 所有新增代码均有详细中文注释
|
|||
|
|
- 改进的训练循环:
|
|||
|
|
```python
|
|||
|
|
for epoch in range(500): # 最多500轮
|
|||
|
|
# 训练阶段
|
|||
|
|
model.train()
|
|||
|
|
# ... 训练代码 ...
|
|||
|
|
|
|||
|
|
# 验证阶段
|
|||
|
|
model.eval()
|
|||
|
|
with torch.no_grad():
|
|||
|
|
# ... 验证代码 ...
|
|||
|
|
|
|||
|
|
# 早停检查
|
|||
|
|
if val_loss < best_val_loss:
|
|||
|
|
best_model_state = model.state_dict()
|
|||
|
|
else:
|
|||
|
|
patience_counter += 1
|
|||
|
|
|
|||
|
|
if patience_counter >= patience:
|
|||
|
|
break # 触发早停
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 📊 训练效果对比
|
|||
|
|
|
|||
|
|
#### v1.0.0(旧版本)
|
|||
|
|
- 固定训练100轮
|
|||
|
|
- 只有训练Loss
|
|||
|
|
- 无法判断过拟合
|
|||
|
|
- 可能保存次优模型
|
|||
|
|
- 训练时间:~15秒
|
|||
|
|
|
|||
|
|
#### v2.0.0(新版本)
|
|||
|
|
- 智能训练150-200轮(早停)
|
|||
|
|
- 训练Loss + 验证Loss
|
|||
|
|
- 自动检测过拟合
|
|||
|
|
- 保证保存最佳模型
|
|||
|
|
- 训练时间:~30秒
|
|||
|
|
- 新增训练曲线图
|
|||
|
|
- 新增诊断报告
|
|||
|
|
|
|||
|
|
### 🎯 教学价值提升
|
|||
|
|
|
|||
|
|
1. **理解过拟合**: 通过双Loss对比直观理解
|
|||
|
|
2. **学习早停**: 了解工业界常用的训练技巧
|
|||
|
|
3. **模型评估**: 学会判断模型质量的方法
|
|||
|
|
4. **可视化思维**: 培养通过图表分析问题的能力
|
|||
|
|
5. **最佳实践**: 掌握训练集/验证集划分的重要性
|
|||
|
|
|
|||
|
|
### 📦 新增文件
|
|||
|
|
|
|||
|
|
- `training_loss.png` - 训练曲线图(自动生成)
|
|||
|
|
- `CHANGELOG.md` - 本更新日志
|
|||
|
|
|
|||
|
|
### ⚙️ 依赖变化
|
|||
|
|
|
|||
|
|
需要安装matplotlib用于绘图(可选):
|
|||
|
|
```bash
|
|||
|
|
pip install matplotlib
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果未安装matplotlib,程序会跳过绘图但不影响训练。
|
|||
|
|
|
|||
|
|
### 🐛 问题修复
|
|||
|
|
|
|||
|
|
- 修复了可能保存次优模型的问题(现在保存验证Loss最低的模型)
|
|||
|
|
- 优化了文件路径处理,确保所有输出文件保存到脚本目录
|
|||
|
|
|
|||
|
|
### 🔮 未来计划
|
|||
|
|
|
|||
|
|
- [ ] 添加TensorBoard支持
|
|||
|
|
- [ ] 支持学习率动态调整
|
|||
|
|
- [ ] 添加多模型对比功能
|
|||
|
|
- [ ] 支持分布式训练
|
|||
|
|
- [ ] 增加更多技术指标特征
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## [1.0.0] - 2025-10-27(初始版本)
|
|||
|
|
|
|||
|
|
### 基础功能
|
|||
|
|
- LSTM模型训练
|
|||
|
|
- CUDA GPU加速
|
|||
|
|
- MT5数据获取
|
|||
|
|
- ONNX模型导出
|
|||
|
|
- MQL5 EA交易
|
|||
|
|
- 基础文档
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**版本说明**:
|
|||
|
|
- 主版本号:重大功能变更或架构调整
|
|||
|
|
- 次版本号:新增功能或重要改进
|
|||
|
|
- 修订号:Bug修复或小优化
|
|||
|
|
|
|||
|
|
**当前版本**: 2.0.0
|
|||
|
|
**维护状态**: 活跃开发中
|