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.Variableautograd包的核心类,它实际上是对张量(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)

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

Pytorch深度学习笔记(01)--自动求导、梯度下降、反向传播_第1张图片

梯度下降

【什么是梯度下降?】

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

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

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

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

【补充点小知识】

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

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

4、反向传播

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

反向传播

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

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

你可能感兴趣的:(深度学习)