Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
8740276d
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看板
提交
8740276d
编写于
8月 03, 2017
作者:
Y
Yi Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix pybind and const type mismatch
上级
6512893b
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
22 addition
and
79 deletion
+22
-79
paddle/framework/CMakeLists.txt
paddle/framework/CMakeLists.txt
+4
-4
paddle/framework/attribute.h
paddle/framework/attribute.h
+9
-0
paddle/framework/attribute.proto
paddle/framework/attribute.proto
+0
-0
paddle/framework/op_desc.proto
paddle/framework/op_desc.proto
+1
-1
paddle/framework/op_proto.proto
paddle/framework/op_proto.proto
+1
-1
paddle/framework/op_registry.cc
paddle/framework/op_registry.cc
+3
-32
paddle/framework/op_registry.h
paddle/framework/op_registry.h
+3
-40
paddle/framework/operator.h
paddle/framework/operator.h
+1
-1
未找到文件。
paddle/framework/CMakeLists.txt
浏览文件 @
8740276d
...
...
@@ -12,9 +12,9 @@ cc_test(variable_test SRCS variable_test.cc)
cc_library
(
scope SRCS scope.cc
)
cc_test
(
scope_test SRCS scope_test.cc DEPS scope
)
proto_library
(
attr
_type SRCS attr_typ
e.proto
)
proto_library
(
op_proto SRCS op_proto.proto DEPS attr
_type
)
proto_library
(
op_desc SRCS op_desc.proto DEPS attr
_type
)
proto_library
(
attr
ibute_proto SRCS attribut
e.proto
)
proto_library
(
op_proto SRCS op_proto.proto DEPS attr
ibute_proto
)
proto_library
(
op_desc SRCS op_desc.proto DEPS attr
ibute_proto
)
cc_test
(
op_proto_test SRCS op_proto_test.cc DEPS op_proto protobuf
)
cc_test
(
op_desc_test SRCS op_desc_test.cc DEPS op_desc protobuf
)
...
...
@@ -26,7 +26,7 @@ cc_library(op_registry SRCS op_registry.cc DEPS op_desc grad_op_builder)
cc_test
(
op_registry_test SRCS op_registry_test.cc DEPS op_registry
)
cc_test
(
grad_op_builder_test SRCS grad_op_builder_test.cc DEPS grad_op_builder op_registry add_op
)
py_proto_compile
(
framework_py_proto SRCS attr
_typ
e.proto op_proto.proto op_desc.proto
)
py_proto_compile
(
framework_py_proto SRCS attr
ibut
e.proto op_proto.proto op_desc.proto
)
# Generate an empty __init__.py to make framework_py_proto as a valid python module.
add_custom_target
(
framework_py_proto_init ALL COMMAND
${
CMAKE_COMMAND
}
-E touch __init__.py
)
add_dependencies
(
framework_py_proto framework_py_proto_init
)
...
...
paddle/framework/attr
_checker
.h
→
paddle/framework/attr
ibute
.h
浏览文件 @
8740276d
...
...
@@ -6,6 +6,9 @@
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include "paddle/framework/attribute.pb.h"
#include "paddle/framework/op_desc.pb.h"
#include "paddle/platform/enforce.h"
namespace
paddle
{
...
...
@@ -14,8 +17,14 @@ namespace framework {
typedef
boost
::
variant
<
boost
::
blank
,
int
,
float
,
std
::
string
,
std
::
vector
<
int
>
,
std
::
vector
<
float
>
,
std
::
vector
<
std
::
string
>>
Attribute
;
typedef
std
::
unordered_map
<
std
::
string
,
Attribute
>
AttributeMap
;
template
<
typename
T
>
AttrType
AttrTypeID
();
Attribute
GetAttrValue
(
const
AttrDesc
&
attr_desc
);
// check whether a value(attribute) fit a certain limit
template
<
typename
T
>
class
LargerThanChecker
{
...
...
paddle/framework/attr
_typ
e.proto
→
paddle/framework/attr
ibut
e.proto
浏览文件 @
8740276d
文件已移动
paddle/framework/op_desc.proto
浏览文件 @
8740276d
...
...
@@ -15,7 +15,7 @@ limitations under the License. */
syntax
=
"proto2"
;
package
paddle
.
framework
;
import
"attr
_typ
e.proto"
;
import
"attr
ibut
e.proto"
;
// AttrDesc is used to describe Attributes of an Operator. It contain's
// name, type, and value of Attribute.
...
...
paddle/framework/op_proto.proto
浏览文件 @
8740276d
...
...
@@ -21,7 +21,7 @@ limitations under the License. */
syntax
=
"proto2"
;
package
paddle
.
framework
;
import
"attr
_typ
e.proto"
;
import
"attr
ibut
e.proto"
;
// Attribute protocol message for 3rd-party language binding.
// It will store the Op support what attribute and what type.
...
...
paddle/framework/op_registry.cc
浏览文件 @
8740276d
...
...
@@ -14,37 +14,8 @@ limitations under the License. */
#include <paddle/framework/op_registry.h>
namespace
paddle
{
namespace
framework
{
template
<
>
void
AttrTypeHelper
::
SetAttrType
<
int
>
(
AttrProto
*
attr
)
{
attr
->
set_type
(
paddle
::
framework
::
AttrType
::
INT
);
}
template
<
>
void
AttrTypeHelper
::
SetAttrType
<
float
>
(
AttrProto
*
attr
)
{
attr
->
set_type
(
paddle
::
framework
::
AttrType
::
FLOAT
);
}
template
<
>
void
AttrTypeHelper
::
SetAttrType
<
std
::
string
>
(
AttrProto
*
attr
)
{
attr
->
set_type
(
paddle
::
framework
::
AttrType
::
STRING
);
}
#include <vector>
template
<
>
void
AttrTypeHelper
::
SetAttrType
<
std
::
vector
<
int
>>
(
AttrProto
*
attr
)
{
attr
->
set_type
(
paddle
::
framework
::
AttrType
::
INTS
);
}
template
<
>
void
AttrTypeHelper
::
SetAttrType
<
std
::
vector
<
float
>>
(
AttrProto
*
attr
)
{
attr
->
set_type
(
paddle
::
framework
::
AttrType
::
FLOATS
);
}
template
<
>
void
AttrTypeHelper
::
SetAttrType
<
std
::
vector
<
std
::
string
>>
(
AttrProto
*
attr
)
{
attr
->
set_type
(
paddle
::
framework
::
AttrType
::
STRINGS
);
}
}
// namespace framework
namespace
paddle
{
namespace
framework
{}
// namespace framework
}
// namespace paddle
paddle/framework/op_registry.h
浏览文件 @
8740276d
...
...
@@ -19,7 +19,7 @@ limitations under the License. */
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include "paddle/framework/attr
_checker
.h"
#include "paddle/framework/attr
ibute
.h"
#include "paddle/framework/grad_op_builder.h"
#include "paddle/framework/op_desc.pb.h"
#include "paddle/framework/scope.h"
...
...
@@ -31,43 +31,6 @@ namespace framework {
struct
AttrTypeHelper
{
template
<
typename
T
>
static
void
SetAttrType
(
AttrProto
*
attr
);
static
Attribute
GetAttrValue
(
const
AttrDesc
&
attr_desc
)
{
switch
(
attr_desc
.
type
())
{
case
paddle
:
:
framework
::
AttrType
::
INT
:
{
return
attr_desc
.
i
();
}
case
paddle
:
:
framework
::
AttrType
::
FLOAT
:
{
return
attr_desc
.
f
();
}
case
paddle
:
:
framework
::
AttrType
::
STRING
:
{
return
attr_desc
.
s
();
}
case
paddle
:
:
framework
::
AttrType
::
INTS
:
{
std
::
vector
<
int
>
val
(
attr_desc
.
ints_size
());
for
(
int
i
=
0
;
i
<
attr_desc
.
ints_size
();
++
i
)
{
val
[
i
]
=
attr_desc
.
ints
(
i
);
}
return
val
;
}
case
paddle
:
:
framework
::
AttrType
::
FLOATS
:
{
std
::
vector
<
float
>
val
(
attr_desc
.
floats_size
());
for
(
int
i
=
0
;
i
<
attr_desc
.
floats_size
();
++
i
)
{
val
[
i
]
=
attr_desc
.
floats
(
i
);
}
return
val
;
}
case
paddle
:
:
framework
::
AttrType
::
STRINGS
:
{
std
::
vector
<
std
::
string
>
val
(
attr_desc
.
strings_size
());
for
(
int
i
=
0
;
i
<
attr_desc
.
strings_size
();
++
i
)
{
val
[
i
]
=
attr_desc
.
strings
(
i
);
}
return
val
;
}
}
PADDLE_ENFORCE
(
false
,
"Unknown OpDesc::AttrDesc::type !"
);
return
boost
::
blank
();
}
};
// this class not only make proto but also init attribute checkers.
...
...
@@ -136,7 +99,7 @@ class OpProtoAndCheckerMaker {
*
attr
->
mutable_name
()
=
name
;
*
attr
->
mutable_comment
()
=
comment
;
attr
->
set_generated
(
generated
);
AttrTypeHelper
::
SetAttrType
<
T
>
(
attr
);
attr
->
set_type
(
AttrTypeID
<
T
>
()
);
return
op_checker_
->
AddAttrChecker
<
T
>
(
name
);
}
...
...
@@ -297,7 +260,7 @@ class OpRegistry {
AttributeMap
attrs
;
for
(
auto
&
attr
:
op_desc
.
attrs
())
{
attrs
[
attr
.
name
()]
=
AttrTypeHelper
::
GetAttrValue
(
attr
);
attrs
[
attr
.
name
()]
=
GetAttrValue
(
attr
);
}
return
CreateOp
(
op_desc
.
type
(),
inputs
,
outputs
,
attrs
);
...
...
paddle/framework/operator.h
浏览文件 @
8740276d
...
...
@@ -20,7 +20,7 @@ limitations under the License. */
#include <unordered_map>
#include <vector>
#include "paddle/framework/attr
_checker
.h"
#include "paddle/framework/attr
ibute
.h"
#include "paddle/framework/op_desc.pb.h"
#include "paddle/framework/op_proto.pb.h"
#include "paddle/framework/scope.h"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录