【深度学习】pytorch 与 PyG 安装(pip安装)

【深度学习】pytorch 与 PyG 安装(pip安装)

  • 一、PyTorch安装和配置
    • (一)、安装 CUDA
    • (二)、安装torch、torchvision、torchaudio三个组件
      • (1)下载镜像文件
      • (2)创建一个新的虚拟环境
      • (3)加载.whl文件并测试安装是否成功
  • 二、PyG 安装
    • (一)安装 torch_scatter 、torch_sparse 、torch_cluster 、torch_spline_conv
      • 测试:
    • 一般方式(电脑已安装好pytorch)

一、PyTorch安装和配置

深度神经网络是一种目前被广泛使用的工具,可以用于图像识别、分类,物体检测,机器翻译等等。深度学习(DeepLearning)是一种学习神经网络各种参数的方法。因此,我们将要介绍的深度学习,指的是构建神经网络结构,并且运用各种深度学习算法训练网络参数,进而解决各种任务。本文从PyTorch环境配置开始。PyTorch是一种Python接口的深度学习框架,使用灵活,学习方便。还有其他主流的深度学习框架,例如Caffe,TensorFlow,CNTK等等,各有千秋。笔者认为,初期学习还是选择一种入门,不要期望全都学会。须知,发力集中才能深入挖掘。乱花渐欲迷人眼,选择适合自己的,从一而终,相信会对科研大有裨益!

(一)、安装 CUDA

一、查看 cuda 版本

在命令行中输入 nvcc --version

nvcc --version

在这里插入图片描述

注:电脑环境此前安装好了 cuda,可参考下述教程安装cuda

https://blog.csdn.net/weixin_43848614/article/details/117221384

(二)、安装torch、torchvision、torchaudio三个组件

以python3.8为例,当然其他版本也适用。

经验:

  1. 安装cuda10.2(又写作cu102)版本对应的三个组件,是比较稳妥的

  2. 国内源容易在安装时自动替换为cpu版本,因此从pytorch官网下载较稳妥

  3. 建议使用pip安装,conda安装很可能会安装为cpu版本

(1)下载镜像文件

点击网址,下载相关镜像文件:https://download.pytorch.org/whl/cu102

在这里插入图片描述
首先选择torch,ctrl + F 搜索 [cu102-cp38-cp38-win] 这里cu102 是我们下载的 CUDA 10.2 版本,cp38-cp38 是说我们的 Python 版本是 3.8。如果要安装python3.9那将cp3.8改为cp3.9即可。

whl文件是一个压缩包,包含了所需的所有安装文件和元数据。它其中的文件是编译过得到的二进制文件,而不是C++ 源码。如果是后者,显然系统还需要 C++ 的编译器才能运行文件。

在这里插入图片描述单击即可下载,这里torch版本为1.10.0,我们要去官网查找该版本对应的torchvision 和torchaudio版本。ctrl + F 搜索 [pip install torch==1.10.0] 并且对应cuda为10.2。

在这里插入图片描述
因此torchvision需要安装0.11.0版本,torchaudio需要安装0.10.0版本。

在之前的网址中选择torchaudio,ctrl + F 搜索 [cu102-cp38-cp38-win],选择版本为0.10.0的。高亮处单击下载。

在这里插入图片描述
同理在之前的网址中选择torchvision,ctrl + F 搜索 [cu102-cp38-cp38-win],选择版本为0.11.0的。高亮处单击下载。

在这里插入图片描述

下载了3个.whl文件,建议都安装到同一个文件夹下,比如D:\pytorch_whl

下载完成后,将三个镜像文件放入一个文件夹,推荐创建一个新的虚拟环境安装。

(2)创建一个新的虚拟环境

pip 方式的创建虚拟环境见下方链接内容

https://blog.csdn.net/weixin_43848614/article/details/131906596
在这里插入图片描述

在这里插入图片描述

本人习惯使用pip方式,如果安装 Anaconda 的话,使用conda的命令创建虚拟环境。

Anaconda 操作:

默认大家都安装好Anaconda了。在开始菜单中搜索anaconda Prompt,点击进入。

创建python虚拟环境:

conda create -n your_env_name python=x.x

这里your_env_name表示你即将安装的虚拟环境的名字,x.x表示python版本。我这里设置名称为gym_gpu,安装的python版本为3.8,于是输入 conda create -n gym_gpu python=3.8 后回车:

conda activate your_env_name

(3)加载.whl文件并测试安装是否成功

pip install F:\pytorch_whl\torch-1.10.0+cu102-cp38-cp38-win_amd64.whl
pip install F:\pytorch_whl\torchaudio-0.10.0+cu102-cp38-cp38-win_amd64.whl
pip install F:\pytorch_whl\torchvision-0.11.0+cu102-cp38-cp38-win_amd64.whl

在这里插入图片描述

安装过程耐心等待,中间会从安装某些比较大的第三方库。安装结束后需要测试是否成功安装gpu版本的pytorch。

#接着检查cuda,cudnn版本
#首先进入python的交互模式
#python交互模式,直接输入python即可进入#接着输入下述代码
python
import torch #导入pytorch库
print(torch.cuda.is_available()) #查看是否有cuda
print(torch.backends.cudnn.is_available()) #查看是否有cudnn
print(torch.cuda_version) #打印cuda的版本
print(torch.backends.cudnn.version()) #打印cudnn的版本
#结果如下图

在这里插入图片描述

二、PyG 安装

PyG 全称是PyTorch-Geometric,是一个PyTorch基础上的一个库,专门用于图形式的数据,可以加速图学习算法的计算过程,比如稀疏化的图等。

(一)安装 torch_scatter 、torch_sparse 、torch_cluster 、torch_spline_conv

接上文内容,在安装 pytorch 后安装 PyG

进入下述网址后,下载 torch_scatter 、torch_sparse 、torch_cluster 、torch_spline_conv 四个包:

https://data.pyg.org/whl/torch-1.10.0%2Bcu102.html

在这里插入图片描述

下载后将四个包放置在同一个文件夹。

在这里插入图片描述

可以使用绝对路径安装,也可以cd 安装包的位置后,使用pip安装(注:)

cd /d D:\XXX\XX\  # 安装包所存的位置
pip install torch_scatter-2.0.5-cp38-cp38-win_amd64.whl
pip install torch_sparse-0.6.7-cp38-cp38-win_amd64.whl
pip install torch_cluster-1.5.7-cp38-cp38-win_amd64.whl
pip install torch_spline_conv-1.2.0-cp38-cp38-win_amd64.whl

在这里插入图片描述
最后选择好版本PyG版本直接安装即可。

pip install torch-geometric

测试:

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch_geometric.nn import MessagePassing
from torch_geometric.utils import softmax, add_remaining_self_loopsclass GATConv(MessagePassing):def __init__(self, in_feats, out_feats, alpha, drop_prob=0.0):super().__init__(aggr="add")self.drop_prob = drop_probself.lin = nn.Linear(in_feats, out_feats, bias=False)self.a = nn.Parameter(torch.zeros(size=(2*out_feats, 1)))self.leakrelu = nn.LeakyReLU(alpha)nn.init.xavier_uniform_(self.a)def forward(self, x, edge_index):edge_index, _ = add_remaining_self_loops(edge_index)# 计算 Whh = self.lin(x)# 启动消息传播h_prime = self.propagate(edge_index, x=h)return h_primedef message(self, x_i, x_j, edge_index_i):# 计算a(Wh_i || wh_j)e = torch.matmul((torch.cat([x_i, x_j], dim=-1)), self.a)e = self.leakrelu(e)alpha = softmax(e, edge_index_i)alpha = F.dropout(alpha, self.drop_prob, self.training)return x_j * alphaif __name__ == "__main__":conv = GATConv(in_feats=3, out_feats=3, alpha=0.2)x = torch.rand(4, 3)edge_index = torch.tensor([[0, 1, 1, 2, 0, 2, 0, 3], [1, 0, 2, 1, 2, 0, 3, 0]], dtype=torch.long)x = conv(x, edge_index)print(x.shape)

在这里插入图片描述

一般方式(电脑已安装好pytorch)

如果你的电脑此前已经安装好了 pytorch,使用下述步骤进行安装

  1. 首先检查 Pytorch 的版本:
python -c "import torch; print(torch.__version__)"
  1. 检查一下 cuda 版本
python -c "import torch; print(torch.version.cuda)"
  1. 然后按照你的 Pytorch 版本和 cuda 版本,下载相应的轮子(whl文件)
pip install pyg-lib torch-scatter torch-sparse -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html

把 ${TORCH} 换成 pytorch 的主版本号.次版本号.0。不要管补丁版本!比如你的 pytorch 版本是 1.13.1,这里只需要填 1.13.0 . 其实你可以先访问这个网址,看看它是不是存在。

软件包的命名方式:主版本号.次版本号.补丁版本号。

把 ${CUDA} 换成 cuda 版本或者 cpu。我在这里遇到了另一个坑。我是在 amazon SageMaker Studio Lab里运行的 jupyter lab,开的是 CPU 实例,因此GPU是不可用的(可以用 torch.cuda.is_available()查看)。

命令示例:

pip install pyg-lib torch-scatter torch-sparse -f https://data.pyg.org/whl/torch-1.13.0+cpu.html

安装完毕后,再安装 torch-geometric 即可。

pip install torch-geometric

参考:

https://blog.csdn.net/zzlyw/article/details/78674543

https://zhuanlan.zhihu.com/p/612181449

https://repo.anaconda.com/archive/

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

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

相关文章

【网络技术】【Kali Linux】Nmap嗅探(二)多设备扫描

上期实验博文:(一)简单扫描 一、实验环境 本次实验进行Nmap多设备扫描,实验使用 Kali Linux 虚拟机(扫描端)、Ubuntu 22.04虚拟机(被扫描端1)、Ubuntu 18.04虚拟机(被扫…

【力扣】快乐数,哈希集合 + 快慢指针 + 数学

快乐数原题地址 方法一:哈希集合 定义函数 getNext(n) ,返回 n 的所有位的平方和。一直执行 ngetNext(n) ,最终只有 2 种可能: n 停留在 1 。无限循环且不为 1 。 证明:情况 1 是存在的,如力扣的示例一…

嵌入式学习之Linux入门篇笔记——15,Linux编写第一个自己的命令

配套视频学习链接:http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 1.什么是命令? 命令就是可执行程序。 比如 ls -a…

C#静态数组删除数组元素不改变数组长度 vs 动态数组删除数组元素改变数组长度

目录 一、使用的方法 1.对静态数组删除指定长度并不改变数长度的方法 (1)静态数组 (2)对静态数组删除元素不得改变其长度 2.对动态数组删除指定长度并改变数长度的方法 (1)动态数组 (2&a…

【大模型上下文长度扩展】MedGPT:解决遗忘 + 永久记忆 + 无限上下文

MedGPT:解决遗忘 永久记忆 无限上下文 问题:如何提升语言模型在长对话中的记忆和处理能力?子问题1:有限上下文窗口的限制子问题2:复杂文档处理的挑战子问题3:长期记忆的维护子问题4:即时信息检…

javaEE - 20( 18000字 Tomcat 和 HTTP 协议入门 -1)

一: HTTP 协议 1.1. HTTP 是什么 HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议. HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议. 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经支持了. HTT…

美赛结束后,还可以转学术论文发表!

美赛论文转学术论文 写在前面学术论文发表的意义论文发表指导 写在前面 2024年美赛已经顺利结束了,美赛虽然画上了句号,但大家的科研竞赛之路才刚刚开始。 大家都在赛事中完成了一份具有发表基础的文章,想要这篇文章价值最大化,…

2.8作业

程序代码&#xff1a; CCgcc EXEhello OBJS$(patsubst %.c,%.o,$(wildcard *.c)) CFLAGS-c -oall:$(EXE)$(EXE):$(OBJS)$(CC) $^ -o $%.o:%.c$(CC) $(CFLAGS) $ $^.PHONY:cleanclean:rm $(OBJS) $(EXE) 程序代码&#xff1a; #include<stdio.h> #include<string.h&…

机器学习--K-近邻算法常见的几种距离算法详解

文章目录 距离度量1 欧式距离(Euclidean Distance)2 曼哈顿距离(Manhattan Distance)3 切比雪夫距离 (Chebyshev Distance)4 闵可夫斯基距离(Minkowski Distance)5 标准化欧氏距离 (Standardized EuclideanDistance)6 余弦距离(Cosine Distance)7 汉明距离(Hamming Distance)【…

MySQL篇----第七篇

系列文章目录 文章目录 系列文章目录前言一、水平分区二、分库分表之后,id 主键如何处理三、存储过程(特定功能的 SQL 语句集)前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你…

从零开始手写mmo游戏从框架到爆炸(七)— 消息封装

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 上一篇&#xff0c;我们初步把消息handler 注册到了服务中&#xff0c;在进行后续工作之前我们需要再做一些准备工作。 第一&#xff1a;把之前自己管理的bean放到spring中…

c++设计模式之装饰器模式

作用 为现有类增加功能 案例说明 class Car { public:virtual void show()0; };class Bmw:public Car { public:void show(){cout<<"宝马汽车>>"<<endl;} };class Audi:public Car { public:void show(){cout<<"奥迪汽车>>&q…

三、设计模式相关理论总结

一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)&#xff0c;指以类或对象作为基础组织单元&#xff0c;遵循封装、继承、多态以及抽象等特性&#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性&#xff0c;只是前人总结的套路规范&…

嵌入式学习之Linux入门篇笔记——10,Linux连接档概念

配套视频学习链接&#xff1a;http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 目录 1.Linux 下的连接档种类 2.什么是 inode&#xff1f; 3.什…

7、7 个适合初学者的项目,让您开始使用 ChatGPT

7 个适合初学者的项目,让您开始使用 ChatGPT 在当今世界释放人工智能的力量。 在技术以前所未有的速度发展的时代,人工智能?—?或朋友🤓的人工智能脱颖而出,成为最具变革性的力量之一。 从自动化日常任务到预测复杂模式,人工智能正在重塑行业并重新定义可能性。 当我…

Unity2D 学习笔记 0.Unity需要记住的常用知识

Unity2D 学习笔记 0.Unity需要记住的常用知识 前言调整Project SettingTilemap相关&#xff08;创建地图块&#xff09;C#脚本相关程序运行函数private void Awake()void Start()void Update() Collider2D碰撞检测private void OnTriggerStay2D(Collider2D player)private void…

【Algorithms 4】算法(第4版)学习笔记 06 - 2.3 快速排序

文章目录 前言参考目录学习笔记1&#xff1a;基本算法1.1&#xff1a;快速排序 demo 演示1.2&#xff1a;快速排序切分代码实现1.3&#xff1a;实现细节1.4&#xff1a;案例分析1.4.1&#xff1a;最佳案例1.4.2&#xff1a;最坏案例1.4.3&#xff1a;平均案例分析1.5&#xff1…

【MySQL】学习和总结DCL的权限控制

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-Bl9kYeLf8GfpdQgL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

消息队列MQ 介绍

&#x1f47d;System.out.println(“&#x1f44b;&#x1f3fc;嗨&#xff0c;大家好&#xff0c;我是代码不会敲的小符&#xff0c;双非大四&#xff0c;Java实习中…”); &#x1f4da;System.out.println(“&#x1f388;如果文章中有错误的地方&#xff0c;恳请大家指正&a…

Renitialized existing Git repositoy in D:/libai/project/gitab-cicd-test/.git/

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…