Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
f2ccc11f
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看板
提交
f2ccc11f
编写于
9月 22, 2017
作者:
C
chengduoZH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix pool doc (pool_op.cc)
上级
c2c2d610
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
62 addition
and
53 deletion
+62
-53
paddle/operators/pool_op.cc
paddle/operators/pool_op.cc
+62
-53
未找到文件。
paddle/operators/pool_op.cc
浏览文件 @
f2ccc11f
...
...
@@ -32,10 +32,7 @@ class PoolOp : public framework::OperatorWithKernel {
"X(Input) of Pooling should not be null."
);
PADDLE_ENFORCE_NOT_NULL
(
ctx
.
OutputVar
(
"Out"
),
"Out(Output) of Pooling should not be null."
);
// PADDLE_ENFORCE_NOT_NULL(Attr<std::string>("poolingType"),
// "pooling_type should not be null.");
// PADDLE_ENFORCE_NOT_NULL(Attr<std::vector<int>>("ksize"), "ksize should
// not be null.");
auto
in_X
=
ctx
.
Input
<
Tensor
>
(
"X"
);
auto
out
=
ctx
.
Output
<
Tensor
>
(
"Out"
);
int
global_pooling
=
Attr
<
int
>
(
"globalPooling"
);
...
...
@@ -56,11 +53,15 @@ class PoolOp : public framework::OperatorWithKernel {
}
if
(
ksize
.
size
()
==
2
)
{
PADDLE_ENFORCE_EQ
(
strides
.
size
(),
2
,
"Pool2DOp strides should be 2-D."
);
PADDLE_ENFORCE_EQ
(
paddings
.
size
(),
2
,
"Pool2DOp paddings should be 2-D."
);
PADDLE_ENFORCE_EQ
(
strides
.
size
(),
2
,
"Pool2DOp strides size should be 2 elements."
);
PADDLE_ENFORCE_EQ
(
paddings
.
size
(),
2
,
"Pool2DOp paddings size should be 2 elements"
);
}
else
{
PADDLE_ENFORCE_EQ
(
strides
.
size
(),
3
,
"Pool3DOp strides should be 3-D."
);
PADDLE_ENFORCE_EQ
(
paddings
.
size
(),
3
,
"Pool3DOp paddings should be 3-D."
);
PADDLE_ENFORCE_EQ
(
strides
.
size
(),
3
,
"Pool3DOp strides should be 3 elements."
);
PADDLE_ENFORCE_EQ
(
paddings
.
size
(),
3
,
"Pool3DOp paddings should be 3 elements."
);
}
std
::
vector
<
int64_t
>
output_shape
({
in_X
->
dims
()[
0
],
in_X
->
dims
()[
1
]});
for
(
size_t
i
=
0
;
i
<
ksize
.
size
();
++
i
)
{
...
...
@@ -83,76 +84,84 @@ class PoolOpGrad : public framework::OperatorWithKernel {
}
};
class
Pool
3
dOpMaker
:
public
framework
::
OpProtoAndCheckerMaker
{
class
Pool
2
dOpMaker
:
public
framework
::
OpProtoAndCheckerMaker
{
public:
Pool
3
dOpMaker
(
framework
::
OpProto
*
proto
,
framework
::
OpAttrChecker
*
op_checker
)
Pool
2
dOpMaker
(
framework
::
OpProto
*
proto
,
framework
::
OpAttrChecker
*
op_checker
)
:
OpProtoAndCheckerMaker
(
proto
,
op_checker
)
{
AddInput
(
"X"
,
"The input tensor of pooling operator. "
"The format of input tensor is NCDHW. Where N is batch size, C is the "
"number of channels, D, H and W is the depth, height and width of "
"image."
);
"The format of input tensor is NCHW. Where N is batch size, C is the "
"number of channels, H and W is the height and width of image."
);
AddOutput
(
"Out"
,
"The output tensor of pooling operator."
"The format of output tensor is also NC
D
HW."
);
"The format of output tensor is also NCHW."
);
AddAttr
<
std
::
string
>
(
"poolingType"
,
"poolingType of pooling operator.['max' or 'ave']"
);
"poolingType of pooling operator."
"str constant equal to 'max' or 'ave'"
);
AddAttr
<
std
::
vector
<
int
>>
(
"ksize"
,
"pooling size(depth, height, width) of pooling operator."
);
AddAttr
<
int
>
(
"globalPooling"
,
"default 0"
"whether to use the globalPooling."
)
"ksize"
,
"pooling size(height, width) of pooling operator."
);
AddAttr
<
int
>
(
"globalPooling"
,
"whether to use the globalPooling."
"int constant equal to 0 or 1"
"default 0"
"If globalPooling = 1, ksize is ignored and need not be specified."
)
.
SetDefault
(
0
);
AddAttr
<
std
::
vector
<
int
>>
(
"strides"
,
"default {1,1,1}"
"strides(depth, height, width) of pooling operator."
)
.
SetDefault
({
1
,
1
,
1
});
AddAttr
<
std
::
vector
<
int
>>
(
"paddings"
,
"default {0,0,0}"
"paddings(depth, height, width) of pooling operator."
)
.
SetDefault
({
0
,
0
,
0
});
AddAttr
<
std
::
vector
<
int
>>
(
"strides"
,
"strides(height, width) of pooling operator."
"default {1,1}"
)
.
SetDefault
({
1
,
1
});
AddAttr
<
std
::
vector
<
int
>>
(
"paddings"
,
"paddings(height, width) of pooling operator."
"default {0,0}"
)
.
SetDefault
({
0
,
0
});
AddComment
(
R"DOC(
The pooling
3
d operation calculates the output based on
The pooling
2
d operation calculates the output based on
the input, poolingType and ksize, strides, paddings parameters.
)DOC"
);
}
};
class
Pool2dOpMaker
:
public
framework
::
OpProtoAndCheckerMaker
{
class
Pool3dOpMaker
:
public
framework
::
OpProtoAndCheckerMaker
{
public:
Pool
2
dOpMaker
(
framework
::
OpProto
*
proto
,
framework
::
OpAttrChecker
*
op_checker
)
Pool
3
dOpMaker
(
framework
::
OpProto
*
proto
,
framework
::
OpAttrChecker
*
op_checker
)
:
OpProtoAndCheckerMaker
(
proto
,
op_checker
)
{
AddInput
(
"X"
,
"The input tensor of pooling operator. "
"The format of input tensor is NCHW. Where N is batch size, C is the "
"number of channels, H and W is the height and width of image."
);
AddInput
(
"X"
,
"The input tensor of pooling operator. "
"The format of input tensor is NCDHW. Where N is batch size, C is "
"the "
"number of channels, D, H and W is the depth, height and width of "
"image."
);
AddOutput
(
"Out"
,
"The output tensor of pooling operator."
"The format of output tensor is also NCHW."
);
"The format of output tensor is also NC
D
HW."
);
AddAttr
<
std
::
string
>
(
"poolingType"
,
"poolingType of pooling operator.['max' or 'ave']"
);
"poolingType of pooling operator."
"str constant equal to 'max' or 'ave'"
);
AddAttr
<
std
::
vector
<
int
>>
(
"ksize"
,
"pooling size(height, width) of pooling operator."
);
AddAttr
<
int
>
(
"globalPooling"
,
"default 0"
"whether to use the globalPooling.[0 or 1]"
)
"ksize"
,
"pooling size(depth, height, width) of pooling operator."
);
AddAttr
<
int
>
(
"globalPooling"
,
"whether to use the globalPooling."
"int constant equal to 0 or 1"
"default 0"
"If globalPooling = 1, ksize is ignored and need not be specified."
)
.
SetDefault
(
0
);
AddAttr
<
std
::
vector
<
int
>>
(
"strides"
,
"default {1, 1}"
"strides(height, width) of pooling operator."
)
.
SetDefault
({
1
,
1
});
AddAttr
<
std
::
vector
<
int
>>
(
"paddings"
,
"default {0, 0}"
"paddings(height, width) of pooling operator."
)
.
SetDefault
({
0
,
0
});
AddAttr
<
std
::
vector
<
int
>>
(
"strides"
,
"strides(depth, height, width) of pooling operator."
"default {1,1,1}"
)
.
SetDefault
({
1
,
1
,
1
});
AddAttr
<
std
::
vector
<
int
>>
(
"paddings"
,
"paddings(depth, height, width) of pooling operator."
"default {0,0,0}"
)
.
SetDefault
({
0
,
0
,
0
});
AddComment
(
R"DOC(
The pooling
2
d operation calculates the output based on
The pooling
3
d operation calculates the output based on
the input, poolingType and ksize, strides, paddings parameters.
)DOC"
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录