Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
7002e69b
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看板
提交
7002e69b
编写于
9月 06, 2017
作者:
W
whs
提交者:
GitHub
9月 06, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3878 from wanghaoshuang/fix_attr
Make attribute support for std::vector<std::pair<int, int>>
上级
ad0dc8fd
e687f3f5
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
27 addition
and
2 deletion
+27
-2
paddle/framework/attribute.cc
paddle/framework/attribute.cc
+12
-0
paddle/framework/attribute.h
paddle/framework/attribute.h
+2
-1
paddle/framework/framework.proto
paddle/framework/framework.proto
+7
-0
python/paddle/v2/framework/op.py
python/paddle/v2/framework/op.py
+6
-1
未找到文件。
paddle/framework/attribute.cc
浏览文件 @
7002e69b
...
@@ -43,6 +43,10 @@ template <>
...
@@ -43,6 +43,10 @@ template <>
AttrType
AttrTypeID
<
std
::
vector
<
std
::
string
>>
()
{
AttrType
AttrTypeID
<
std
::
vector
<
std
::
string
>>
()
{
return
STRINGS
;
return
STRINGS
;
}
}
template
<
>
AttrType
AttrTypeID
<
std
::
vector
<
std
::
pair
<
int
,
int
>>>
()
{
return
INT_PAIRS
;
}
Attribute
GetAttrValue
(
const
OpDesc
::
Attr
&
attr_desc
)
{
Attribute
GetAttrValue
(
const
OpDesc
::
Attr
&
attr_desc
)
{
switch
(
attr_desc
.
type
())
{
switch
(
attr_desc
.
type
())
{
...
@@ -76,6 +80,14 @@ Attribute GetAttrValue(const OpDesc::Attr& attr_desc) {
...
@@ -76,6 +80,14 @@ Attribute GetAttrValue(const OpDesc::Attr& attr_desc) {
}
}
return
val
;
return
val
;
}
}
case
paddle
::
framework
::
AttrType
::
INT_PAIRS
:
{
std
::
vector
<
std
::
pair
<
int
,
int
>>
val
(
attr_desc
.
int_pairs_size
());
for
(
int
i
=
0
;
i
<
attr_desc
.
int_pairs_size
();
++
i
)
{
val
[
i
].
first
=
attr_desc
.
int_pairs
(
i
).
first
();
val
[
i
].
second
=
attr_desc
.
int_pairs
(
i
).
second
();
}
return
val
;
}
}
}
PADDLE_ENFORCE
(
false
,
"Unknown OpDesc::AttrDesc::type !"
);
PADDLE_ENFORCE
(
false
,
"Unknown OpDesc::AttrDesc::type !"
);
return
boost
::
blank
();
return
boost
::
blank
();
...
...
paddle/framework/attribute.h
浏览文件 @
7002e69b
...
@@ -28,7 +28,8 @@ namespace paddle {
...
@@ -28,7 +28,8 @@ namespace paddle {
namespace
framework
{
namespace
framework
{
typedef
boost
::
variant
<
boost
::
blank
,
int
,
float
,
std
::
string
,
std
::
vector
<
int
>
,
typedef
boost
::
variant
<
boost
::
blank
,
int
,
float
,
std
::
string
,
std
::
vector
<
int
>
,
std
::
vector
<
float
>
,
std
::
vector
<
std
::
string
>>
std
::
vector
<
float
>
,
std
::
vector
<
std
::
string
>
,
std
::
vector
<
std
::
pair
<
int
,
int
>>>
Attribute
;
Attribute
;
typedef
std
::
unordered_map
<
std
::
string
,
Attribute
>
AttributeMap
;
typedef
std
::
unordered_map
<
std
::
string
,
Attribute
>
AttributeMap
;
...
...
paddle/framework/framework.proto
浏览文件 @
7002e69b
...
@@ -22,8 +22,14 @@ enum AttrType {
...
@@ -22,8 +22,14 @@ enum AttrType {
INTS
=
3
;
INTS
=
3
;
FLOATS
=
4
;
FLOATS
=
4
;
STRINGS
=
5
;
STRINGS
=
5
;
INT_PAIRS
=
6
;
}
}
message
IntPair
{
required
int32
first
=
1
;
required
int32
second
=
2
;
};
// OpDesc describes an instance of a C++ framework::OperatorBase
// OpDesc describes an instance of a C++ framework::OperatorBase
// derived class type.
// derived class type.
message
OpDesc
{
message
OpDesc
{
...
@@ -37,6 +43,7 @@ message OpDesc {
...
@@ -37,6 +43,7 @@ message OpDesc {
repeated
int32
ints
=
6
;
repeated
int32
ints
=
6
;
repeated
float
floats
=
7
;
repeated
float
floats
=
7
;
repeated
string
strings
=
8
;
repeated
string
strings
=
8
;
repeated
IntPair
int_pairs
=
9
;
};
};
message
Var
{
message
Var
{
...
...
python/paddle/v2/framework/op.py
浏览文件 @
7002e69b
...
@@ -94,9 +94,14 @@ class OpDescCreationMethod(object):
...
@@ -94,9 +94,14 @@ class OpDescCreationMethod(object):
new_attr
.
floats
.
extend
(
user_defined_attr
)
new_attr
.
floats
.
extend
(
user_defined_attr
)
elif
attr
.
type
==
framework_pb2
.
STRINGS
:
elif
attr
.
type
==
framework_pb2
.
STRINGS
:
new_attr
.
strings
.
extend
(
user_defined_attr
)
new_attr
.
strings
.
extend
(
user_defined_attr
)
elif
attr
.
type
==
framework_pb2
.
INT_PAIRS
:
for
p
in
user_defined_attr
:
pair
=
new_attr
.
pairs
.
add
()
pair
.
first
=
p
[
0
]
pair
.
second
=
p
[
1
]
else
:
else
:
raise
NotImplementedError
(
"Not support attribute type "
+
raise
NotImplementedError
(
"Not support attribute type "
+
attr
.
type
)
str
(
attr
.
type
)
)
return
op_desc
return
op_desc
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录