1.全局流程
2.训练过程
损失函数:用来度量深度学习模型的预测值f(x)与真实标签值Y的差异程度的运算函数,损失函数越小,模型型训练的效果越好。
2.1 深度学习训练主要训练步骤:
- 确定模型
- 将模型加在到cpu或者gpu中
- 确定训练数据
- 确定优化器和超参
- model.train()
- 进入循环,将数据放到设备中
- 前向传播:就是将数据放到模型中训练
- 梯度清零:防止之前在优化器中存在之前的梯度,对当前的梯度有污染
- 计算损失:计算预测值与真实值之间的误差
- 反向传播:进行求导操作
- 更新参数
- 达到最优的结果之后就可以保存模型了
2.2 部分代码
1.定义模型
2.定义优化器和超参
下面进入循环训练模型
model.trian() # 开启训练模式
for i, data in enumerate(train_iter):# 数据放到cpu或者gpu中train_data = to_device(data, label_emberding)# 前向传播:然后将要训练的数据放到模型中训练output = model(train_data)# 梯度清零:防止数据污染optimier.zero_grad()# 计算损失loss = loss_fn(output, train_data['labelnum'])# 反响传播:求导,找到更好的参数loss.backward()# 更新参数optimier.step()# 然后下面进入验证操作,根据验证集判断是否要继续进行下一步.......model.train()# 显示调用trian(),再次回到train状态
3.验证过程
3.1 验证主要步骤:
- model.eval
- 打开上下文管理器,禁止梯度计算
- 将数据加载到device
- 正向传播
- 汇总结果:因为是一个一个batch训练的,所以需要将所有的结果全部通过相关操作之后,将数据统一保存
- 计算评价指标
3.2 部分代码
model.eval()
# 打开上下文管理器,禁止梯度计算
with torch.no_gard()for batch in dev_iter:# 如果有数据就需要将数据加在到gpudata=to_device(batch)# 正向传播out=model(data)汇总所有相关的数据.....
# 将所有汇总的结果进行评价指标计算
getscore(results)
4.测试过程
- 加载模型
- 重复验证的过程
最终查看评估结果,目的就是为验证模型的训练是否有效
5其他操作
- 分别计算每一个epoch训练集的loss和验证集的loss,就可以判断是否过拟合
- 计算每一步花了多少时间
- 早停机制
- 计算验证集的评价指标的一个变化过程