一、基本流程
二、数据集准备
- 广播:自动扩充为矩阵
- mini batch:x、y必须为矩阵
三、模型设计
-
线性单元:需要知道x、y维度,以确定w、b维度
-
loss最终是标量
-
步骤:
- 将模型定义为类:
-
实现构造函数和forward函数,module会自动实现backward函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
-
__init__函数中:先调用父类构造函数;再调用torch中nn(neural network)模块中的Linear类,该对象可以实现乘权重加偏置的计算[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
-
linear 类:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
-
类后面加(参数),用于__call__函数,实际上linear类中的__call__函数调用了该类的forward函数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
- 实例化:之前定义的模型类是callable
- 将模型定义为类:
四、构造LOSS 和 Optimizer
-
使用公式计算得到一个向量,再计算得到标量----->构造计算图:集成自nn.module
- 图中所示是用MSE这种方法计算loss,该现成的类也是继承自nn.module :第一个参数代表是否求均值,第二个参数表示是否要降维
- pytorch提供其他优化器:
-
构造优化器:需要指出优化的tensor[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
- parameter()会检查module中的所有成员,找到需要训练的w
- lr:learning rate
五、训练过程
- 计算y^
- 计算loss,已经是标量了
- 梯度归零
- backward
量了 - 梯度归零
- backward
- 更新
六、多维数据集的回归模型
2. 构建多层神经网络
用多层线性变换模拟非线性变换
3. 数据集
- delimiter:分隔符
- xy[:,:-1]:最后一列不需要
- xy[:,[-1]]:只要最后一列且得到的时矩阵
- from_numpy:生成tensor
- 模型: