目录
工具
一、Pytorch是什么?
张量Tensors
二、Autograd: 自动求导(automatic differentiation)
1、变量(Variable)核心类
2、函数(Function)
3、梯度(Gradients)
梯度(可简单理解为导数)
4、反向传播
工具
- dir():打开,查看里面内容
- 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)的最常用且最有效的算法。其主要思想是:
- 将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
- 由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
- 在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。



