• 深度学习开发流程


    1.全局流程

    在这里插入图片描述

    2.训练过程

    损失函数:用来度量深度学习模型的预测值f(x)与真实标签值Y的差异程度的运算函数,损失函数越小,模型型训练的效果越好。

    2.1 深度学习训练主要训练步骤:

    1. 确定模型
    2. 将模型加在到cpu或者gpu中
    3. 确定训练数据
    4. 确定优化器和超参
    5. model.train()
    6. 进入循环,将数据放到设备中
    7. 前向传播:就是将数据放到模型中训练
    8. 梯度清零:防止之前在优化器中存在之前的梯度,对当前的梯度有污染
    9. 计算损失:计算预测值与真实值之间的误差
    10. 反向传播:进行求导操作
    11. 更新参数
    12. 达到最优的结果之后就可以保存模型了

    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状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.验证过程

    3.1 验证主要步骤:

    1. model.eval
    2. 打开上下文管理器,禁止梯度计算
    3. 将数据加载到device
    4. 正向传播
    5. 汇总结果:因为是一个一个batch训练的,所以需要将所有的结果全部通过相关操作之后,将数据统一保存
    6. 计算评价指标

    3.2 部分代码

    model.eval()
    #  打开上下文管理器,禁止梯度计算
    with torch.no_gard()
    	for batch in dev_iter:
    		# 如果有数据就需要将数据加在到gpu
    		data=to_device(batch)
    		# 正向传播
    		out=model(data)
    		汇总所有相关的数据
    		.....
    # 将所有汇总的结果进行评价指标计算
    getscore(results)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.测试过程

    1. 加载模型
    2. 重复验证的过程
      最终查看评估结果,目的就是为验证模型的训练是否有效

    5其他操作

    1. 分别计算每一个epoch训练集的loss和验证集的loss,就可以判断是否过拟合
    2. 计算每一步花了多少时间
    3. 早停机制
    4. 计算验证集的评价指标的一个变化过程
  • 相关阅读:
    杰理之MIC 免电容方案需要设置【篇】
    基于SpringBoot+Vue企业会议室预定管理系统设计和实现
    职场必看!性能测试响应很慢怎么排查?
    Docker之Centos安装
    SQL语句练习
    nodejs+vue 视频网站的设计与实现
    java通过用户id寻找下级
    什么是自动化测试框架?
    希尔排序算法(代码实现) [数据结构][Java]
    【设计模式】解释器模式
  • 原文地址:https://blog.csdn.net/qq_35653657/article/details/133824105