线性回归
主要内容包括:
1.线性回归的基本要素
2.线性回归模型从零开始的实现
3.线性回归模型使用pytorch的简洁实现
线性回归模型从零开始的实现
1.生成数据集
使用线性模型来生成数据集,生成一个1000个样本的数据集,下面是用来生成数据的线性关系:
price=warea⋅area+wage⋅age+b
2.读取数据集
3.初始化模型参数
4.定义模型
定义用来训练参数的训练模型:
price=warea⋅area+wage⋅age+b
5.定义损失函数
我们使用的是均方误差损失函数:
l(i)(w,b)=21(y^(i)−y(i))2,
6.定义优化函数
在这里优化函数使用的是小批量随机梯度下降:
(w,b)←(w,b)−∣B∣ηi∈B∑∂(w,b)l(i)(w,b)
7.训练
======================================================================
softmax和分类模型
内容包含:
- softmax回归的基本概念
- 如何获取Fashion-MNIST数据集和读取数据
- softmax回归模型的从零开始实现,实现一个对Fashion-MNIST训练集中的图像数据进行分类的模型
- 使用pytorch重新实现softmax回归模型
softmax从零开始的实现
1.获取训练集数据和测试集数据
2.模型参数初始化
3.对多维Tensor按维度操作
4.定义softmax操作
y^j=∑i=13exp(oi)exp(oj)
softmax回归模型
o(i)y^(i)=x(i)W+b,=softmax(o(i)).
5.定义损失函数
H(y(i),y^(i))=−j=1∑qyj(i)logy^j(i),
ℓ(Θ)=n1i=1∑nH(y(i),y^(i)),
ℓ(Θ)=−(1/n)i=1∑nlogy^y(i)(i)
6.定义准确率
我们模型训练完了进行模型预测的时候,会用到我们这里定义的准确率。
7.训练模型
8.模型预测
现在我们的模型训练完了,可以进行一下预测,我们的这个模型训练的到底准确不准确。
现在就可以演示如何对图像进行分类了。给定一系列图像(第三行图像输出),我们比较一下它们的真实标签(第一行文本输出)和模型预测结果(第二行文本输出)。
==============================================================================
多层感知机
- 多层感知机的基本知识
- 使用多层感知机图像分类的从零开始的实现
- 使用pytorch的简洁实现
ReLU函数(常用)
ReLU(rectified linear unit)函数提供了一个很简单的非线性变换。给定元素
x,该函数定义为
ReLU(x)=max(x,0).
可以看出,ReLU函数只保留正数元素,并将负数元素清零。为了直观地观察这一非线性变换,我们先定义一个绘图函数xyplot。
Sigmoid函数
sigmoid函数可以将元素的值变换到0和1之间:
sigmoid(x)=1+exp(−x)1.
tanh函数
tanh(双曲正切)函数可以将元素的值变换到-1和1之间:
tanh(x)=1+exp(−2x)1−exp(−2x).
我们接着绘制tanh函数。当输入接近0时,tanh函数接近线性变换。虽然该函数的形状和sigmoid函数的形状很像,但tanh函数在坐标系的原点上对称。
依据链式法则,tanh函数的导数
tanh′(x)=1−tanh2(x).
下面绘制了tanh函数的导数。当输入为0时,tanh函数的导数达到最大值1;当输入越偏离0时,tanh函数的导数越接近0。
多层感知机
多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。以单隐藏层为例并沿用本节之前定义的符号,多层感知机按以下方式计算输出:
HO=ϕ(XWh+bh),=HWo+bo,
其中
ϕ表示激活函数。
多层感知机从零开始的实现
1.获取训练集
2.定义模型参数
3.定义激活函数
4.定义网络
5.定义损失函数
6.训练
7.模型预测
总结
无论运用什么模型去做回归或者分类,都需要类似的步骤,只是其中的模型算法不同,但优化函数可以共用。