libcity 笔记:基本使用方法

介绍 — 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中使用的数据集以原子文件的统一数据存储格式存储【后面会有笔记】
  • 假设已经下载好了他的数据
    • Standard Dataset in LibCity - Google 云端硬盘
    • METR_LA 文件夹放在Bigscity-LibCity/raw_data/目录底下

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_modelFile "/home_nfs/liushuai/Bigscity-LibCity/libcity/pipeline/__init__.py", line 1, in <module>from libcity.pipeline.pipeline import run_model, hyper_parameter, objective_functionFile "/home_nfs/liushuai/Bigscity-LibCity/libcity/pipeline/pipeline.py", line 2, in <module>from ray import tuneFile "/home_nfs/liushuai/anaconda3/envs/Libcity/lib/python3.8/site-packages/ray/__init__.py", line 63, in <module>import ray._raylet  # noqa: E402File "python/ray/_raylet.pyx", line 102, in init ray._rayletFile "/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, PYTHONFile "/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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Baidu Comate智能编码助手:大学生的代码编写助手

Baidu Comate智能编码助手&#xff1a;大学生的代码编写助手 前言一、关于Baidu Comate智能编码助手1.1 Baidu Comate智能编码助手简介1.2 产品功能 二、安装使用&#xff08;本文以pycharm为例&#xff09;三、我的百度Comate之旅3.1智能推荐3.1.1 单行推荐3.1.2 多行推荐 3.2…

pg数据库学习知识要点分析-1

知识要点1 对象标识OID 在PostgreSQL内部&#xff0c;所有的数据库对象都通过相应的对象标识符&#xff08;object identifier&#xff0c;oid&#xff09;进行管理&#xff0c;这些标识符是无符号的4字节整型。数据库对象与相应oid 之间的关系存储在对应的系统目录中&#xf…

AI论文速读 |2024[IJCAI]TrajCL: 稳健轨迹表示:通过因果学习隔离环境混杂因素

题目&#xff1a; Towards Robust Trajectory Representations: Isolating Environmental Confounders with Causal Learning 作者&#xff1a;Kang Luo, Yuanshao Zhu, Wei Chen, Kun Wang(王琨), Zhengyang Zhou(周正阳), Sijie Ruan(阮思捷), Yuxuan Liang(梁宇轩) 机构&a…

SAP-PP-MM特殊库存的生产发料

如果有个物料是在特殊库存E&#xff0c;那么往生产订单发料是如何确定哪一个组件消耗这个特殊库存呢&#xff1f; 在生产订单中有哪些标记确定特殊库存&#xff1f;确定销售订单和行项目&#xff1f; 通过上图可以看到特殊库存标记1&#xff0c;也就是单独客户库存。 其他的特…

洗地机什么品牌好?洗地机怎么选?618洗地机选购指南

随着科技的飞速发展&#xff0c;洗地机以其高效的清洁能力、稳定的性能和用户友好的设计而闻名&#xff0c;不仅可以高效吸尘、拖地&#xff0c;还不用手动洗滚布&#xff0c;已经逐渐成为现代家庭不可或缺的清洁助手。然而&#xff0c;在众多品牌和型号中&#xff0c;如何选择…

C++语言·string类

1. 为什么有string类 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数(strcpy,strcat)&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP(Object Oriented Programming面向对…

【深耕 Python】Quantum Computing 量子计算机(3)重要数学公式一览

写在前面 往期量子计算机博客&#xff1a; 【深耕 Python】Quantum Computing 量子计算机&#xff08;1&#xff09;图像绘制基础 【深耕 Python】Quantum Computing 量子计算机&#xff08;2&#xff09;绘制电子运动平面波 正文 偏微分&#xff1a; 交换关系&#xff…

GtkButton事件处理、事件的捕获、鼠标事件等

事件 事件处理 GTK 所提供的工具库与其应用程序都是基于事件触发机制来管理&#xff0c; 所有的应用程序都是基于事件驱动。 如果没有事件发生&#xff0c; 应用程序将处于等待状态&#xff0c; 不会执行任何操作&#xff0c; 一旦事件发生&#xff0c; 将根据不同的事件做出…

Offer必备算法37_记忆化搜索_五道力扣题详解(由易到难)

目录 记忆化搜索概念和使用场景 ①力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 ②力扣62. 不同路径 解析代码1_暴搜递归&#xff08;超时&#xff09; 解析代码2_记忆化搜索 解析代码3_动态规划 ③力扣300. 最…

Java12基础(Package包 作用域 String字符串)

目录 一. Package包 import关键字 命名规范 二. 作用域 三. String字符串(进阶) 创建方式: 内存情况: 1. 字符串的搜索 2. trim()方法 3. 替换字符串 4. 分割字符串 5. 拼接字符串 6. 格式化字符串 7. 类型转换 8. 转换为char[ ]字符数组 9. 字符编码 10. Str…

Navicat导入sql报错[Err] 1046 - No database selected

Navicat导入sql报错[Err] 1046 - No database selected ​ 今天系统重装了&#xff0c;就很完蛋。所有东西都重新下载安装。向Navicat导入sql的时候导入失败&#xff1a; 报错[Err] 1046 - No database selected。我很疑惑地又导了几次。当然又全都失败. 错误造成原因&#x…

ardupilot的固定翼飞行模式

飞行模式 APM所有的飞行模式都在对应的机型的文件夹下的mode.h里面有定义,针对于不同的模型,功能函数在基类中Mode中都是以纯虚函数实现了, 然后在继承的子类中重新实现它,以实现多态。 takeoff模式 参见网址在 ArduPlane 4.0 及更高版本中,自动起飞本身也是一种模式(…

Redis持久化策略——Java全栈知识(17)

Redis持久化 1、Redis 持久化的三种方式 1、RDB&#xff1a; 以快照的方式将此刻 Redis 中的数据以二进制的文件形式保存在磁盘中。 RDB 的优点是&#xff1a;快照文件小、恢复速度快&#xff0c;适合做备份和灾难恢复。 RDB 的缺点是&#xff1a;定期更新可能会丢数据&#…

20K薪资要什么水平?来看看25岁测试工程师的面试过程…_测试工程师薪资20k(2)

既有适合小白学习的零基础资料&#xff0c;也有适合3年以上经验的小伙伴深入学习提升的进阶课程&#xff0c;涵盖了95%以上软件测试知识点&#xff0c;真正体系化&#xff01; 由于文件比较多&#xff0c;这里只是将部分目录截图出来&#xff0c;全套包含大厂面经、学习笔记、…

阿里云最新重磅发布:通义千问2.5模型更强、5到10行代码搭建企业RAG应用、代码助手通义灵码推企业版

速览&#xff1a; 5月9日阿里云举办“阿里云AI智领者峰会”&#xff0c;会上发布一系列重磅产品&#xff0c;通义千问模型性能更强&#xff0c;通义灵码、阿里云百炼平台、通义千问App等均有重要信息发布。 会上阿里云发布正式发布通义千问2.5&#xff0c;中文性能全面赶超GPT-…

我们的小程序每天早上都白屏,真相是。。。

大家好&#xff0c;我是程序员鱼皮。最近我们在内测一款面试刷题小程序&#xff0c;没错&#xff0c;就是之前倒下的 “面试鸭”&#xff01; 在我们的内测交流群中&#xff0c;每天早上都会有同学反馈&#xff1a;打开小程序空白&#xff0c;没任何内容且登录不上。 然后过了…

PT:fix_eco_power用法

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 ICC2中没有直接修leakage/power的命令,需要在scenario status中设置leakage_power和dynamic_power的开关,结合place_opt/clock_opt.flow.enable_power true来使用。 innovus中专门的命令可以去优…

单单单单单の刁队列

在数据结构的学习中&#xff0c;队列是一种常用的线性数据结构&#xff0c;它遵循先进先出&#xff08;FIFO&#xff09;的原则。而单调队列是队列的一种变体&#xff0c;它在特定条件下保证了队列中的元素具有某种单调性质&#xff0c;例如单调递增或单调递减。单调队列在处理…

游戏辅助 -- 三种分析角色坐标方法(CE、xdbg、龙龙遍历工具)

所用工具下载地址&#xff1a; https://pan.quark.cn/s/d54e7cdc55e6 在上次课程中&#xff0c;我们成功获取了人物对象的基址&#xff1a;[[[0xd75db8]1C]28]&#xff0c;而人物血量的地址则是基址再加上偏移量278。 接下来&#xff0c;我们需要执行以下步骤来进一步操作&a…

新版security demo(二)前端

写这篇博客&#xff0c;刚好换了台电脑&#xff0c;那就借着这个demo复习下VUE环境的搭建。 一、前端项目搭建 1、安装node 官网下载安装即可。 2、安装脚手架 npm install -g vue-cli 使用脚手架搭建一个demo前端项目 vue init webpack 项目名称 3、安装依赖 这里安装…