libcity 笔记:基本使用方法

本文介绍了Bigscity-LibCity,一个针对交通预测的统一、可扩展的代码库,详细讲解了安装步骤、数据集管理、模型运行、命令行参数设置以及遇到的问题及解决方案。还提到了如何使用TensorBoard进行可视化监控。
摘要由CSDN通过智能技术生成

介绍 — Bigscity-LibCity 文档 (bigscity-libcity-docs.readthedocs.io)

1 介绍

  • 一个统一、全面、可扩展的代码库,为交通预测领域提供了一个可靠的实验工具和便捷的开发框架
  • 目前支持
    • 交通状态预测

      • 交通流量预测

      • 交通速度预测

      • 交通需求预测

      • 起点-终点(OD)矩阵预测

      • 交通事故预测

    • 轨迹下一跳预测

    • 到达时间预测

    • 路网匹配

    • 路网表征学习

2 安装

2.1 创建一个conda 环境

conda create --name Libcity
conda activate Libcity

2.2 获取源代码

git clone https://github.com/LibCity/Bigscity-LibCity
cd Bigscity-LibCity

2.3 安装pytorch

conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.2 -c pytorch

2.4 安装依赖包

pip install -r requirements.txt

3  数据集下载

  • LibCity中使用的数据集以原子文件的统一数据存储格式存储【后面会有笔记】
  • 假设已经下载好了他的数据

4 运行模型

用于训练和评测一个模型的脚本run_model.py位于项目根目录中,它提供了一系列命令行参数,使用户可以调整运行参数配置

python run_model.py --task traffic_state_pred --model GRU --dataset METR_LA

4.0 命令行显示内容

 首先,记录模块提示模型运行的记录会保存在libcity/log文件夹下的相应文件中,并开始模型训练的流水线。

然后,执行模块会加载原子文件,创建数据集,划分训练集、验证集、测试集,并将划分好的数据集保存在libcity/cache/dataset_cache下。下次在相同参数的数据集上运行模型时,不需要重新进行数据预处理操作。

 

输出模型的结构和参数量、优化器和学习率调整机制

 模型训练

结束训练

4.1 遇到的报错&解决方案 

我一开始报错如下:

Traceback (most recent call last):
  File "run_model.py", line 7, in <module>
    from libcity.pipeline import run_model
  File "/home_nfs/liushuai/Bigscity-LibCity/libcity/pipeline/__init__.py", line 1, in <module>
    from libcity.pipeline.pipeline import run_model, hyper_parameter, objective_function
  File "/home_nfs/liushuai/Bigscity-LibCity/libcity/pipeline/pipeline.py", line 2, in <module>
    from ray import tune
  File "/home_nfs/liushuai/anaconda3/envs/Libcity/lib/python3.8/site-packages/ray/__init__.py", line 63, in <module>
    import ray._raylet  # noqa: E402
  File "python/ray/_raylet.pyx", line 102, in init ray._raylet
  File "/home_nfs/liushuai/anaconda3/envs/Libcity/lib/python3.8/site-packages/ray/exceptions.py", line 7, in <module>
    from ray.core.generated.common_pb2 import RayException, Language, PYTHON
  File "/home_nfs/liushuai/anaconda3/envs/Libcity/lib/python3.8/site-packages/ray/core/generated/common_pb2.py", line 33, in <module>
    _descriptor.EnumValueDescriptor(
  File "/home_nfs/liushuai/anaconda3/envs/Libcity/lib/python3.8/site-packages/google/protobuf/descriptor.py", line 789, in __new__
    _message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
  • 这个错误是由于 protobuf 库版本与 ray 库或代码生成的 .pb2.py 文件不兼容造成的
  • 解决方法就是降级protobuf库
    • pip install protobuf==3.20.0
      

4.2 脚本支持的命令行参数

task

要执行的任务名,包括:

  • traffic_state_pred
  • traj_loc_pred
  • eta
  • map_matching
  • road_representation

默认为traffic_state_pred

model

要执行的模型名。默认为GRU

dataset

要执行的数据集。默认为METR_LA

config_file

用户自定义的配置文件名。默认为None

  • 大多数命令行接受的参数是实验中经常传入的参数,比如batch_size
  • 为了让用户能自如地修改各模块默认参数,本框架允许用户在命令行中传入用户定义配置文件的文件名,然后从该文件中读入参数配置
  • 该文件应满足以下格式要求:

    • 用户定义配置文件应为JSON格式。

    • 该JSON文件应存储一个字典,其中键为参数名,值为应修改的参数值

    • 文件应存放在项目根目录,文件名应由--config_file命令行参数指定。

saved_model是否保存训练好的模型。默认为True
train如果模型已经预训练过了,是否要重新训练模型。默认为True
batch_size训练集和验证集的批次大小
train_rate训练集在整个数据集中所占的比例。(划分的顺序是训练集、验证集、测试集)
eval_rate验证集在整个数据集中所占的比例
learning_rate学习率。默认值因模型而异
max_epoch最大的训练轮数。默认值因模型而异
gpu是否使用GPU。默认为True
gpu_id使用的GPU的ID。默认为0

4.3  使用tensorboard

tensorboard --logdir 'libcity/cache'

我是在服务器上执行的,所以如果本地需要看的话,可以:

ssh -N -f -L localhost:6006:localhost:6006 -p 22 liushuai@172.21.32.121

然后本地浏览器访问地址 http://localhost:6006/,就可以看到可视化的结果

参考内容:快速入门 — Bigscity-LibCity 文档 (bigscity-libcity-docs.readthedocs.io)

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值