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

pytorch练习题目 pytorch_pytorch练习题目


pytorch练习题目 pytorch_CUDA_02

2.CUDA安装

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

nvcc --version set cuda

pytorch练习题目 pytorch_深度学习_03

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

pytorch练习题目 pytorch_深度学习_04

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练习题目 pytorch_pytorch_05


pytorch练习题目 pytorch_CUDA_06

三、PyTorch的基础知识

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

  • Tensor可以是高维的
  • PyTorch运算的基本单元
  • 基础数据定义与运算
  • 在PyTorch中支持GPU运算、自动求导等操作

2)PyTorch的tensor

pytorch练习题目 pytorch_深度学习_07

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.不同数据分布到不同设备中