Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
hapi
提交
3c0f4c32
H
hapi
项目概览
PaddlePaddle
/
hapi
通知
11
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hapi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
3c0f4c32
编写于
4月 30, 2020
作者:
P
pkpk
提交者:
GitHub
4月 30, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #68 from guoshengCS/fix-seq2seq-cpu
Fix seq2seq and transformer on cpu
上级
08295d55
8f12e35d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
19 addition
and
7 deletion
+19
-7
examples/seq2seq/README.md
examples/seq2seq/README.md
+13
-1
examples/seq2seq/predict.py
examples/seq2seq/predict.py
+1
-3
examples/seq2seq/train.py
examples/seq2seq/train.py
+2
-1
examples/transformer/predict.py
examples/transformer/predict.py
+1
-1
examples/transformer/train.py
examples/transformer/train.py
+2
-1
未找到文件。
examples/seq2seq/README.md
浏览文件 @
3c0f4c32
...
...
@@ -22,10 +22,22 @@ Sequence to Sequence (Seq2Seq),使用编码器-解码器(Encoder-Decoder)
本目录包含Seq2Seq的一个经典样例:机器翻译,实现了一个base model(不带attention机制),一个带attention机制的翻译模型。Seq2Seq翻译模型,模拟了人类在进行翻译类任务时的行为:先解析源语言,理解其含义,再根据该含义来写出目标语言的语句。更多关于机器翻译的具体原理和数学表达式,我们推荐参考飞桨官网
[
机器翻译案例
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/user_guides/nlp_case/machine_translation/README.cn.html
)
。
## 模型概览
本模型中,在编码器方面,我们采用了基于LSTM的多层的RNN encoder;在解码器方面,我们使用了带注意力(Attention)机制的RNN decoder,并同时提供了一个不带注意力机制的解码器实现作为对比。在预测时我们使用柱搜索(beam search)算法来生成翻译的目标语句。
## 代码下载
克隆代码库到本地,并设置
`PYTHONPATH`
环境变量
```
shell
git clone https://github.com/PaddlePaddle/hapi
cd
hapi
export
PYTHONPATH
=
$PYTHONPATH
:
`
pwd
`
cd
examples/seq2seq
```
## 数据介绍
本教程使用
[
IWSLT'15 English-Vietnamese data
](
https://nlp.stanford.edu/projects/nmt/
)
数据集中的英语到越南语的数据作为训练语料,tst2012的数据作为开发集,tst2013的数据作为测试集
...
...
@@ -96,7 +108,7 @@ python train.py \
```
sh
export
CUDA_VISIBLE_DEVICES
=
0
python
infer
.py
\
python
predict
.py
\
--attention
True
\
--src_lang
en
--tar_lang
vi
\
--num_layers
2
\
...
...
examples/seq2seq/predict.py
浏览文件 @
3c0f4c32
...
...
@@ -78,8 +78,6 @@ def do_predict(args):
dataset
=
dataset
,
batch_sampler
=
batch_sampler
,
places
=
device
,
feed_list
=
None
if
fluid
.
in_dygraph_mode
()
else
[
x
.
forward
()
for
x
in
inputs
],
collate_fn
=
partial
(
prepare_infer_input
,
bos_id
=
bos_id
,
eos_id
=
eos_id
,
pad_id
=
eos_id
),
num_workers
=
0
,
...
...
@@ -98,7 +96,7 @@ def do_predict(args):
beam_size
=
args
.
beam_size
,
max_out_len
=
256
)
model
.
prepare
(
inputs
=
inputs
)
model
.
prepare
(
inputs
=
inputs
,
device
=
device
)
# load the trained model
assert
args
.
reload_model
,
(
...
...
examples/seq2seq/train.py
浏览文件 @
3c0f4c32
...
...
@@ -73,7 +73,8 @@ def do_train(args):
CrossEntropyCriterion
(),
ppl_metric
,
inputs
=
inputs
,
labels
=
labels
)
labels
=
labels
,
device
=
device
)
model
.
fit
(
train_data
=
train_loader
,
eval_data
=
eval_loader
,
epochs
=
args
.
max_epoch
,
...
...
examples/transformer/predict.py
浏览文件 @
3c0f4c32
...
...
@@ -119,7 +119,7 @@ def do_predict(args):
args
.
eos_idx
,
beam_size
=
args
.
beam_size
,
max_out_len
=
args
.
max_out_len
)
transformer
.
prepare
(
inputs
=
inputs
)
transformer
.
prepare
(
inputs
=
inputs
,
device
=
device
)
# load the trained model
assert
args
.
init_from_params
,
(
...
...
examples/transformer/train.py
浏览文件 @
3c0f4c32
...
...
@@ -138,7 +138,8 @@ def do_train(args):
parameter_list
=
transformer
.
parameters
()),
CrossEntropyCriterion
(
args
.
label_smooth_eps
),
inputs
=
inputs
,
labels
=
labels
)
labels
=
labels
,
device
=
device
)
## init from some checkpoint, to resume the previous training
if
args
.
init_from_checkpoint
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录