Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
19292ac6
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看板
提交
19292ac6
编写于
2月 22, 2019
作者:
D
dengkaipeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix adaptive pool doc.test=develop
上级
676995c8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
91 addition
and
18 deletion
+91
-18
paddle/fluid/operators/pool_op.cc
paddle/fluid/operators/pool_op.cc
+68
-7
python/paddle/fluid/layers/nn.py
python/paddle/fluid/layers/nn.py
+23
-11
未找到文件。
paddle/fluid/operators/pool_op.cc
浏览文件 @
19292ac6
...
@@ -262,28 +262,52 @@ Example:
...
@@ -262,28 +262,52 @@ Example:
For exclusive = false:
For exclusive = false:
$$
$$
hstart = i * strides[0] - paddings[0]
hstart = i * strides[0] - paddings[0]
$$
$$
hend = hstart + ksize[0]
hend = hstart + ksize[0]
$$
$$
wstart = j * strides[1] - paddings[1]
wstart = j * strides[1] - paddings[1]
$$
$$
wend = wstart + ksize[1]
wend = wstart + ksize[1]
$$
$$
Output(i ,j) = \\frac{sum(Input[hstart:hend, wstart:wend])}{ksize[0] * ksize[1]}
Output(i ,j) = \\frac{sum(Input[hstart:hend, wstart:wend])}{ksize[0] * ksize[1]}
$$
$$
For exclusive = true:
For exclusive = true:
$$
$$
hstart = max(0, i * strides[0] - paddings[0])
hstart = max(0, i * strides[0] - paddings[0])
$$
$$
hend = min(H, hstart + ksize[0])
hend = min(H, hstart + ksize[0])
$$
$$
wstart = max(0, j * strides[1] - paddings[1])
wstart = max(0, j * strides[1] - paddings[1])
$$
$$
wend = min(W, wstart + ksize[1])
wend = min(W, wstart + ksize[1])
$$
$$
Output(i ,j) = \\frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)}
Output(i ,j) = \\frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)}
$$
$$
For adaptive = true:
For adaptive = true:
$$
$$
hstart = floor(i * H_{in} / H_{out})
hstart = floor(i * H_{in} / H_{out})
hend = ceil((i + 1) * H_{in} / H_{out})
$$
wstart = floor(j * W_{in} / W_{out})
$$
wend = ceil((j + 1) * W_{in} / W_{out})
hend = ceil((i + 1) * H_{in} / H_{out})
Output(i ,j) = \\frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)}
$$
$$
$$
wstart = floor(j * W_{in} / W_{out})
$$
$$
wend = ceil((j + 1) * W_{in} / W_{out})
$$
$$
Output(i ,j) = \\frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)}
$$
)DOC"
);
)DOC"
);
}
}
...
@@ -403,35 +427,72 @@ Example:
...
@@ -403,35 +427,72 @@ Example:
H_{out} = \frac{(H_{in} - ksize[1] + 2 * paddings[1] + strides[1] -1)}{strides[1]} + 1 \\
H_{out} = \frac{(H_{in} - ksize[1] + 2 * paddings[1] + strides[1] -1)}{strides[1]} + 1 \\
W_{out} = \frac{(W_{in} - ksize[2] + 2 * paddings[2] + strides[2] -1)}{strides[2]} + 1
W_{out} = \frac{(W_{in} - ksize[2] + 2 * paddings[2] + strides[2] -1)}{strides[2]} + 1
$$
$$
For exclusive = false:
For exclusive = false:
$$
$$
dstart = i * strides[0] - paddings[0]
dstart = i * strides[0] - paddings[0]
$$
$$
dend = dstart + ksize[0]
dend = dstart + ksize[0]
$$
$$
hstart = j * strides[1] - paddings[1]
hstart = j * strides[1] - paddings[1]
$$
$$
hend = hstart + ksize[1]
hend = hstart + ksize[1]
$$
$$
wstart = k * strides[2] - paddings[2]
wstart = k * strides[2] - paddings[2]
$$
$$
wend = wstart + ksize[2]
wend = wstart + ksize[2]
$$
$$
Output(i ,j, k) = \\frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{ksize[0] * ksize[1] * ksize[2]}
Output(i ,j, k) = \\frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{ksize[0] * ksize[1] * ksize[2]}
$$
$$
For exclusive = true:
For exclusive = true:
$$
$$
dstart = max(0, i * strides[0] - paddings[0])
dstart = max(0, i * strides[0] - paddings[0])
$$
$$
dend = min(D, dstart + ksize[0])
dend = min(D, dstart + ksize[0])
$$
$$
hstart = max(0, j * strides[1] - paddings[1])
hstart = max(0, j * strides[1] - paddings[1])
$$
$$
hend = min(H, hstart + ksize[1])
hend = min(H, hstart + ksize[1])
$$
$$
wstart = max(0, k * strides[2] - paddings[2])
wstart = max(0, k * strides[2] - paddings[2])
$$
$$
wend = min(W, wstart + ksize[2])
wend = min(W, wstart + ksize[2])
$$
$$
Output(i ,j, k) = \\frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)}
Output(i ,j, k) = \\frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)}
$$
$$
For adaptive = true:
For adaptive = true:
$$
$$
dstart = floor(i * D_{in} / D_{out})
dstart = floor(i * D_{in} / D_{out})
$$
$$
dend = ceil((i + 1) * D_{in} / D_{out})
dend = ceil((i + 1) * D_{in} / D_{out})
$$
$$
hstart = floor(j * H_{in} / H_{out})
hstart = floor(j * H_{in} / H_{out})
$$
$$
hend = ceil((j + 1) * H_{in} / H_{out})
hend = ceil((j + 1) * H_{in} / H_{out})
$$
$$
wstart = floor(k * W_{in} / W_{out})
wstart = floor(k * W_{in} / W_{out})
$$
$$
wend = ceil((k + 1) * W_{in} / W_{out})
wend = ceil((k + 1) * W_{in} / W_{out})
$$
$$
Output(i ,j, k) = \\frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)}
Output(i ,j, k) = \\frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)}
$$
$$
...
...
python/paddle/fluid/layers/nn.py
浏览文件 @
19292ac6
...
@@ -2569,7 +2569,13 @@ def adaptive_pool2d(input,
...
@@ -2569,7 +2569,13 @@ def adaptive_pool2d(input,
require_index
=
False
,
require_index
=
False
,
name
=
None
):
name
=
None
):
"""
"""
${comment}
**Adaptive Pool2d Operator**
The adaptive_pool2d operation calculates the output based on the input, pool_size,
pool_type parameters. Input(X) and output(Out) are in NCHW format, where N is batch
size, C is the number of channels, H is the height of the feature, and W is
the width of the feature. Parameters(pool_size) should contain two elements which
represent height and width, respectively. Also the H and W dimensions of output(Out)
is same as Parameter(pool_size).
Args:
Args:
input (Variable): The input tensor of pooling operator. The format of
input (Variable): The input tensor of pooling operator. The format of
...
@@ -2579,8 +2585,8 @@ def adaptive_pool2d(input,
...
@@ -2579,8 +2585,8 @@ def adaptive_pool2d(input,
pool_size (int|list|tuple): The pool kernel size. If pool kernel size is a tuple or list,
pool_size (int|list|tuple): The pool kernel size. If pool kernel size is a tuple or list,
it must contain two integers, (pool_size_Height, pool_size_Width).
it must contain two integers, (pool_size_Height, pool_size_Width).
pool_type: ${pooling_type_comment}
pool_type: ${pooling_type_comment}
require_index (bool): If true, the index of max pooling point
along with outputs.
require_index (bool): If true, the index of max pooling point
will be returned along
i
t cannot be set in average pooling type.
with outputs. I
t cannot be set in average pooling type.
name (str|None): A name for this layer(optional). If set None, the
name (str|None): A name for this layer(optional). If set None, the
layer will be named automatically.
layer will be named automatically.
...
@@ -2661,18 +2667,24 @@ def adaptive_pool3d(input,
...
@@ -2661,18 +2667,24 @@ def adaptive_pool3d(input,
require_index
=
False
,
require_index
=
False
,
name
=
None
):
name
=
None
):
"""
"""
${comment}
**Adaptive Pool3d Operator**
The adaptive_pool3d operation calculates the output based on the input, pool_size,
pool_type parameters. Input(X) and output(Out) are in NCDHW format, where N is batch
size, C is the number of channels, D is the depth of the feature, H is the height of
the feature, and W is the width of the feature. Parameters(pool_size) should contain
three elements which represent height and width, respectively. Also the D, H and W
dimensions of output(Out) is same as Parameter(pool_size).
Args:
Args:
input (Variable): The input tensor of pooling operator. The format of
input (Variable): The input tensor of pooling operator. The format of
input tensor is NCHW, where N is batch size, C is
input tensor is NC
D
HW, where N is batch size, C is
the number of channels,
H is the height of the
the number of channels,
D is the depth of the feature,
feature, and W is the width of the feature.
H is the height of the
feature, and W is the width of the feature.
pool_size (int|list|tuple): The pool kernel size. If pool kernel size is a tuple or list,
pool_size (int|list|tuple): The pool kernel size. If pool kernel size is a tuple or list,
it must contain t
wo
integers, (Depth, Height, Width).
it must contain t
hree
integers, (Depth, Height, Width).
pool_type: ${pooling_type_comment}
pool_type: ${pooling_type_comment}
require_index (bool): If true, the index of max pooling point
along with outputs.
require_index (bool): If true, the index of max pooling point
will be returned along
i
t cannot be set in average pooling type.
with outputs. I
t cannot be set in average pooling type.
name (str|None): A name for this layer(optional). If set None, the
name (str|None): A name for this layer(optional). If set None, the
layer will be named automatically.
layer will be named automatically.
...
@@ -2709,7 +2721,7 @@ def adaptive_pool3d(input,
...
@@ -2709,7 +2721,7 @@ def adaptive_pool3d(input,
name='data', shape=[3, 32, 32], dtype='float32')
name='data', shape=[3, 32, 32], dtype='float32')
pool_out, mask = fluid.layers.adaptive_pool3d(
pool_out, mask = fluid.layers.adaptive_pool3d(
input=data,
input=data,
pool_size=[3, 3],
pool_size=[3, 3
, 3
],
pool_type='avg')
pool_type='avg')
"""
"""
if
pool_type
not
in
[
"max"
,
"avg"
]:
if
pool_type
not
in
[
"max"
,
"avg"
]:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录