PyTorch安装+基础知识

PyTorch安装+基础知识

Datawhale202210——PyTorch (0、1、2)

Anaconda+CUDA+PyTorch+Jupyter notebook全套安装+PyTorch入门知识



前言

理解和运用PyTorch是相关从业者和学习者的入门要求和看家本领。为了更好地学习和运用PyTorch,我选择和Datawhale的小伙伴一起并肩前行,那就让我们开始这趟奇妙之旅吧!


一、PyTorch是什么?

官方定义:
1.PyTorch 是一个针对深度学习, 并且使用 GPU 和 CPU 来优化的 tensor library (张量库)。
2.PyTorch 是由 Facebook 开发,基于 Torch 开发,从并不常用的 Lua 语言转为 Python 语言开发的深度学习框架。
因此,惯于使用Python且想要探究深度学习的学习者非常青睐PyTorch,把它送上了最受欢迎的深度学习框架的位置,目前其 Github 也有 59.5k+ 关注。

二、PyTorch的安装(GPU版)

1.Anaconda的安装

官网传送门:https://www.anaconda.com/
1)对照python版本和系统版本选择合适的版本直接下载即可。
2)打开.exe文件,按照提示安装即可,一般无坑。
3)安装成功验证:在cmd中输入以下命令

conda --version
python
在这里插入图片描述
在这里插入图片描述

2.CUDA安装

官网传送门:https://developer.nvidia.com/cuda-toolkit
(官网会优先推荐下载最新版本,但可能PyTorch还未更新至CUDA的最新版<预测版本不对应可能出问题,但还未尝试>,如果想下载历史版本直接搜索CUDA+版本号即可)
1)按需选择,直接安装即可。
(local文件较大不需要后续进一步安装,network下载速度快需要持续联网完成后续下载)
2)按照提示安装,可适当调整安装位置。
(安装细节涉及环境变量等配置不再赘述,详见参考文档)
3)验证安装是否成功,cmd中输入以下命令。

nvcc --version
set cuda
在这里插入图片描述

3.Pytorch安装

官网传送门:https://pytorch.org/
1)明确系统版本、CUDA版本等信息,按需选择。
(关于用conda还是用pip,笔者建议用pip,首先坑少,其次可能更有利于后续使用。conda安装起来极易出问题,导致最后也没有解决下载一半卡死的问题,果断换pip,但是两者的区别还没有理解和真实体验,希望后续可以专门发文说明)
2)打开Anaconda Prompt(anaconda3),输入官网给出的命令。(示例如下,建议自行去官网复制)

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

3)下载提速需要切换镜像源,具体教程参见参考文档。
4)验证是否安装成功,输入以下命令:

python
import torch
在这里插入图片描述

4.jupyter notebook 调用PyTorch

1)jupyter notebook是Anaconda中的应用,可以通过Anaconda Prompt(anaconda3)来打开,输入以下命令即可:

jupyter notebook

但打开后发现,辛辛苦苦安装的PyTorch却无法被jupyter notebook调用,还需要完成以下步骤:
2)输入以下命令安装插件:(注意要先激活你需要的环境)

conda install nb_conda
conda install ipykernel

3)重启jupyter notebook就会发现,多出PyTorch的选项,验证可知能够正常调用。

在这里插入图片描述
在这里插入图片描述

三、PyTorch的基础知识

1.张量
1)基本定义与特点

  • Tensor可以是高维的

  • PyTorch运算的基本单元

  • 基础数据定义与运算

  • 在PyTorch中支持GPU运算、自动求导等操作

2)PyTorch的tensor
在这里插入图片描述

data->数学表示
dtype->数据类型
课强制转换类型,但不建议

3)tensor的相关操作

tensor与numpy、array之间的转化

import numpy as np
g=np.array([[1,2,3],[4,5,6]])
h=torch.tensor(g)
print(h)
i=torch.from_numpy(g)
print(i)
j=h.numpy()
print(j)

查看tensor维度信息

print(k.shape)
print(k.size())

改变tensor形状的神器

print(o.view((3,2)))
print(o.view(-1,2))

tensor的广播机制

p=torch.arange(1,3).view(1,2)
print(p)
q=torch.arange(1,4).view(3,1)
print(q)
print(p+q)

压缩tensor的维度:squeeze

print(o)
r=o.unsqueeze(1)
print(r)
print(r.shape)

2.自动求导
1)Autograd介绍

  • torch.Tensor 是Autograd的核心类。如果设置它的属性 .requires_grad 为 True,那么它将会追踪对于该张量的所有操作。
  • 在 y.backward() 时,如果 y 是标量,则不需要为 backward() 传入任何参数;否则,需要传入一个与 y 同形的Tensor。
  • Tensor 和 Function 互相连接生成了一个无环图 (acyclic graph),它编码了完整的计算历史。
  • 每个张量都有一个.grad_fn属性,该属性引用了创建 Tensor 自身的Function(除非这个张量是用户手动创建的,即这个张量的grad_fn是 None )。

2)梯度

开始反向传播

out.backward()
print(x.grad)
tensor([[3., 3.],
        [3., 3.]])

第二次反向传播

#grad在反向传播过程中是累加的每一次运行反向传播,梯度都会累加之前的梯度,所以一般在反向传播之前需把梯度清零。
out2 = x.sum()
out2.backward()
print(x.grad)

out3 = x.sum()
x.grad.data.zero_()
out3.backward()
print(x.grad)
tensor([[4., 4.],
        [4., 4.]])
tensor([[1., 1.],
        [1., 1.]])

雅可比向量积

x = torch.randn(3, requires_grad=True)
print(x)

y = x * 2
i = 0
while y.data.norm() < 1000:
    y = y * 2
    i = i + 1
print(y)
print(i)
tensor([-0.9332,  1.9616,  0.1739], requires_grad=True)
tensor([-477.7843, 1004.3264,   89.0424], grad_fn=<MulBackward0>)
8

3.并行计算
1)为什么进行并行计算——能计算;算的快;效果好
2)怎么进行并行计算——CUDA
a.网络结构分布到不同设备
b.同一层的任务分布到不同设备
c.不同数据分布到不同设备中

四、资源与参考

1.来自Datawhale的投喂

本课程Datawhale官方教程
在线教程链接:https://datawhalechina.github.io/thorough-pytorch/
Github在线教程:https://github.com/datawhalechina/thorough-pytorch
Gitee在线教程:https://gitee.com/datawhalechina/thorough-pytorch
b站视频:https://www.bilibili.com/video/BV1L44y1472Z(欢迎大家一键三连+关注!)

2.来自官方的投喂

PyTorch的Github传送门:
https://github.com/pytorch/pytorch

3.来自广大网友的投喂

PyTorch详细介绍
https://zhuanlan.zhihu.com/p/66543791
PyTorch的中文教程
https://pytorch.apachecn.org/#/
Anaconda安装详细教程
https://blog.csdn.net/in546/article/details/117400839
CUDA安装详细教程
https://blog.csdn.net/weixin_43848614/article/details/117221384
PyTorch安装太慢处理办法:
https://blog.csdn.net/Guoqi1911/article/details/110356637
切换清华源详细教程:
https://blog.csdn.net/lyj223061/article/details/108639378


总结

1.向Datawhale的小伙伴们致谢,大家非常认真地组织本次组队学习,且目前为止所有安排都妥当合理细致,在大家的帮助下我充满动力。
2.安装环境过程中,本身就会因为系统差异等产生很多的问题,这也是很多同学入门即放弃的原因。在解决问题的过程中要不断求助,求助经验帖、大佬、教学视频等,多一点耐心就会迎来成功。
3.在进行本次PyTorch系统学习前,实际上我已经多次安装过PyTorch,并且在一些教学项目中动手实践过一些深度学习网络。但由于从未弄清楚各软件之间的联系,盲目根据教学帖安装、运行,所以直到这次安装也阻碍重重,更别说对网络本身能有更深入的理解。因此,往后应当理解过程中的细节,不能只是盲目追求结果,相信通过本次学习,可以具备为其他同学解疑答惑的一点点能力。

猜你喜欢

转载自blog.csdn.net/weixin_50967907/article/details/127259554