Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
hapi
提交
d88cbf75
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看板
提交
d88cbf75
编写于
5月 07, 2020
作者:
G
guosheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add StackedRNN and BiRNN.
上级
eb20b652
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
613 addition
and
31 deletion
+613
-31
hapi/tests/test_text.py
hapi/tests/test_text.py
+174
-5
hapi/text/text.py
hapi/text/text.py
+439
-26
未找到文件。
hapi/tests/test_text.py
浏览文件 @
d88cbf75
...
@@ -25,7 +25,6 @@ from paddle.fluid.dygraph import Embedding, Linear, Layer
...
@@ -25,7 +25,6 @@ from paddle.fluid.dygraph import Embedding, Linear, Layer
from
paddle.fluid.layers
import
BeamSearchDecoder
from
paddle.fluid.layers
import
BeamSearchDecoder
import
hapi.text
as
text
import
hapi.text
as
text
from
hapi.model
import
Model
,
Input
,
set_device
from
hapi.model
import
Model
,
Input
,
set_device
# from hapi.text.text import BasicLSTMCell, BasicGRUCell, RNN, DynamicDecode, MultiHeadAttention, TransformerEncoder, TransformerCell
from
hapi.text.text
import
*
from
hapi.text.text
import
*
...
@@ -515,15 +514,142 @@ class TestTransformerBeamSearchDecoder(ModuleApiTest):
...
@@ -515,15 +514,142 @@ class TestTransformerBeamSearchDecoder(ModuleApiTest):
class
TestSequenceTagging
(
ModuleApiTest
):
class
TestSequenceTagging
(
ModuleApiTest
):
def
setUp
(
self
):
def
setUp
(
self
):
shape
=
(
2
,
4
,
128
)
self
.
inputs
=
[
np
.
random
.
randint
(
0
,
100
,
(
2
,
8
)).
astype
(
"int64"
),
np
.
random
.
randint
(
1
,
8
,
(
2
)).
astype
(
"int64"
),
np
.
random
.
randint
(
0
,
5
,
(
2
,
8
)).
astype
(
"int64"
)
]
self
.
outputs
=
None
self
.
attrs
=
{
"vocab_size"
:
100
,
"num_labels"
:
5
}
self
.
param_states
=
{}
@
staticmethod
def
model_init
(
self
,
vocab_size
,
num_labels
,
word_emb_dim
=
128
,
grnn_hidden_dim
=
128
,
emb_learning_rate
=
0.1
,
crf_learning_rate
=
0.1
,
bigru_num
=
2
,
init_bound
=
0.1
):
self
.
tagger
=
SequenceTagging
(
vocab_size
,
num_labels
,
word_emb_dim
,
grnn_hidden_dim
,
emb_learning_rate
,
crf_learning_rate
,
bigru_num
,
init_bound
)
@
staticmethod
def
model_forward
(
self
,
word
,
lengths
,
target
=
None
):
return
self
.
tagger
(
word
,
lengths
,
target
)
def
make_inputs
(
self
):
inputs
=
[
Input
(
[
None
,
None
],
"int64"
,
name
=
"word"
),
Input
(
[
None
],
"int64"
,
name
=
"lengths"
),
Input
(
[
None
,
None
],
"int64"
,
name
=
"target"
),
]
return
inputs
def
test_check_output
(
self
):
self
.
check_output
()
class
TestSequenceTaggingInfer
(
TestSequenceTagging
):
def
setUp
(
self
):
super
(
TestSequenceTaggingInfer
,
self
).
setUp
()
self
.
inputs
=
self
.
inputs
[:
2
]
# remove target
def
make_inputs
(
self
):
inputs
=
super
(
TestSequenceTaggingInfer
,
self
).
make_inputs
()[:
2
]
# remove target
return
inputs
class
TestLSTM
(
ModuleApiTest
):
def
setUp
(
self
):
shape
=
(
2
,
4
,
16
)
self
.
inputs
=
[
np
.
random
.
random
(
shape
).
astype
(
"float32"
)]
self
.
inputs
=
[
np
.
random
.
random
(
shape
).
astype
(
"float32"
)]
self
.
outputs
=
None
self
.
outputs
=
None
self
.
attrs
=
{
"input_size"
:
1
28
,
"hidden_size"
:
128
}
self
.
attrs
=
{
"input_size"
:
1
6
,
"hidden_size"
:
16
,
"num_layers"
:
2
}
self
.
param_states
=
{}
self
.
param_states
=
{}
@
staticmethod
@
staticmethod
def
model_init
(
self
,
input_size
,
hidden_size
):
def
model_init
(
self
,
input_size
,
hidden_size
,
num_layers
):
self
.
module
=
SequenceTagging
(
input_size
,
hidden_size
)
self
.
lstm
=
LSTM
(
input_size
,
hidden_size
,
num_layers
=
num_layers
)
@
staticmethod
def
model_forward
(
self
,
inputs
):
return
self
.
lstm
(
inputs
)[
0
]
def
make_inputs
(
self
):
inputs
=
[
Input
(
[
None
,
None
,
self
.
inputs
[
-
1
].
shape
[
-
1
]],
"float32"
,
name
=
"input"
),
]
return
inputs
def
test_check_output
(
self
):
self
.
check_output
()
class
TestBiLSTM
(
ModuleApiTest
):
def
setUp
(
self
):
shape
=
(
2
,
4
,
16
)
self
.
inputs
=
[
np
.
random
.
random
(
shape
).
astype
(
"float32"
)]
self
.
outputs
=
None
self
.
attrs
=
{
"input_size"
:
16
,
"hidden_size"
:
16
,
"num_layers"
:
2
}
self
.
param_states
=
{}
@
staticmethod
def
model_init
(
self
,
input_size
,
hidden_size
,
num_layers
,
merge_mode
=
"concat"
,
merge_each_layer
=
False
):
self
.
bilstm
=
BidirectionalLSTM
(
input_size
,
hidden_size
,
num_layers
=
num_layers
,
merge_mode
=
merge_mode
,
merge_each_layer
=
merge_each_layer
)
@
staticmethod
def
model_forward
(
self
,
inputs
):
return
self
.
bilstm
(
inputs
)[
0
]
def
make_inputs
(
self
):
inputs
=
[
Input
(
[
None
,
None
,
self
.
inputs
[
-
1
].
shape
[
-
1
]],
"float32"
,
name
=
"input"
),
]
return
inputs
def
test_check_output_merge0
(
self
):
self
.
check_output
()
def
test_check_output_merge1
(
self
):
self
.
attrs
[
"merge_each_layer"
]
=
True
self
.
check_output
()
class
TestGRU
(
ModuleApiTest
):
def
setUp
(
self
):
shape
=
(
2
,
4
,
64
)
self
.
inputs
=
[
np
.
random
.
random
(
shape
).
astype
(
"float32"
)]
self
.
outputs
=
None
self
.
attrs
=
{
"input_size"
:
64
,
"hidden_size"
:
128
,
"num_layers"
:
2
}
self
.
param_states
=
{}
@
staticmethod
def
model_init
(
self
,
input_size
,
hidden_size
,
num_layers
):
self
.
gru
=
GRU
(
input_size
,
hidden_size
,
num_layers
=
num_layers
)
@
staticmethod
@
staticmethod
def
model_forward
(
self
,
inputs
):
def
model_forward
(
self
,
inputs
):
...
@@ -542,5 +668,48 @@ class TestSequenceTagging(ModuleApiTest):
...
@@ -542,5 +668,48 @@ class TestSequenceTagging(ModuleApiTest):
self
.
check_output
()
self
.
check_output
()
class
TestBiGRU
(
ModuleApiTest
):
def
setUp
(
self
):
shape
=
(
2
,
4
,
64
)
self
.
inputs
=
[
np
.
random
.
random
(
shape
).
astype
(
"float32"
)]
self
.
outputs
=
None
self
.
attrs
=
{
"input_size"
:
64
,
"hidden_size"
:
128
,
"num_layers"
:
2
}
self
.
param_states
=
{}
@
staticmethod
def
model_init
(
self
,
input_size
,
hidden_size
,
num_layers
,
merge_mode
=
"concat"
,
merge_each_layer
=
False
):
self
.
bigru
=
BidirectionalGRU
(
input_size
,
hidden_size
,
num_layers
=
num_layers
,
merge_mode
=
merge_mode
,
merge_each_layer
=
merge_each_layer
)
@
staticmethod
def
model_forward
(
self
,
inputs
):
return
self
.
bigru
(
inputs
)[
0
]
def
make_inputs
(
self
):
inputs
=
[
Input
(
[
None
,
None
,
self
.
inputs
[
-
1
].
shape
[
-
1
]],
"float32"
,
name
=
"input"
),
]
return
inputs
def
test_check_output_merge0
(
self
):
self
.
check_output
()
def
test_check_output_merge1
(
self
):
self
.
attrs
[
"merge_each_layer"
]
=
True
self
.
check_output
()
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
unittest
.
main
()
unittest
.
main
()
hapi/text/text.py
浏览文件 @
d88cbf75
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录