Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
4bd19770
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看板
未验证
提交
4bd19770
编写于
10月 20, 2021
作者:
W
wenbin
提交者:
GitHub
10月 20, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix (#36557)
* fix * remove const
上级
c285c719
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
11 deletion
+24
-11
paddle/fluid/inference/tensorrt/convert/pool2d_op.cc
paddle/fluid/inference/tensorrt/convert/pool2d_op.cc
+24
-11
未找到文件。
paddle/fluid/inference/tensorrt/convert/pool2d_op.cc
浏览文件 @
4bd19770
...
...
@@ -115,17 +115,17 @@ class Pool2dOpConverter : public OpConverter {
nvinfer1
::
DimsHW
nv_paddings
(
paddings
[
0
],
paddings
[
1
]);
nvinfer1
::
ILayer
*
layer
=
nullptr
;
nvinfer1
::
DimsHW
pre_pad
(
0
,
0
);
nvinfer1
::
DimsHW
post_pad
(
0
,
0
);
nvinfer1
::
DimsHW
g_
pre_pad
(
0
,
0
);
nvinfer1
::
DimsHW
g_
post_pad
(
0
,
0
);
// paddle Non ceil_mode : Output size = (input size - filter size + 2 *
// padding) / stride (stride size) + 1
// tensorrt EXPLICIT_ROUND_DOWN: O = floor((M - DK) / S) + 1
// so if M - DK < 0 we need extra padding
if
(
input_shape
.
d
[
input_dims
-
2
]
-
ksize
[
0
]
+
2
*
paddings
[
0
]
<
0
)
{
post_pad
.
h
()
=
strides
[
0
]
-
1
;
g_
post_pad
.
h
()
=
strides
[
0
]
-
1
;
}
if
(
input_shape
.
d
[
input_dims
-
1
]
-
ksize
[
1
]
+
2
*
paddings
[
1
]
<
0
)
{
post_pad
.
w
()
=
strides
[
1
]
-
1
;
g_
post_pad
.
w
()
=
strides
[
1
]
-
1
;
}
if
(
op_desc
.
HasAttr
(
"enable_int8"
))
{
...
...
@@ -138,10 +138,10 @@ class Pool2dOpConverter : public OpConverter {
if
(
engine_
->
with_dynamic_shape
())
{
if
(
!
adaptive
&&
!
global_pooling
&&
!
ceil_mode
)
{
if
((
post_pad
.
w
()
>
0
||
post_pad
.
h
()
>
0
)
&&
if
((
g_post_pad
.
w
()
>
0
||
g_
post_pad
.
h
()
>
0
)
&&
(
padding_algorithm
!=
"SAME"
))
{
auto
*
pad_layer
=
TRT_ENGINE_ADD_LAYER
(
engine_
,
Padding
,
*
input1
,
pre_pad
,
post_pad
);
g_pre_pad
,
g_
post_pad
);
PADDLE_ENFORCE_NOT_NULL
(
pad_layer
,
platform
::
errors
::
Fatal
(
"Pad layer in poolOp converter could not be "
...
...
@@ -230,22 +230,35 @@ class Pool2dOpConverter : public OpConverter {
if
(
!
adaptive
)
{
if
(
ceil_mode
)
{
nvinfer1
::
DimsHW
pre_pad
(
0
,
0
);
nvinfer1
::
DimsHW
post_pad
(
0
,
0
);
// If ceil mode is true, we will pad the appropriate size to the input.
DealCeilMode
(
input_shape
,
ksize
,
strides
,
paddings
,
&
pre_pad
,
&
post_pad
,
input_dims
);
}
if
((
post_pad
.
w
()
>
0
||
post_pad
.
h
()
>
0
)
&&
(
padding_algorithm
!=
"SAME"
))
{
auto
*
pad_layer
=
TRT_ENGINE_ADD_LAYER
(
engine_
,
Padding
,
*
input1
,
pre_pad
,
post_pad
);
PADDLE_ENFORCE_NOT_NULL
(
pad_layer
,
platform
::
errors
::
Fatal
(
"Pad layer in poolOp converter could not be "
"created. The pointer to pad layer is `NULL`."
));
input1
=
pad_layer
->
getOutput
(
0
);
}
#if IS_TRT_VERSION_GE(8000)
// Exclude padding pixels from the average mean is not supported well by
// TRT
// so enable padding for trt8.0 above.
if
((
g_post_pad
.
w
()
>
0
||
g_post_pad
.
h
()
>
0
)
&&
(
padding_algorithm
!=
"SAME"
)
&&
!
ceil_mode
)
{
auto
*
pad_layer
=
TRT_ENGINE_ADD_LAYER
(
engine_
,
Padding
,
*
input1
,
g_pre_pad
,
g_post_pad
);
PADDLE_ENFORCE_NOT_NULL
(
pad_layer
,
platform
::
errors
::
Fatal
(
"Pad layer in poolOp converter could not be "
"created. The pointer to pad layer is `NULL`."
));
input1
=
pad_layer
->
getOutput
(
0
);
}
#endif
auto
*
pool_layer
=
TRT_ENGINE_ADD_LAYER
(
engine_
,
Pooling
,
*
input1
,
nv_pool_type
,
nv_ksize
);
PADDLE_ENFORCE_NOT_NULL
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录