线性回归模型
构造损失函数
构造计算图
深度神经网络并没有太多的局部极小值,但是会有鞍点,鞍点就会导致没有梯度停止更新
梯度下降的三种方式:
- SGD(随机梯度下降):每次更新只用一个样本,数据中会有噪声,会另训练离开鞍点,如果GD更新的话,进入鞍点就出不来了
用SGD的话,loss function输出要进行平滑(否则看到的数据会跳动) - GD(梯度下降):用所有样本的误差进行梯度更新。设定epoch次数。SGD有两个循环(每个样本都要遍历)而GD有一个循环
- mini-batch(常用方法)将数据分成一小块一小块的(折中方式)
效率问题
GD在更新计算损失的时候可以并行运算,因为每个样本可以直接加,上一个样本和下一个样本没有关联。运算快
SGD在更新计算损失的时候 不 可以并行运算,因为上一个样本更新和下一个样本更新有关联。运算慢
问题
为什么跑深度学习模型的时候,batch大了显存不够?
GPU进行并行计算,batch大了 显存就不够了,GPU进行并行计算,一个batch的数据一起计算
import torch
x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[2.0],[4.0],[6.0]])
构造模型的时候使用的都是【类的形式】
ython中的函数是一级对象。这意味着Python中的函数的引用可以作为输入传递到其他的函数/方法中,并在其中被执行。
而Python中类的实例(对象)可以被当做函数对待。也就是说,我们可以将它们作为输入传递到其