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

在遭遇PyG使用时因网络问题无法下载Planetoid数据集的情况下,可以通过按Ctrl键点击Planetoid跳转到源代码,在url中替换为从gitee镜像地址下载,例如:url=https://gitee.com/jiajiewu/planetoid/raw/master/data。
摘要由CSDN通过智能技术生成

问题描述:

在使用PyG的时候,通常会涉及到一些公共数据集的下载,由于网络问题,导致无法下载出现以下问题:
在这里插入图片描述
尝试了很多的方法都没有成功(主要是个人比较菜!)。但是皇天不负有心人,在尝试无数方法之后,终于成功!


解决方法:

我们在编辑器中找到 P l a n e t o i d \color{red}{Planetoid} Planetoid语句:
在这里插入图片描述
我们按住 C t r l \color{red}{Ctrl} Ctrl键后鼠标左击 P l a n e t o i d \color{red}{Planetoid} Planetoid就会直接跳转到一个叫 p l a n e t o i d . p y \color{red}{planetoid.py} planetoid.py的文件,此时我们会看见下图:
在这里插入图片描述
我们使用:

https://gitee.com/jiajiewu/planetoid/raw/master/data

来代替 u r l \color{red}{url} url里面的内容,此时 u r l \color{red}{url} url的内容为:

url='https://gitee.com/jiajiewu/planetoid/raw/master/data'

PyTorch Geometric (PyG)库中,使用DGL或PyTorch的分布式数据并行(DDP,Data Parallelism)来处理大规模图数据集Cora,通常涉及以下几个步骤: 1. **安装依赖**: 首先确保已安装`torch`, `dgl`, `torch_geometric`, 和 `torch_distributed`等必要的库。如果还未安装,可以使用以下命令: ``` pip install torch dgl torch_geometric torch-distributed ``` 2. **导入所需的模块**: ```python import torch from torch_geometric.data import Dataset, DataLoader from torch_geometric.nn import GCNConv from torch.utils.data.distributed import DistributedSampler ``` 3. **加载Cora数据集**: 使用`torch_geometric.datasets.Cora`加载数据,注意这里的数据会被转换成分布式数据集: ```python dataset = Cora() train_dataset = dataset[split] # split通常为'train' ``` 4. **创建DistributedSampler**: ```python sampler = DistributedSampler(train_dataset) dataloader = DataLoader(train_dataset, batch_size, shuffle=False, num_workers=num_workers, sampler=sampler) ``` 5. **初始化模型和优化器**: 在每个进程上初始化模型,并创建一个支持分布式的优化器: ```python model = GCNConv(dataset.num_features, dataset.num_classes).cuda() optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) ``` 6. **同步过程**: 在训练过程中,需要在前向传播之前和之后调用`model.module()`来更新权重平均,因为`DistributedDataParallel`会自动进行平均: ```python for data in dataloader: data = data.to(device) out = model(data.x, data.edge_index) loss.backward() optimizer.step() optimizer.zero_grad() # 这里使用model.module().zero_grad()代替optimizer.zero_grad() ``` 7. **启用分布式训练**: 创建一个`DistributedDataParallel`实例,并将模型放置到正确的设备(通常是GPU): ```python if torch.cuda.device_count() > 1: model = nn.DataParallel(model) model = model.to(device) ``` 8. **开始训练循环**: 现在你可以设置主循环,通过`sampler`来处理分布式数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值