8.15学习笔记
1.“手写数字识别——资源配置”
1.1CPU训练:
(1).CPU:fluid.CPUPlace()设置
(2).GPU:fluid.CUDAPlace()设置
(3). 以dygraph.guard函数的参数声明的place资源 with语句作用域下的代码在该资源上运行。
2.两种并行计算方式:模型并存和数据并行
数据并行的两种实现方式:Pserver通信方式和NCCL通信方式
3.实现多‘GPU卡’的分布式训练:程序修改和命令调用
命令:python -m paddle.distributed.launch 启动分布式运行
--selected_gpus=0,1,2,3—log_dir./mylog train_multi_gpu.py
Selected_gpus:设置使用的GPU的序号(需要是多GPU卡的机器,命令watch nvidia-smi查看)
Log_dir:存放训练log,如果不设置,每个GPU钧默认输出到屏幕
Train_muli_gpu.py:多GPU训练的的程序,包含修改过的train_multi_gpu()函数
4.优化的其他方法:
1)加入更多的评估指标:分类准确率
分类准确率accuracy:更直观的衡量,但不适合作为Loss
公平比较这两种损失函数的优劣
Foeward加入acc计算并返回计算结果
训练过程中取得该批次样本的acc(无需平均)
2)加入对训练的检查
Forward函数中,打印模型每一层的参数和输出
,check_shape控制打印尺寸,check_content控制打印内容值
3)在测试数据集上评测
校验:使用未参与训练的样本,决策模型超参数
测试:使用未参与训练和校验的样本,评估模型的效果
加载参数,模型设置为eval状态
读取校验的样本集
根据模型预测计算评估指标,将不同批次的评估结果取平均
4)在优化目标中加入正则化项,避免过拟合
过拟合的定义:在训练数据上表现好,在测试集上表现差(泛化能力差)
正则化项:
目标:防止模型过拟合
手段:优化目标中加入正则化项,惩罚参数
效果:模型在参数大小和训练集loss之间取得平衡=在预测时效果最好的
5)作图,分析训练效果
Matplotlib库
VisualDL:飞桨原装,辅助模型优化
- 创建LogWriter对象,设置实验结果(数据)存放路径
- 训练过程中插入作图语句
- 命令行输入:¥visual –logdir./log,修改网卡配置
- 打开浏览器输入网址即可查看
5.保存和加载模型:从预测场景到回复训练场景
Model.load_dict(params_dict)
Optimizer.set_dict(opt_dict)