torch_geometric获取datasets(解决连不了外网的问题)

news2024/11/19 13:34:29

文章目录

  • 1. torch_geometric.data介绍
  • 2. 使用Planetoid下载Cora数据集的代码
  • 3. 解决程序运行的机器无法联网的问题
    • 3.1 尝试运行,查看数据集下载链接
    • 3.2 放置到对应文件夹下
    • 3.3 重新运行之前写的程序
  • 4. 一点感慨

1. torch_geometric.data介绍

torch_geometric,简称pyg,是基于pytorch实现的图神经网络库。本文暂时不讲图神经网络的搭建,先介绍一下如何基于这个库获取官方已经集成的数据集。
torch_geometric.datasets这个子包下包含这些类,每个类可以用于下载一个或者几个相关的数据集:

datasets.AMiner(                       datasets.PascalPF(                     datasets.gemsec
datasets.AQSOL(                        datasets.PascalVOCKeypoints(           datasets.geometry
datasets.Actor(                        datasets.Planetoid(                    datasets.github
datasets.AirfRANS(                     datasets.PolBlogs(                     datasets.gnn_benchmark_dataset
datasets.Airports(                     datasets.QM7b(                         datasets.graph_generator
datasets.Amazon(                       datasets.QM9(                          datasets.heterophilous_graph_dataset
datasets.AmazonProducts(               datasets.RandomPartitionGraphDataset(  datasets.hgb_dataset
datasets.AttributedGraphDataset(       datasets.Reddit(                       datasets.hydro_net
datasets.BA2MotifDataset(              datasets.Reddit2(                      datasets.icews
datasets.BAMultiShapesDataset(         datasets.RelLinkPredDataset(           datasets.imdb
datasets.BAShapes(                     datasets.S3DIS(                        datasets.infection_dataset
datasets.BitcoinOTC(                   datasets.SHREC2016(                    datasets.jodie
datasets.CitationFull(                 datasets.SNAPDataset(                  datasets.karate
datasets.CoMA(                         datasets.ShapeNet(                     datasets.last_fm
datasets.Coauthor(                     datasets.StochasticBlockModelDataset(  datasets.lastfm_asia
datasets.CoraFull(                     datasets.SuiteSparseMatrixCollection(  datasets.linkx_dataset
datasets.DBLP(                         datasets.TOSCA(                        datasets.lrgb
datasets.DBP15K(                       datasets.TUDataset(                    datasets.malnet_tiny
datasets.DGraphFin(                    datasets.Taobao(                       datasets.md17
datasets.DeezerEurope(                 datasets.Twitch(                       datasets.mixhop_synthetic_dataset
datasets.DynamicFAUST(                 datasets.UPFD(                         datasets.mnist_superpixels
datasets.EllipticBitcoinDataset(       datasets.WILLOWObjectClass(            datasets.modelnet
datasets.EmailEUCore(                  datasets.WebKB(                        datasets.molecule_net
datasets.Entities(                     datasets.WikiCS(                       datasets.motif_generator
datasets.ExplainerDataset(             datasets.WikipediaNetwork(             datasets.movie_lens
datasets.FAUST(                        datasets.WordNet18(                    datasets.nell
datasets.FB15k_237(                    datasets.WordNet18RR(                  datasets.ogb_mag
datasets.FacebookPagePage(             datasets.Yelp(                         datasets.omdb
datasets.FakeDataset(                  datasets.ZINC(                         datasets.pascal
datasets.FakeHeteroDataset(            datasets.actor                         datasets.pascal_pf
datasets.Flickr(                       datasets.airfrans                      datasets.pcpnet_dataset
datasets.GDELT(                        datasets.airports                      datasets.planetoid
datasets.GEDDataset(                   datasets.amazon                        datasets.polblogs
datasets.GNNBenchmarkDataset(          datasets.amazon_products               datasets.ppi
datasets.GemsecDeezer(                 datasets.aminer                        datasets.qm7
datasets.GeometricShapes(              datasets.aqsol                         datasets.qm9
datasets.GitHub(                       datasets.attributed_graph_dataset      datasets.reddit
datasets.HGBDataset(                   datasets.ba2motif_dataset              datasets.reddit2
datasets.HeterophilousGraphDataset(    datasets.ba_multi_shapes               datasets.rel_link_pred_dataset
datasets.HydroNet(                     datasets.ba_shapes                     datasets.s3dis
datasets.ICEWS18(                      datasets.bitcoin_otc                   datasets.sbm_dataset
datasets.IMDB(                         datasets.citation_full                 datasets.shapenet
datasets.InfectionDataset(             datasets.classes                       datasets.shrec2016
datasets.JODIEDataset(                 datasets.coauthor                      datasets.snap_dataset
datasets.KarateClub(                   datasets.coma                          datasets.suite_sparse
datasets.LINKXDataset(                 datasets.dblp                          datasets.taobao
datasets.LRGBDataset(                  datasets.dbp15k                        datasets.torch_geometric
datasets.LastFM(                       datasets.deezer_europe                 datasets.tosca
datasets.LastFMAsia(                   datasets.dgraph                        datasets.tu_dataset
datasets.MD17(                         datasets.dynamic_faust                 datasets.twitch
datasets.MNISTSuperpixels(             datasets.elliptic                      datasets.upfd
datasets.MalNetTiny(                   datasets.email_eu_core                 datasets.utils
datasets.MixHopSyntheticDataset(       datasets.entities                      datasets.webkb
datasets.ModelNet(                     datasets.explainer_dataset             datasets.wikics
datasets.MoleculeNet(                  datasets.facebook                      datasets.wikipedia_network
datasets.MovieLens(                    datasets.fake                          datasets.willow_object_class
datasets.NELL(                         datasets.faust                         datasets.word_net
datasets.OGB_MAG(                      datasets.flickr                        datasets.yelp
datasets.OMDB(                         datasets.freebase                      datasets.zinc
datasets.PCPNetDataset(                datasets.gdelt                         
datasets.PPI(                          datasets.ged_dataset  

2. 使用Planetoid下载Cora数据集的代码

这里以常用的datasets.Planetoid为例,介绍如何下载和使用数据集:

from torch_geometric.datasets import Planetoid
dataset = Planetoid(root='./testdata/Cora',name='Cora')
data = dataset._data
print(data.x) # 节点表示
print(data.edge_index)
print(data.y)

这里下载了Cora数据集,这是一个表示论文引用网络的数据集,每个节点为1433维,是一个用one-hot表示词袋的向量。通过对Planetoid类说明的阅读,可以看到这个类还可以用于下载Cite Seer和PubMed两个数据集,使用方法相同。

class Planetoid(InMemoryDataset):
    r"""The citation network datasets :obj:`"Cora"`, :obj:`"CiteSeer"` and
    :obj:`"PubMed"` from the `"Revisiting Semi-Supervised Learning with Graph
    Embeddings" <https://arxiv.org/abs/1603.08861>`_ paper.
    Nodes represent documents and edges represent citation links.
    Training, validation and test splits are given by binary masks.

    Args:
        root (str): Root directory where the dataset should be saved.
        name (str): The name of the dataset (:obj:`"Cora"`, :obj:`"CiteSeer"`,
            :obj:`"PubMed"`).
    ...
    """

3. 解决程序运行的机器无法联网的问题

在上面的代码中,我们传入了两个参数,第一个参数root表示数据集要下载的位置,第二个参数表示数据集名称(如果该类只能下载一个数据集,一般没有name参数)。这里国内用户常常遇到的问题是,程序会自动从github等网站上下载数据集,但我们的机器常常因为网络问题而无法连接,这个时候我们可以手动把数据集下载,然后传到服务器的对应目录。
具体做法分为三步:

3.1 尝试运行,查看数据集下载链接

运行程序会看到这样一行输出:
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.x
那我们就来看一看https://github.com/kimiyoung/planetoid/raw/master/data/下面有哪些内容吧。
在这里插入图片描述
可以看到这里包含了Cora、PubMed、CiteSeer相关的数据,我们可以先把Cora相关的文件下载下来。

3.2 放置到对应文件夹下

实际上,torch_geometric.datasets中的类会先检测指定位置是否有所需文件,如果没有才会去下载,如果有则直接处理使用。我们第一步下载的文件,必须放到对应文件夹下,Planetoid类才能找到数据,不再从网络上下载。
观察一下Planetoid源码,raw_dir和raw_file_names就是决定Planetoid类对象寻找对象的位置:

	@property
    def raw_dir(self) -> str:
        if self.split == 'geom-gcn':
            return osp.join(self.root, self.name, 'geom-gcn', 'raw')
        return osp.join(self.root, self.name, 'raw')

    @property
    def processed_dir(self) -> str:
        if self.split == 'geom-gcn':
            return osp.join(self.root, self.name, 'geom-gcn', 'processed')
        return osp.join(self.root, self.name, 'processed')

    @property
    def raw_file_names(self) -> List[str]:
        names = ['x', 'tx', 'allx', 'y', 'ty', 'ally', 'graph', 'test.index']
        return [f'ind.{self.name.lower()}.{name}' for name in names]
    

可以看到raw_dir是self.root、self.name和'raw'拼起来的路径,我们上面传入的root是'./testdata/Cora',name是'Cora',所以raw_dir就是'./testdata/Cora/Cora/raw'
raw_file_names返回值包含正则表达式,容易看出要找的就是:'ind.cora.x''ind.cora.tx''ind.cora.allx''ind.cora.y''ind.cora.ty''ind.cora.ally''ind.cora.graph''ind.cora.test.index'这几个文件。看一眼上一步的文件列表,正好都有,我们把这些下载好的文件放在'./testdata/Cora/Cora/raw'这个目录下即可。
在这里插入图片描述

3.3 重新运行之前写的程序

程序会检测到数据已经在所需目录下,跳过下载步骤,直接开始处理数据,成功的话,我们会看到:

$ python planetoid.py 
Processing...
Done!

这里的Processing我们不用管具体过程,大体上就是从数据集繁杂的文件中读取数据并处理成我们最终需要的格式。最终输出的格式为torch_geometric.data.Data类型,包含x(节点特征)、edge_index(稀疏矩阵)、y(节点标签)等信息。这个类型已经可以直接装入dataloader处理成batch进行深度学习。
处理之后的数据保存在3.2我们看到的processed_dir中,在本文中也就是'./testdata/Cora/Cora/processed'。如果程序发现该目录下有处理之后的文件,再次运行也会跳过Processing,不再重复处理。

4. 一点感慨

torch_geometric.datasets真的方便,基本集成了常见所有的图数据集,不需要手动下载处理,直接到位!

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

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

相关文章

进货商模式玩法解析:当老板、亲自进货、自己赚差价?

如今很多人都看到互联网的发展前景&#xff0c;有了创业的想法&#xff0c;但是资金、技术、市场等问题给他们带来了瓶颈。进货商模式的出现&#xff0c;为这些&#xff08;文章编辑ycy6221&#xff09;有创业想法&#xff0c;有梦想的人打破了这些限制&#xff0c;而且还可以实…

HTTP协议演进:为什么说HTTP/1.1的时代已经过去了

前言 欢迎来到今天的每日一题&#xff0c;每日一提。昨天聊到了&#xff0c;HTTP 是什么。有哪些组成部分。并且最后提到了 HTTP 的一些缺点&#xff0c;比如&#xff1a;性能较低&#xff0c;容易导致网络拥塞和延迟&#xff0c;不支持服务器推送等等。设计协议的大佬们&#…

ChatGPT实现安全漏洞检查

安全漏洞检查 几乎每一项新技术的出现&#xff0c;都会首先被运用在安全领域&#xff0c;ChatGPT 也不例外。在 ChatGPT 出现的第一时间&#xff0c;利用 ChatGPT 编写钓鱼邮件&#xff0c;进行社会工程学攻击&#xff0c;辅助分析代码漏洞等等就成为热门话题。其实技术只是工…

快速上手Vite 配置指南

&#x1f482; 个人网站:【紫陌】【笔记分享网】 &#x1f485; 想寻找共同学习交流、共同成长的伙伴&#xff0c;请点击【前端学习交流群】 文章最后有作者l联系方式&#xff08;备注进群&#xff09; 1.认识vite 什么是vite呢&#xff1f; 官方的定位&#xff1a;下一代前端…

《水经注地图服务》数据源说明

&#xff08;本文首发于“水经注GIS”公号&#xff0c;关注公号免费领取地图数据&#xff09; 《水经注地图服务》&#xff08;WeServer&#xff09;是一款可快速发布全国乃至全球海量卫星影像的地图发布服务产品&#xff0c;该产品完全遵循OGC相关协议标准&#xff0c;是一个…

老板给情人转166万,妻子起诉后追回,网友:这是被白嫖三年

作为一个已婚男人&#xff0c;戚某在婚姻关系中背离了对妻子的忠诚&#xff0c;与小自己14岁的女员工小汪发展出不正当的男女关系。而小汪&#xff0c;在明知对方已婚的情况下&#xff0c;仍然选择继续纠缠&#xff0c;最终付出了惨痛的代价。 据了解&#xff0c;戚某在上海经营…

会议签到二维码制作教程

纸质签到表、人工逐一核对等传统的会议签到方式&#xff0c;存在着耗时耗力、容易出错、不环保等种种弊端。 可以制作一个包含签到表单的签到二维码&#xff0c;参会人员使用微信扫码签到&#xff0c;自动授权填写手机号、定位等信息&#xff0c;管理人员在小程序以及电脑端实…

【团购-自己实现代理 Objective-C语言】

一、我们上节课,实现了数据加载,下面是不是有个加载更多啊, 1.我们先把这个“加载更多”给大家做一下, 这个加载更多,注意看,因为这个加载更多,是显示在UITableView的最底部的, 它会随着UITableView一起滚动吧, 证明,它是在UITableView的tableFooterView里面显示的…

Linux系统中tar.gz与rpm结尾的文件在安装程序时究竟有什么不同?

tar.gz tar.gz就是一个压缩包&#xff01; 使用的时候需要使用tar命令配上一些参数来进行解压。 关于tar的使用&#xff0c;大家可以参考这篇博客&#xff0c;这位大佬写的很详细。 Linux tar命令详解 在解压完后&#xff0c;这就是一个独立的文件&#xff0c;里面包含着关…

第十五章_Redis与MySQL数据双写一致性工程落地案例

复习面试题 采用双检加锁策略 多个线程同时去查询数据库的这条数据&#xff0c;那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它。 其他的线程走到这一步拿不到锁就等着&#xff0c;等第一个线程查询到了数据&#xff0c;然后做缓存。 后面的线程进来发现已经…

Redis内幕揭秘:探索Redis基础知识及应用场景,挖掘出高效的缓存技术

Redis 是一个开源的内存数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。以下是 Redis 的发展史&#xff1a; 2009 年&#xff1a;Salvatore Sanfilippo 开始编写 Redis。2010 年&#xff1a;Redis 发布了 1.0 版本。这个版本包含了许多常用的数据结构&…

在陌生人社交场景 挖呀挖呀挖……

在陌生人社交场景 挖呀挖呀挖&#xff0c; 找可靠的大品牌&#xff08;网易&#xff09;&#xff0c;享最优惠的价~ &#x1f604; 对于“深挖”娱乐社交领域需求的开发者来说&#xff0c;陌生人社交是毋庸置疑最受青睐的场景。尤其是对渴望交流、敢于表达自我的年轻人来说&…

10-HTML-表单标签

标签描述<form>定义供用户输入的 HTML 表单。<input>定义输入控件。<textarea>定义多行的文本输入控件。<button>定义按钮。<select>定义选择列表&#xff08;下拉列表&#xff09;。<optgroup>定义选择列表中相关选项的组合。<option&…

【Rust日报】2023-05-10 llm - 使用Rust在CPU上运行大模型

llm - 使用Rust在CPU上运行大模型 这是一套工具。目前支持这些模型&#xff1a; GPT-2GPT-JLLaMA: LLaMA, Alpaca, Vicuna, Koala, GPT4All v1, GPT4-X, WizardGPT-NeoX: GPT-NeoX, StableLM, Dolly v2 (partial, not the same tensor names?)BLOOM: BLOOMZ https://github.co…

多优先级(笔记)

目录 支持多优先级的方法通用方法优化方法1、修改任务控制块2、修改xTaskCerateStactic()修改 prvInitialiseNewTask() 函数prvAddTaskToReadyList()初始化任务列表prvAddTaskToReadyList()vTaskStartScheduler()vTaskDelay()vTaskSwitchContext()xTaskIncrementTick() 实验实验…

如何成就一个伟大的公司?

任何事物都不及“伟大”那样简单&#xff0c;事实上&#xff0c;能够“简单”便是伟大。最优秀的模式&#xff0c;往往是最简单的东西。 那么&#xff0c;如今作为一名创业者&#xff0c;要如何才能更好的发展自己的公司&#xff0c;把带领的团队打造成为一个伟大的公司呢&…

MySQL基础(二十八)索引优化与查询优化

都有哪些维度可以进行数据库调优?简言之: 索引失效、没有充分利用到索引——索引建立关联查询太多JOIN (设计缺陷或不得已的需求)——SQL优化服务器调优及各个参数设置(缓冲、线程数等)———调整my.cnf。数据过多――分库分表 关于数据库调优的知识点非常分散。不同的DBMS&…

基于Vue3 + ts + echarts(版本5.X)实现中国地图下钻、地图打点、地图热力图功能

写在前面&#xff1a; 实现效果图 1.比较重要的部分用红字标出 2.安装echats: npm install echarts --save 3.由于echarts5版本的已经没有自带地图数据了&#xff0c;所以地图数据需要到专门的GEO数据网站中下载。这里提供一个阿里的下载地址&#xff1a;DataV.GeoAtl…

云原生环境下的安全实践:保护应用程序和数据的关键策略

文章目录 云原生环境下的安全实践&#xff1a;保护应用程序和数据的关键策略一.安全措施和实践1. 身份和访问管理&#xff1a;2. 容器安全&#xff1a;3. 网络安全&#xff1a;4. 日志和监控&#xff1a;5. 持续集成和持续交付&#xff08;CI/CD&#xff09;安全&#xff1a;6.…

【学习笔记-myabtis】使用mybtis对接pgsql的postgis插件,获取地理字段Geometry信息

使用mybtis对接pgsql的postgis插件&#xff0c;获取地理字段geometry信息 参考资料&#xff1a; Mybatis 自定义TypeHandler - 邓维-java - 博客园 1、如何使用typehandler ​ 相信大家用Mybatis这个框架至少一年以上了吧&#xff0c;有没有思考过这样一个问题&#xff1a;数据…