【深入浅出Pytorch|Datawhale组队学习笔记(一)——PyTorch的安装和基础知识】

目录

第一章 PyTorch的简介与安装

第二章 PyTorch基础知识

1 tensor基础操作

1.1 创建tensor

1.2 数据结构转换

1.3 tensor索引

1.4 tensor的维度

1.5 tensor运算

 1.6 tensor的广播机制

2 自动求导

3 并行计算

3.1 why?  

3.2 how?-CUDA

3.3 常见并行方法


第一章 PyTorch的简介与安装

PyTorch是Facebook人工智能研究小组开发的,广泛应用于工业领域和研究,在Caffe2中有应用。

本次是在Anacaonda中进行了PyTorch的安装:

1.登录PyTorch官网(PyTorch),选择与计算机匹配的版本,结合是否有显卡选择CUDA版本或CPU版本,找到安装命令行。

2.为了避免现有环境中包的版本与PyTorch冲突,先使用Anaconda Prompt创建了新的虚拟环境:

conda create -n data_analysis_env python==3.8.3

(删除虚拟环境命令:conda remove -n data_analysis_env --all)

激活新环境:

conda activate data_analysis_env

(退出虚拟环境命令:conda deactivate)

3.将PyTorch官网中找到的安装命令行复制粘贴至Anaconda,如想使用清华园、豆瓣源下载,可将末尾的 -c pytorch删除,并在anaconda中配置镜像地址。

conda install pytorch torchvision torchaudio cpuonly -c pytorch

第一次安装时想使用清华源,删除了‘-c pytorch’,结果报错“Solving environment: failed with initial frozen solve. Retrying with flexible solve”,后来直接使用官网路径,不删除‘-c pytorch’,反而成功了,速度也不慢。

这一步没有问题就安装完成啦~撒花~

第二章 PyTorch基础知识

本章主要包括三个内容:tensor的python基础操作、自动求导和并行计算。

1 tensor基础操作

1.1 创建tensor

# 创建tensor--指定数据类型
torch.tensor(1,dtype=torch.float)
torch.tensor(1,dtype=torch.long)
torch.tensor(1,dtype=torch.int8)

# 创建tensor--指定大小
torch.FloatTensor(2,3)
torch.IntTensor(2)
torch.rand(2,3) # 取值为0-1间
torch.ones(2,3) # 取值全部为1
torch.zeros(2,3) # 取值全部为0
torch.arange(0,10,2) # 取值为 0,2,4,6,8

1.2 数据结构转换

# list-->tensor
torch.IntTensor([1,2,3])

# numpy.array-->tensor
a = np.array([[1,2,3],[4,5,6]])
torch.tensor(a)
torch.from_numpy(a)

# tensor-->numpy.array
b = torch.tensor(a)
b.numpy()

1.3 tensor索引

# tensor索引
c = torch.rand(2,3)
c[:,0] #查看第0列
c[0,:] #查看第0行

1.4 tensor的维度

c = torch.rand(2,3)

# 查看tensor维度
c.size()
c.shape

# 改变tensor形状
c.view(3,2)
c.view(-1,2) # 列为2,行自动计算是多少

# 改变tensor维度
# unsqueeze:在指定位置增加1维
d = c.unsqueeze(1)
c.shape #(2,3)
d.shape #(2,1,3) 在位置1处增加1维
# squeeze:在指定位置减少1维,只有当该位置维度为1时,squeeze生效
d.squeeze(0) #无效,c的维度为(2,1,3),有且仅有索引为1的位置可以降维
d.squeeze(1) #d.shape由(2,1,3)降维至(2,3)

1.5 tensor运算

# tensor运算
c = torch.rand(2,3)
torch.add(c,1)

 1.6 tensor的广播机制

e = torch.arange(1,3).view(1,2)
f = torch.arange(1,4).view(3,1)
e
f
e+f
tensor([[1, 2]])
tensor([[1],
        [2],
        [3]])
tensor([[2, 3],
        [3, 4],
        [4, 5]])

2 自动求导

通过反向传播法进行求导,导数遵循复合函数求导的链式法则

#requires_grad=True设置为True,才能支持反向传播
x1 = torch.tensor(1.0,requires_grad=True)
x2 = torch.tensor(2.0,requires_grad=True)
y = x1 + 2*x2
x1.grad.data #此时报错,x1的倒数无法求得
# 此时无法求导,反向传播后才能求
y = x1 + 2*x2
y.backward()
# 导数是会累积的,重复运行相同命令,grad会增加,所以每次计算前需要清除当前导数
x1.grad.data
x2.grad.data

3 并行计算

3.1 why?  

能计算——显存占用  
算的快——计算速度  
效果好——大batch提升训练效果 

3.2 how?-CUDA

GPU厂商NVIDIA提供的GPU计算框架,GPU本身的编程基于CUDA语言实现
在PyTorch中,CUDA主要指使用GPU(而非CPU)进行计算

3.3 常见并行方法

网络结构分布到不同设备中
同一层的任务分布到不同设备中
不同数据分布到不同设备中(Data Parallelism,常用)

cuDNN是用于深度神经网络的加速库,基于CUDA完成深度学习的加速

相关学习资源:

*课程github地址:https://github.com/datawhalechina/thorough-pytorch 
*课程gitee地址:https://gitee.com/datawhalechina/thorough-pytorch 
*B站视频:https://www.bilibili.com/video/BV1L44y1472Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值