本文档提供项目中所有测试脚本的使用指南和参数说明。
位置: tests/test_models_3d.py
测试覆盖:
- A. 模型初始化和前向传播
- B. 动态输出尺寸适配
- C. 批处理功能
- D. 模型保存/加载
- E. 与3D数据集集成
- F. 损失函数计算
- G. GPU/CPU兼容性
- H. 训练冒烟测试(可选)
运行测试 A-G,验证模型基础功能:
uv run python tests/test_models_3d.py预期输出:
- ✅ 所有基础测试通过
- 生成前向传播可视化:
images/test_3d_models_forward_pass.png
用途: 快速验证训练流程是否正常(约 1 分钟)
uv run python tests/test_models_3d.py --train-smoke --epochs 2 --n-train 8 --n-val 2参数说明:
--train-smoke: 启用训练冒烟测试--epochs 2: 仅训练 2 轮--n-train 8: 使用 8 个训练样本--n-val 2: 使用 2 个验证样本
用途: 标准训练冒烟测试(约 3-5 分钟)
# OperatorMapper3D 模型(默认)
uv run python tests/test_models_3d.py --train-smoke
# LSTMMapper3D 模型
uv run python tests/test_models_3d.py --train-smoke --model lstm默认参数:
- 模型: OperatorMapper3D
- 训练轮数: 5 epochs
- 批次大小: 4
- 学习率: 1e-4
- 训练样本: 32
- 验证样本: 8
- 图像尺寸: 64x64
输出文件:
results/smoke_test_operator_trained.png(OperatorMapper3D)results/smoke_test_lstm_trained.png(LSTMMapper3D)
用途: 测试大尺寸图像生成能力
uv run python tests/test_models_3d.py --train-smoke \
--img-size 128 \
--nx 31 \
--ny 31 \
--sig-len 800 \
--epochs 10参数说明:
--img-size 128: 输出 128x128 图像--nx 31: 空间维度 X = 31--ny 31: 空间维度 Y = 31--sig-len 800: 时间序列长度 = 800
用途: 利用 GPU 加速训练(需要 CUDA)
uv run python tests/test_models_3d.py --train-smoke \
--device cuda \
--batch-size 16 \
--epochs 20 \
--n-train 128 \
--n-val 32参数说明:
--device cuda: 强制使用 GPU--batch-size 16: 增大批次(GPU 内存允许)--n-train 128: 更多训练样本
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--train-smoke |
flag | False | 启用训练冒烟测试 |
--model |
str | operator |
模型类型: operator 或 lstm |
--epochs |
int | 5 | 训练轮数 |
--batch-size |
int | 4 | 批次大小 |
--lr |
float | 1e-4 | 学习率 |
--nx |
int | 21 | 空间维度 X |
--ny |
int | 21 | 空间维度 Y |
--sig-len |
int | 500 | 时间序列长度 |
--img-size |
int | 64 | 输出图像尺寸 |
--n-train |
int | 32 | 训练样本数 |
--n-val |
int | 8 | 验证样本数 |
--device |
str | auto |
设备: cuda/cpu/auto |
uv run python tests/test_models_3d.py --train-smoke --epochs 2 --n-train 8 --n-val 2uv run python tests/test_models_3d.py --train-smoke# OperatorMapper3D
uv run python tests/test_models_3d.py --train-smoke --model operator --epochs 10
# LSTMMapper3D
uv run python tests/test_models_3d.py --train-smoke --model lstm --epochs 10uv run python tests/test_models_3d.py --train-smoke \
--epochs 20 \
--batch-size 8 \
--n-train 128 \
--n-val 32 \
--img-size 128位置: tests/test_dataset.py
测试覆盖:
- 3D 数据集基础功能
- 3D 频谱图转换
- 完整可视化(9 个子图)
uv run python tests/test_dataset.py控制台输出:
- ✅ Test 1: 3D Dataset Basic Functionality
- ✅ Test 2: 3D Spectrogram Transform
- ✅ Visualization: 3D Dataset Complete Analysis
生成文件:
images/dataset_3d_visualization.png
可视化内容(3x3 网格):
- a) 时域信号: 中心点的时间序列
- b) 空间分布: 某时刻的 2D 空间快照(4x 插值)
- b2) 3D 空间: 3D 曲面可视化
- c1) 频谱图: 单点 STFT 频谱
- c2) 频谱能量: 平均频谱能量空间分布(4x 插值)
- c3) 主频分布: 主导频率空间分布
- d1) 缺陷标签: 2D 缺陷图像
- d2) 3D 缺陷: 3D 缺陷分布曲面
- d3) 叠加分析: 频谱能量 + 缺陷轮廓叠加
位置: src/cross_modal/legacy/test_models.py
测试覆盖:
- BaseModel 接口
- LSTMMapper 功能
- OperatorMapper 功能
- 损失函数(Dice, Combined, BCE)
- 向后兼容性
uv run python src/cross_modal/legacy/test_models.py测试项目:
- ✅ LSTM映射器: 前向传播、参数统计
- ✅ 算子映射器: 低秩分解、正则化
- ✅ Dice损失: 损失值范围、完美预测
- ✅ 组合损失: BCE + Dice 加权组合
- ✅ 损失函数工厂: 动态创建损失函数
- ✅ 向后兼容性: 接口一致性验证
问题: ImportError: cannot import name 'XXX'
解决方案:
- 检查
__init__.py是否正确导出类 - 验证导入路径是否正确
- 确保已安装项目依赖:
uv sync
问题: RuntimeError: CUDA out of memory
解决方案:
# 减小批次大小
uv run python tests/test_models_3d.py --train-smoke --batch-size 2
# 或使用 CPU
uv run python tests/test_models_3d.py --train-smoke --device cpu问题: plt.show() 不显示图像
解决方案:
- 测试脚本使用
matplotlib.use('Agg')后端 - 图像自动保存到
images/和results/目录 - 直接查看保存的 PNG 文件即可
问题: 训练冒烟测试耗时超出预期
解决方案:
# 使用最小配置
uv run python tests/test_models_3d.py --train-smoke \
--epochs 2 \
--batch-size 2 \
--n-train 4 \
--n-val 2 \
--nx 11 \
--ny 11 \
--sig-len 300 \
--img-size 32问题: 模型保存/加载后输出不一致
解决方案:
- 测试已使用
model.eval()+torch.no_grad() - 容差设置为
atol=1e-5, rtol=1e-4 - 如仍失败,检查 Dropout 是否正确关闭
# 1. 测试数据集
uv run python tests/test_dataset.py
# 2. 测试基础模型功能
uv run python tests/test_models_3d.py
# 3. 快速训练验证
uv run python tests/test_models_3d.py --train-smoke --epochs 2 --n-train 8# 标准训练测试
uv run python tests/test_models_3d.py --train-smoke# 1. Legacy 模型测试
uv run python src/cross_modal/legacy/test_models.py
# 2. 数据集测试
uv run python tests/test_dataset.py
# 3. 3D 模型完整测试(两种模型)
uv run python tests/test_models_3d.py --train-smoke --model operator --epochs 20
uv run python tests/test_models_3d.py --train-smoke --model lstm --epochs 20| 文件类型 | 路径 | 说明 |
|---|---|---|
| 数据集可视化 | images/dataset_3d_visualization.png |
3D 数据集 9 宫格分析 |
| 前向传播测试 | images/test_3d_models_forward_pass.png |
未训练模型前向传播 |
| 训练结果 (Operator) | results/smoke_test_operator_trained.png |
OperatorMapper3D 训练后预测 |
| 训练结果 (LSTM) | results/smoke_test_lstm_trained.png |
LSTMMapper3D 训练后预测 |
| 训练日志 | results/*.log |
训练过程日志 |
| 模型检查点 | results/*.pth |
训练后的模型权重 |
硬件环境: 标准配置(CPU: i7, GPU: RTX 3060, RAM: 16GB)
| 测试场景 | CPU 时间 | GPU 时间 | 内存占用 |
|---|---|---|---|
| 基础测试(A-G) | ~30秒 | ~15秒 | ~2GB |
| 快速冒烟(2 epochs) | ~1分钟 | ~30秒 | ~3GB |
| 标准冒烟(5 epochs) | ~3-5分钟 | ~1-2分钟 | ~4GB |
| 完整测试(20 epochs) | ~10-15分钟 | ~3-5分钟 | ~6GB |
- 2024-01-XX: 初始版本,包含 3D 模型和数据集测试指南
- 2024-01-XX: 添加训练冒烟测试参数说明
- 2024-01-XX: 补充常见问题和性能参考
维护者: Cross-Modal Project Team
最后更新: 2024-01-XX