Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleHub
提交
cbfd7d16
P
PaddleHub
项目概览
PaddlePaddle
/
PaddleHub
大约 1 年 前同步成功
通知
282
Star
12117
Fork
2091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
200
列表
看板
标记
里程碑
合并请求
4
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleHub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
200
Issue
200
列表
看板
标记
里程碑
合并请求
4
合并请求
4
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
cbfd7d16
编写于
4月 12, 2019
作者:
Z
Zeyu Chen
提交者:
GitHub
4月 12, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
69baaf96
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
12 deletion
+18
-12
demo/ernie-classification/README.md
demo/ernie-classification/README.md
+18
-12
未找到文件。
demo/ernie-classification/README.md
浏览文件 @
cbfd7d16
...
...
@@ -58,23 +58,23 @@ module = hub.Module(name="bert_chinese_L-12_H-768_A-12")
### Step2: 准备数据集并使用ClassifyReader读取数据
```
python
with
fluid
.
program_guard
(
program
):
label
=
fluid
.
layers
.
data
(
name
=
"label"
,
shape
=
[
1
],
dtype
=
'int64'
)
reader
=
hub
.
reader
.
ClassifyReader
(
dataset
=
hub
.
dataset
.
ChnSentiCorp
(),
vocab_path
=
module
.
get_vocab_path
(),
max_seq_len
=
128
)
```
`hub.dataset.ChnSentiCorp()`
会自动从网络下载数据集并解压到用户目录下.paddlehub/dataset目录
pooled_output
=
outputs
[
"pooled_output"
]
`module.get_vaocab_path()`
会返回ERNIE/BERT模型对应的词表
feed_list
=
[
inputs
[
"input_ids"
].
name
,
inputs
[
"position_ids"
].
name
,
inputs
[
"segment_ids"
].
name
,
inputs
[
"input_mask"
].
name
,
label
.
name
]
`max_seq_len`
需要与Step1中context接口传入的序列长度保持一致
ClassifyReader中的
`data_generator`
会自动按照模型对应词表对数据进行切词,以迭代器的方式返回ERNIE/BERT所需要的Tensor格式,包括
`input_ids`
,
`position_ids`
,
`segment_id`
与序列对应的mask
`input_mask`
.
cls_task
=
hub
.
create_text_classification_task
(
pooled_output
,
label
,
num_classes
=
reader
.
get_num_labels
())
```
### Step3: 构建网络并创建分类迁移任务
```
python
with
fluid
.
program_guard
(
program
):
with
fluid
.
program_guard
(
program
):
# NOTE: 必须使用fluid.program_guard接口传入Module返回的预训练模型program
label
=
fluid
.
layers
.
data
(
name
=
"label"
,
shape
=
[
1
],
dtype
=
'int64'
)
pooled_output
=
outputs
[
"pooled_output"
]
...
...
@@ -85,8 +85,13 @@ with fluid.program_guard(program):
]
cls_task
=
hub
.
create_text_classification_task
(
pooled_output
,
label
,
num_classes
=
reader
.
get_num_labels
())
feature
=
pooled_output
,
label
=
label
,
num_classes
=
reader
.
get_num_labels
())
```
**NOTE:**
基于预训练模型的迁移学习网络搭建,必须在
`with fluid.program_gurad()`
作用域内组件网络
1.
`outputs["pooled_output"]`
返回了ERNIE/BERT模型对应的[CLS]向量,可以用于句子或句对的特征表达。
2.
`feed_list`
中的inputs参数指名了ERNIE/BERT中的输入tensor,以及label,与ClassifyReader返回的结果一致。
3.
`create_text_classification_task`
通过输入特征,label与迁移的类别数,可以生成适用于文本分类的迁移任务
`cls_task`
### Step4:选择优化策略并开始Finetune
```
python
...
...
@@ -100,3 +105,4 @@ config = hub.RunConfig(use_cuda=True, num_epoch=3, batch_size=32, strategy=strat
hub
.
finetune_and_eval
(
task
=
cls_task
,
data_reader
=
reader
,
feed_list
=
feed_list
,
config
=
config
)
```
针对ERNIE与BERT类任务,PaddleHub封装了适合这一任务的迁移学习优化策略。用户可以通过配置学习率,权重
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录