Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
d085f792
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看板
未验证
提交
d085f792
编写于
4月 08, 2020
作者:
W
wangchaochaohu
提交者:
GitHub
4月 08, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix untime fail for output var stop_gradient=True for fusion group (#23317)
上级
b76f3b27
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
12 addition
and
8 deletion
+12
-8
paddle/fluid/framework/ir/fusion_group/code_generator.cc
paddle/fluid/framework/ir/fusion_group/code_generator.cc
+1
-4
paddle/fluid/framework/ir/fusion_group/elementwise_group_detector.cc
...d/framework/ir/fusion_group/elementwise_group_detector.cc
+9
-0
python/paddle/fluid/tests/unittests/ir/test_ir_fusion_group_pass.py
...dle/fluid/tests/unittests/ir/test_ir_fusion_group_pass.py
+2
-4
未找到文件。
paddle/fluid/framework/ir/fusion_group/code_generator.cc
浏览文件 @
d085f792
...
...
@@ -99,6 +99,7 @@ std::vector<OperationExpression> CodeGenerator::ConvertToExpressions(
input_ids
.
push_back
(
-
1
);
}
}
// Output ids should be set in fixed order, like:
// - dx, dy in backward operations
std
::
vector
<
int
>
output_ids
;
...
...
@@ -106,10 +107,6 @@ std::vector<OperationExpression> CodeGenerator::ConvertToExpressions(
OperationMap
::
Instance
().
Get
(
op
->
Type
()).
output_names
;
for
(
auto
&
name
:
output_names
)
{
PADDLE_ENFORCE_EQ
(
op
->
Output
(
name
).
size
(),
1U
,
platform
::
errors
::
InvalidArgument
(
"Output(%s) of operation %s is not set."
,
name
,
op
->
Type
()));
PADDLE_ENFORCE_NE
(
var_ids
.
find
(
op
->
Output
(
name
)[
0
]),
var_ids
.
end
(),
platform
::
errors
::
InvalidArgument
(
...
...
paddle/fluid/framework/ir/fusion_group/elementwise_group_detector.cc
浏览文件 @
d085f792
...
...
@@ -111,6 +111,15 @@ bool ElementwiseGroupDetector::IsElementwiseOp(const Node* n) {
}
}
}
auto
op
=
n
->
Op
();
std
::
vector
<
std
::
string
>
output_names
=
OperationMap
::
Instance
().
Get
(
op
->
Type
()).
output_names
;
for
(
auto
&
name
:
output_names
)
{
if
(
op
->
Output
(
name
).
size
()
!=
1
)
return
false
;
}
return
true
;
}
return
false
;
...
...
python/paddle/fluid/tests/unittests/ir/test_ir_fusion_group_pass.py
浏览文件 @
d085f792
...
...
@@ -109,11 +109,9 @@ class FusionGroupPassTest2(FusionGroupPassTest):
tmp_2
=
layers
.
relu
(
layers
.
sigmoid
(
self
.
feed_vars
[
3
]))
tmp_3
=
layers
.
mul
(
tmp_1
,
tmp_2
)
# TODO(wangchaochaohu): support the case when some vars are set
# stop_gradient = True.
self
.
append_gradients
(
tmp_3
)
self
.
num_fused_ops
=
2
self
.
fetch_list
=
[
tmp_3
]
self
.
fetch_list
=
[
tmp_3
,
self
.
grad
(
tmp_1
)
]
class
FusionGroupPassTestFP64
(
FusionGroupPassTest
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录