深度学习PyTorch实战(一)

本文介绍了为何选择PyTorch作为深度学习框架,并详细阐述了PyTorch的安装过程,以及基本概念如张量和变量。通过示例展示了如何进行自动求导,解释了梯度下降法和自适应优化算法的原理,最后以简单线性回归为例,为PyTorch实战系列开篇。
摘要由CSDN通过智能技术生成
为什么学习PyTorch?
  • 掌握一个框架不能一劳永逸,深度学习框架无绝对的垄断地位。
  • TensorFlow及Caffe都是命令式的编程语言,而且是静态的。对于Pytorch通过一种自动反向求导技术,可以任意修改中间的过程。
  • Pytorch的设计思路线性、直观且易于使用,新手和学术界比较受欢迎。
PyTorch安装
  • Windows推荐使用Anaconda GPU版本自动安装。
  • Linux根据显卡驱动版本选择对应版本的Cuda、Cudnn、PyTorch,使用Anaconda GPU版本辅助安装,注意替换国内镜像源。
  • 安装完毕后确定环境正常使用。
    import  torch
    print(torch.__version__)
    print('gpu:', torch.cuda.is_available())
    
基本概念

张量: Pytorch中最基本的操作对象Tensor,表示一个多维的矩阵和numpy对应可以相互转换,在GPU运行。
变量: 变量Variable和Tensor本质没有区别,但是会放进一个计算图中然后进行前向传播,反向传播,自动求导。
简单示例,自动求取梯度:

import  torch
from torch import autograd
x = torch.tensor(1.)
a = torch.tensor(1., requires_grad=True)
b = torch.tensor(2., requires_grad=True)
c = torch.tensor(3., requires_grad=True)
print(b.dim())
y = a**2 * x + b * x + c
print('before:', a.grad, b.grad, c.grad)
grads = autograd.grad(y, [a, b, c],retain_graph=True)
print('after :', grads[0], grads[1], grads[2])
y.backward(retain_graph=True)
print(a.grad)
y.backward()
print(a.grad.norm())

证明:沿梯度反方向移动自变量可以减小函数值
泰勒展开:
f ( x + ϵ ) = f ( x ) + ϵ f ′ ( x ) + O ( ϵ 2 ) f(x+\epsilon)=f(x)+\epsilon f^{\prime}(x)+\mathcal{O}\left(\epsilon^{2}\right) f(x+ϵ)=f(x)+ϵf(x)+O(ϵ2)
代入沿梯度方向的移动量 η f ′ ( x ) \eta f^{\prime}(x) ηf(x)
f ( x − η f ′ ( x ) ) = f ( x ) − η f ′ 2 ( x ) + O ( η 2 f ′ 2 ( x ) ) f\left(x-\eta f^{\prime}(x)\right)=f(x)-\eta f^{\prime 2}(x)+\mathcal{O}\left(\eta^{2} f^{\prime 2}(x)\right) f(xηf(x))=f(x)ηf2(x)+O(η2f2(x))
f ( x − η f ′ ( x ) ) ≲ f ( x ) f\left(x-\eta f^{\prime}(x)\right) \lesssim f(x) f(xηf(x))f(x)

x ← x − η f ′ ( x ) x \leftarrow x-\eta f^{\prime}(x) xxηf(x)
多维梯度下降:
∇ f ( x ) = [ ∂ f ( x ) ∂ x 1 , ∂ f ( x ) ∂ x 2 , … , ∂ f ( x ) ∂ x d ] ⊤ \nabla f(\mathbf{x})=\left[\frac{\partial f(\mathbf{x})}{\partial x_{1}}, \frac{\partial f(\mathbf{x})}{\partial x_{2}}, \dots, \frac{\partial f(\mathbf{x})}{\partial x_{d}}\right]^{\top} f(x)=[x1f(x),x2f(x),,xdf(x)]

f ( x + ϵ ) = f ( x ) + ϵ ⊤ ∇ f ( x ) + O

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值