Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
b2e3824e
P
Paddle
项目概览
Crayon鑫
/
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看板
提交
b2e3824e
编写于
8月 14, 2017
作者:
Q
qiaolongfei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
change operator
上级
81f5f861
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
17 deletion
+18
-17
paddle/framework/op_registry.h
paddle/framework/op_registry.h
+12
-13
paddle/framework/operator.h
paddle/framework/operator.h
+4
-2
paddle/operators/net_op.cc
paddle/operators/net_op.cc
+2
-2
未找到文件。
paddle/framework/op_registry.h
浏览文件 @
b2e3824e
...
...
@@ -120,8 +120,10 @@ class OpProtoAndCheckerMaker {
};
class
OpRegistry
{
using
OpCreator
=
std
::
function
<
OperatorBase
*
()
>
;
using
VarNameMap
=
OperatorBase
::
VarNameMap
;
using
OpCreator
=
std
::
function
<
OperatorBase
*
(
const
std
::
string
&
type
,
const
VarNameMap
&
inputs
,
const
VarNameMap
&
outputs
,
const
AttributeMap
&
attrs
)
>
;
public:
template
<
typename
OpType
,
typename
ProtoMakerType
>
...
...
@@ -153,14 +155,9 @@ class OpRegistry {
PADDLE_ENFORCE
(
op_create_it
!=
op_creators
().
end
(),
"Operator %s cannot be found."
,
type
);
auto
op
=
op_create_it
->
second
();
op
->
type_
=
type
;
op
->
inputs_
=
inputs
;
op
->
outputs_
=
outputs
;
op
->
attrs_
=
attrs
;
op_checkers
().
at
(
type
).
Check
(
op
->
attrs_
);
auto
attrMap
=
attrs
;
op_checkers
().
at
(
type
).
Check
(
attrMap
);
auto
op
=
op_create_it
->
second
(
type
,
inputs
,
outputs
,
attrMap
);
GenerateTempVariableName
(
op
);
op
->
Init
();
...
...
@@ -217,12 +214,14 @@ class OpRegistry {
static
void
GenerateTempVariableName
(
OperatorBase
*
op
)
{
static
std
::
atomic
<
size_t
>
gUniqId
(
0UL
);
for
(
auto
&
output
:
op
->
outputs_
)
{
for
(
auto
&
output
:
op
->
Outputs
()
)
{
for
(
auto
&
output_name
:
output
.
second
)
{
if
(
output_name
==
kTempVarName
)
{
output_name
+=
op
->
type_
;
output_name
+=
"@"
;
output_name
+=
std
::
to_string
(
gUniqId
.
fetch_add
(
1
));
auto
new_name
=
output_name
;
new_name
+=
op
->
Type
();
new_name
+=
"@"
;
new_name
+=
std
::
to_string
(
gUniqId
.
fetch_add
(
1
));
op
->
Rename
(
output_name
,
new_name
);
}
}
}
...
...
paddle/framework/operator.h
浏览文件 @
b2e3824e
...
...
@@ -105,6 +105,8 @@ class OperatorBase {
/// rename inputs outputs name
void
Rename
(
const
std
::
string
&
old_name
,
const
std
::
string
&
new_name
);
const
VarNameMap
&
Inputs
()
const
{
return
inputs_
;
}
const
VarNameMap
&
Outputs
()
const
{
return
outputs_
;
}
//! Get a input with argument's name described in `op_proto`
const
std
::
string
&
Input
(
const
std
::
string
&
name
)
const
;
//! Get a input which has multiple variables.
...
...
@@ -118,10 +120,10 @@ class OperatorBase {
virtual
std
::
vector
<
std
::
string
>
OutputVars
(
bool
has_intermediate
)
const
;
std
::
string
Type
()
const
{
return
type_
;
}
const
std
::
string
&
Type
()
const
{
return
type_
;
}
const
AttributeMap
&
Attrs
()
const
{
return
attrs_
;
}
p
ublic
:
p
rotected
:
std
::
string
type_
;
// NOTE: in case of OpGrad, inputs_ contains:
// I (Inputs)
...
...
paddle/operators/net_op.cc
浏览文件 @
b2e3824e
...
...
@@ -29,7 +29,7 @@ void NetOp::CompleteAddOp(bool calc) {
std
::
set
<
std
::
string
>
input_set
;
std
::
set
<
std
::
string
>
output_set
;
for
(
auto
&
op
:
ops_
)
{
for
(
auto
&
ipt
:
op
->
inputs_
)
{
for
(
auto
&
ipt
:
op
->
Inputs
()
)
{
for
(
auto
&
var_name
:
ipt
.
second
)
{
if
(
!
Contains
(
output_set
,
var_name
))
{
// Not other op's output
input_set
.
insert
(
var_name
);
...
...
@@ -39,7 +39,7 @@ void NetOp::CompleteAddOp(bool calc) {
}
}
for
(
auto
&
opt
:
op
->
outputs_
)
{
for
(
auto
&
opt
:
op
->
Outputs
()
)
{
for
(
auto
&
var_name
:
opt
.
second
)
{
output_set
.
insert
(
var_name
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录