文章目录
一、PyTorch 简介
二、PyTorch 软件框架
1. Anaconda 下载
2. Anaconda 安装
3. Anaconda Navigator 打不开问题(不适用所有)
4. PyTorch 环境创建
5. PyTorch 下载
6. Jupyter 中配置 PyTorch
三、PyTorch 基本使用方法
四、tensor 的几种形状
1. Scalar(标量)
2. Vector(向量)
3. Matrix(矩阵)
五、PyTorch 的 autograd 机制
1. autograd 机制
2. 举例说明
3. 一个简单的线性回归模型
本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052
一、PyTorch 简介
PyTorch 是一个基于 Torch 的 Python 开源机器学习库,用于自然语言处理等应用程序。它主要由 Facebook 的人工智能小组开发,不仅能够实现强大的 GPU 加速,同时还支持动态神经网络,这一点是现在很多主流框架如 TensorFlow 都不支持的。
PyTorch 提供了两个高级功能:
(1) 具有强大的 GPU 加速的张量计算(如 Numpy 库等)。
(2) 包含自动求导系统的深度神经网络。
TensorFlow 和 Caffe 都是命令式的编程语言,而且是静态的,首先必须构建一个神经网络,然后一次又一次使用相同的结构,如果想要改变网络的结构,就必须从头开始。但是对于 PyTorch,通过反向求导技术,可以零延迟地任意改变神经网络的行为,而且实现速度快。
这一灵活性是 PyTorch 对比 TensorFlow 的最大优势。除此以外,PyTorch 的代码对比 TensorFlow 而言,更加简洁直观,底层代码也更容易看懂,这对于使用它的人来说理解底层肯定是一件令人高兴的事。
所以,总结一下 PyTorch 的优点:
(1) 支持 GPU。
(2) 灵活,支持动态神经网络。
(3) 底层代码易于理解。
(4) 命令式体验。
(4) 自定义扩展。
当然,现今任何一个深度学习框架都有其缺点,PyTorch 也不例外,对比 TensorFlow,其全面性处于劣势,目前 PyTorch 还不支持快速傅里叶、沿维翻转张量和检查无穷与非数值张量;针对移动端、嵌入式部署以及高性能服务器端的部署其性能表现有待提升;其次因为这个框架较新,使得他的社区没有那么强大,在文档方面其大多数没有文档。
二、PyTorch 软件框架
1. Anaconda 下载
- 访问 Anaconda 官网,点击页面中的 Download,这个直接是 Windows 版本。
如果是其他版本的,点击 Download 下的三个按钮,分别对应 Windows,MacOS 和 Linux 三种。此时再下载对应的版本即可。
- 但是官网上的 Anaconda 下载会比较慢,因此,我们可以在镜像网站上进行下载,镜像网站的下载速度是高于官网的。
- 镜像网站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
- 在其中选择适合我们的版本即可,镜像网站只有 5.3.1 之前的版本,建议下载 5.3.1 版本。
2. Anaconda 安装
- 下载完成后,即可开始安装。双击安装文件,进入欢迎界面,点击 Next。
点击同意,进入到下一步。
- 选择软件使用权限,是指针对当前登录用户还是所有用户,二者都行,无特殊要求。
- 选择安装位置,完成安装。
如果出现此页面,需要勾选配置环境变量选项。
无需安装 VS Code,直接跳过即可。
- 之后便安装完成了。
- 最后对是否安装成功进行验证,在 CMD 中输入
conda --version • 1
- 若出现像这样的 conda 版本号即安装成功。
3. Anaconda Navigator 打不开问题(不适用所有)
当我们打开 Anaconda Navigator 先是出来几个命令框,然后就找不到 Anaconda Navigator 了,再点击 Anaconda Navigator 时,显示已经打开。
产生上述的问题主要是没更新客户端(-client),采取如下步骤解决问题。
(1) 使用管理员运行:conda prompt。
(2) 输入 conda update conda 更新 conda,再输入conda update anaconda-navigator 更新。
如果出错,则需要修改 .condarc 文件,该文件的目录为:c:\user\你的用户名.condarc,如果没有打开方式就使用文本方式打开。
以文本方式打开 .condarc 文件后:先删除 default 那一行,然后将所有 https 都改成 http 即可。
接下来执行conda update anaconda-navigator,一般可以执行更新了
(3) 重置 Navigator:anaconda-navigator --reset。
(4) 执行命令:conda update anaconda-client,更新 Anaconda 客户端。
(5) 执行命令:conda update -f anaconda-client。
(6) 能打开 Navigator 了。
4. PyTorch 环境创建
- PyTorch 的环境创建分为如下几步。
- (1) 以管理员方式运行 Anaconda Prompt,在命令行格式下,输入代码,完成调用清华镜像、建立 PyTorch 环境、安装 PyTorch 、测试 PyTorch 过程。
- (2) 使用清华镜像源,分别输入以下四句代码。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- (3) 创建 PyTorch 环境,这里我的 Python 版本是 3.7,输入如下代码。
conda create -n pytorch python=3.7
- 之后,弹出提示,输入 y,即可安装。然后,查看环境是否安装成功。
conda info --envs
这里我们可以看到 base 和 pytorch 两个环境,* 表示当前正处于的环境。
- (4) 输入如下代码,进入 pytorch 环境当中,我们在此环境下安装 PyTorch。
activate pytorch
此时,如果我们每一行最初的(base)变为(pytorch )就说明上述步骤已完成。
5. PyTorch 下载
- (1) 进入到 PyTorch 的官网:https://pytorch.org/,选择对应的安装版本。由于电脑配置的相关问题,这里选择安装 PyTorch-CPU 版本。
- (2) 输入官网提供的运行代码,这里每个人的运行代码都不相同,大家输入自己的即可,弹出提示,输入 y,即可完成安装,显示 done。
pip3 install torch torchvision torchaudio
跟 Anaconda 的问题相同,在官网上下载速度实在是过于缓慢,因此大家可以使用清华镜像源进行安装,此处就不过多叙述,本人直接官网下载安装的。
(3) 在 PyTorch 下载完成后,对其是否安装完成进行测试。
激活 PyTorch :activate pytorch
进入 PyTorch :python
测试 numpy:import numpy
测试 PyTorch :import torch
如果以上步骤都没问题,那么安装成功。
6. Jupyter 中配置 PyTorch
- (1) 打开 Anaconda Prompt。
- (2) 进入安装好的 PyTorch 环境。
conda activate pytorch #pytorch3.8 是之前建立的环境名称,可修改为自己建立名称
- (3) 安装 package:nb_conda。
conda install nb_conda
- (4) 安装完成后,输入 jupyter notbook 就可以打开 Jupyter 了。
jupyter notbook
如果中间出现了解决 python.exe 无法找到程序输入点 … 于动态链接库 …pythoncom37.dll 的弹窗提示这类问题,只需要找到对应目录,将 pythoncom37.dll 删除即可。
三、PyTorch 基本使用方法
我们可以通过 torch.__version__ 查看自己的 PyTorch 版本,我的是 CPU 版本的 1.13.1,示例如下:
import torch torch.__version__ #'1.13.1+cpu'
- 我们可以通过
torch.empty()
生成一个矩阵,但未初始化。
x = torch.empty(5, 3) x #tensor([[8.9082e-39, 9.9184e-39, 8.4490e-39], # [9.6429e-39, 1.0653e-38, 1.0469e-38], # [4.2246e-39, 1.0378e-38, 9.6429e-39], # [9.2755e-39, 9.7346e-39, 1.0745e-38], # [1.0102e-38, 9.9184e-39, 6.2342e-19]])
- 我们可以通过
torch.rand()
生成一个随机值的矩阵。
x = torch.rand(5, 3) x #tensor([[0.1452, 0.4816, 0.4507], # [0.1991, 0.1799, 0.5055], # [0.6840, 0.6698, 0.3320], # [0.5095, 0.7218, 0.6996], # [0.2091, 0.1717, 0.0504]])
- 我们可以通过
torch.zeros()
生成一个全零矩阵。
x = torch.zeros(5, 3, dtype=torch.long) x #tensor([[0, 0, 0], # [0, 0, 0], # [0, 0, 0], # [0, 0, 0], # [0, 0, 0]])
- 我们可以直接将数据传入矩阵当中。
x = torch.tensor([5.5, 3]) x #tensor([5.5000, 3.0000])
- 我们可以通过
size()
查看矩阵的大小,也就是矩阵有几行几列。
x.size() #torch.Size([5, 3])
- 我们可以通过
view()
操作改变矩阵维度。
x = torch.randn(4, 4) y = x.view(16) z = x.view(-1, 8) print(x.size(), y.size(), z.size()) #torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])
- 同时,torch 也可以和 numpy 进行协同操作,具体可见如下示例:
- 示例 1:
import numpy as np a = torch.ones(5) b = a.numpy() b #array([1., 1., 1., 1., 1.], dtype=float32)
- 示例 2:
import numpy as np a = np.ones(5) b = torch.from_numpy(a) b #tensor([1., 1., 1., 1., 1.], dtype=torch.float64)