栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pytorch深度学习笔记(01)--自动求导、梯度下降、反向传播

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pytorch深度学习笔记(01)--自动求导、梯度下降、反向传播

目录 

工具

一、Pytorch是什么?

张量Tensors

二、Autograd: 自动求导(automatic differentiation)

1、变量(Variable)核心类

2、函数(Function)

3、梯度(Gradients)

梯度(可简单理解为导数)

4、反向传播


工具

  1. dir():打开,查看里面内容
  2. help():说明书

一、Pytorch是什么?

他是一个基于Python的科学计算包,目标用户有两类

  • 为了使用GPU来替代numpy
  • 一个深度学习援救平台:提供最大的灵活性和速度

张量Tensors

张量类似于numpy的ndarrays,不同之处在于张量可以使用GPU来加快计算。

注意

  • torch.Size实际上是一个元组,所以它支持元组相同的操作。
  • 任何在原地(in-place)改变张量的操作都有一个’_’后缀。例如x.copy_(y), x.t_()操作将改变x.

二、Autograd: 自动求导(automatic differentiation)

PyTorch 中所有神经网络的核心是autograd包.

1、变量(Variable)核心类

autograd.Variable是autograd包的核心类,它实际上是对张量(Tensor)的封装(容器)

  • 可以通过.backward()方法来自动计算所有的梯度.
  • .data属性来访问变量中的原始张量.
  • 这个变量的梯度被计算放入.grad属性中.

2、函数(Function)

每个变量有一个.grad_fn属性,它指向创建该变量的一个Function,用户自己创建的变量除外,它的grad_fn属性为None.

requires_grad():告诉自动梯度机制是都开始记录追踪这个张量tensor的操作

mean():求均值

mean(matrx,axis=0)

  • axis不设置值,求所有数的均值
  • axis=0,对各列求均值    
  • axis=1对各行求均值

3、梯度(Gradients)
  • 梯度是一个向量,既有大小,又有方向
  • 大小:梯度箭头的长度表示函数变化的趋势、函数增长的速率
  • 方向:代表函数增长的方向

梯度下降

【什么是梯度下降?】

在训练机器学习模型时,首先对权重和偏差进行初始猜测,然后反复调整这些猜测,直到获得损失可能最低的权重和偏差为止(即模型收敛)

简单来说,梯度下降可以拆解为梯度+下降,梯度可以理解为导数(对于多维可以理解为偏导),合起来变成了:导数下降。梯度下降就是用来找误差函数/损失函数(cost/loss function)最小值对应的自变量。

注意:梯度下降是指改变x的值使得导数的绝对值变小。

损失函数就是一个自变量为算法的参数,函数值为误差值的函数。

【补充点小知识】

在机器学习中有一类算法就是产生一条曲线来拟合现有的数据,这样子就可以实现预测未来的数据,我们将这个算法叫做回归。

还有一类算法也是产生一条曲线,但是这条曲线用来将点分为两块,实现分类,我们将这个算法叫做分类。

4、反向传播

为了更好的理解反向传播,可以参考如下链接,通过代入具体数字来理解公式

反向传播

反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法。其主要思想是:

  1. 将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
  2. 由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
  3. 在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号