【深入浅出PyTorch】2-pytorch基础知识

2-pytorch基础知识

2.1-张量

2.1.1-什么是张量

张量(Tensor)是一个定义在一些向量空间和一些对偶空间的笛卡尔积上的多重线性映射,其坐标是|n|维空间内,有|n|个分量的一种量

——百度百科

image-20220710164930545

从数值到向量,再到矩阵,量的维度不断升高,那么超过3维的我们都可以称作张量,不过更一般的,任何维度都可以用张量表示,如数值就是0维,向量1维,矩阵2未,而上图中的张量就是一个三维的张量。

  • 维度不限,通常为3维
  • pytorch的基本运算单元
  • pytorch中基础的数据定义和运算会频繁地用到张量的特性
  • 张量在pytorch中支持GPU运算、自动求导等操作

2.1.2-创建tensor

2.1.2-创建tensor.ipynb

2.2-自动求导

image-20220711140315498

2.2.1-PyTorch机制

PyTorch是如何实现模型训练的:

  1. 输入数据,正向传播
  2. 创建计算图
  3. 计算损失函数
  4. 损失函数反向传播
  5. 更新模型参数

image-20220711140530962

2.2.2-数学基础

多元函数求导的雅各比矩阵
J = ( ∂ y 1 ∂ x 1 ⋯ ∂ y 1 ∂ x n ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ⋯ ∂ y m ∂ x n ) J=\left(\begin{array}{ccc}\frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial y_{1}}{\partial x_{n}} \\ \vdots & \ddots & \vdots \\ \frac{\partial y_{m}}{\partial x_{1}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}}\end{array}\right) J=x1y1x1ymxny1xnym
假设有 m m m个因变量 y 1 , … , y m y_1,\dots,y_m y1,,ym, 和 n n n个自变量 x 1 , … , x n x_1,\dots,x_n x1,,xn, 那么 Y Y Y X X X的导数可以用矩阵 J J J的形式表示出来。

链式求导法则

h ( x ) = f ( g ( x ) ) h(x) = f(g(x)) h(x)=f(g(x)),则 h ′ ( x ) = f ′ ( g ( x ) ) ∗ g ′ ( x ) h^{\prime}(x) = f^\prime(g(x))*g^{\prime}(x) h(x)=f(g(x))g(x)

PyTorch自动求导

损失函数 l l l对输出 y y y的导数为
v = ( ∂ l ∂ y 1 ⋯ ∂ l ∂ y m ) v=\left(\begin{array}{lll}\frac{\partial l}{\partial y_{1}} & \cdots & \frac{\partial l}{\partial y_{m}}\end{array}\right) v=(y1lyml)
那么 l l l对输入 x x x的导数为
v J = ( ∂ l ∂ y 1 ⋯ ∂ l ∂ y m ) ( ∂ y 1 ∂ x 1 ⋯ ∂ y 1 ∂ x n ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ⋯ ∂ y m ∂ x n ) = ( ∂ l ∂ x 1 ⋯ ∂ l ∂ x n ) v J=\left(\begin{array}{lll}\frac{\partial l}{\partial y_{1}} & \cdots & \frac{\partial l}{\partial y_{m}}\end{array}\right)\left(\begin{array}{ccc}\frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial y_{1}}{\partial x_{n}} \\ \vdots & \ddots & \vdots \\ \frac{\partial y_{m}}{\partial x_{1}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}}\end{array}\right)=\left(\begin{array}{lll}\frac{\partial l}{\partial x_{1}} & \cdots & \frac{\partial l}{\partial x_{n}}\end{array}\right) vJ=(y1lyml)x1y1x1ymxny1xnym=(x1lxnl)

2.2.3-动态计算图

将动量和张量创建动态计算图

动态图单元包括:

  • data:数据,如torch.tensor(1.0)
  • requires_grad:是否计算导数
  • grad:导数值
  • grad_fn:导数表示函数
  • is_leaf:是不是叶子节点,如果requires_grad为真,且is_leaf为假,说明计算可以停止了

image-20220711150355907

2.2.4-自动求导.ipynb

2.2.4-自动求导.ipynb

动态

不需要单独计算表达式,只需要用表达式将传参结合起来

image-20220711150827065

2.3-并行计算

没GPU,略过了

总结:

  • GPU算的快
  • 学习、研究过程中够用
  • PyTorch可以在不同设备中计算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值