PyG的Planetoid无法直接下载Cora等数据集的3个解决方式

本文介绍了当DNS污染导致无法使用torch_geometric的Planetoid类下载Cora等数据集时的三种解决方案:修改hosts文件、从GitHub或gitee拉取数据、直接修改PyG源码。详细步骤包括如何从gitee下载所需文件、如何修改hosts以直接访问raw.githubusercontent.com等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

诸神缄默不语-个人优快云博文目录

本文仅考虑DNS污染情况下无法用torch_geometric.Planetoid类下载Cora等数据集的情况。其他使用GitHub仓库下载数据的解决方式类似,在此文中不再赘述。
三个解决问题的方式方式简介:

  1. 修改raw.githubcontent.com在hosts中对应的IP地址,使本地电脑可以直接登上该网站
  2. 直接将原始数据下载到本地:手动从GitHub或gitee下载数据,放到对应文件目录位置;或者用Python拉数据下来
  3. 修改torch_geometric源代码

以下是对这些解决方式的详细介绍(仅以Cora为例,其他数据集类似,不再赘述)

如果顺利的话,应该只需要执行类似这样的代码即可在对应根目录位置下载数据集:

from torch_geometric.datasets import Planetoid
dataset = Planetoid(root='./tmp/cora', name='Cora')

Planetoid文档:https://pytorch-geometric.readthedocs.io/en/latest/modules/datasets.html#torch_geometric.datasets.Planetoid

planetoid源代码中可以看到,这个类的大致逻辑就是从GitHub下载数据→处理数据。出现无法下载的情况时可能是由于Planetoid从raw.githubcontent.com这个域名下载数据,而这个域名在电脑上被DNS污染。
本文仅考虑这种情况造成的无法下载情况。如果您发现您的机子没有这种问题,那么您可能无法通过本文的手段解决对应的问题。

测试是否是DNS污染的简单方式:ping一下raw.github.com
(仅适用于Windows系统,Linux等其他系统类似)使用 Win + R,出现如下弹窗:
在这里插入图片描述
在输入框中输入 cmd,点击确定,出现shell窗口,输入 ping raw.githubcontent.com,回车运行。
如果ping包能接收到,说明不是DNS污染的问题,一般可以通过多试几次的方式来解决问题,如果还解决不了那我也不知道了;如果ping包接收不到,说明就是DNS污染的问题,见下文。

解决方式一:修改hosts文件

可以通过多个地点Ping服务器,网站测速 - 站长工具这个网站获取raw.githubcontent.com对应的IP地址,选一个响应时间较短而且在大陆的响应IP就行。然后修改hosts,就可以直接下载。
(此处找IP地址还可以用The Best IP Address, Email and Networking Tools - IPAddress.com这个网站,但是这个网站有的时候会突然上不了,所以作为备选提供)

2022.12.13能用的IP地址:

173.208.96.46

直接挂代理一般也可以解决问题。
我之所以没这么干是因为我用远程服务器跑的,我没法改DNS也没法挂代理……

修改hosts的方法:

  1. 找到hosts文件的位置,Windows一般为 C:\Windows\System32\drivers\etc
  2. 打开hosts文件(用记事本之类的文本编辑器都行),在最后加一行,写你刚刚挑好的IP地址,然后按 tab 键,然后写 raw.githubusercontent.com
  3. 保存文件。如果不能保存就把内容复制到另一个同名文本文件中,复制过来,直接覆盖。
  4. 在前文提及的cmd窗口中运行 ipconfig /flushdns

解决方式二:从GitHub或gitee拉数据

GitHub项目是https://github.com/kimiyoung/planetoid,gitee项目是https://gitee.com/jiajiewu/planetoid。gitee的话在国内会更快点,所以推荐用gitee的。

具体需要的数据是这些:
在这里插入图片描述
通过以下任一方法下载到需要的数据后,将其放到根目录下Cora/raw文件夹下,然后再运行dataset = Planetoid(root, name='Cora')。如无报错并显示如下输出则成功。

Processing…
Done!
Cora()

方法1:直接下载整个项目

可以直接把整个项目git clone下来,然后直接从里面把对应的文件复制过去。
git clone的方法可参考我之前写的博文:VSCode上的Git使用手记(持续更新ing…)

也可以直接从项目的网页下载项目的zip压缩包,跟git clone地址在差不多的位置。

方法2:直接下载所需的单个文件

1. 直接从网页下载

gitee可以直接在网页上下载单个文件。直接修改网址也可以下载单个文件,具体网址见下面用Python下载数据部分。

要额外注意:PubMed里面的allx文件可能因为文件太大,所以如果直接用Gitee远程拉的话会要求登录,如果没有登录就会重定向到网页,导致无法用这种方式下载数据。
解决方法,我暂时也没有解决方法……就这一个文件就从本地登录了下载下来然后上传到服务器就算了。

GitHub通过插件或者修改网址也可以下载单个文件,但是如果你能通过这种方式下载文件,你的DNS应该没有被污染。

2. 用Python下载

直接把这个网址输到浏览器里面也能下载就是了……
我使用的是这个方式。主要原因是我在服务器上跑的项目,直接把所有事都在Python代码里解决就会比较方便。
base_url参数:
推荐使用gitee的:https://gitee.com/jiajiewu/planetoid/raw/master/data/ind.cora.
github的话可以二选一:https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora. https://raw.githubusercontent.com/kimiyoung/planetoid/master/data/ind.cora.(但问题在于如果你能从这两个网址拉数据……那你……就不应该有不能下载的问题)
注意,这里要通过raw下载数据,如果直接用网页下载数据(如https://gitee.com/jiajiewu/planetoid/blob/master/data/ind.cora.allx)的话就会下载成网页……我一开始就下载成了网页……这肯定是会报错的。要下数据文件。

可以尝试使用PyG的download_url()方法下载数据(这是源代码中使用的方式)。其文档地址
我使用的是requests。别的方式应该也行,就各种直接下载网页文件的方式应该都行。我这里给一个代码:

import requests

names = ['x', 'tx', 'allx', 'y', 'ty', 'ally', 'graph', 'test.index']
for name in names:
	file_url=base_url+name
    r=requests.get(file_url)
    with open('./tmp/cora/Cora/raw/ind.cora.'+name, 'wb') as f:
        f.write(r.content)

3. 用wget下载

其实我推荐用wget下载,因为有输出。太简单我就不写了,这还不会百度怎么上的学。网址还是上面那个网址。
如果稍稍对电脑有一点多的了解,还可以用Python写个批处理的bat或sh文件。

解决方式三:直接修改PyG源码

把planetoid.py里面第48行的 url = 'https://github.com/kimiyoung/planetoid/raw/master/data' 改成 url='https://gitee.com/jiajiewu/planetoid/raw/master/data'
逻辑上就跟第二种解决方式里面从gitee拉数据一样。

参考资料

  1. 【PyG学习入门】二:入门时遇到的问题
  2. Cora数据集不能下载
  3. 用torch_geometric无法下载Cora数据怎么办?
  4. torch_geometric下载数据集Cora时报错
  5. 修改 Hosts 解决 Github 访问失败马克 - 知乎
<think>嗯,用户想查找PyTorch Geometric中Planetoid数据集Cora来源,并如何获取它。我需要先回忆一下相关的信息。根据提供的引用,特别是引用[2]和[5],Planetoid类是用来加载Cora数据集的。用户可能在处理图神经网络时需要这个数据集,所以需要了解它的原始出处和如何正确下载。 首先,Cora数据集的来源。我记得Cora是一个常用的引文网络数据集,节点代表论文,边是引用关系,特征和标签涉及论文的分类。原始来源可能来自某个研究论文,比如可能是在Planetoid论文中提出的?需要确认引用中的信息。引用[4]提到Planetoid类适合快速加载标准数据集,而手动下载可能用于自定义处理,但用户需要来源,所以应该指向原始论文或者官方说明。 然后,获取数据集的方法。根据引用[2]和[5],使用PyTorch Geometric的Planetoid类可以自动下载,但有时会因为网络问题失败。所以需要给出代码示例,并建议可能的解决方法,比如手动下载。引用[5]提到下载失败的情况,所以可能需要指导用户如何手动下载并放置到正确目录下。 另外,用户可能需要知道数据集的存储路径,比如root参数设置的位置。引用[5]中的root参数是"./Cora",所以需要提醒用户正确设置路径,确保数据集能被正确加载。同时,引用[4]对比了自动加载和手动下载的适用场景,用户可能想知道这两种方法的具体步骤。 最后,关于数据集的预处理,比如NormalizeFeatures的使用,如引用[2]中的transform参数,可能需要提及,但用户的问题主要是来源和获取方法,所以这部分可以简要带过。 总结一下,回答需要分两部分:来源和获取方法。来源部分引用Planetoid论文,获取方法包括自动下载和手动下载的步骤,以及常见问题的解决办法,如网络问题导致下载失败时的应对策略。同时,确保代码示例正确,路径设置正确,并引用提供的参考文献。</think>### 如何获取PyTorch Geometric中的Planetoid &#39;Cora&#39;数据集? #### 1. **数据集来源** Cora数据集是图神经网络(GNN)中常用的标准引文网络数据集,包含2708篇科学论文的节点,每篇论文通过词袋特征表示,并分为7个类别。其原始来源与Planetoid论文(*Revisiting Semi-Supervised Learning with Graph Embeddings*)相关[^4][^5]。 #### 2. **通过PyTorch Geometric直接加载** PyTorch Geometric(PyG)内置了`Planetoid`类,可自动下载并预处理Cora数据集: ```python from torch_geometric.datasets import Planetoid from torch_geometric.transforms import NormalizeFeatures # 自动下载数据集(默认路径为&#39;data/Planetoid&#39;) dataset = Planetoid(root=&#39;data/Planetoid&#39;, name=&#39;Cora&#39;, transform=NormalizeFeatures()) data = dataset[0] # 获取数据对象 ``` - **参数说明**: - `root`: 数据集存储路径(若未下载,会自动创建目录并下载)。 - `name`: 数据集名称(此处为`&#39;Cora&#39;`)。 - `transform`: 可选预处理操作(如特征归一化)[^2]。 #### 3. **手动下载(针对自动下载失败的情况)** 若因网络问题导致自动下载失败,可手动操作: 1. **下载地址**: 从官方链接或镜像站点获取Cora数据集文件(通常包含`cora.cites`和`cora.content`),例如通过PyG文档提供的资源[^3]。 2. **文件放置**: 将文件放入`root`目录下的`raw`子目录(如`data/Planetoid/raw/`)后重新运行加载代码。 #### 4. **常见问题** - **数据集路径冲突**:确保`root`路径与代码中一致,避免重复下载。 - **版本兼容性**:PyG的`Planetoid`类已集成数据加载和预处理,推荐直接使用以兼容后续模型训练。 --- ###
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

诸神缄默不语

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

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

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

打赏作者

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

抵扣说明:

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

余额充值