Linear模型代码及步骤
0. matplotlib画图bug:
import matplotlib
matplotlib.use(‘TkAgg’) # 告诉matplotlib,请使用tkagg后端. 这是独立弹出的gui,而非使用的Pycharm界面的sciview。不加上这句会有bug
import matplotlib.pyplot as plt # 画图的
的撒
1. 生成训练的X,Y数据
a.设定一个真实的模型:true_w, true_b - 均为tensor类型
b.设定生成数据的数量:num
c.重点要明确生成的X,Y的维数:
w -> 1维tensor,长度为4
b -> 1维tensor,长度为1
X - > 2维tensor,(num, 4)
Y -> x*w + b : (num, 1)
为什么Y的维度为1?可以联系前向过程的神经网络计算图,4个不同维度的X,通过全连接生成一个神经元Y
2. 观察一下生成的X,Y的散点图
plt.scatter(X[:, 3], Y, 1) # 对比不同的权重生成的数据分布情况。X只能取某一列,因为画图时仅有一个自变量更清晰。可以将这个列换成其他列后观察不同维度生成的X,Y数据分布
plt.show()
3. 构建分批次取数据的函数
1.函数的作用:
a.如500个数据中每隔16个为一组进行一次梯度下降参数优化过程
b.取数据需要随机取,不能顺序取
2.为什么分批次取数据:
a.减小内存的使用和提高计算的效率
b.一般来讲分批次优化比单次和全批次处理的效果好
的撒
4. 构建计算预测的y的函数
pred_y = torch.matmul(x, w) + b
注意:torch.matmul()是矩阵运算,参数必须全部是tensor
5. 定义一个损失函数
常见的如:
MAE = |y^-y|
MSE = 1/2|y^-y|**2
6. 构建梯度下降优化参数列表中参数的函数
给出一个参数列表,对参数列表中参数依次使用梯度下降算法进行优化。
7. 设置学习率
先默认一个学习率,后期通过调试分析后可以上、下调
8. 定义训练的轮数,开始训练
每轮都从数据集中分批次取数据,每次取数据都优化一次参数。每轮的具体过程如下:
a.计算预测y
b.计算loss
c.梯度下降算法优化参数
注意:可以每轮都打印(轮数,该轮的总loss)便于调试与分析
9. 最后画图验证训练效果
如何绘图?
使用数据集的X,与训练得到的模型绘制连线图(plot)
使用数据集的X,Y绘制散点图(scatter)
如何验证?
成功的图一般有一些特征,比如:
1.直线穿过数据集的中间位置
2.数据均匀的分布在直线两侧


580

被折叠的 条评论
为什么被折叠?



