中作业将基于课程组开发的交通预测领域开源框架,要求同学们以两人一组(不能超过2人,不推荐单人组队)的形式选择一开源模型将其改写为符合框架接口约束的模型。
具体来说,课程组预先选定一批交通开源模型——涉及交通流量/速度/需求量预测、轨迹下一跳预测。并且,课程组前期已经为前述任务准备好了数据集并搭建了数据预处理、评估模块。因此,各小组的主要工作是将模型开源代码改写为符合框架抽象接口约束的模型类,虽然课程组已经实现了大部分通用的数据接口,但是部分模型可能需要对数据接口进行一定的修改。
中作业占总成绩的 10%(10分),由以下四部分组成:
- 复现模型完成度(4分):要求复现的模型能够在框架中运行、代码风格良好、注释充分。代码风格规范要求见文档,要求使用第三方库
flake8
进行检查! - 技术报告(4分):具体要求参见技术报告模板。
- 复现性能(2分):考量复现模型的性能。
- 难易度加分(附加分):考虑到部分难度较高的模型,复现难度较高,因此完成中等难度模型复现工作(即能在框架中运行)的小组可获得 1 分额外加分,完成困难模型复现工作的小组获得 2 分额外加分。(注:若加分后总分超过 10 分,则按 10 分计算)。
框架以流水线的形式运行,主要分为五个步骤:
- 初始化流水线配置。(依托 Config 模块)
- 数据集加载与数据预处理,数据转换并划分训练集、验证集、测试集。(依托 Data 模块)
- 加载模型。(依托 Model 模块)
- 训练验证模型,并在测试集上进行测试。(依托 Executor 模块)
- 评估模型测试输出。(依托 Evaluator 模块)
各组的工作主要涉及 Model 模块,通过使用课程组预先构建的 Data 模块提供的输入数据进行任务预测,并输出符合课程组预先构建 Evaluator 模块的评估输入接口格式。对于 POI 轨迹下一跳预测任务与交通流量\速度预测任务具体接口格式的说明,可参见对应任务的说明 md 文件。
关于框架的具体介绍可以参考文档。
课程组预先构建了两个脚本文件,方便各组测试运行复现后的模型。
测试模型是否能跑通框架的脚本文件,各组可以参考该脚本文件在调式模式或命令行中测试运行模型,与通过实操完成对框架的深入理解。
训练模型并在测试集上进行预测,最后会将测试结果输出至命令行与 trafficdl/cache/evaluate_cache/
文件夹下。
命令行运行示例:
python run_model.py --task traj_loc_pred --model DeepMove --dataset foursquare_tky
这里简单介绍部分常用命令行参数:
- task:所要执行的任务名,默认为
traj_loc_pred
。需要各组修改为自己对应的任务名。 - model:所要运行的模型名,默认为
DeepMove
。需要各组修改为自己对应的模板模型名。 - dataset:所要运行的数据集,默认为
foursquare_tky
。 - config_file:用户指定 config 文件名,默认为
None
。 - saved_model:是否保存训练的模型结果,默认为
True
。 - train:当模型已被训练时是否要重新训练,默认为
True
。
流量
速度
需求
请将下载好的数据集存放于 Bigscity-TrafficDL/raw_data
文件夹下。
- 交通状态预测数据集下载链接。
数据集和模型的对应关系查看文件交通状态数据集和模型对应关系.xlsx
请将下载好的数据集存放于 code/raw_data/数据集名/数据集具体的文件
文件夹下。(直接下载数据集对应的文件夹,解压到code/raw_data/
下即可。)