usage.md 2.9 KB
Newer Older
1
# 模型训练和评估
S
sandyhouse 已提交
2

3 4
PaddlePaddle大规模分类提供了从训练、评估到预测部署的全流程解决方案。本文档介绍如
何使用PaddlePaddle大规模分类库快速完成训练、评估和预测部署。
S
sandyhouse 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

## 数据准备

我们假设用户数据集的组织结构如下:

```shell
train_data/
|-- agedb_30.bin
|-- cfp_ff.bin
|-- cfp_fp.bin
|-- images
|-- label.txt
`-- lfw.bin
```

20 21 22 23 24
其中,*train_data*是用户数据的根目录,*agedb_30.bin**cfp_ff.bin**cfp_fp.bin*
*lfw.bin*分别是不同的验证数据集,且这些验证数据集不是全部必须的。本文档教程默认
使用lfw.bin作为验证数据集,因此在浏览本教程时,请确保lfw.bin验证数据集可用。
*images*目录包含JPEG格式的训练图像,*label.txt*中的每一行对应一张训练图像以及该
图像的类别。
S
sandyhouse 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

*label.txt*文件的内容示例如下:

```shell
images/00000000.jpg 0
images/00000001.jpg 0
images/00000002.jpg 0
images/00000003.jpg 0
images/00000004.jpg 0
images/00000005.jpg 0
images/00000006.jpg 0
images/00000007.jpg 0
... ...
```

## 模型训练

### 训练代码
下面的例子给出使用PLSC完成大规模分类训练的脚本*train.py*
```python
45
from plsc import Entry
S
sandyhouse 已提交
46 47

if __name__ == "__main__":
48
    ins = Entry()
S
sandyhouse 已提交
49 50 51
    ins.train()
```

52
1. 从plsc包导入Entry类,其是使用PLCS大规模分类库功能的接口类。
S
sandyhouse 已提交
53 54 55
2. 生成Entry类的实例。
3. 调用Entry类的train方法,即可开始训练。

56 57 58
默认地,训练阶段每个训练轮次的之后会使用验证集验证模型的效果,当没有验证数据集时,
可以使用*set_with_test(False)* API关闭验证功能。

S
sandyhouse 已提交
59 60 61 62 63 64
### 开始训练

下面的例子给出如何使用上述脚本启动训练任务:

```shell
python -m paddle.distributed.launch \
65
    --cluster_node_ips="127.0.0.1" \
S
sandyhouse 已提交
66 67 68 69 70 71 72
    --node_ip="127.0.0.1" \
    --selected_gpus=0,1,2,3,4,5,6,7 \
    train.py
```

paddle.distributed.launch模块用于启动多机/多卡分布式训练任务脚本,简化分布式训练任务启动过程,各个参数的含义如下:

73
* cluster_node_ips: 参与训练的节点的ip地址列表,以逗号分隔;
S
sandyhouse 已提交
74 75 76
* node_ip: 当前训练节点的ip地址;
* selected_gpus: 每个训练节点所使用的gpu设备列表,以逗号分隔。

77
## 模型验证
S
sandyhouse 已提交
78 79 80

本教程中,我们使用lfw.bin验证数据集评估训练模型的效果。

81
### 验证代码
S
sandyhouse 已提交
82

83
下面的例子给出使用PLSC完成大规模分类验证的脚本*val.py*
S
sandyhouse 已提交
84 85

```python
86
from plsc import Entry
S
sandyhouse 已提交
87 88

if __name__ == "__main__":
89
    ins = Entry()
S
sandyhouse 已提交
90 91 92 93
    ins.set_checkpoint("output/0")
    ins.test()
```

94 95
默认地,PLSC将训练脚本保存在'./ouput'目录下,并以pass作为区分不同训练轮次模型
的子目录,例如'./output/0'目录下保存完成第一个轮次的训练后保存的模型。
S
sandyhouse 已提交
96

97 98
在模型评估阶段,我们首先需要设置训练模型的目录,接着调用Entry类的test方法开始模
型验证。