本仓库包含浙江大学软件学院《人工智能算法与系统》课程(2025秋)三个实训作业的完整代码与解决方案。本项目采用了“本地训练 + 平台推理”的策略,在本地高性能计算环境中训练模型,并将最优权重上传至智海 Mo 平台进行评测。
本项目在以下本地环境中进行开发与训练:
- GPU: NVIDIA RTX 50 Series (16GB VRAM)
- CUDA: 13.0
- Python: 3.11+
- PyTorch: 2.9.1 (配合 CUDA 13.0)
- 其他依赖:
torch-geometric,opencv-python,openai,numpy,pandas
为了克服在线平台算力限制并利用本地显存优势,所有实验均遵循以下流程:
- 本地训练: 使用
train.py(或对应文件夹下的训练脚本) 在本地 GPU 上进行模型训练。 - 结果保存: 训练好的最佳模型权重(
.pt或.pth)保存至results/目录。 - 上传部署: 将模型权重文件上传至智海 Mo 平台对应的
results文件夹。 - 在线推理: 将仓库中的推理脚本(如
main.py)复制到平台,加载上传的权重进行最终预测。
基于 DGraphFin 动态图数据集,识别欺诈用户节点。
1/train.py: 本地训练脚本。1/main.py: 平台推理脚本(提交用)。1/results/model.pt: 训练好的 GraphSAGE 模型权重。
- 模型选择: 使用 GraphSAGE 模型,相比 MLP 能更好地捕捉图结构信息(邻居节点的聚合特征)。
- 数据预处理:
- 无向图转换: 使用
T.ToUndirected()增强信息流动。 - 特征归一化: 对节点特征进行标准化处理,加速收敛。
- 无向图转换: 使用
- 训练策略:
- 混合精度训练 (AMP): 使用
torch.amp.autocast和GradScaler,显著降低显存占用(约减少 50%),同时加快训练速度。 - 参数调优: 将隐藏层维度设为 128,Dropout 设为 0.5,在防止过拟合与保留特征之间取得平衡。
- 类别平衡: 针对金融欺诈数据的类别不平衡问题,在 Loss 计算中引入了类别权重。
- 混合精度训练 (AMP): 使用
基于图像数据的 26 分类任务。
2/2train_local.py: 本地训练脚本(包含 Mixup 等增强)。2/2main.py: 平台推理脚本(包含 TTA)。2/results/efficientnet_b3_fixed.pth: 训练好的模型权重。
- 模型架构: 放弃了 Baseline 的 MobileNetV2,采用 EfficientNet-B3。该模型在 ImageNet 上有更高的准确率,且参数量适中,适合 16GB 显存微调。
- 数据增强 (Data Augmentation):
- Mixup: 在训练过程中混合两张图片及其标签,强制模型学习线性插值特征,极大提升了模型的鲁棒性。
- 常规增强: 随机裁剪、旋转、水平翻转、颜色抖动等。
- 推理优化 (Test-Time Augmentation, TTA):
- 在预测阶段,不仅仅预测原图,而是对图片进行 “中心+四角裁剪” 以及 “水平翻转”,共计 10 张子图 进行预测。
- 对 10 次预测结果取平均(Soft Voting),并引入温度缩放 (Temperature Scaling) 平滑概率分布,显著提升了泛化能力。
基于患者症状文本,输出“证型”与“治法”。
3/main.py: 平台推理脚本(集成 RAG 与 LLM)。
本实验未使用传统的微调,而是采用了 RAG (检索增强生成) + 规则约束 的方案,以极低的成本获得了极高的语义相似度分数。
- 强力清洗 (Data Cleaning):
- 针对性去除“患者男性,身高...”等与病情无关的噪音,只提取“现症见”或“主诉”后的核心症状文本。
- 知识库构建 (Knowledge Base):
- 预加载训练集
result.csv,建立绝对映射表:证型 -> 最标准治法。确保只要证型判断正确,治法输出与标准答案一字不差。
- 预加载训练集
- 多级推理策略:
- Level 1 (清洗文本检索): 计算输入症状与知识库的相似度(基于
difflib)。如果相似度 > 0.5,直接通过查表返回结果(RAG)。 - Level 2 (KNN 投票): 选取最相似的 Top-3 案例,如果其中有两个案例证型一致,则采用该证型。
- Level 3 (LLM 兜底): 调用 Qwen2.5-7B-Instruct (通过 SiliconFlow API),利用 Few-Shot Prompting 让大模型进行判断。
- Level 1 (清洗文本检索): 计算输入症状与知识库的相似度(基于
- 强制一致性: 无论 LLM 输出什么治法,最终输出均强制替换为知识库中的标准治法,避免因“同义词”导致的扣分。
三个实验成绩如下:


