Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
66024e90
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看板
未验证
提交
66024e90
编写于
10月 31, 2018
作者:
X
Xin Pan
提交者:
GitHub
10月 31, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #14149 from chengduoZH/fix_sum_op_bug_relase
Fix sum op's GetExpectedKernelType
上级
c5591f7b
618d7e3f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
10 addition
and
9 deletion
+10
-9
paddle/fluid/framework/operator.cc
paddle/fluid/framework/operator.cc
+4
-5
paddle/fluid/framework/operator.h
paddle/fluid/framework/operator.h
+1
-0
paddle/fluid/operators/sum_op.cc
paddle/fluid/operators/sum_op.cc
+5
-4
未找到文件。
paddle/fluid/framework/operator.cc
浏览文件 @
66024e90
...
...
@@ -358,11 +358,11 @@ static bool VarIsTensor(const Variable* var) {
return
var
->
IsType
<
LoDTensor
>
()
||
var
->
IsType
<
SelectedRows
>
();
}
static
const
Tensor
*
GetTensorFromVar
(
Variable
*
var
)
{
const
Tensor
*
GetTensorFromVar
(
const
Variable
*
var
)
{
if
(
var
->
IsType
<
LoDTensor
>
())
{
return
var
->
GetMutable
<
LoDTensor
>
(
);
return
static_cast
<
const
Tensor
*>
(
&
(
var
->
Get
<
LoDTensor
>
())
);
}
else
if
(
var
->
IsType
<
SelectedRows
>
())
{
return
var
->
GetMutable
<
SelectedRows
>
()
->
mutable_value
(
);
return
&
(
var
->
Get
<
SelectedRows
>
().
value
()
);
}
else
{
PADDLE_THROW
(
"Variable type_id %s, expect LoDTensor/SelectedRows."
,
var
->
Type
().
name
());
...
...
@@ -415,8 +415,7 @@ bool ExecutionContext::HasOutput(const std::string& name) const {
template
<
>
const
Tensor
*
ExecutionContext
::
Input
<
Tensor
>
(
const
std
::
string
&
name
)
const
{
auto
*
var
=
InputVar
(
name
);
return
var
==
nullptr
?
nullptr
:
GetTensorFromVar
(
const_cast
<
Variable
*>
(
var
));
return
var
==
nullptr
?
nullptr
:
GetTensorFromVar
(
var
);
}
template
<
>
...
...
paddle/fluid/framework/operator.h
浏览文件 @
66024e90
...
...
@@ -63,6 +63,7 @@ inline std::string GradVarName(const std::string& var_name) {
}
proto
::
VarType
::
Type
GetDataTypeOfVar
(
const
Variable
*
var
);
const
Tensor
*
GetTensorFromVar
(
const
Variable
*
var
);
class
OperatorBase
;
class
ExecutionContext
;
...
...
paddle/fluid/operators/sum_op.cc
浏览文件 @
66024e90
...
...
@@ -82,14 +82,15 @@ class SumOp : public framework::OperatorWithKernel {
if
(
x_vars
[
0
]
->
IsType
<
framework
::
LoDTensor
>
())
{
int
dtype
=
-
1
;
for
(
auto
&
x_var
:
x_vars
)
{
auto
&
lod_tensor
=
x_var
->
Get
<
framework
::
LoDTensor
>
();
if
(
lod_tensor
.
numel
()
==
0
)
{
// FIXME(zcd): The input x_var may be SelectedRows or LoDTensor.
auto
tensor
=
framework
::
GetTensorFromVar
(
x_var
);
if
(
tensor
->
numel
()
==
0
)
{
continue
;
}
if
(
dtype
==
-
1
)
{
dtype
=
framework
::
ToDataType
(
lod_tensor
.
type
());
dtype
=
framework
::
ToDataType
(
tensor
->
type
());
}
else
{
PADDLE_ENFORCE_EQ
(
dtype
,
framework
::
ToDataType
(
lod_tensor
.
type
()));
PADDLE_ENFORCE_EQ
(
dtype
,
framework
::
ToDataType
(
tensor
->
type
()));
}
}
PADDLE_ENFORCE_NE
(
dtype
,
-
1
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录