Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
c366b879
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看板
提交
c366b879
编写于
9月 27, 2020
作者:
C
cryoco
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix softmax converter diff when padding dim=1
上级
72746dc2
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
7 deletion
+23
-7
paddle/fluid/inference/tensorrt/convert/softmax_op.cc
paddle/fluid/inference/tensorrt/convert/softmax_op.cc
+18
-5
paddle/fluid/inference/tensorrt/op_teller.cc
paddle/fluid/inference/tensorrt/op_teller.cc
+5
-2
未找到文件。
paddle/fluid/inference/tensorrt/convert/softmax_op.cc
浏览文件 @
c366b879
...
...
@@ -33,26 +33,39 @@ class SoftMaxOpConverter : public OpConverter {
auto
*
input1
=
engine_
->
GetITensor
(
op_desc
.
Input
(
"X"
)[
0
]);
nvinfer1
::
Dims
input_shape
=
input1
->
getDimensions
();
int
input_dims
=
input_shape
.
nbDims
;
int
axis
=
BOOST_GET_CONST
(
int
,
op_desc
.
GetAttr
(
"axis"
));
int
axis
=
op_desc
.
HasAttr
(
"axis"
)
?
BOOST_GET_CONST
(
int
,
op_desc
.
GetAttr
(
"axis"
))
:
-
1
;
auto
*
layer
=
TRT_ENGINE_ADD_LAYER
(
engine_
,
SoftMax
,
*
const_cast
<
nvinfer1
::
ITensor
*>
(
input1
));
uint32_t
axes
=
std
::
max
(
0
,
input_dims
-
3
);
// TODO(cryoco): Poor workaround. Fix padded dims problem when TRT layers
// support Nd.
int
padded_dims
=
0
;
int
explicit_batch
=
0
;
if
(
engine_
->
with_dynamic_shape
())
explicit_batch
=
1
;
for
(
int
i
=
input_dims
-
1
;
i
>
explicit_batch
;
i
--
)
{
if
(
input_shape
.
d
[
i
]
==
1
)
{
padded_dims
+=
1
;
}
else
{
break
;
}
}
if
(
!
engine_
->
with_dynamic_shape
())
{
if
(
axis
==
-
1
)
{
axes
=
input_dims
-
1
;
axes
=
input_dims
-
1
-
padded_dims
;
}
else
{
axes
=
axis
;
}
layer
->
setAxes
(
1
<<
axes
);
}
else
{
if
(
axis
==
-
1
)
{
axes
=
input_dims
-
1
;
axes
=
input_dims
-
1
-
padded_dims
;
}
else
{
axes
=
axis
+
1
;
}
layer
->
setAxes
(
1
<<
axes
);
}
layer
->
setAxes
(
1
<<
axes
);
auto
output_name
=
op_desc
.
Output
(
"Out"
)[
0
];
RreplenishLayerAndOutput
(
layer
,
"softmax"
,
{
output_name
},
test_mode
);
...
...
paddle/fluid/inference/tensorrt/op_teller.cc
浏览文件 @
c366b879
...
...
@@ -107,8 +107,11 @@ bool OpTeller::Tell(const std::string& op_type, const framework::OpDesc& desc,
op_type
==
"depthwise_conv2d"
||
op_type
==
"conv2d_transpose"
)
{
std
::
vector
<
int
>
paddings
=
BOOST_GET_CONST
(
std
::
vector
<
int
>
,
desc
.
GetAttr
(
"paddings"
));
std
::
string
padding_algorithm
=
BOOST_GET_CONST
(
std
::
string
,
desc
.
GetAttr
(
"padding_algorithm"
));
std
::
string
padding_algorithm
=
"EXPLICIT"
;
if
(
desc
.
HasAttr
(
"padding_algorithm"
))
padding_algorithm
=
BOOST_GET_CONST
(
std
::
string
,
desc
.
GetAttr
(
"padding_algorithm"
));
if
(
paddings
.
size
()
>
2
||
(
padding_algorithm
==
"SAME"
&&
op_type
!=
"pool2d"
))
return
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录