5pytorch实现线性回归
使用随机梯度下降
00:02:18.384

00:03:07.590

上节课的例子
因为梯度不会自动清零,为了使这次的梯度不影响下次的梯度,进行手工清零
线性回归就是恨简单的神经网络
训练步骤:
- 前馈:算损失
- 反馈:算梯度
- 更新:使用梯度下降算法更新权重
00:06:33.097

00:06:50.802

要使用mini-batch
要一次性将
所以需要使用矩阵运算
这里运用numpy的广播方式
00:09:36.616

就是矩阵扩充
w应该是3x3
实际上也就是向量化00:12:48.104

potrch中计算导数不再是重点因为00:13:52.605

有函数会自动计算导数
重点在于构造计算图00:14:28.914

这个被称为一个线性单元
线性模型00:19:45.155

00:21:21.908

init构造函数:初始化
forward:前馈
反向传播被自动调用
Fuctions是一个类
设计module
下面是上节课的代码,而可用于对比

super就是父类,,第一个参数类的名称
第二个self
实际上就是调用父类的init
这步一定要有
self.linear是在构造对象,00:24:42.264

00:26:15.258

这个对象包含了w和b(也就是权重和偏置)
linear也是继承于tensor,所以在使用的时候能构建计算图
这里表示输入样本的维数,输出样本的维数
这里输出、输入样本的维数一定要相等
这里的bias表示是否要b,false就仅为
00:29:38.524

注意上面这个两个的区别,实际上无所谓是哪一种计算方式,只要最后结果是预期的结果就行
塑料英语:
执行了call函数
这个函数让类的例子能够进行反向传播
一般的forward会被调用

对于前面没有明确注明x=3,y=5的变量,如果不确定输入变量要多少个的时候
出现下面情况
00:33:47.229

就需要让前面接收变量可变长
00:33:54.002

使用这个方法00:34:33.331

使用这个方式可以实现不管输入多少变量,都可以被存入args中
对于后面指定变量名称的方式
00:34:55.180

同样实现输入可变长
是以字典的形式来实现
00:35:15.288
00:35:15.288

通过上面的输出可已看出就是是字典的形式
z1
在moduel的call中,就是放入了forward
这里实际上就是函数重载,
override
linearmodel有一个forward
这里重新定义一个forward
类实例化
model是可以直接被调用的
00:38:36.640

可以直接写

可以参考这个图
00:39:47.751

00:40:03.310

00:39:32.224

这个损失计算过程可以直接被mesLoss代替
size_avagrage是否求均值
reduce 是否求和,降维成1维其实就是上上图的
00:42:17.358

optim这个是优化器
sgd是个类,这里是在进行实例化
model.parameters
00:43:07.946

在model中没有定义权重,使用linear这样的成员
所以parameters就是告诉优化器,哪些tensor对象数需要被==优化==,这里的优化也就是需要实现update,比如进行w权重的更新(一般基于梯度下降)
model的成员函数parameters
会检查model中所有成员
如果成员里有权重,就会把这个权重加到参数集合上
他会基于计算图查找所有嵌套的成员是否有权重
00:45:11.955

lr是学习率
learning rate
00:45:58.809

可以对不同的部分使用不同的学习率
print函数
中的loss自动调用__str__(),不会生成计算图
00:48:00.459

把所有权重的梯度归零
然后进行反向传播
step函数进行权重更新
00:49:22.738

-
- loss
- backward
- 更新w
00:49:53.799

如果不加item,weight是一个矩阵

这里就是让x_test作为tensor对象,其中的数值是4
然后将tensor对象x_test传入model,使用
进行计算
输入输出的都是二倍的关系
由已知的结果分析,w应该是2,而b应该为0
y_pred应该维8
所以这次的结果并不理想
说明训练还没有收敛的很好
后面进行的1000次迭代,实现的结果
上面这个点是过拟合点
红色线是测试集
蓝色是训练集
如果训练次数过多,会有过拟合的风险
- 准备数据集
- 设计模型
- 中间的criterion构造损失函数
,后面的是优化器(update) - 然后是进行训练
00:54:20.540

这里是不同的优化器
sgd优化器是基于随机梯度下降法,进行权重更新的优化器






























