PyTorch 之 简介、相关软件框架、基本使用方法、tensor 的几种形状和 autograd 机制-1

简介: PyTorch 是一个基于 Torch 的 Python 开源机器学习库,用于自然语言处理等应用程序。它主要由 Facebook 的人工智能小组开发,不仅能够实现强大的 GPU 加速,同时还支持动态神经网络,这一点是现在很多主流框架如 TensorFlow 都不支持的。

文章目录

一、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 简介

111.png


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 版本。

dbce8ca3bc4d4d9ca4568eb3183506a6.png

如果是其他版本的,点击 Download 下的三个按钮,分别对应 Windows,MacOS 和 Linux 三种。此时再下载对应的版本即可。

5dac5593c6bf44c584ba724cf079af79.png


  • 在其中选择适合我们的版本即可,镜像网站只有 5.3.1 之前的版本,建议下载 5.3.1 版本。

2. Anaconda 安装

  • 下载完成后,即可开始安装。双击安装文件,进入欢迎界面,点击 Next。
  • aa4a1cac6c8f44c2a9a96aaa0bbd7cf5.png


点击同意,进入到下一步。

1866b339ac7b472c825cf92d3aaac188.png


  • 选择软件使用权限,是指针对当前登录用户还是所有用户,二者都行,无特殊要求。
  • 93ac4e69a8e747da872c634814225543.png
  • 选择安装位置,完成安装。


8f4f7b2ae1464e02a2c6d5dddc93b134.png



如果出现此页面,需要勾选配置环境变量选项。

9350c70bc9bb4f4ca80305baecc1cdbf.png



无需安装 VS Code,直接跳过即可。

bf27b1b99ec748f5bfec837b0ed5a31f.png

  • 之后便安装完成了。
  • 最后对是否安装成功进行验证,在 CMD 中输入
conda --version
• 1
  • 若出现像这样的 conda 版本号即安装成功。


79b9b8af31054e9198bbf51f2299cf09.png

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 两个环境,* 表示当前正处于的环境。

28b67134e80a44a3b5e6c5a39cd00bb7.png

  • (4) 输入如下代码,进入 pytorch 环境当中,我们在此环境下安装 PyTorch。
activate pytorch

此时,如果我们每一行最初的(base)变为(pytorch )就说明上述步骤已完成。

5. PyTorch 下载

  • (1) 进入到 PyTorch 的官网:https://pytorch.org/,选择对应的安装版本。由于电脑配置的相关问题,这里选择安装 PyTorch-CPU 版本。

9fe5df0d9ac4460fb32afd97b6654b21.png

  • (2) 输入官网提供的运行代码,这里每个人的运行代码都不相同,大家输入自己的即可,弹出提示,输入 y,即可完成安装,显示 done。
pip3 install torch torchvision torchaudio


跟 Anaconda 的问题相同,在官网上下载速度实在是过于缓慢,因此大家可以使用清华镜像源进行安装,此处就不过多叙述,本人直接官网下载安装的。

(3) 在 PyTorch 下载完成后,对其是否安装完成进行测试。

激活 PyTorch :activate pytorch

进入 PyTorch :python

测试 numpy:import numpy

测试 PyTorch :import torch

如果以上步骤都没问题,那么安装成功。

cdedbbc34c6346deaf478c387c483ba1.png

6. Jupyter 中配置 PyTorch

  • (1) 打开 Anaconda Prompt。
  • (2) 进入安装好的 PyTorch 环境。
conda activate pytorch #pytorch3.8 是之前建立的环境名称,可修改为自己建立名称

2adec276da364416b70f5aec898f9ee0.png

  • (3) 安装 package:nb_conda。
conda install nb_conda
  • (4) 安装完成后,输入 jupyter notbook 就可以打开 Jupyter 了。
jupyter notbook

30e379d7ef5e472a8b3e2f04aa574448.png


如果中间出现了解决 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)
相关文章
|
7月前
|
存储 人工智能 PyTorch
基于PyTorch/XLA的高效分布式训练框架
基于PyTorch/XLA的高效分布式训练框架
323 2
|
7月前
|
机器学习/深度学习 存储 PyTorch
PyTorch基本数据类型tensor
PyTorch基本数据类型tensor
89 2
|
7月前
|
存储 PyTorch 算法框架/工具
PyTorch 中的 Tensor:属性、数据生成和基本操作
PyTorch 中的 Tensor:属性、数据生成和基本操作
244 0
|
13天前
|
人工智能 安全 PyTorch
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
SPDL是Meta AI推出的开源高性能AI模型数据加载解决方案,基于多线程技术和异步事件循环,提供高吞吐量、低资源占用的数据加载功能,支持分布式系统和主流AI框架PyTorch。
46 10
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
|
1月前
|
机器学习/深度学习 监控 PyTorch
深度学习工程实践:PyTorch Lightning与Ignite框架的技术特性对比分析
在深度学习框架的选择上,PyTorch Lightning和Ignite代表了两种不同的技术路线。本文将从技术实现的角度,深入分析这两个框架在实际应用中的差异,为开发者提供客观的技术参考。
49 7
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
|
2月前
|
机器学习/深度学习 监控 PyTorch
以pytorch的forward hook为例探究hook机制
【10月更文挑战第9天】PyTorch中的Hook机制允许在不修改模型代码的情况下,获取和修改模型中间层的信息,如输入和输出等,适用于模型可视化、特征提取及梯度计算。Forward Hook在前向传播后触发,可用于特征提取和模型监控。实现上,需定义接收模块、输入和输出参数的Hook函数,并将其注册到目标层。与Backward Hook相比,前者关注前向传播,后者侧重反向传播和梯度处理,两者共同增强了对模型内部运行情况的理解和控制。
|
2月前
|
机器学习/深度学习 存储 数据可视化
以pytorch的forward hook为例探究hook机制
【10月更文挑战第10天】PyTorch 的 Hook 机制允许用户在不修改模型代码的情况下介入前向和反向传播过程,适用于模型可视化、特征提取及梯度分析等任务。通过注册 `forward hook`,可以在模型前向传播过程中插入自定义操作,如记录中间层输出。使用时需注意输入输出格式及计算资源占用。
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
|
4月前
|
机器学习/深度学习 人工智能 PyTorch
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
84 1