Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Edaker
PaddleHub
提交
69baaf96
P
PaddleHub
项目概览
Edaker
/
PaddleHub
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleHub
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleHub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
69baaf96
编写于
4月 12, 2019
作者:
Z
Zeyu Chen
提交者:
GitHub
4月 12, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
e1e93667
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
50 addition
and
7 deletion
+50
-7
demo/ernie-classification/README.md
demo/ernie-classification/README.md
+50
-7
未找到文件。
demo/ernie-classification/README.md
浏览文件 @
69baaf96
...
...
@@ -23,8 +23,7 @@
--weight_decay
:
--checkpoint_dir
: 模型保存路径,PaddleHub会自动保存验证集上表现最好的模型
--num_epoch
: Finetune迭代的轮数
--max_seq_len
: ERNIE模型使用的最大序列长度,最大不能超过512,
若出现显存不足错误,请调低这一参数
--max_seq_len
: ERNIE模型使用的最大序列长度,最大不能超过512, 若出现显存不足错误,请调低这一参数
```
## 代码步骤
...
...
@@ -34,9 +33,8 @@
### Step1: 加载预训练模型
```
python
module
=
hub
.
Module
(
name
=
"ernie"
)
inputs
,
outputs
,
program
=
module
.
context
(
trainable
=
True
,
max_seq_len
=
128
)
module
=
hub
.
Module
(
name
=
"ernie"
)
inputs
,
outputs
,
program
=
module
.
context
(
trainable
=
True
,
max_seq_len
=
128
)
```
其中最大序列长度
`max_seq_len`
是可以调整的参数,建议值128,根据任务文本长度不同可以调整该值,但最大不超过512。
...
...
@@ -54,6 +52,51 @@ BERT-Base, Chinese | bert_chinese_L-12_H-768_A-12
```
python
# 即可无缝切换BERT中文模型
module
=
hub
.
Module
(
name
=
"bert_chinese_L-12_H-768_A-12"
)
# 更换name参数即可无缝切换BERT中文模型
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'
)
pooled_output
=
outputs
[
"pooled_output"
]
feed_list
=
[
inputs
[
"input_ids"
].
name
,
inputs
[
"position_ids"
].
name
,
inputs
[
"segment_ids"
].
name
,
inputs
[
"input_mask"
].
name
,
label
.
name
]
cls_task
=
hub
.
create_text_classification_task
(
pooled_output
,
label
,
num_classes
=
reader
.
get_num_labels
())
```
### Step3: 构建网络并创建分类迁移任务
```
python
with
fluid
.
program_guard
(
program
):
label
=
fluid
.
layers
.
data
(
name
=
"label"
,
shape
=
[
1
],
dtype
=
'int64'
)
pooled_output
=
outputs
[
"pooled_output"
]
feed_list
=
[
inputs
[
"input_ids"
].
name
,
inputs
[
"position_ids"
].
name
,
inputs
[
"segment_ids"
].
name
,
inputs
[
"input_mask"
].
name
,
label
.
name
]
cls_task
=
hub
.
create_text_classification_task
(
pooled_output
,
label
,
num_classes
=
reader
.
get_num_labels
())
```
### Step4:选择优化策略并开始Finetune
```
python
strategy
=
hub
.
BERTFinetuneStrategy
(
weight_decay
=
0.01
,
learning_rate
=
5e-5
,
warmup_strategy
=
"linear_warmup_decay"
,
)
config
=
hub
.
RunConfig
(
use_cuda
=
True
,
num_epoch
=
3
,
batch_size
=
32
,
strategy
=
strategy
)
hub
.
finetune_and_eval
(
task
=
cls_task
,
data_reader
=
reader
,
feed_list
=
feed_list
,
config
=
config
)
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录