t2vec code

文章目录

    • 执行过程
    • preprocess.jl 解释
    • h5 文件结构

执行过程

(base) zzq@server1:~/project/t2vec/preprocessing$ julia porto2h5.jl
Processing 1710660 trips…
100000
200000
300000
400000
500000
600000
700000
800000
900000
1000000
1100000
1200000
1300000
1400000
1500000
1600000
1700000
Incompleted trip: 0.
Saved 1704759 trips.
(base) zzq@server1:~/project/t2vec/preprocessing$ julia preprocess.jl
Please provide the correct hdf5 file /home/xiucheng/Github/t2vec/data/porto.h5
(base) zzq@server1:~/project/t2vec/preprocessing$ julia preprocess.jl
Building spatial region with:
cityname=porto,
minlon=-8.735152,
minlat=40.953673,
maxlon=-8.156309,
maxlat=41.307945,
xstep=100.0,
ystep=100.0,
minfreq=100
Creating paramter file /home/zzq/project/t2vec/data/porto-param-cell100
Processed 100000 trips
Processed 200000 trips
Processed 300000 trips
Processed 400000 trips
Processed 500000 trips
Processed 600000 trips
Processed 700000 trips
Processed 800000 trips
Processed 900000 trips
Processed 1000000 trips
Processed 1100000 trips
Processed 1200000 trips
Processed 1300000 trips
Processed 1400000 trips
Processed 1500000 trips
Processed 1600000 trips
Processed 1700000 trips
Cell count at max_num_hotcells:40000 is 7
Vocabulary size 18866 with cell size 100.0 (meters)
Creating training and validation datasets…
Scaned 200000 trips…
Scaned 300000 trips…
Scaned 400000 trips…
Scaned 500000 trips…
Scaned 600000 trips…
Scaned 700000 trips…
Scaned 900000 trips…
Scaned 1000000 trips…
Saved cell distance into /home/zzq/project/t2vec/data/porto-vocab-dist-cell100.h5

preprocess.jl 解释

这段代码是用于构建和训练一个空间区域的模型,主要包含以下步骤:

  1. 导入必要的Julia包:

    using JSON
    using DataStructures
    using NearestNeighbors
    using Serialization, ArgParse
    include("SpatialRegionTools.jl")
    
  2. 通过ArgParse库解析命令行参数:

    args = let s = ArgParseSettings()@add_arg_table s begin"--datapath"arg_type=Stringdefault="/home/zzq/project/t2vec/data"endparse_args(s; as_symbols=true)
    end
    

    这段代码使用ArgParse库来解析命令行参数。--datapath 是一个可选参数,表示数据的存储路径,默认为 “/home/zzq/project/t2vec/data”。

  3. 读取JSON格式的超参数文件(“…/hyper-parameters.json”):

    param  = JSON.parsefile("../hyper-parameters.json")
    

    这里假设存在一个超参数文件,通过JSON库解析超参数。

  4. 从超参数中提取有关空间区域的信息:

    regionps = param["region"]
    cityname = regionps["cityname"]
    cellsize = regionps["cellsize"]
    

    获取城市名称、单元格大小等信息。

  5. 检查是否存在 HDF5 文件,如果不存在则退出:

    if !isfile("$datapath/$cityname.h5")println("Please provide the correct hdf5 file $datapath/$cityname.h5")exit(1)
    end
    
  6. 使用提取的信息构建一个 SpatialRegion 对象:

    region = SpatialRegion(cityname,regionps["minlon"], regionps["minlat"],regionps["maxlon"], regionps["maxlat"],cellsize, cellsize,regionps["minfreq"], # minfreq40_000, # maxvocab_size10, # k4) # vocab_start
    

    这里创建了一个 SpatialRegion 对象,用于表示一个空间区域,包含了区域的地理信息和一些超参数。

  7. 输出空间区域的信息:

    println("Building spatial region with:cityname=$(region.name),minlon=$(region.minlon),minlat=$(region.minlat),maxlon=$(region.maxlon),maxlat=$(region.maxlat),xstep=$(region.xstep),ystep=$(region.ystep),minfreq=$(region.minfreq)")
    

    这段代码输出构建的空间区域的一些关键信息。

  8. 检查是否存在先前保存的参数文件,如果存在则读取参数文件,否则创建并保存参数文件:

    paramfile = "$datapath/$(region.name)-param-cell$(Int(cellsize))"
    if isfile(paramfile)println("Reading parameter file from $paramfile")region = deserialize(paramfile)
    elseprintln("Creating parameter file $paramfile")num_out_region = makeVocab!(region, "$datapath/$cityname.h5")serialize(paramfile, region)
    end
    

    如果存在参数文件,则从文件中读取参数,否则创建参数并保存到文件中。

  9. 输出词汇表的大小和单元格大小:

    println("Vocabulary size $(region.vocab_size) with cell size $cellsize (meters)")
    

    输出词汇表的大小和单元格大小。

  10. 创建训练和验证数据集:

    println("Creating training and validation datasets...")
    createTrainVal(region, "$datapath/$cityname.h5", datapath, downsamplingDistort, 1_000_000, 10_000)
    

    这里调用 createTrainVal 函数创建训练和验证数据集。

  11. 保存最近邻词汇:

    saveKNearestVocabs(region, datapath)
    

    最后,保存最近邻的词汇。

训练未开始时目录结构

在这里插入图片描述

h5 文件结构

根据你提供的Julia代码,使用h5open函数创建了一个HDF5文件,并将处理后的数据存储到文件中。下面是生成的HDF5文件的组和数据集结构的大致描述:

  1. 组结构:

    • /trips: 存储处理后的行程数据。
    • /timestamps: 存储每个行程的时间戳数据。
  2. 数据集结构:

    • /trips/1: 第一个行程的数据。
    • /timestamps/1: 第一个行程对应的时间戳数据。
    • /trips/2: 第二个行程的数据。
    • /timestamps/2: 第二个行程对应的时间戳数据。
    • 以此类推…
  3. 属性:

    • 文件属性:num 属性存储了总共存储的行程数目。

根据代码中的逻辑,每个行程都被存储为两个数据集:/trips/$num/timestamps/$num。这里的 $num 是行程的编号,从1开始递增。

要注意的是,这里的时间戳数据 /timestamps/$num 是通过生成一个等差数列 collect(0:tripLength-1) * 15.0 得到的,15.0 是一个时间间隔的倍数。这是基于时间戳的假设,具体的时间间隔可能需要根据你的数据集的特点进行调整。

请注意,具体的组织结构可能取决于你的数据和代码的具体实现。你可以使用h5py或其他HDF5文件阅读工具来查看生成的HDF5文件的详细结构。

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

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

相关文章

HiDataPlus 3.3.2-005 搭建(个人的一点心得体会 x86 平台)

HDP 集群搭建 前置安装 yum -y install createrepo yum install -y lrzsz yum install -y wget yum install -y vim修改当前集群机器的主机名 hostnamectl set-hostname XXX​ 这里的 XXX 就是要设置的当前机器的主机名称。主机名称是集群唯一的,一定不要重复&am…

解决“百度网盘启动缓慢”问题

最近在使用百度网盘,双击桌面的《百度网盘》图标,发现有等好几分钟,软件才会启动。百度网盘启动太慢了,后面发现百度网盘,使用dll注入技术,附加到很多不相干的进程里,比如附加explorer进程、附加…

使用阿里云镜像创建一个Spring Boot项目

由于现在的idea在创建项目时已经不支持Java8版本了,如果我们还想用8版本,可以使用阿里云镜像创建。所以得改变原有的地址为:https://start.aliyun.com springboot版本选择2开头的任意版本的。 1.配置6个依赖 2.改变下载依赖地址 下载依赖默认…

强化学习求解TSP(八):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法,用于解决基于奖励的决策问题。它是一种无模型的学习方法,通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策,该函数表示在给定状态下采取某个动作所获…

UE 引擎工具笔记

2023虚幻技术分享会视频 1.2023年虚幻引擎最新功能和技巧 [UFSH2023]2023年虚幻引擎最新功能和技巧 | Chris Murphy Epic Games_哔哩哔哩_bilibili 推荐细看下.总结了UE5的功能大概 2.调试技巧 [UFSH2023]总有一个你不知道的虚幻引擎调试技巧 | 陈拓 Epic Games_哔哩哔哩_…

WPF XAML(一)

一、XAML的含义 问:XAML的含义是什么?为什么WPF中会使用XAML?而不是别的? 答:在XAML是基于XML的格式,XML的优点在于设计目标是具有逻辑性易读而且简单内容也没有被压缩。 其中需要提一下XAML文件在 Visu…

5、MAE:探索视觉预训练模型

目录 1、论文 2、背景与动机 3、回答的问题 4、创新与卖点 5、实现细节 模型框架 具体步骤 简单代码示例 6、一些资料 1、论文 Masked Autoencoders Are Scalable Vision Learnershttps://arxiv.org/pdf/2111.06377.pdf 2、背景与动机 在深度学习和计算机视觉的领域中…

SpringBoot知识02

1、快速生成mapper和service &#xff08;自动生成简单的单表sql&#xff09; 2、springboot配置swagger&#xff08;路径不用加/api&#xff09; &#xff08;1&#xff09;主pom导包&#xff08;子pom要引用&#xff0c;可选依赖&#xff09; <!-- swagger3…

Odrive 学习系列一:vscode 编译Odrive

搭建环境可参考Markerbase教程,很详细了。 简单说一两点: 解压ODrive-fw-v0.5.1.zip: 打开ODrive-fw-v0.5.1文件夹,找到Firmware文件夹,用vscode打开该文件夹: 按照以下内容操作: 编译工程: 打开 中断(terminal),输入 make -j4 回车 进行编译。编译…

Linux之Iptables简易应用

文档形成时期&#xff1a;2009-2024年 和iptables打交道有15年了&#xff0c;经过无数实践后&#xff0c;形成一个简易应用文档。 文档主题是简易应用&#xff0c;所以其原理不详述了。 因软件世界之复杂和个人能力之限&#xff0c;难免疏漏和错误&#xff0c;欢迎指正。 文章目…

互联网金融P2P主业务场景自动化测试

互联网金融P2P行业&#xff0c;近三年来发展迅速&#xff0c;如火如荼。 据不完全统计&#xff0c;全国有3000的企业。 “互联网”企业&#xff0c;几乎每天都会碰到一些奇奇怪怪的bug&#xff0c;作为在互联网企业工作的测试人员&#xff0c;风险和压力都巨大。那么我们如何降…

C#上位机与欧姆龙PLC的通信11----【爆肝】上位机应用开发(Winform版)

1、先上图 前面10讲&#xff0c;让你爽煹了肝&#xff0c;已经进入最后收尾阶段&#xff0c;这节来个常规应用&#xff0c;让前面的技能直接飞上天&#xff0c;我们要做的界面软件是这样的&#xff0c;虽然没有潘金莲漂亮&#xff0c;但也是爆抱&#xff1a; 2、如何爆&#x…