Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
96d2f337
P
Paddle
项目概览
Crayon鑫
/
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看板
未验证
提交
96d2f337
编写于
3月 17, 2022
作者:
T
tanzhipeng
提交者:
GitHub
3月 17, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify sequence_conv_xpu op test. test=kunlun (#40347)
上级
7dad9f70
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
193 addition
and
181 deletion
+193
-181
python/paddle/fluid/tests/unittests/xpu/test_sequence_conv_op_xpu.py
...le/fluid/tests/unittests/xpu/test_sequence_conv_op_xpu.py
+193
-181
未找到文件。
python/paddle/fluid/tests/unittests/xpu/test_sequence_conv_op_xpu.py
浏览文件 @
96d2f337
...
...
@@ -21,6 +21,8 @@ import random
import
sys
sys
.
path
.
append
(
"../"
)
from
op_test_xpu
import
XPUOpTest
from
xpu.get_test_cover_info
import
create_test_class
,
get_xpu_op_support_types
from
xpu.get_test_cover_info
import
XPUOpTestWrapper
paddle
.
enable_static
()
np
.
set_printoptions
(
threshold
=
np
.
inf
)
...
...
@@ -73,188 +75,198 @@ def seqconv(x,
return
np
.
dot
(
col
,
filter
)
class
TestSeqProject
(
XPUOpTest
):
def
setUp
(
self
):
self
.
init_test_case
()
self
.
op_type
=
'sequence_conv'
self
.
use_xpu
=
True
if
self
.
context_length
==
1
\
and
self
.
context_start
==
0
\
and
self
.
padding_trainable
:
print
(
"If context_start is 0 "
\
"and context_length is 1,"
\
" padding_trainable should be false."
)
return
# one level, batch size
x
=
np
.
random
.
uniform
(
-
6.10907e-05
,
0.000104218
,
[
self
.
input_size
[
0
],
self
.
input_size
[
1
]]).
astype
(
'float32'
)
w
=
np
.
random
.
uniform
(
-
3.17068e-05
,
0.000159822
,
[
self
.
context_length
*
self
.
input_size
[
1
],
self
.
output_represention
]).
astype
(
'float32'
)
begin_pad
=
np
.
max
([
0
,
-
self
.
context_start
])
end_pad
=
np
.
max
([
0
,
self
.
context_start
+
self
.
context_length
-
1
])
total_pad
=
begin_pad
+
end_pad
padding_data
=
np
.
random
.
uniform
(
0
,
0
,
[
total_pad
,
self
.
input_size
[
1
]]).
astype
(
'float32'
)
self
.
pad_data
=
padding_data
self
.
inputs
=
{
'X'
:
(
x
,
self
.
lod
),
'Filter'
:
w
,
}
self
.
inputs_val
=
[
'X'
,
'Filter'
]
self
.
inputs_val_no_x
=
[
'Filter'
]
self
.
inputs_val_no_f
=
[
'X'
]
if
total_pad
!=
0
:
self
.
inputs
[
'PaddingData'
]
=
padding_data
self
.
inputs_val
=
[
'X'
,
'PaddingData'
,
'Filter'
]
self
.
inputs_val_no_x
=
[
'PaddingData'
,
'Filter'
]
self
.
inputs_val_no_f
=
[
'PaddingData'
,
'X'
]
self
.
attrs
=
{
'contextStart'
:
self
.
context_start
,
'contextLength'
:
self
.
context_length
,
'paddingTrainable'
:
self
.
padding_trainable
,
'contextStride'
:
self
.
context_stride
}
out
=
seqconv
(
x
,
self
.
lod
,
w
,
self
.
context_length
,
self
.
context_start
,
self
.
padding_trainable
,
self
.
pad_data
)
self
.
outputs
=
{
'Out'
:
out
}
def
test_check_output
(
self
):
place
=
paddle
.
XPUPlace
(
0
)
self
.
check_output_with_place
(
place
)
def
test_check_grad_input
(
self
):
self
.
check_grad
([
'X'
],
'Out'
,
no_grad_set
=
set
(
self
.
inputs_val_no_x
))
def
test_check_grad_padding_data
(
self
):
if
self
.
padding_trainable
:
class
XPUTestSequenceConv
(
XPUOpTestWrapper
):
def
__init__
(
self
):
self
.
op_name
=
'sequence_conv'
class
TestSeqProject
(
XPUOpTest
):
def
setUp
(
self
):
self
.
init_test_case
()
self
.
op_type
=
'sequence_conv'
self
.
dtype
=
self
.
in_type
self
.
use_xpu
=
True
if
self
.
context_length
==
1
\
and
self
.
context_start
==
0
\
and
self
.
padding_trainable
:
print
(
"If context_start is 0 "
\
"and context_length is 1,"
\
" padding_trainable should be false."
)
return
# one level, batch size
x
=
np
.
random
.
uniform
(
-
6.10907e-05
,
0.000104218
,
[
self
.
input_size
[
0
],
self
.
input_size
[
1
]]).
astype
(
self
.
dtype
)
w
=
np
.
random
.
uniform
(
-
3.17068e-05
,
0.000159822
,
[
self
.
context_length
*
self
.
input_size
[
1
],
self
.
output_represention
]).
astype
(
self
.
dtype
)
begin_pad
=
np
.
max
([
0
,
-
self
.
context_start
])
end_pad
=
np
.
max
([
0
,
self
.
context_start
+
self
.
context_length
-
1
])
total_pad
=
begin_pad
+
end_pad
padding_data
=
np
.
random
.
uniform
(
0
,
0
,
[
total_pad
,
self
.
input_size
[
1
]]).
astype
(
self
.
dtype
)
self
.
pad_data
=
padding_data
self
.
inputs
=
{
'X'
:
(
x
,
self
.
lod
),
'Filter'
:
w
,
}
self
.
inputs_val
=
[
'X'
,
'Filter'
]
self
.
inputs_val_no_x
=
[
'Filter'
]
self
.
inputs_val_no_f
=
[
'X'
]
if
total_pad
!=
0
:
self
.
inputs
[
'PaddingData'
]
=
padding_data
self
.
inputs_val
=
[
'X'
,
'PaddingData'
,
'Filter'
]
self
.
inputs_val_no_x
=
[
'PaddingData'
,
'Filter'
]
self
.
inputs_val_no_f
=
[
'PaddingData'
,
'X'
]
self
.
attrs
=
{
'contextStart'
:
self
.
context_start
,
'contextLength'
:
self
.
context_length
,
'paddingTrainable'
:
self
.
padding_trainable
,
'contextStride'
:
self
.
context_stride
}
out
=
seqconv
(
x
,
self
.
lod
,
w
,
self
.
context_length
,
self
.
context_start
,
self
.
padding_trainable
,
self
.
pad_data
)
self
.
outputs
=
{
'Out'
:
out
}
def
test_check_output
(
self
):
place
=
paddle
.
XPUPlace
(
0
)
self
.
check_output_with_place
(
place
)
def
test_check_grad_input
(
self
):
self
.
check_grad
([
'X'
],
'Out'
,
no_grad_set
=
set
(
self
.
inputs_val_no_x
))
def
test_check_grad_padding_data
(
self
):
if
self
.
padding_trainable
:
self
.
check_grad
(
[
'PaddingData'
],
'Out'
,
no_grad_set
=
set
([
'X'
,
'Filter'
]))
def
test_check_grad_Filter
(
self
):
self
.
check_grad
(
[
'PaddingData'
],
'Out'
,
no_grad_set
=
set
([
'X'
,
'Filter'
]))
def
test_check_grad_Filter
(
self
):
self
.
check_grad
(
[
'Filter'
],
'Out'
,
no_grad_set
=
set
(
self
.
inputs_val_no_f
))
def
test_check_grad_input_filter
(
self
):
if
self
.
padding_trainable
:
self
.
check_grad
(
[
'X'
,
'Filter'
],
'Out'
,
no_grad_set
=
set
([
'PaddingData'
]))
def
test_check_grad_padding_input
(
self
):
if
self
.
padding_trainable
:
self
.
check_grad
(
self
.
inputs_val_no_f
,
'Out'
,
no_grad_set
=
set
([
'Filter'
]))
def
test_check_grad_padding_filter
(
self
):
if
self
.
padding_trainable
:
self
.
check_grad
(
self
.
inputs_val_no_x
,
'Out'
,
no_grad_set
=
set
([
'X'
]))
def
init_test_case
(
self
):
self
.
input_row
=
7
self
.
input_col
=
25
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
self
.
input_col
]
offset_lod
=
[[
0
,
1
,
self
.
input_row
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase1
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
11
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
50
]
offset_lod
=
[[
0
,
4
,
5
,
8
,
self
.
input_row
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase2Len0
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
11
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
50
]
offset_lod
=
[[
0
,
0
,
4
,
5
,
5
,
8
,
self
.
input_row
,
self
.
input_row
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase3
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
25
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
25
]
idx
=
list
(
range
(
self
.
input_size
[
0
]))
del
idx
[
0
]
offset_lod
=
[[
0
]
+
np
.
sort
(
random
.
sample
(
idx
,
8
)).
tolist
()
+
[
self
.
input_size
[
0
]]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase4
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
7835
self
.
input_col
=
128
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
self
.
input_col
]
offset_lod
=
[[
0
,
1
,
2
,
3
,
131
,
241
,
242
,
263
,
264
,
265
,
266
,
267
,
268
,
387
,
515
,
516
,
644
,
645
,
772
,
794
,
922
,
923
,
924
,
944
,
945
,
1073
,
1074
,
1202
,
1330
,
1458
,
1556
,
1557
,
1558
,
1686
,
1748
,
1876
,
1912
,
1913
,
1914
,
2032
,
2066
,
2194
,
2308
,
2309
,
2347
,
2475
,
2476
,
2477
,
2478
,
2606
,
2607
,
2735
,
2736
,
2737
,
2738
,
2838
,
2966
,
2967
,
2968
,
2969
,
3097
,
3225
,
3353
,
3481
,
3482
,
3520
,
3642
,
3643
,
3754
,
3882
,
3883
,
4010
,
4011
,
4012
,
4140
,
4219
,
4228
,
4356
,
4357
,
4415
,
4475
,
4476
,
4604
,
4605
,
4606
,
4694
,
4695
,
4808
,
4936
,
4961
,
4962
,
5004
,
5132
,
5260
,
5312
,
5440
,
5441
,
5569
,
5570
,
5675
,
5676
,
5750
,
5810
,
5811
,
5939
,
6021
,
6149
,
6277
,
6278
,
6364
,
6425
,
6519
,
6647
,
6648
,
6739
,
6867
,
6995
,
6996
,
7120
,
7223
,
7244
,
7367
,
7407
,
7408
,
7467
,
7595
,
7699
,
7827
,
7835
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
[
'Filter'
],
'Out'
,
no_grad_set
=
set
(
self
.
inputs_val_no_f
))
def
test_check_grad_input_filter
(
self
):
if
self
.
padding_trainable
:
self
.
check_grad
(
[
'X'
,
'Filter'
],
'Out'
,
no_grad_set
=
set
([
'PaddingData'
]))
def
test_check_grad_padding_input
(
self
):
if
self
.
padding_trainable
:
self
.
check_grad
(
self
.
inputs_val_no_f
,
'Out'
,
no_grad_set
=
set
([
'Filter'
]))
def
test_check_grad_padding_filter
(
self
):
if
self
.
padding_trainable
:
self
.
check_grad
(
self
.
inputs_val_no_x
,
'Out'
,
no_grad_set
=
set
([
'X'
]))
def
init_test_case
(
self
):
self
.
input_row
=
7
self
.
input_col
=
25
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
self
.
input_col
]
offset_lod
=
[[
0
,
1
,
self
.
input_row
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase1
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
11
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
50
]
offset_lod
=
[[
0
,
4
,
5
,
8
,
self
.
input_row
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase2Len0
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
11
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
50
]
offset_lod
=
[[
0
,
0
,
4
,
5
,
5
,
8
,
self
.
input_row
,
self
.
input_row
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase3
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
25
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
25
]
idx
=
list
(
range
(
self
.
input_size
[
0
]))
del
idx
[
0
]
offset_lod
=
[[
0
]
+
np
.
sort
(
random
.
sample
(
idx
,
8
)).
tolist
()
+
[
self
.
input_size
[
0
]]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
class
TestSeqProjectCase4
(
TestSeqProject
):
def
init_test_case
(
self
):
self
.
input_row
=
7835
self
.
input_col
=
128
self
.
context_start
=
-
2
self
.
context_length
=
5
self
.
padding_trainable
=
False
self
.
context_stride
=
1
self
.
input_size
=
[
self
.
input_row
,
self
.
input_col
]
offset_lod
=
[[
0
,
1
,
2
,
3
,
131
,
241
,
242
,
263
,
264
,
265
,
266
,
267
,
268
,
387
,
515
,
516
,
644
,
645
,
772
,
794
,
922
,
923
,
924
,
944
,
945
,
1073
,
1074
,
1202
,
1330
,
1458
,
1556
,
1557
,
1558
,
1686
,
1748
,
1876
,
1912
,
1913
,
1914
,
2032
,
2066
,
2194
,
2308
,
2309
,
2347
,
2475
,
2476
,
2477
,
2478
,
2606
,
2607
,
2735
,
2736
,
2737
,
2738
,
2838
,
2966
,
2967
,
2968
,
2969
,
3097
,
3225
,
3353
,
3481
,
3482
,
3520
,
3642
,
3643
,
3754
,
3882
,
3883
,
4010
,
4011
,
4012
,
4140
,
4219
,
4228
,
4356
,
4357
,
4415
,
4475
,
4476
,
4604
,
4605
,
4606
,
4694
,
4695
,
4808
,
4936
,
4961
,
4962
,
5004
,
5132
,
5260
,
5312
,
5440
,
5441
,
5569
,
5570
,
5675
,
5676
,
5750
,
5810
,
5811
,
5939
,
6021
,
6149
,
6277
,
6278
,
6364
,
6425
,
6519
,
6647
,
6648
,
6739
,
6867
,
6995
,
6996
,
7120
,
7223
,
7244
,
7367
,
7407
,
7408
,
7467
,
7595
,
7699
,
7827
,
7835
]]
self
.
lod
=
[[]]
# convert from offset-based lod to length-based lod
for
i
in
range
(
len
(
offset_lod
[
0
])
-
1
):
self
.
lod
[
0
].
append
(
offset_lod
[
0
][
i
+
1
]
-
offset_lod
[
0
][
i
])
self
.
output_represention
=
8
# output feature size
support_types
=
get_xpu_op_support_types
(
'sequence_conv'
)
for
stype
in
support_types
:
create_test_class
(
globals
(),
XPUTestSequenceConv
,
stype
)
class
TestSeqConvApi
(
unittest
.
TestCase
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录