PyTorch安装+基础知识
Datawhale202210——PyTorch (0、1、2)
Anaconda+CUDA+PyTorch+Jupyter notebook全套安装+PyTorch入门知识
文章目录
- PyTorch安装+基础知识
- Datawhale202210——PyTorch (0、1、2)
- 前言
- 一、PyTorch是什么?
- 二、PyTorch的安装(GPU版)
- 1.Anaconda的安装
- 2.CUDA安装
- 3.Pytorch安装
- 4.jupyter notebook 调用PyTorch
- 三、PyTorch的基础知识
- 四、资源与参考
- 1.来自Datawhale的投喂
- 2.来自官方的投喂
- 3.来自广大网友的投喂
- 总结
前言
理解和运用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.不同数据分布到不同设备中