Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
1de3cdd0
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
1de3cdd0
编写于
11月 16, 2020
作者:
L
LielinJiang
提交者:
GitHub
11月 16, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix summary api for rnn gru lstm (#28566)
* fix summary for rnn gru lstm
上级
a24d1868
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
30 addition
and
2 deletion
+30
-2
python/paddle/hapi/model_summary.py
python/paddle/hapi/model_summary.py
+3
-0
python/paddle/tests/test_model.py
python/paddle/tests/test_model.py
+27
-2
未找到文件。
python/paddle/hapi/model_summary.py
浏览文件 @
1de3cdd0
...
...
@@ -244,6 +244,9 @@ def summary_string(model, input_size, dtypes=None):
(
not
(
layer
==
model
)
or
depth
<
1
)):
hooks
.
append
(
layer
.
register_forward_post_hook
(
hook
))
# For rnn, gru and lstm layer
elif
hasattr
(
layer
,
'could_use_cudnn'
)
and
layer
.
could_use_cudnn
:
hooks
.
append
(
layer
.
register_forward_post_hook
(
hook
))
if
isinstance
(
input_size
,
tuple
):
input_size
=
[
input_size
]
...
...
python/paddle/tests/test_model.py
浏览文件 @
1de3cdd0
...
...
@@ -295,6 +295,12 @@ class TestModel(unittest.TestCase):
np
.
testing
.
assert_equal
(
output
[
0
].
shape
[
0
],
len
(
self
.
test_dataset
))
fluid
.
disable_dygraph
()
def
test_summary_gpu
(
self
):
paddle
.
disable_static
(
self
.
device
)
rnn
=
paddle
.
nn
.
LSTM
(
16
,
32
,
2
)
params_info
=
paddle
.
summary
(
rnn
,
[(
-
1
,
23
,
16
),
((
2
,
None
,
32
),
(
2
,
-
1
,
32
))])
class
MyModel
(
paddle
.
nn
.
Layer
):
def
__init__
(
self
):
...
...
@@ -512,14 +518,33 @@ class TestModelFunction(unittest.TestCase):
model
.
summary
(
input_size
=
(
20
),
dtype
=
'float32'
)
def
test_summary_nlp
(
self
):
paddle
.
enable_static
()
def
_get_param_from_state_dict
(
state_dict
):
params
=
0
for
k
,
v
in
state_dict
.
items
():
params
+=
np
.
prod
(
v
.
numpy
().
shape
)
return
params
nlp_net
=
paddle
.
nn
.
GRU
(
input_size
=
2
,
hidden_size
=
3
,
num_layers
=
3
,
direction
=
"bidirectional"
)
paddle
.
summary
(
nlp_net
,
(
1
,
1
,
2
))
rnn
=
paddle
.
nn
.
LSTM
(
16
,
32
,
2
)
paddle
.
summary
(
rnn
,
[(
-
1
,
23
,
16
),
((
2
,
None
,
32
),
(
2
,
-
1
,
32
))])
params_info
=
paddle
.
summary
(
rnn
,
[(
-
1
,
23
,
16
),
((
2
,
None
,
32
),
(
2
,
-
1
,
32
))])
gt_params
=
_get_param_from_state_dict
(
rnn
.
state_dict
())
np
.
testing
.
assert_allclose
(
params_info
[
'total_params'
],
gt_params
/
2.0
)
rnn
=
paddle
.
nn
.
GRU
(
16
,
32
,
2
,
direction
=
'bidirectional'
)
params_info
=
paddle
.
summary
(
rnn
,
(
4
,
23
,
16
))
gt_params
=
_get_param_from_state_dict
(
rnn
.
state_dict
())
np
.
testing
.
assert_allclose
(
params_info
[
'total_params'
],
gt_params
/
2.0
)
rnn
=
paddle
.
nn
.
SimpleRNN
(
16
,
32
,
2
,
direction
=
'bidirectional'
)
params_info
=
paddle
.
summary
(
rnn
,
(
4
,
23
,
16
))
gt_params
=
_get_param_from_state_dict
(
rnn
.
state_dict
())
np
.
testing
.
assert_allclose
(
params_info
[
'total_params'
],
gt_params
/
2.0
)
def
test_summary_dtype
(
self
):
input_shape
=
(
3
,
1
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录