提交 07edd7fc 编写于 作者: S Steffy-zxf 提交者: Zeyu Chen

Unify document style (#288)

* uniform file name convention

* update version

* update docs

* update docs
上级 24c12d07
...@@ -9,7 +9,7 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub ...@@ -9,7 +9,7 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub
* 便捷获取飞桨生态下的高质量预训练模型,涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、视频分类、图像生成、图像分割、文本审核、关键点检测等主流模型。更多模型详情请查看官网:https://www.paddlepaddle.org.cn/hub * 便捷获取飞桨生态下的高质量预训练模型,涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、视频分类、图像生成、图像分割、文本审核、关键点检测等主流模型。更多模型详情请查看官网:https://www.paddlepaddle.org.cn/hub
* 通过高质量预训练模型与PaddleHub Fine-tune API,只需要少量代码即可实现自然语言处理和计算机视觉场景的深度学习模型,更多Demo请参考以下链接: * 通过高质量预训练模型与PaddleHub Fine-tune API,只需要少量代码即可实现自然语言处理和计算机视觉场景的深度学习模型,更多Demo请参考以下链接:
[文本分类](./demo/text-classification) [序列标注](./demo/sequence-labeling) [多标签分类](./demo/multi-label-classification) [图像分类](./demo/image-classification) [检索式问答任务](./demo/qa_classification) [回归任务](./demo/regression) [句子语义相似度计算](./demo/sentence_similarity) [阅读理解任务](./demo/reading-comprehension) [文本分类](./demo/text_classification) [序列标注](./demo/sequence_labeling) [多标签分类](./demo/multi_label_classification) [图像分类](./demo/image_classification) [检索式问答任务](./demo/qa_classification) [回归任务](./demo/regression) [句子语义相似度计算](./demo/sentence_similarity) [阅读理解任务](./demo/reading_comprehension)
***模型即软件**』的设计理念,通过Python API或命令行实现快速预测,更方便地使用PaddlePaddle模型库,更多介绍请参考教程[PaddleHub命令行工具介绍](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7) ***模型即软件**』的设计理念,通过Python API或命令行实现快速预测,更方便地使用PaddlePaddle模型库,更多介绍请参考教程[PaddleHub命令行工具介绍](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7)
* PaddleHub提供便捷的服务化部署能力,简单一行命令即可搭建属于自己的模型的API服务,更多详情请参考教程[PaddleHub Serving一键服务化部署](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-Serving%E4%B8%80%E9%94%AE%E6%9C%8D%E5%8A%A1%E9%83%A8%E7%BD%B2)[使用示例](./demo/serving) * PaddleHub提供便捷的服务化部署能力,简单一行命令即可搭建属于自己的模型的API服务,更多详情请参考教程[PaddleHub Serving一键服务化部署](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-Serving%E4%B8%80%E9%94%AE%E6%9C%8D%E5%8A%A1%E9%83%A8%E7%BD%B2)[使用示例](./demo/serving)
...@@ -31,7 +31,7 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub ...@@ -31,7 +31,7 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub
* Python==2.7 or Python>=3.5 for Linux or Mac * Python==2.7 or Python>=3.5 for Linux or Mac
**Python>=3.6 for Windows** **Python>=3.6 for Windows**
* PaddlePaddle>=1.5 * PaddlePaddle>=1.5
除上述依赖外,PaddleHub的预训练模型和预置数据集需要连接服务端进行下载,请确保机器可以正常访问网络。若本地已存在相关的数据集和预训练模型,则可以离线运行PaddleHub。 除上述依赖外,PaddleHub的预训练模型和预置数据集需要连接服务端进行下载,请确保机器可以正常访问网络。若本地已存在相关的数据集和预训练模型,则可以离线运行PaddleHub。
...@@ -72,7 +72,7 @@ $ hub run senta_bilstm --input_text "今天天气真好" ...@@ -72,7 +72,7 @@ $ hub run senta_bilstm --input_text "今天天气真好"
```shell ```shell
$ wget https://paddlehub.bj.bcebos.com/resources/test_object_detection.jpg $ wget https://paddlehub.bj.bcebos.com/resources/test_object_detection.jpg
$ hub run ssd_mobilenet_v1_pascal --input_path test_object_detection.jpg $ hub run ssd_mobilenet_v1_pascal --input_path test_object_detection.jpg
$ hub run yolov3_coco2017 --input_path test_object_detection.jpg $ hub run yolov3_darknet53_coco2017 --input_path test_object_detection.jpg
$ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg $ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg
``` ```
![SSD检测结果](https://raw.githubusercontent.com/PaddlePaddle/PaddleHub/release/v1.3/docs/imgs/object_detection_result.png) ![SSD检测结果](https://raw.githubusercontent.com/PaddlePaddle/PaddleHub/release/v1.3/docs/imgs/object_detection_result.png)
...@@ -87,11 +87,11 @@ $ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg ...@@ -87,11 +87,11 @@ $ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg
|-|-|-|-|-| |-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)|| |ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)|| |ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成文本分类迁移学习。| |ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)|| |ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成序列标注迁移学习。| |ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)|| |ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Finetune API完成情感分类迁移学习。| |Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)|| |Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)|| |LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)|| |Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
...@@ -101,7 +101,7 @@ $ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg ...@@ -101,7 +101,7 @@ $ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg
[Fine-tune API](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-Finetune-API) [Fine-tune API](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-Finetune-API)
[自定义数据集如何Finetune](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E9%80%82%E9%85%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%88%90FineTune) [自定义数据集如何Fine-tune](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E9%80%82%E9%85%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%88%90FineTune)
[实现自定义迁移任务](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub:-%E8%87%AA%E5%AE%9A%E4%B9%89Task) [实现自定义迁移任务](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub:-%E8%87%AA%E5%AE%9A%E4%B9%89Task)
...@@ -115,9 +115,9 @@ $ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg ...@@ -115,9 +115,9 @@ $ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg
## FAQ ## FAQ
**Q:** 利用PaddleHub Finetune如何适配自定义数据集 **Q:** 利用PaddleHub Fine-tune如何适配自定义数据集
**A:** 参考[PaddleHub适配自定义数据集完成Finetune](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E9%80%82%E9%85%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%88%90FineTune) **A:** 参考[PaddleHub适配自定义数据集完成Fine-tune](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E9%80%82%E9%85%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%88%90FineTune)
**Q:** 使用PaddleHub时,无法下载预置数据集、Module的等现象 **Q:** 使用PaddleHub时,无法下载预置数据集、Module的等现象
...@@ -131,7 +131,7 @@ paddlehub.server_check() ...@@ -131,7 +131,7 @@ paddlehub.server_check()
# 如果无法连接远端PaddleHub-Server,则显示Request Hub-Server unsuccessfully. # 如果无法连接远端PaddleHub-Server,则显示Request Hub-Server unsuccessfully.
``` ```
**Q:** 利用PaddleHub ernie/bert进行Finetune时,运行出错并提示`paddle.fluid.core_avx.EnforceNotMet: Input ShapeTensor cannot be found in Op reshape2`等信息 **Q:** 利用PaddleHub ernie/bert进行Fine-tune时,运行出错并提示`paddle.fluid.core_avx.EnforceNotMet: Input ShapeTensor cannot be found in Op reshape2`等信息
**A:** 因为ernie/bert module的创建时和此时运行环境中PaddlePaddle版本不对应。可以将PaddlePaddle和PaddleHub升级至最新版本,同时将ernie卸载。 **A:** 因为ernie/bert module的创建时和此时运行环境中PaddlePaddle版本不对应。可以将PaddlePaddle和PaddleHub升级至最新版本,同时将ernie卸载。
```shell ```shell
...@@ -140,7 +140,7 @@ $ hub uninstall ernie ...@@ -140,7 +140,7 @@ $ hub uninstall ernie
``` ```
**Note:** PaddleHub 1.1.1版本已支持离线运行Module **NOTE** PaddleHub 1.1.1版本已支持离线运行Module
**更多问题** **更多问题**
......
...@@ -99,4 +99,4 @@ ...@@ -99,4 +99,4 @@
**命令行一键使用**: 无需代码,通过命令行即可直接使用预训练模型进行预测,快速调研训练模型效果。目前版本支持以下模型:词法分析LAC;情感分析Senta;目标检测SSD;图像分类ResNet, MobileNet, NASNet等。 **命令行一键使用**: 无需代码,通过命令行即可直接使用预训练模型进行预测,快速调研训练模型效果。目前版本支持以下模型:词法分析LAC;情感分析Senta;目标检测SSD;图像分类ResNet, MobileNet, NASNet等。
**迁移学习**: 提供了基于预训练模型的Finetune API,用户通过少量代码即可完成迁移学习,包括BERT/ERNIE文本分类、序列标注、图像分类迁移等。 **迁移学习**: 提供了基于预训练模型的Fine-tune API,用户通过少量代码即可完成迁移学习,包括BERT/ERNIE文本分类、序列标注、图像分类迁移等。
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
* [情感分析](./senta) * [情感分析](./senta)
该样例展示了PaddleHub如何利用中文情感分析模型Senta进行FineTune和预测。 该样例展示了PaddleHub如何利用中文情感分析模型Senta进行FineTune和预测。
* [序列标注](./sequence-labeling) * [序列标注](./sequence-labeling)
该样例展示了PaddleHub如何将ERNIE/BERT等Transformer类模型作为预训练模型在MSRA_NER数据集上完成序列标注的FineTune和预测。 该样例展示了PaddleHub如何将ERNIE/BERT等Transformer类模型作为预训练模型在MSRA_NER数据集上完成序列标注的FineTune和预测。
* [目标检测](./ssd) * [目标检测](./ssd)
该样例展示了PaddleHub如何将SSD作为预训练模型在PascalVOC数据集上完成目标检测的预测。 该样例展示了PaddleHub如何将SSD作为预训练模型在PascalVOC数据集上完成目标检测的预测。
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
* [多标签分类](./multi-label-classification) * [多标签分类](./multi-label-classification)
该样例展示了PaddleHub如何将BERT作为预训练模型在Toxic数据集上完成多标签分类的FineTune和预测。 该样例展示了PaddleHub如何将BERT作为预训练模型在Toxic数据集上完成多标签分类的FineTune和预测。
* [回归任务](./regression) * [回归任务](./regression)
该样例展示了PaddleHub如何将BERT作为预训练模型在GLUE-STSB数据集上完成回归任务的FineTune和预测。 该样例展示了PaddleHub如何将BERT作为预训练模型在GLUE-STSB数据集上完成回归任务的FineTune和预测。
...@@ -34,10 +34,10 @@ ...@@ -34,10 +34,10 @@
* [句子语义相似度计算](./sentence_similarity) * [句子语义相似度计算](./sentence_similarity)
该样例展示了PaddleHub如何将word2vec_skipgram用于计算两个文本语义相似度。 该样例展示了PaddleHub如何将word2vec_skipgram用于计算两个文本语义相似度。
* [超参优化AutoDL Finetuner使用](./autofinetune) * [超参优化AutoDL Finetuner使用](./autofinetune)
该样例展示了PaddleHub超参优化AutoDL Finetuner如何使用,给出了自动搜素图像分类/文本分类任务的较佳超参数示例。 该样例展示了PaddleHub超参优化AutoDL Finetuner如何使用,给出了自动搜素图像分类/文本分类任务的较佳超参数示例。
* [服务化部署Hub Serving使用](./serving) * [服务化部署Hub Serving使用](./serving)
该样例文件夹下展示了服务化部署Hub Serving如何使用,将PaddleHub支持的可预测Module如何服务化部署。 该样例文件夹下展示了服务化部署Hub Serving如何使用,将PaddleHub支持的可预测Module如何服务化部署。
...@@ -52,11 +52,11 @@ ...@@ -52,11 +52,11 @@
|-|-|-|-|-| |-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)|| |ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)|| |ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成文本分类迁移学习。| |ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)|| |ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成序列标注迁移学习。| |ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)|| |ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Finetune API完成情感分类迁移学习。| |Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)|| |Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)|| |LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)|| |Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
......
# PaddleHub 图像分类 # PaddleHub 图像分类
本示例将展示如何使用PaddleHub Finetune API以及[ResNet](https://www.paddlepaddle.org.cn/hubdetail?name=resnet_v2_50_imagenet&en_category=ImageClassification)等预训练模型完成分类任务。 本示例将展示如何使用PaddleHub Fine-tune API以及[ResNet](https://www.paddlepaddle.org.cn/hubdetail?name=resnet_v2_50_imagenet&en_category=ImageClassification)等预训练模型完成分类任务。
## 如何开始Finetune ## 如何开始Fine-tune
在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用ResNet对[Flowers](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-API:-Dataset#class-hubdatasetflowersdataset)等数据集进行Finetune。 在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用ResNet对[Flowers](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-API:-Dataset#class-hubdatasetflowersdataset)等数据集进行Fine-tune。
其中脚本参数说明如下: 其中脚本参数说明如下:
```shell ```shell
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数。默认为16 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数。默认为16
--num_epoch: finetune迭代的轮数。默认为1 --num_epoch: Fine-tune迭代的轮数。默认为1
--module: 使用哪个Module作为finetune的特征提取器,脚本支持{resnet50/resnet101/resnet152/mobilenet/nasnet/pnasnet}等模型。默认为resnet50 --module: 使用哪个Module作为Fine-tune的特征提取器,脚本支持{resnet50/resnet101/resnet152/mobilenet/nasnet/pnasnet}等模型。默认为resnet50
--checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型。默认为paddlehub_finetune_ckpt --checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型。默认为paddlehub_finetune_ckpt
--dataset: 使用什么数据集进行finetune, 脚本支持分别是{flowers/dogcat/stanforddogs/indoor67/food101}。默认为flowers --dataset: 使用什么数据集进行Fine-tune, 脚本支持分别是{flowers/dogcat/stanforddogs/indoor67/food101}。默认为flowers
--use_gpu: 是否使用GPU进行训练,如果机器支持GPU且安装了GPU版本的PaddlePaddle,我们建议您打开这个开关。默认关闭 --use_gpu: 是否使用GPU进行训练,如果机器支持GPU且安装了GPU版本的PaddlePaddle,我们建议您打开这个开关。默认关闭
--use_data_parallel: 是否使用数据并行,打开该开关时,会将数据分散到不同的卡上进行训练(CPU下会分布到不同线程)。默认打开 --use_data_parallel: 是否使用数据并行,打开该开关时,会将数据分散到不同的卡上进行训练(CPU下会分布到不同线程)。默认打开
``` ```
## 代码步骤 ## 代码步骤
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -53,10 +53,10 @@ data_reader = hub.reader.ImageClassificationReader( ...@@ -53,10 +53,10 @@ data_reader = hub.reader.ImageClassificationReader(
| 数据集 | API | | 数据集 | API |
| -------- | ------------------------------------------ | | -------- | ------------------------------------------ |
| Flowers | hub.dataset.Flowers() | | Flowers | hub.dataset.Flowers() |
| DogCat | hub.dataset.DogCat() | | DogCat | hub.dataset.DogCat() |
| Indoor67 | hub.dataset.Indoor67() | | Indoor67 | hub.dataset.Indoor67() |
| Food101 | hub.dataset.Food101() | | Food101 | hub.dataset.Food101() |
`hub.dataset.Flowers()` 会自动从网络下载数据集并解压到用户目录下`$HOME/.paddlehub/dataset`目录 `hub.dataset.Flowers()` 会自动从网络下载数据集并解压到用户目录下`$HOME/.paddlehub/dataset`目录
...@@ -90,7 +90,7 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -90,7 +90,7 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
* `regularization_coeff`: 正则化的λ参数。默认为1e-3 * `regularization_coeff`: 正则化的λ参数。默认为1e-3
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制Fine-tune的训练,包含以下可控制的参数:
* `log_interval`: 进度日志打印间隔,默认每10个step打印一次 * `log_interval`: 进度日志打印间隔,默认每10个step打印一次
* `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集 * `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集
...@@ -99,11 +99,11 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -99,11 +99,11 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
* `use_pyreader`: 是否使用pyreader,默认False * `use_pyreader`: 是否使用pyreader,默认False
* `use_data_parallel`: 是否使用并行计算,默认True。打开该功能依赖nccl库 * `use_data_parallel`: 是否使用并行计算,默认True。打开该功能依赖nccl库
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: Fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `strategy`: Finetune优化策略 * `strategy`: Fine-tune优化策略
### Step4: 构建网络并创建分类迁移任务进行Finetune ### Step4: 构建网络并创建分类迁移任务进行Fine-tune
```python ```python
feature_map = output_dict["feature_map"] feature_map = output_dict["feature_map"]
...@@ -115,7 +115,7 @@ task = hub.ImageClassifierTask( ...@@ -115,7 +115,7 @@ task = hub.ImageClassifierTask(
feature=feature_map, feature=feature_map,
num_classes=dataset.num_labels, num_classes=dataset.num_labels,
config=config) config=config)
task.finetune_and_eval() task.finetune_and_eval()
``` ```
**NOTE:** **NOTE:**
...@@ -129,7 +129,7 @@ task.finetune_and_eval() ...@@ -129,7 +129,7 @@ task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
...@@ -137,19 +137,19 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -137,19 +137,19 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
## 模型预测 ## 模型预测
当完成Finetune后,Finetune过程在验证集上表现最优的模型会被保存在`${CHECKPOINT_DIR}/best_model`目录下,其中`${CHECKPOINT_DIR}`目录为finetune时所选择的保存checkpoint的目录。 当完成Fine-tune后,Fine-tune过程在验证集上表现最优的模型会被保存在`${CHECKPOINT_DIR}/best_model`目录下,其中`${CHECKPOINT_DIR}`目录为Fine-tune时所选择的保存checkpoint的目录。
我们使用该模型来进行预测。predict.py脚本支持的参数如下: 我们使用该模型来进行预测。predict.py脚本支持的参数如下:
```shell ```shell
--module: 使用哪个Module作为finetune的特征提取器,脚本支持{resnet50/resnet101/resnet152/mobilenet/nasnet/pnasnet}等模型。默认为resnet50 --module: 使用哪个Module作为Fine-tune的特征提取器,脚本支持{resnet50/resnet101/resnet152/mobilenet/nasnet/pnasnet}等模型。默认为resnet50
--checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型。默认为paddlehub_finetune_ckpt --checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型。默认为paddlehub_finetune_ckpt
--dataset: 使用什么数据集进行finetune, 脚本支持分别是{flowers/dogcat}。默认为flowers --dataset: 使用什么数据集进行Fine-tune, 脚本支持分别是{flowers/dogcat}。默认为flowers
--use_gpu: 使用使用GPU进行训练,如果本机支持GPU且安装了GPU版本的PaddlePaddle,我们建议您打开这个开关。默认关闭 --use_gpu: 使用使用GPU进行训练,如果本机支持GPU且安装了GPU版本的PaddlePaddle,我们建议您打开这个开关。默认关闭
--use_pyreader: 是否使用pyreader进行数据喂入。默认关闭 --use_pyreader: 是否使用pyreader进行数据喂入。默认关闭
``` ```
`注意`:进行预测时,所选择的module,checkpoint_dir,dataset必须和Finetune所用的一样 `注意`:进行预测时,所选择的module,checkpoint_dir,dataset必须和Fine-tune所用的一样
参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下图片分类预测结果 参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下图片分类预测结果
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
...@@ -160,11 +160,11 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -160,11 +160,11 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
|-|-|-|-|-| |-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)|| |ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)|| |ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成文本分类迁移学习。| |ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)|| |ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成序列标注迁移学习。| |ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)|| |ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Finetune API完成情感分类迁移学习。| |Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)|| |Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)|| |LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)|| |Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
......
...@@ -18,16 +18,16 @@ $ hub run lac --input_file test.txt --user_dict user.dict ...@@ -18,16 +18,16 @@ $ hub run lac --input_file test.txt --user_dict user.dict
test.txt 存放待分词文本, 如: test.txt 存放待分词文本, 如:
```text ```text
今天是个好日子 今天是个好日子
今天天气晴朗 今天天气晴朗
``` ```
user.dict为用户自定义词典,可以不指定,当指定自定义词典时,可以干预默认分词结果。 user.dict为用户自定义词典,可以不指定,当指定自定义词典时,可以干预默认分词结果。
词典包含三列,第一列为单词,第二列为单词词性,第三列为单词词频,以水平制表符\t分隔。词频越高的单词,对分词结果影响越大,词典样例如下: 词典包含三列,第一列为单词,第二列为单词词性,第三列为单词词频,以水平制表符\t分隔。词频越高的单词,对分词结果影响越大,词典样例如下:
```text ```text
天气预报 n 400000 天气预报 n 400000
经 v 1000 经 v 1000
常 d 1000 常 d 1000
``` ```
**NOTE:** **NOTE:**
......
# PaddleHub 多标签分类 # PaddleHub 多标签分类
本示例将展示如何使用PaddleHub Finetune API以及BERT预训练模型在Toxic完成多标签分类任务。 本示例将展示如何使用PaddleHub Fine-tune API以及BERT预训练模型在Toxic完成多标签分类任务。
多标签分类是广义的多分类,多分类是将样本精确地分类为两个以上类别之一的单标签问题。 在多标签问题中,样本可以分配给多个类别,没有限制。 多标签分类是广义的多分类,多分类是将样本精确地分类为两个以上类别之一的单标签问题。 在多标签问题中,样本可以分配给多个类别,没有限制。
如下图所示: 如下图所示:
...@@ -12,20 +12,20 @@ ...@@ -12,20 +12,20 @@
## 如何开始Finetune ## 如何开始Fine-tune
在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用BERT对Toxic数据集进行Finetune。 在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用BERT对Toxic数据集进行Fine-tune。
其中脚本参数说明如下: 其中脚本参数说明如下:
```bash ```bash
# 模型相关 # 模型相关
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数
--use_gpu: 是否使用GPU进行FineTune,默认为False --use_gpu: 是否使用GPU进行Fine-Tune,默认为False
--learning_rate: Finetune的最大学习率 --learning_rate: Fine-tune的最大学习率
--weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01 --weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01
--warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0 --warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0
--num_epoch: Finetune迭代的轮数 --num_epoch: Fine-tune迭代的轮数
--max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数 --max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数
# 任务相关 # 任务相关
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
## 代码步骤 ## 代码步骤
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -91,7 +91,7 @@ MultiLabelClassifyReader中的`data_generator`会自动按照模型对应词表 ...@@ -91,7 +91,7 @@ MultiLabelClassifyReader中的`data_generator`会自动按照模型对应词表
#### 自定义数据集 #### 自定义数据集
如果想加载自定义数据集完成迁移学习,详细参见[自定义数据集](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E9%80%82%E9%85%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%88%90FineTune) 如果想加载自定义数据集完成迁移学习,详细参见[自定义数据集](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E9%80%82%E9%85%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%88%90\)
### Step3:选择优化策略和运行配置 ### Step3:选择优化策略和运行配置
...@@ -109,7 +109,7 @@ config = hub.RunConfig(use_cuda=True, use_data_parallel=True, use_pyreader=True, ...@@ -109,7 +109,7 @@ config = hub.RunConfig(use_cuda=True, use_data_parallel=True, use_pyreader=True,
#### 优化策略 #### 优化策略
针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy` 针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy`
* `learning_rate`: Finetune过程中的最大学习率; * `learning_rate`: Fine-tune过程中的最大学习率;
* `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数; * `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数;
* `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate; * `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate;
* `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减; * `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减;
...@@ -117,7 +117,7 @@ config = hub.RunConfig(use_cuda=True, use_data_parallel=True, use_pyreader=True, ...@@ -117,7 +117,7 @@ config = hub.RunConfig(use_cuda=True, use_data_parallel=True, use_pyreader=True,
PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy``ULMFiTStrategy``DefaultFinetuneStrategy`等,详细信息参见[策略](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-API:-Strategy) PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy``ULMFiTStrategy``DefaultFinetuneStrategy`等,详细信息参见[策略](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-API:-Strategy)
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制Fine-tune的训练,包含以下可控制的参数:
* `log_interval`: 进度日志打印间隔,默认每10个step打印一次 * `log_interval`: 进度日志打印间隔,默认每10个step打印一次
* `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集 * `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集
...@@ -126,12 +126,12 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -126,12 +126,12 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
* use_pyreader: 是否使用pyreader,默认False * use_pyreader: 是否使用pyreader,默认False
* use_data_parallel: 是否使用并行计算,默认False。打开该功能依赖nccl库 * use_data_parallel: 是否使用并行计算,默认False。打开该功能依赖nccl库
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: Fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `enable_memory_optim`: 是否使用内存优化, 默认为True * `enable_memory_optim`: 是否使用内存优化, 默认为True
* `strategy`: Finetune优化策略 * `strategy`: Fine-tune优化策略
### Step4: 构建网络并创建分类迁移任务进行Finetune ### Step4: 构建网络并创建分类迁移任务进行Fine-tune
```python ```python
pooled_output = outputs["pooled_output"] pooled_output = outputs["pooled_output"]
...@@ -163,25 +163,43 @@ cls_task.finetune_and_eval() ...@@ -163,25 +163,43 @@ cls_task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
其中${HOST_IP}为本机IP地址,${PORT_NUM}为可用端口号,如本机IP地址为192.168.0.1,端口号8040,用浏览器打开192.168.0.1:8040,即可看到训练过程中指标的变化情况 其中${HOST_IP}为本机IP地址,${PORT_NUM}为可用端口号,如本机IP地址为192.168.0.1,端口号8040,用浏览器打开192.168.0.1:8040,即可看到训练过程中指标的变化情况
## 模型预测 ## 模型预测
通过Finetune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。 通过Fine-tune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。
配置脚本参数 配置脚本参数
```
```shell
CKPT_DIR="./ckpt_toxic" CKPT_DIR="./ckpt_toxic"
python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128 python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128
``` ```
其中CKPT_DIR为Finetune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致*
其中CKPT_DIR为Fine-tune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致*
参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。 参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
我们在AI Studio上提供了IPython NoteBook形式的demo,您可以直接在平台上在线体验,链接如下:
|预训练模型|任务类型|数据集|AIStudio链接|备注|
|-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
## 超参优化AutoDL Finetuner ## 超参优化AutoDL Finetuner
......
# PaddleHub 检索式问答任务 # PaddleHub 检索式问答任务
本示例将展示如何使用PaddleHub Finetune API以及Transformer类预训练模型在NLPCC-DBQA数据集上完成检索式问答任务。 本示例将展示如何使用PaddleHub Fine-tune API以及Transformer类预训练模型在NLPCC-DBQA数据集上完成检索式问答任务。
## 如何开始Finetune ## 如何开始Fine-tune
在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用ERNIE对NLPCC-DBQA数据集进行Finetune。 在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用ERNIE对NLPCC-DBQA数据集进行Fine-tune。
其中脚本参数说明如下: 其中脚本参数说明如下:
```bash ```bash
# 模型相关 # 模型相关
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数
--learning_rate: Finetune的最大学习率 --learning_rate: Fine-tune的最大学习率
--weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01 --weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01
--warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0 --warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0
--num_epoch: Finetune迭代的轮数 --num_epoch: Fine-tune迭代的轮数
--max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数 --max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数
# 任务相关 # 任务相关
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
## 代码步骤 ## 代码步骤
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -105,13 +105,13 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -105,13 +105,13 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy` 针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy`
* `learning_rate`: Finetune过程中的最大学习率; * `learning_rate`: Fine-tune过程中的最大学习率;
* `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数; * `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数;
* `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate; * `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate;
* `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减; * `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减;
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制Fine-tune的训练,包含以下可控制的参数:
* `log_interval`: 进度日志打印间隔,默认每10个step打印一次 * `log_interval`: 进度日志打印间隔,默认每10个step打印一次
* `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集 * `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集
...@@ -120,12 +120,12 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -120,12 +120,12 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
* `use_pyreader`: 是否使用pyreader,默认False。 * `use_pyreader`: 是否使用pyreader,默认False。
* `use_data_parallel`: 是否使用并行计算,默认False。打开该功能依赖nccl库。 * `use_data_parallel`: 是否使用并行计算,默认False。打开该功能依赖nccl库。
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: Fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `enable_memory_optim`: 是否使用内存优化, 默认为True * `enable_memory_optim`: 是否使用内存优化, 默认为True
* `strategy`: Finetune优化策略 * `strategy`: Fine-tune优化策略
### Step4: 构建网络并创建分类迁移任务进行Finetune ### Step4: 构建网络并创建分类迁移任务进行Fine-tune
```python ```python
pooled_output = outputs["pooled_output"] pooled_output = outputs["pooled_output"]
...@@ -157,7 +157,7 @@ cls_task.finetune_and_eval() ...@@ -157,7 +157,7 @@ cls_task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
...@@ -165,18 +165,34 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -165,18 +165,34 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
## 模型预测 ## 模型预测
通过Finetune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。 通过Fine-tune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。
配置脚本参数 配置脚本参数
``` ```
CKPT_DIR="./ckpt_qa" CKPT_DIR="./ckpt_qa"
python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128 python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128
``` ```
其中CKPT_DIR为Finetune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致* 其中CKPT_DIR为Fine-tune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致*
参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。 参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
我们在AI Studio上提供了IPython NoteBook形式的demo,您可以直接在平台上在线体验,链接如下:
|预训练模型|任务类型|数据集|AIStudio链接|备注|
|-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
## 超参优化AutoDL Finetuner ## 超参优化AutoDL Finetuner
PaddleHub还提供了超参优化(Hyperparameter Tuning)功能, 自动搜索最优模型超参得到更好的模型效果。详细信息参见[AutoDL Finetuner超参优化功能教程](../../tutorial/autofinetune.md)[使用样例](../autofinetune) PaddleHub还提供了超参优化(Hyperparameter Tuning)功能, 自动搜索最优模型超参得到更好的模型效果。详细信息参见[AutoDL Finetuner超参优化功能教程](../../tutorial/autofinetune.md)[使用样例](../autofinetune)
# PaddleHub 阅读理解 # PaddleHub 阅读理解
本示例将展示如何使用PaddleHub Finetune API以及BERT预训练模型完成阅读理解任务。 本示例将展示如何使用PaddleHub Fine-tune API以及BERT预训练模型完成阅读理解任务。
## 如何开始Finetune ## 如何开始Fine-tune
在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_finetune.sh`即可开始使用BERT对SQuAD数据集进行Finetune。 在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_finetune.sh`即可开始使用BERT对SQuAD数据集进行Fine-tune。
其中脚本参数说明如下: 其中脚本参数说明如下:
```bash ```bash
# 模型相关 # 模型相关
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数
--learning_rate: Finetune的最大学习率 --learning_rate: Fine-tune的最大学习率
--weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01 --weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01
--warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0 --warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0
--num_epoch: Finetune迭代的轮数 --num_epoch: Fine-tune迭代的轮数
--max_seq_len: BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数 --max_seq_len: BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数
--use_data_parallel: 是否使用并行计算,默认False。打开该功能依赖nccl库。 --use_data_parallel: 是否使用并行计算,默认False。打开该功能依赖nccl库。
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
## 代码步骤 ## 代码步骤
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -113,7 +113,7 @@ config = hub.RunConfig(use_cuda=True, num_epoch=2, batch_size=12, strategy=strat ...@@ -113,7 +113,7 @@ config = hub.RunConfig(use_cuda=True, num_epoch=2, batch_size=12, strategy=strat
#### 优化策略 #### 优化策略
针对ERNIE/BERT类Transformer模型,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy` 针对ERNIE/BERT类Transformer模型,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy`
`learning_rate`: Finetune过程中的最大学习率; `learning_rate`: Fine-tune过程中的最大学习率;
`weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数; `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数;
...@@ -124,19 +124,19 @@ config = hub.RunConfig(use_cuda=True, num_epoch=2, batch_size=12, strategy=strat ...@@ -124,19 +124,19 @@ config = hub.RunConfig(use_cuda=True, num_epoch=2, batch_size=12, strategy=strat
PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy``ULMFiTStrategy``DefaultFinetuneStrategy`等,详细信息参见[策略](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-API:-Strategy) PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy``ULMFiTStrategy``DefaultFinetuneStrategy`等,详细信息参见[策略](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-API:-Strategy)
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制Fine-tune的训练,包含以下可控制的参数:
* `log_interval`: 进度日志打印间隔,默认每10个step打印一次 * `log_interval`: 进度日志打印间隔,默认每10个step打印一次
* `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集 * `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集
* `save_ckpt_interval`: 模型保存间隔,请根据任务大小配置,默认只保存验证集效果最好的模型和训练结束的模型 * `save_ckpt_interval`: 模型保存间隔,请根据任务大小配置,默认只保存验证集效果最好的模型和训练结束的模型
* `use_cuda`: 是否使用GPU训练,默认为False * `use_cuda`: 是否使用GPU训练,默认为False
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: Fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `enable_memory_optim`: 是否使用内存优化, 默认为True * `enable_memory_optim`: 是否使用内存优化, 默认为True
* `strategy`: Finetune优化策略 * `strategy`: Fine-tune优化策略
### Step4: 构建网络并创建阅读理解迁移任务进行Finetune ### Step4: 构建网络并创建阅读理解迁移任务进行Fine-tune
```python ```python
seq_output = outputs["sequence_output"] seq_output = outputs["sequence_output"]
...@@ -170,7 +170,7 @@ reading_comprehension_task.finetune_and_eval() ...@@ -170,7 +170,7 @@ reading_comprehension_task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
...@@ -178,14 +178,14 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -178,14 +178,14 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
## 模型预测 ## 模型预测
通过Finetune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。 通过Fine-tune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。
配置脚本参数 配置脚本参数
```bash ```bash
CKPT_DIR=".ckpt_rc/" CKPT_DIR=".ckpt_rc/"
python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 384 --batch_size=1 python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 384 --batch_size=1
``` ```
其中CKPT_DIR为Finetune API保存最佳模型的路径, max_seq_len是ERNIE/BERT模型的最大序列长度,*请与训练时配置的参数保持一致* 其中CKPT_DIR为Fine-tune API保存最佳模型的路径, max_seq_len是ERNIE/BERT模型的最大序列长度,*请与训练时配置的参数保持一致*
参数配置正确后,请执行脚本`sh run_predict.sh`,预测时程序会自动调用官方评价脚本即可看到SQuAD数据集的最终效果。 参数配置正确后,请执行脚本`sh run_predict.sh`,预测时程序会自动调用官方评价脚本即可看到SQuAD数据集的最终效果。
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
...@@ -193,6 +193,20 @@ python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 384 --batch_size=1 ...@@ -193,6 +193,20 @@ python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 384 --batch_size=1
**NOTE:** **NOTE:**
运行预测脚本时,建议用单卡预测。 运行预测脚本时,建议用单卡预测。
我们在AI Studio上提供了IPython NoteBook形式的demo,您可以直接在平台上在线体验,链接如下:
|预训练模型|任务类型|数据集|AIStudio链接|备注|
|-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
## 超参优化AutoDL Finetuner ## 超参优化AutoDL Finetuner
......
# PaddleHub 回归任务 # PaddleHub 回归任务
本示例将展示如何使用PaddleHub Finetune API以及Transformer类模型完成回归任务。 本示例将展示如何使用PaddleHub Fine-tune API以及Transformer类模型完成回归任务。
## 如何开始Finetune ## 如何开始Fine-tune
在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_regression.sh`即可开始使用BERT对GLUE-STSB数据集进行Finetune。 在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_regression.sh`即可开始使用BERT对GLUE-STSB数据集进行Fine-tune。
其中脚本参数说明如下: 其中脚本参数说明如下:
```bash ```bash
# 模型相关 # 模型相关
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数
--learning_rate: Finetune的最大学习率 --learning_rate: Fine-tune的最大学习率
--weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01 --weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01
--warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0 --warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0
--num_epoch: Finetune迭代的轮数 --num_epoch: Fine-tune迭代的轮数
--max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数 --max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数
--use_data_parallel: 是否使用并行计算,默认True。打开该功能依赖nccl库。 --use_data_parallel: 是否使用并行计算,默认True。打开该功能依赖nccl库。
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
## 代码步骤 ## 代码步骤
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -106,25 +106,25 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -106,25 +106,25 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy` 针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy`
`learning_rate`: Finetune过程中的最大学习率; `learning_rate`: Fine-tune过程中的最大学习率;
`weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数; `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数;
`warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate; `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate;
`lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减; `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减;
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制Fine-tune的训练,包含以下可控制的参数:
* `log_interval`: 进度日志打印间隔,默认每10个step打印一次 * `log_interval`: 进度日志打印间隔,默认每10个step打印一次
* `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集 * `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集
* `save_ckpt_interval`: 模型保存间隔,请根据任务大小配置,默认只保存验证集效果最好的模型和训练结束的模型 * `save_ckpt_interval`: 模型保存间隔,请根据任务大小配置,默认只保存验证集效果最好的模型和训练结束的模型
* `use_cuda`: 是否使用GPU训练,默认为False * `use_cuda`: 是否使用GPU训练,默认为False
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: Fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `enable_memory_optim`: 是否使用内存优化, 默认为True * `enable_memory_optim`: 是否使用内存优化, 默认为True
* `strategy`: Finetune优化策略 * `strategy`: Fine-tune优化策略
### Step4: 构建网络并创建回归迁移任务进行Finetune ### Step4: 构建网络并创建回归迁移任务进行Fine-tune
```python ```python
pooled_output = outputs["pooled_output"] pooled_output = outputs["pooled_output"]
...@@ -154,7 +154,7 @@ reg_task.finetune_and_eval() ...@@ -154,7 +154,7 @@ reg_task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
...@@ -162,17 +162,32 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -162,17 +162,32 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
## 模型预测 ## 模型预测
通过Finetune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。 通过Fine-tune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。
配置脚本参数 配置脚本参数
``` ```
CKPT_DIR="ckpt_stsb/" CKPT_DIR="ckpt_stsb/"
python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128 python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128
``` ```
其中CKPT_DIR为Finetune API保存最佳模型的路径, max_seq_len是ERNIE/BERT模型的最大序列长度,*请与训练时配置的参数保持一致* 其中CKPT_DIR为Fine-tune API保存最佳模型的路径, max_seq_len是ERNIE/BERT模型的最大序列长度,*请与训练时配置的参数保持一致*
参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下回归任务预测结果。 参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下回归任务预测结果。
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
我们在AI Studio上提供了IPython NoteBook形式的demo,您可以直接在平台上在线体验,链接如下:
|预训练模型|任务类型|数据集|AIStudio链接|备注|
|-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
## 超参优化AutoDL Finetuner ## 超参优化AutoDL Finetuner
......
# Senta 情感分析 # Senta 情感分析
本示例展示如何使用PaddleHub Senta Module进行预测。 本示例展示如何使用PaddleHub Senta预训练模型进行预测。
Senta是百度NLP开放的中文情感分析模型,可以用于进行中文句子的情感分析,输出结果为`{正向/中性/负向}`中的一个,关于模型更多信息参见[Senta](https://www.paddlepaddle.org.cn/hubdetail?name=senta_bilstm&en_category=SentimentAnalysis), 本示例代码选择的是Senta-BiLSTM模型。 Senta是百度NLP开放的中文情感分析模型,可以用于进行中文句子的情感分析,输出结果为`{正向/中性/负向}`中的一个,关于模型更多信息参见[Senta](https://www.paddlepaddle.org.cn/hubdetail?name=senta_bilstm&en_category=SentimentAnalysis), 本示例代码选择的是Senta-BiLSTM模型。
...@@ -27,7 +27,7 @@ test.txt 存放待预测文本, 如: ...@@ -27,7 +27,7 @@ test.txt 存放待预测文本, 如:
python senta_demo.py python senta_demo.py
``` ```
## 通过PaddleHub Finetune API微调 ## 通过PaddleHub Fine-tune API微调
`senta_finetune.py` 给出了如何使用Senta模型的句子特征进行Fine-tuning的实例代码。 `senta_finetune.py` 给出了如何使用Senta模型的句子特征进行Fine-tuning的实例代码。
可以运行以下命令在ChnSentiCorp数据集上进行Fine-tuning。 可以运行以下命令在ChnSentiCorp数据集上进行Fine-tuning。
...@@ -40,11 +40,11 @@ $ sh run_finetune.sh ...@@ -40,11 +40,11 @@ $ sh run_finetune.sh
```bash ```bash
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数
--checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型 --checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型
--num_epoch: Finetune迭代的轮数 --num_epoch: Fine-tune迭代的轮数
--use_gpu: 是否使用GPU进行训练,如果机器支持GPU且安装了GPU版本的PaddlePaddle,我们建议您打开这个开关 --use_gpu: 是否使用GPU进行训练,如果机器支持GPU且安装了GPU版本的PaddlePaddle,我们建议您打开这个开关
``` ```
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -110,21 +110,21 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -110,21 +110,21 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
其中`AdamWeightDecayStrategy` 其中`AdamWeightDecayStrategy`
* `learning_rate`: Finetune过程中的最大学习率; * `learning_rate`: Fine-tune过程中的最大学习率;
* `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数; * `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数;
* `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate; * `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate;
* `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减; * `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减;
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制Fine-tune的训练,包含以下可控制的参数:
* `use_cuda`: 是否使用GPU训练,默认为False * `use_cuda`: 是否使用GPU训练,默认为False
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: Fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `strategy`: Finetune优化策略 * `strategy`: Fine-tune优化策略
### Step4: 构建网络并创建分类迁移任务进行Finetune ### Step4: 构建网络并创建分类迁移任务进行Fine-tune
```python ```python
sent_feature = outputs["sentence_feature"] sent_feature = outputs["sentence_feature"]
...@@ -146,7 +146,7 @@ cls_task.finetune_and_eval() ...@@ -146,7 +146,7 @@ cls_task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
...@@ -154,27 +154,32 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -154,27 +154,32 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
## 模型预测 ## 模型预测
通过Finetune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。 通过Fine-tune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。
配置脚本参数 配置脚本参数
``` ```
CKPT_DIR="ckpt_chnsentiment/" CKPT_DIR="ckpt_chnsentiment/"
python predict.py --checkpoint_dir $CKPT_DIR python predict.py --checkpoint_dir $CKPT_DIR
``` ```
其中CKPT_DIR为Finetune API保存最佳模型的路径 其中CKPT_DIR为Fine-tune API保存最佳模型的路径
参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。 参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
同时,我们在AI Studio上提供了IPython NoteBook形式的demo,您可以直接在平台上在线体验,链接如下: 我们在AI Studio上提供了IPython NoteBook形式的demo,您可以直接在平台上在线体验,链接如下:
|预训练模型|任务类型|数据集|AIStudio链接|备注| |预训练模型|任务类型|数据集|AIStudio链接|备注|
|-|-|-|-|-| |-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)|| |ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成文本分类迁移学习。| |ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)|| |ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成序列标注迁移学习。| |ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)|| |ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
......
# 句子相似度 # 句子相似度
本示例展示如何使用word2vec_skipgram模型进行句子相似度预测。 本示例展示如何使用[word2vec_skipgram](https://www.paddlepaddle.org.cn/hubdetail?name=word2vec_skipgram&en_category=SemanticModel)模型进行句子相似度预测。
该示例运用最简单的方法,将一个句子中所有单词的word embedding叠加,得到句子向量。之后计算余弦相似度。 该示例运用最简单的方法,将一个句子中所有单词的word embedding叠加,得到句子向量。之后计算余弦相似度。
......
# PaddleHub 序列标注 # PaddleHub 序列标注
## 如何开始Finetune ## 如何开始Fine-tune
在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_sequence_label.sh`即可开始使用ERNIE对MSRA_NER数据集进行Finetune。 在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_sequence_label.sh`即可开始使用ERNIE对MSRA_NER数据集进行Fine-tune。
其中脚本参数说明如下: 其中脚本参数说明如下:
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
# 模型相关 # 模型相关
--use_gpu: 是否使用GPU,默认为False --use_gpu: 是否使用GPU,默认为False
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数
--learning_rate: Finetune的最大学习率 --learning_rate: Fine-tune的最大学习率
--weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01 --weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01
--warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0 --warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0
--num_epoch: Finetune迭代的轮数 --num_epoch: Fine-tune迭代的轮数
--max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数。 --max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数。
--use_data_parallel: 是否使用并行计算,默认True。打开该功能依赖nccl库。 --use_data_parallel: 是否使用并行计算,默认True。打开该功能依赖nccl库。
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
## 代码步骤 ## 代码步骤
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -83,7 +83,7 @@ reader = hub.reader.SequenceLabelReader( ...@@ -83,7 +83,7 @@ reader = hub.reader.SequenceLabelReader(
SequenceLabelReader中的`data_generator`会自动按照模型对应词表对数据进行切词,以迭代器的方式返回ERNIE/BERT所需要的Tensor格式,包括`input_ids``position_ids``segment_id`与序列对应的mask `input_mask`. SequenceLabelReader中的`data_generator`会自动按照模型对应词表对数据进行切词,以迭代器的方式返回ERNIE/BERT所需要的Tensor格式,包括`input_ids``position_ids``segment_id`与序列对应的mask `input_mask`.
**NOTE**: **NOTE**:
* Reader返回tensor的顺序是固定的,默认按照input_ids, position_ids, segment_id, input_mask这一顺序返回。 * Reader返回tensor的顺序是固定的,默认按照input_ids, position_ids, segment_id, input_mask这一顺序返回。
* 如果选择的预训练模型不是ERNIE Tiny,则无需设定sp_model_path和word_dict_path参数 * 如果选择的预训练模型不是ERNIE Tiny,则无需设定sp_model_path和word_dict_path参数
...@@ -109,25 +109,25 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr ...@@ -109,25 +109,25 @@ PaddleHub提供了许多优化策略,如`AdamWeightDecayStrategy`、`ULMFiTStr
针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy` 针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy`
`learning_rate`: Finetune过程中的最大学习率; `learning_rate`: fine-tune过程中的最大学习率;
`weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数; `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数;
`warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate; `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate;
`lr_scheduler`: 有两种策略可选(1)`linear_decay`策略学习率会在最高点后以线性方式衰减;(2) `noam_decay`策略学习率会在最高点以多项式形式衰减; `lr_scheduler`: 有两种策略可选(1)`linear_decay`策略学习率会在最高点后以线性方式衰减;(2) `noam_decay`策略学习率会在最高点以多项式形式衰减;
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制fine-tune的训练,包含以下可控制的参数:
* `log_interval`: 进度日志打印间隔,默认每10个step打印一次 * `log_interval`: 进度日志打印间隔,默认每10个step打印一次
* `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集 * `eval_interval`: 模型评估的间隔,默认每100个step评估一次验证集
* `save_ckpt_interval`: 模型保存间隔,请根据任务大小配置,默认只保存验证集效果最好的模型和训练结束的模型 * `save_ckpt_interval`: 模型保存间隔,请根据任务大小配置,默认只保存验证集效果最好的模型和训练结束的模型
* `use_cuda`: 是否使用GPU训练,默认为False * `use_cuda`: 是否使用GPU训练,默认为False
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `enable_memory_optim`: 是否使用内存优化, 默认为True * `enable_memory_optim`: 是否使用内存优化, 默认为True
* `strategy`: Finetune优化策略 * `strategy`: fine-tune优化策略
### Step4: 构建网络并创建序列标注迁移任务进行Finetune ### Step4: 构建网络并创建序列标注迁移任务进行fine-tune
```python ```python
sequence_output = outputs["sequence_output"] sequence_output = outputs["sequence_output"]
...@@ -162,7 +162,7 @@ seq_label_task.finetune_and_eval() ...@@ -162,7 +162,7 @@ seq_label_task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
...@@ -170,13 +170,13 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -170,13 +170,13 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
## 模型预测 ## 模型预测
通过Finetune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。 通过Fine-tune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。
配置脚本参数 配置脚本参数
``` ```
CKPT_DIR="ckpt_sequence_label/" CKPT_DIR="ckpt_sequence_label/"
python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128 python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128
``` ```
其中CKPT_DIR为Finetune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致* 其中CKPT_DIR为Fine-tune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致*
参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。 参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
...@@ -187,11 +187,11 @@ python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128 ...@@ -187,11 +187,11 @@ python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128
|-|-|-|-|-| |-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)|| |ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)|| |ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成文本分类迁移学习。| |ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)|| |ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成序列标注迁移学习。| |ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)|| |ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Finetune API完成情感分类迁移学习。| |Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)|| |Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)|| |LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)|| |Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
......
# SSD 目标检测 # SSD 目标检测
本示例展示如何使用SSD Module进行目标检测预测。 本示例展示如何使用[SSD](https://www.paddlepaddle.org.cn/hubdetail?name=ssd_mobilenet_v1_pascal&en_category=ObjectDetection)预训练模型进行目标检测预测。
SSD是一个目标检测模型,可以检测出图片中的实物的类别和位置,PaddleHub发布的SSD模型通过pascalvoc数据集训练,支持20个数据类别的检测,关于模型的更多信息参见[SSD](https://www.paddlepaddle.org.cn/hubdetail?name=ssd_mobilenet_v1_pascal&en_category=ObjectDetection) SSD是一个目标检测模型,可以检测出图片中的实物的类别和位置,PaddleHub发布的SSD模型通过pascalvoc数据集训练,支持20个数据类别的检测
## 命令行方式预测 ## 命令行方式预测
...@@ -15,7 +15,7 @@ test.txt 存放待检测图片的存放路径 ...@@ -15,7 +15,7 @@ test.txt 存放待检测图片的存放路径
## 通过python API预测 ## 通过python API预测
`ssd_demo.py`给出了使用python API调用Module预测的示例代码 `ssd_demo.py`给出了使用python API调用SSD预测的示例代码
通过以下命令试验下效果 通过以下命令试验下效果
```shell ```shell
......
# PaddleHub 文本分类 # PaddleHub 文本分类
本示例将展示如何使用PaddleHub Finetune API以及Transformer类预训练模型(ERNIE/BERT/RoBERTa)完成分类任务。 本示例将展示如何使用PaddleHub Fine-tune API以及Transformer类预训练模型(ERNIE/BERT/RoBERTa)完成分类任务。
## 如何开始Finetune ## 如何开始Fine-tune
在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用ERNIE对ChnSentiCorp数据集进行Finetune。 在完成安装PaddlePaddle与PaddleHub后,通过执行脚本`sh run_classifier.sh`即可开始使用ERNIE对ChnSentiCorp数据集进行Fine-tune。
其中脚本参数说明如下: 其中脚本参数说明如下:
```bash ```bash
--batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数 --batch_size: 批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数
--learning_rate: Finetune的最大学习率 --learning_rate: Fine-tune的最大学习率
--weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01 --weight_decay: 控制正则项力度的参数,用于防止过拟合,默认为0.01
--warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0 --warmup_proportion: 学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0
--num_epoch: Finetune迭代的轮数 --num_epoch: Fine-tune迭代的轮数
--max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数 --max_seq_len: ERNIE/BERT模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数
--use_data_parallel: 是否使用并行计算,默认True。打开该功能依赖nccl库。 --use_data_parallel: 是否使用并行计算,默认True。打开该功能依赖nccl库。
--checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型 --checkpoint_dir: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
## 代码步骤 ## 代码步骤
使用PaddleHub Finetune API进行Finetune可以分为4个步骤 使用PaddleHub Fine-tune API进行Fine-tune可以分为4个步骤
### Step1: 加载预训练模型 ### Step1: 加载预训练模型
...@@ -129,21 +129,21 @@ config = hub.RunConfig(use_cuda=True, num_epoch=3, batch_size=32, strategy=strat ...@@ -129,21 +129,21 @@ config = hub.RunConfig(use_cuda=True, num_epoch=3, batch_size=32, strategy=strat
#### 优化策略 #### 优化策略
针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy` 针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略`AdamWeightDecayStrategy`
* `learning_rate`: Finetune过程中的最大学习率; * `learning_rate`: Fine-tune过程中的最大学习率;
* `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数; * `weight_decay`: 模型的正则项参数,默认0.01,如果模型有过拟合倾向,可适当调高这一参数;
* `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate; * `warmup_proportion`: 如果warmup_proportion>0, 例如0.1, 则学习率会在前10%的steps中线性增长至最高值learning_rate;
* `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减; * `lr_scheduler`: 有两种策略可选(1) `linear_decay`策略学习率会在最高点后以线性方式衰减; `noam_decay`策略学习率会在最高点以多项式形式衰减;
#### 运行配置 #### 运行配置
`RunConfig` 主要控制Finetune的训练,包含以下可控制的参数: `RunConfig` 主要控制Fine-tune的训练,包含以下可控制的参数:
* `use_cuda`: 是否使用GPU训练,默认为False * `use_cuda`: 是否使用GPU训练,默认为False
* `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成 * `checkpoint_dir`: 模型checkpoint保存路径, 若用户没有指定,程序会自动生成
* `num_epoch`: finetune的轮数 * `num_epoch`: Fine-tune的轮数
* `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size * `batch_size`: 训练的批大小,如果使用GPU,请根据实际情况调整batch_size
* `strategy`: Finetune优化策略 * `strategy`: Fine-tune优化策略
### Step4: 构建网络并创建分类迁移任务进行Finetune ### Step4: 构建网络并创建分类迁移任务进行Fine-tune
```python ```python
pooled_output = outputs["pooled_output"] pooled_output = outputs["pooled_output"]
...@@ -175,7 +175,7 @@ cls_task.finetune_and_eval() ...@@ -175,7 +175,7 @@ cls_task.finetune_and_eval()
## 可视化 ## 可视化
Finetune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令 Fine-tune API训练过程中会自动对关键训练指标进行打点,启动程序后执行下面命令
```bash ```bash
$ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM} $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_NUM}
``` ```
...@@ -183,13 +183,13 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N ...@@ -183,13 +183,13 @@ $ tensorboard --logdir $CKPT_DIR/visualization --host ${HOST_IP} --port ${PORT_N
## 模型预测 ## 模型预测
通过Finetune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。 通过Fine-tune完成模型训练后,在对应的ckpt目录下,会自动保存验证集上效果最好的模型。
配置脚本参数 配置脚本参数
``` ```
CKPT_DIR="ckpt_chnsentiment/" CKPT_DIR="ckpt_chnsentiment/"
python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128 python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128
``` ```
其中CKPT_DIR为Finetune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致* 其中CKPT_DIR为Fine-tune API保存最佳模型的路径, max_seq_len是ERNIE模型的最大序列长度,*请与训练时配置的参数保持一致*
参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。 参数配置正确后,请执行脚本`sh run_predict.sh`,即可看到以下文本分类预测结果, 以及最终准确率。
如需了解更多预测步骤,请参考`predict.py` 如需了解更多预测步骤,请参考`predict.py`
...@@ -206,11 +206,11 @@ python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128 ...@@ -206,11 +206,11 @@ python predict.py --checkpoint_dir $CKPT_DIR --max_seq_len 128
|-|-|-|-|-| |-|-|-|-|-|
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)|| |ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216772)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)|| |ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216764)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成文本分类迁移学习。| |ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216649)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)|| |ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216787)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Finetune API完成序列标注迁移学习。| |ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216683)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)|| |ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215599)||
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Finetune API完成情感分类迁移学习。| |Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216851)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)|| |Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216735)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)|| |LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215641)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)|| |Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216749)||
......
...@@ -13,5 +13,5 @@ ...@@ -13,5 +13,5 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
""" PaddleHub version string """ """ PaddleHub version string """
hub_version = "1.4.0" hub_version = "1.4.1"
module_proto_version = "1.0.0" module_proto_version = "1.0.0"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册