PyTorch/PyTorch Geometric 使用 MemoryDataset 加快数据读取速度

PyTorch/PyTorch Geometric 使用 MemoryDataset 加快数据读取速度

PyTorch Geometric Library (简称 PyG) 是一个基于 PyTorch 的图神经网络库,地址是:https://github.com/rusty1s/pytorch_geometric。它包含了很多 GNN 相关论文中的方法实现和常用数据集,并且提供了简单易用的接口来生成图,因此对于复现论文来说也是相当方便。用法大多数和 PyTorch 很相近。

在我之前的一个实验中,我发现 PyTorch Geometric 的运行速度很慢,为了提升速度,尝试了许多常用的数据预加载等方法均无效。后来才发现 PyTorch Geometric 提供了 InMemoryDataset 来提前把所有数据一次性加载到内存中。

阅读更多
PyTorch/[PyTorch 学习笔记] 汇总 - 完结撒花

PyTorch/[PyTorch 学习笔记] 汇总 - 完结撒花

PyTorch 学习笔记

GitHub Website

这篇文章是我学习 PyTorch 过程中所记录的学习笔记汇总,包括 25 篇文章,是我学习深度之眼 PyTorch 框架版课程期间所记录的内容。课程地址:https://ai.deepshare.net/detail/p_5df0ad9a09d37_qYqVmt85/6

学习笔记的结构遵循课程的顺序,共分为 8 周,循序渐进,力求通俗易懂

代码

配套代码:https://github.com/zhangxiann/PyTorch_Practice

所有代码均在 PyCharm 中通过测试,建议通过 git 克隆到本地运行。

阅读更多
PyTorch/图神经网络 PyTorch Geometric 入门教程

PyTorch/图神经网络 PyTorch Geometric 入门教程

简介

Graph Neural Networks 简称 GNN,称为图神经网络,是深度学习中近年来一个比较受关注的领域。近年来 GNN 在学术界受到的关注越来越多,与之相关的论文数量呈上升趋势,GNN 通过对信息的传递,转换和聚合实现特征的提取,类似于传统的 CNN,只是 CNN 只能处理规则的输入,如图片等输入的高、宽和通道数都是固定的,而 GNN 可以处理不规则的输入,如点云等。 可查看【GNN】万字长文带你入门 GCN

阅读更多
PyTorch/[PyTorch 学习笔记] PyTorch 常见报错信息
PyTorch/[PyTorch 学习笔记] 8.4 手动实现 RNN
PyTorch/[PyTorch 学习笔记] 8.3 GAN(生成对抗网络)简介

PyTorch/[PyTorch 学习笔记] 8.3 GAN(生成对抗网络)简介

本章代码:

这篇文章主要介绍了生成对抗网络(Generative Adversarial Network),简称 GAN。

GAN 可以看作是一种可以生成特定分布数据的模型。

下面的代码是使用 Generator 来生成人脸图像,Generator 已经训练好保存在 pkl 文件中,只需要加载参数即可。由于模型是在多 GPU 的机器上训练的,因此加载参数后需要使用remove_module()函数来修改state_dict中的key

阅读更多
PyTorch/[PyTorch 学习笔记] 8.2 目标检测简介

PyTorch/[PyTorch 学习笔记] 8.2 目标检测简介

本章代码:

这篇文章主要介绍了目标检测。

目标检测是判断目标在图像中的位置,有两个要素:

  • 分类:分类向量\(P_{0}, P_{1}, P_{2}...\),shape 为\([N, c+1]\)
  • 回归:回归边界框\([x_{1}, x_{2}, y_{1}, y_{2}]\),shape 为\([n, 4]\)

下面代码是加载预训练好的FasterRCNN_ResNet50_fpn,这个模型在是 COCO 模型上进行训练的,有 91 种类别。这里图片不再是BCHW的形状,而是一个list,每个元素是图片。输出也是一个 list,每个元素是一个 dict,每个 dict 包含三个元素:boxes、scores、labels,每个元素都是 list,因为一张图片中可能包含多个目标。接着是绘制框的代码,scores的的某个元素小于某个阈值,则不绘制这个框。

阅读更多
PyTorch/[PyTorch 学习笔记] 8.1 图像分类简述与 ResNet 源码分析
PyTorch/[PyTorch 学习笔记] 7.3 使用 GPU 训练模型

PyTorch/[PyTorch 学习笔记] 7.3 使用 GPU 训练模型

本章代码:

这篇文章主要介绍了 GPU 的使用。

在数据运算时,两个数据进行运算,那么它们必须同时存放在同一个设备,要么同时是 CPU,要么同时是 GPU。而且数据和模型都要在同一个设备上。数据和模型可以使用to()方法从一个设备转移到另一个设备。而数据的to()方法还可以转换数据类型。

  • 从 CPU 到 GPU

    1
    2
    3
    device = torch.device("cuda")
    tensor = tensor.to(device)
    module.to(device)
阅读更多
PyTorch/[PyTorch 学习笔记] 7.2 模型 Finetune

PyTorch/[PyTorch 学习笔记] 7.2 模型 Finetune

本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson7/finetune_resnet18.py

这篇文章主要介绍了模型的 Finetune。

迁移学习:把在 source domain 任务上的学习到的模型应用到 target domain 的任务。

Finetune 就是一种迁移学习的方法。比如做人脸识别,可以把 ImageNet 看作 source domain,人脸数据集看作 target domain。通常来说 source domain 要比 target domain 大得多。可以利用 ImageNet 训练好的网络应用到人脸识别中。

对于一个模型,通常可以分为前面的 feature extractor (卷积层)和后面的 classifier,在 Finetune 时,通常不改变 feature extractor 的权值,也就是冻结卷积层;并且改变最后一个全连接层的输出来适应目标任务,训练后面 classifier 的权值,这就是 Finetune。

阅读更多