百度飞桨PaddlePaddle-21天零基础实践深度学习-【手写数字任务】3
2020-08-17 20:54
375 查看
@百度飞桨PaddlePaddle-21天零基础实践深度学习-【手写数字任务】3
资源配置
面对更加复杂的机器学习或深度学习任务,需要运算速度更高的硬件(如GPU、NPU),甚至同时使用多个机器共同训练一个任务(多卡训练和多机训练)。可以通过资源配置的优化,提升模型训练效率。
单GPU训练
飞桨动态图通过fluid.dygraph.guard(place=None)里的place参数,设置在GPU上训练还是CPU上训练。
with fluid.dygraph.guard(place=fluid.CPUPlace()) #设置使用CPU资源训神经网络。 with fluid.dygraph.guard(place=fluid.CUDAPlace(0)) #设置使用GPU资源训神经网络,默认使用服务器的第一个GPU卡。"0"是GPU卡的编号,比如一台服务器有的四个GPU卡,编号分别为0、1、2、3。
or
use_gpu = False place = fluid.CUDAPlace(0) if use_gpu else fluid.CPUPlace()
分布式训练
Why ?
强大模型加上海量的训练数据,经常导致模型训练耗时严重。
在机器资源充沛的情况下,分布式训练能将大部分模型的训练时间压缩到小时级别。
两种实现模式:模型并行和数据并行。
GPU硬件技术支持>>>>>>>>>>数据并行
PRC通信方式 (通常CPU)
NCCL2通信方式 (飞桨GPU)
训练过程
训练过程优化思路
- 计算分类准确率,观测模型训练效果。(评价指标)fluid.layers.accuracy
- 检查模型训练过程,识别潜在问题。
check_shape变量打印“尺寸”,验证网络结构是否正确。
check_content变量打印“内容值”,验证数据分布是否合理。
- 加入校验或测试,更好评价模型效果。
训练集:训练过程完成
验证集:模型参数的选择和调整
测试集:真实反映模型效果
- 加入正则化项,避免模型过拟合。
模型过于敏感,训练数据量太少或其中的噪音太多>>>过拟合
优化器中设置regularization参数即可实现。
- 可视化分析。matplotlib库 or VisualDL
#引入matplotlib库 import matplotlib.pyplot as plt
or
# 安装VisualDL !pip install --upgrade --pre visualdl
#引入VisualDL库,定义作图数据存储位置 from visualdl import LogWriter log_writer = LogWriter("./log")
模型保存
模型加载和恢复训练
训练过程主动或被动的中断 >>>>>飞桨支持从上一次保存状态开始继续训练,只要随时保存训练过程中的模型状态,就不用从初始状态重新训练。
恢复训练有如下两个要点:
1.保存模型时>>>>同时保存模型参数和优化器参数。
2.恢复参数时>>>>同时恢复模型参数和优化器参数。
#保存模型 使用model.state_dict()获取模型参数。 使用optimizer.state_dict()获取优化器和学习率相关的参数。 调用fluid.save_dygraph()将参数保存到本地。 #恢复模型 使用load_dygraph获得模型参数和优化器参数。
相关文章推荐
- 飞桨百度架构师手把手带你零基础实践深度学习——手写数字识别网络结构的优化
- 飞桨百度架构师手把手带你零基础实践深度学习——手写数字识别损失函数的优化
- 百度飞桨PaddlePaddle-21天零基础实践深度学习-图像分类
- 飞桨百度架构师手把手带你零基础实践深度学习——手写数字识别 资源配置
- 飞桨百度架构师手把手带你零基础实践深度学习——手写数字识别训练调试与优化
- 百度飞桨PaddlePaddle-21天零基础实践深度学习-卷积神经网络基础
- AI Studio 飞桨 零基础入门深度学习笔记6.1-手写数字识别任务
- 飞桨 百度架构师手把手带你零基础实践深度学习21天 学习笔记——零基础入门
- 飞桨 百度架构师手把手带你零基础实践深度学习21天 学习笔记 ——随机梯度法的实现
- 飞桨—百度架构师手把手带你零基础实践深度学习21天 学习笔记——使用飞桨进行深度学习的优势
- 飞桨PaddlePaddle百度架构师手把手带你零基础实践深度学习 第一周心得
- 飞桨 百度架构师手把手带你零基础实践深度学习21天 学习笔记——使用飞桨重写波士顿房价预测模型
- AI Studio 飞桨 零基础入门深度学习笔记6.2-通过极简方案构建手写数字识别模型
- PaddlePaddle-百度架构师手把手带你零基础实践深度学习-笔记02(代码详解)
- AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理
- 2使用Python语言和Numpy库来构建神经网络模型-波士顿房价预测任务实战案例(百度架构师手把手带你零基础实践深度学习原版笔记系列)
- AI Studio 飞桨 零基础入门深度学习笔记6.5-手写数字识别之损失函数
- PaddlePaddle-百度架构师手把手带你零基础实践深度学习-笔记01(代码详解)
- 飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习(学习笔记)
- AI Studio 飞桨 零基础入门深度学习笔记6.6-手写数字识别之优化算法