1 pytorch介绍
1 END-TO-END MACHINE LEARNING FRAMEWORK(端到端的机器学习框架)
上述这样命名就是因为深度学习只是机器学习的一个分支
2 pytorch的优点:简单易用、分布式训练、服务器部署方便、移动端部署方便;
3 PyTorch 是基于以下两个目的而打造的python科学计算框架:
无缝替换NumPy,并且通过利用GPU的算力来实现神经网络的加速。
通过自动微分机制,来让神经网络的实现变得更加容易。
4 参考网站:
https://github.com/pytorch/pytorch
https://pytorch.apachecn.org/#/docs/1.7/README
https://github.com/pytorch/examples
5 深度学习案例直观理解
http://playground.tensorflow.org
2 pytorch的安装
Python版本要求必须是64位的;CPU版本或者GPU版本任选一个版本安装即可;GPU版本的安装要求必须是NVIDIA显卡,并且安装好对应的驱动。
-1. 使用anaconda安装Python环境,建议python版本:3.8/3.9/3.10
-2. 建议首先安装CPU版本,然后有条件的情况下,用anaconda创建一个虚拟环境,在虚拟环境中安装GPU版本
2.1 CPU版本安装
https://pytorch.org/get-started/previous-versions/
进入此网站,可以看到很多安装命令
1 conda安装
如果使用conda安装,把conda的安装源切换到国内的源,怎么修改,如下
为 conda 添加国内镜像源
conda config --add channels
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
修改源之后,可以在上述网站中找到想要安装的版本,也可以参考我的版本
安装命令:(conda版本)
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -c pytorch
2 无conda安装
安装命令:
pip install torch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -i http://mirrors.aliyun.com/pypi/simple/
(切记,无论是哪儿种安装,请先关闭vpn进行安装)
2.2 GPU版本安装
在上述网站,提供的只有conda的GPU安装
1 检查当前机器是否有nvidia的GPU
打开任务管理器里面的性能,找到下面GPU 显示NVIDIA的GPU就是有GPU
2 检查nvidia的GPU版本驱动安装是否成功
在anconda命令行执行 nvidia-smi 得到如下图片就是成功的
如果执行上面命令报错或者看不到上面图片信息,就是驱动不对
3 修改conda国内源
如果已经修改可忽略
为 conda 添加国内镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
4 安装GPU版本命令
可以用anaconda创建一个虚拟环境,在虚拟环境中安装GPU版本
查看当前存在的所有conda环境 conda env list
创建虚拟环境 conda create -n pytorch_gpu python=3.8(这是我自己的,你可以修改名字还有python版本)
切换虚拟环境 conda activate pytorch_gpu(后面跟的是你创建的的虚拟环境的名字)
切换到虚拟环境后使用网站里的你想安装的版本进行安装,我的是1.10.1
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
上述安装可能比较慢。
还有因为在国内,安装GPU版本有时候会出现问题,出现问题了就重试,万能大法,哈哈
切记(安装的时候关闭vpn)
如果安装成功后,进入conda命令行,输入python进入命令行,然后输入import torch导入pytorch,导入后再输入torch.cuda.is_available(),如果提示True则表示成功
3 pytorch简单API
API文档:
torch的基本API
torch — PyTorch 2.1 documentation
torch的封装的深度学习算子API
torch.nn — PyTorch 2.1 documentation
torch的深度学习算子以函数形式的使用展示
torch.nn.functional — PyTorch 2.1 documentation
torch模型优化器相关的API
torch.optim — PyTorch 2.1 documentation
简单的使用API如下代码
import torch
import numpy as np
def t1():
# 创建tensor对象方法
v1 = torch.rand(2, 3, 4) # 在0到1之间的浮点数取值填充
print(v1.shape) # torch.Size([2, 3, 4])
py_v2 = [[1.0, 1.32], [2.3, 3.2], [5.2, 324.2]]
v2 = torch.tensor(py_v2)
print(v2.shape) # torch.Size([3, 2])
py_v2[0][1] = 100
print(py_v2)
print(v2) # 不变, 不与列表共享内存, 和原来没有关系
np_v3 = np.random.randint(10, size=(2, 3)) # 随机取10以内的数字
v3 = torch.from_numpy(np_v3)
print(v3.shape) # torch.Size([2, 3])
np_v3[0][1] = 100
v3[1][1] = -100
print(v3)
# tensor和numpy都会改变, pytorch目的是替代numpy的, 底层就是numpy, 区别是支持GPU
print(np_v3) # 创建的tensor对象和入参numpy对象共用一个内存地址
def t2():
# tensor转换为numpy
v1 = torch.rand(2, 3)
print(v1)
np_v1 = v1.numpy() # v1必须在cpu上, v1不涉及到梯度的计算
print(np_v1)
v2 = torch.rand(2, 3)
print(v2)
np_v2 = v2.detach().cpu().numpy() # detach梯度截断, cpu就是如果是GPU,就把对象数据copy到cpu上,cpu则不变
print(np_v2)
v3 = torch.rand(1)[0] # 一个标量tensor
print(v3)
print(v3.shape) # torch.Size([])
np_v3 = v3.detach().cpu().numpy() # detach梯度截断, cpu就是如果是GPU,就把对象数据copy到cpu上,cpu则不变
print(np_v3)
print(v3.item()) # 仅支持是一个标量的tensor, 是一个普通的python浮点数类型
if __name__ == '__main__':
t2()