Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
7b46fb0f
P
Paddle
项目概览
BaiXuePrincess
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
7b46fb0f
编写于
9月 29, 2020
作者:
Y
yukavio
提交者:
GitHub
9月 29, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix generate_proposals and affine grid error info (#27636)
上级
6d9ae660
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
32 addition
and
13 deletion
+32
-13
paddle/fluid/operators/affine_grid_cudnn_op.cu.cc
paddle/fluid/operators/affine_grid_cudnn_op.cu.cc
+23
-8
paddle/fluid/operators/detection/generate_proposals_op.cu
paddle/fluid/operators/detection/generate_proposals_op.cu
+0
-2
python/paddle/fluid/tests/unittests/test_affine_grid_function.py
...paddle/fluid/tests/unittests/test_affine_grid_function.py
+5
-3
python/paddle/fluid/tests/unittests/test_affine_grid_op.py
python/paddle/fluid/tests/unittests/test_affine_grid_op.py
+2
-0
python/paddle/fluid/tests/unittests/test_generate_proposals_op.py
...addle/fluid/tests/unittests/test_generate_proposals_op.py
+2
-0
未找到文件。
paddle/fluid/operators/affine_grid_cudnn_op.cu.cc
浏览文件 @
7b46fb0f
...
...
@@ -26,8 +26,12 @@ template <typename T>
class
CUDNNAffineGridOpKernel
:
public
framework
::
OpKernel
<
T
>
{
public:
void
Compute
(
const
framework
::
ExecutionContext
&
ctx
)
const
override
{
PADDLE_ENFORCE
(
platform
::
is_gpu_place
(
ctx
.
GetPlace
()),
"It must use CUDAPlace."
);
PADDLE_ENFORCE_EQ
(
platform
::
is_gpu_place
(
ctx
.
GetPlace
()),
true
,
platform
::
errors
::
InvalidArgument
(
"Only "
"support for CUDAPlace.Please switch "
"your context from CPUPlace to "
"CUDAPlace or update your cudnn."
));
auto
&
dev_ctx
=
ctx
.
template
device_context
<
platform
::
CUDADeviceContext
>();
auto
handle
=
dev_ctx
.
cudnn_handle
();
auto
*
theta
=
ctx
.
Input
<
Tensor
>
(
"Theta"
);
...
...
@@ -56,8 +60,11 @@ class CUDNNAffineGridOpKernel : public framework::OpKernel<T> {
cudnnSpatialTransformerDescriptor_t
cudnn_st_desc
=
st_desc
.
descriptor
<
T
>
(
4
,
h_size_data
);
PADDLE_ENFORCE
(
platform
::
dynload
::
cudnnSpatialTfGridGeneratorForward
(
handle
,
cudnn_st_desc
,
theta_data
,
output_data
));
PADDLE_ENFORCE_EQ
(
platform
::
dynload
::
cudnnSpatialTfGridGeneratorForward
(
handle
,
cudnn_st_desc
,
theta_data
,
output_data
),
0
,
platform
::
errors
::
Fatal
(
"Some errors has occurred "
"during forward computation in cudnn."
));
}
};
...
...
@@ -65,8 +72,12 @@ template <typename T>
class
CUDNNAffineGridGradOpKernel
:
public
framework
::
OpKernel
<
T
>
{
public:
void
Compute
(
const
framework
::
ExecutionContext
&
ctx
)
const
override
{
PADDLE_ENFORCE
(
platform
::
is_gpu_place
(
ctx
.
GetPlace
()),
"It must use CUDAPlace."
);
PADDLE_ENFORCE_EQ
(
platform
::
is_gpu_place
(
ctx
.
GetPlace
()),
true
,
platform
::
errors
::
InvalidArgument
(
"Only "
"support for CUDAPlace. Please switch "
"your context from CPUPlace to "
"CUDAPlace or update your cudnn."
));
auto
&
dev_ctx
=
ctx
.
template
device_context
<
platform
::
CUDADeviceContext
>();
auto
handle
=
dev_ctx
.
cudnn_handle
();
auto
output_grad
=
ctx
.
Input
<
Tensor
>
(
framework
::
GradVarName
(
"Output"
));
...
...
@@ -95,8 +106,12 @@ class CUDNNAffineGridGradOpKernel : public framework::OpKernel<T> {
const
T
*
output_grad_data
=
output_grad
->
data
<
T
>
();
T
*
theta_grad_data
=
theta_grad
->
mutable_data
<
T
>
(
ctx
.
GetPlace
());
PADDLE_ENFORCE
(
platform
::
dynload
::
cudnnSpatialTfGridGeneratorBackward
(
handle
,
cudnn_st_desc
,
output_grad_data
,
theta_grad_data
));
PADDLE_ENFORCE_EQ
(
platform
::
dynload
::
cudnnSpatialTfGridGeneratorBackward
(
handle
,
cudnn_st_desc
,
output_grad_data
,
theta_grad_data
),
0
,
"Some errors "
"has occurred during forward computation in cudnn;"
);
}
};
...
...
paddle/fluid/operators/detection/generate_proposals_op.cu
浏览文件 @
7b46fb0f
...
...
@@ -247,8 +247,6 @@ static void NMS(const platform::CUDADeviceContext &ctx, const Tensor &proposals,
const
Tensor
&
sorted_indices
,
const
T
nms_threshold
,
Tensor
*
keep_out
)
{
int
boxes_num
=
proposals
.
dims
()[
0
];
PADDLE_ENFORCE_EQ
(
boxes_num
,
sorted_indices
.
dims
()[
0
]);
const
int
col_blocks
=
DIVUP
(
boxes_num
,
kThreadsPerBlock
);
dim3
blocks
(
DIVUP
(
boxes_num
,
kThreadsPerBlock
),
DIVUP
(
boxes_num
,
kThreadsPerBlock
));
...
...
python/paddle/fluid/tests/unittests/test_affine_grid_function.py
浏览文件 @
7b46fb0f
...
...
@@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import
paddle
import
numpy
as
np
from
paddle
import
fluid
,
nn
import
paddle.fluid.dygraph
as
dg
...
...
@@ -42,7 +43,7 @@ class AffineGridTestCase(unittest.TestCase):
self
.
theta
=
np
.
random
.
randn
(
*
(
self
.
theta_shape
)).
astype
(
self
.
dtype
)
def
fluid_layer
(
self
,
place
):
# align_corners = True
paddle
.
enable_static
()
main
=
fluid
.
Program
()
start
=
fluid
.
Program
()
with
fluid
.
unique_name
.
guard
():
...
...
@@ -57,6 +58,7 @@ class AffineGridTestCase(unittest.TestCase):
return
y_np
def
functional
(
self
,
place
):
paddle
.
enable_static
()
main
=
fluid
.
Program
()
start
=
fluid
.
Program
()
with
fluid
.
unique_name
.
guard
():
...
...
@@ -74,6 +76,7 @@ class AffineGridTestCase(unittest.TestCase):
return
y_np
def
paddle_dygraph_layer
(
self
):
paddle
.
disable_static
()
theta_var
=
dg
.
to_variable
(
self
.
theta
)
if
not
self
.
invalid_theta
else
"invalid"
output_shape
=
dg
.
to_variable
(
...
...
@@ -88,8 +91,7 @@ class AffineGridTestCase(unittest.TestCase):
place
=
fluid
.
CPUPlace
()
result1
=
self
.
fluid_layer
(
place
)
result2
=
self
.
functional
(
place
)
with
dg
.
guard
(
place
):
result3
=
self
.
paddle_dygraph_layer
()
result3
=
self
.
paddle_dygraph_layer
()
if
self
.
align_corners
:
np
.
testing
.
assert_array_almost_equal
(
result1
,
result2
)
np
.
testing
.
assert_array_almost_equal
(
result2
,
result3
)
...
...
python/paddle/fluid/tests/unittests/test_affine_grid_op.py
浏览文件 @
7b46fb0f
...
...
@@ -15,6 +15,7 @@
import
unittest
import
numpy
as
np
from
op_test
import
OpTest
import
paddle
def
AffineGrid
(
theta
,
size
,
align_corners
):
...
...
@@ -113,4 +114,5 @@ class TestAffineGridOpCase4(TestAffineGridOp):
if
__name__
==
'__main__'
:
paddle
.
enable_static
()
unittest
.
main
()
python/paddle/fluid/tests/unittests/test_generate_proposals_op.py
浏览文件 @
7b46fb0f
...
...
@@ -18,6 +18,7 @@ import unittest
import
numpy
as
np
import
sys
import
math
import
paddle
import
paddle.fluid
as
fluid
from
op_test
import
OpTest
from
test_multiclass_nms_op
import
nms
...
...
@@ -370,4 +371,5 @@ class TestGenerateProposalsOpNoBoxLeft(TestGenerateProposalsOp):
if
__name__
==
'__main__'
:
paddle
.
enable_static
()
unittest
.
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录