Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
88744e4a
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看板
提交
88744e4a
编写于
1月 24, 2019
作者:
T
tink2123
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed some errors
test=develop
上级
48cc4846
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
58 addition
and
55 deletion
+58
-55
paddle/fluid/API.spec
paddle/fluid/API.spec
+4
-3
paddle/fluid/operators/interpolate_op.cc
paddle/fluid/operators/interpolate_op.cc
+7
-10
paddle/fluid/operators/interpolate_op.cu
paddle/fluid/operators/interpolate_op.cu
+4
-0
paddle/fluid/operators/interpolate_op.h
paddle/fluid/operators/interpolate_op.h
+4
-0
python/paddle/fluid/layers/nn.py
python/paddle/fluid/layers/nn.py
+11
-16
python/paddle/fluid/tests/unittests/test_bilinear_interp_op.py
...n/paddle/fluid/tests/unittests/test_bilinear_interp_op.py
+27
-25
python/paddle/fluid/tests/unittests/test_nearest_interp_op.py
...on/paddle/fluid/tests/unittests/test_nearest_interp_op.py
+1
-1
未找到文件。
paddle/fluid/API.spec
浏览文件 @
88744e4a
...
...
@@ -140,10 +140,10 @@ paddle.fluid.layers.label_smooth ArgSpec(args=['label', 'prior_dist', 'epsilon',
paddle.fluid.layers.roi_pool ArgSpec(args=['input', 'rois', 'pooled_height', 'pooled_width', 'spatial_scale'], varargs=None, keywords=None, defaults=(1, 1, 1.0))
paddle.fluid.layers.roi_align ArgSpec(args=['input', 'rois', 'pooled_height', 'pooled_width', 'spatial_scale', 'sampling_ratio', 'name'], varargs=None, keywords=None, defaults=(1, 1, 1.0, -1, None))
paddle.fluid.layers.dice_loss ArgSpec(args=['input', 'label', 'epsilon'], varargs=None, keywords=None, defaults=(1e-05,))
paddle.fluid.layers.image_resize ArgSpec(args=['input', 'out_shape', 'scale', 'name', 'resample', 'actual_shape'
], varargs=None, keywords=None, defaults=(None, None, None, 'BILINEAR', None
))
paddle.fluid.layers.image_resize ArgSpec(args=['input', 'out_shape', 'scale', 'name', 'resample', 'actual_shape'
, 'align_corners', 'align_mode'], varargs=None, keywords=None, defaults=(None, None, None, 'BILINEAR', None, True, 1
))
paddle.fluid.layers.image_resize_short ArgSpec(args=['input', 'out_short_len', 'resample'], varargs=None, keywords=None, defaults=('BILINEAR',))
paddle.fluid.layers.resize_bilinear ArgSpec(args=['input', 'out_shape', 'scale', 'name', 'actual_shape'
], varargs=None, keywords=None, defaults=(None, None, None, None
))
paddle.fluid.layers.resize_nearest ArgSpec(args=['input', 'out_shape', 'scale', 'name', 'actual_shape'
], varargs=None, keywords=None, defaults=(None, None, None, Non
e))
paddle.fluid.layers.resize_bilinear ArgSpec(args=['input', 'out_shape', 'scale', 'name', 'actual_shape'
, 'align_corners', 'align_mode'], varargs=None, keywords=None, defaults=(None, None, None, None, True, 1
))
paddle.fluid.layers.resize_nearest ArgSpec(args=['input', 'out_shape', 'scale', 'name', 'actual_shape'
, 'align_corners'], varargs=None, keywords=None, defaults=(None, None, None, None, Tru
e))
paddle.fluid.layers.gather ArgSpec(args=['input', 'index'], varargs=None, keywords=None, defaults=None)
paddle.fluid.layers.scatter ArgSpec(args=['input', 'index', 'updates', 'name'], varargs=None, keywords=None, defaults=(None,))
paddle.fluid.layers.sequence_scatter ArgSpec(args=['input', 'index', 'updates', 'name'], varargs=None, keywords=None, defaults=(None,))
...
...
@@ -505,3 +505,4 @@ paddle.reader.Fake.__init__ ArgSpec(args=['self'], varargs=None, keywords=None,
paddle.reader.creator.np_array ArgSpec(args=['x'], varargs=None, keywords=None, defaults=None)
paddle.reader.creator.text_file ArgSpec(args=['path'], varargs=None, keywords=None, defaults=None)
paddle.reader.creator.recordio ArgSpec(args=['paths', 'buf_size'], varargs=None, keywords=None, defaults=(100,))
paddle/fluid/operators/interpolate_op.cc
浏览文件 @
88744e4a
...
...
@@ -90,10 +90,10 @@ class InterpolateOpMaker : public framework::OpProtoAndCheckerMaker {
"if Flase, are not aligned"
)
.
SetDefault
(
true
);
AddAttr
<
int
>
(
"align_mode"
,
"(int, default
\'
0
\'
), align_corners mode , can be
\'
0
\'
"
"
for pytorch calculation method
, can be
\'
1
\'
for "
"
tensorflow calculation method
."
)
.
SetDefault
(
0
);
"(int, default
\'
1
\'
), can be
\'
0
\'
for
"
"
src_idx = scale*(dst_indx+0.5)-0.5
, can be
\'
1
\'
for "
"
src_idx = scale*dst_index
."
)
.
SetDefault
(
1
);
AddComment
(
R"DOC(
This operator samples input X to given output shape by using specified
interpolation method, the interpolation methods can be \"nearest\"
...
...
@@ -115,7 +115,7 @@ class InterpolateOpMaker : public framework::OpProtoAndCheckerMaker {
Example:
f
or scale:
F
or scale:
if align_corners = True and out_{size}>1 :
...
...
@@ -148,7 +148,7 @@ class InterpolateOpMaker : public framework::OpProtoAndCheckerMaker {
Bilinear interpolation:
case 1
:
if
:
align_corners = False , align_mode = 0
input : (N,C,H_in,W_in)
...
...
@@ -158,10 +158,7 @@ class InterpolateOpMaker : public framework::OpProtoAndCheckerMaker {
W_out = (W_{in}+0.5) * scale_{factor} - 0.5
case 2:
align_corners = False , align_mode = 1
or
align_corners = True
else:
input : (N,C,H_in,W_in)
output: (N,C,H_out,W_out) where:
...
...
paddle/fluid/operators/interpolate_op.cu
浏览文件 @
88744e4a
...
...
@@ -105,6 +105,7 @@ __global__ void KeBilinearInterpFw(
int
in_img_idy
=
(
align_mode
==
0
&&
!
align_corners
)
?
static_cast
<
int
>
(
ratio_h
*
(
out_img_idy
+
0.5
)
-
0.5
)
:
static_cast
<
int
>
(
ratio_h
*
out_img_idy
);
in_img_idy
=
(
in_img_idy
>
0
)
?
in_img_idy
:
0
;
int
h_id
=
(
in_img_idy
<
in_img_h
-
1
)
?
1
:
0
;
T
h1lambda
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_h
*
(
out_img_idy
+
0.5
)
-
0.5
-
in_img_idy
...
...
@@ -115,6 +116,7 @@ __global__ void KeBilinearInterpFw(
int
in_img_idx
=
(
align_mode
==
0
&&
!
align_corners
)
?
static_cast
<
int
>
(
ratio_w
*
(
out_img_idx
+
0.5
)
-
0.5
)
:
static_cast
<
int
>
(
ratio_w
*
out_img_idx
);
in_img_idx
=
(
in_img_idx
>
0
)
?
in_img_idx
:
0
;
int
w_id
=
(
in_img_idx
<
in_img_w
-
1
)
?
1
:
0
;
T
w1lambda
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_w
*
(
out_img_idx
+
0.5
)
-
0.5
-
in_img_idx
...
...
@@ -153,6 +155,7 @@ __global__ void KeBilinearInterpBw(
int
in_img_idy
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_h
*
(
out_img_idy
+
0.5
)
-
0.5
:
ratio_h
*
out_img_idy
;
in_img_idy
=
(
in_img_idy
>
0
)
?
in_img_idy
:
0
;
int
h_id
=
(
in_img_idy
<
in_img_h
-
1
)
?
1
:
0
;
T
h1lambda
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_h
*
(
out_img_idy
+
0.5
)
-
0.5
-
in_img_idy
...
...
@@ -164,6 +167,7 @@ __global__ void KeBilinearInterpBw(
int
in_img_idx
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_w
*
(
out_img_idx
+
0.5
)
-
0.5
:
ratio_w
*
out_img_idx
;
in_img_idx
=
(
in_img_idx
>
0
)
?
in_img_idx
:
0
;
int
w_id
=
(
in_img_idx
<
in_img_w
-
1
)
?
1
:
0
;
T
w1lambda
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_w
*
(
out_img_idx
+
0.5
)
-
0.5
-
in_img_idx
...
...
paddle/fluid/operators/interpolate_op.h
浏览文件 @
88744e4a
...
...
@@ -60,6 +60,7 @@ static void BilinearInterpolation(const Tensor& input, Tensor* output,
int
y_n
=
(
align_mode
==
0
&&
!
align_corners
)
?
static_cast
<
int
>
(
ratio_h
*
(
k
+
0.5
)
-
0.5
)
:
static_cast
<
int
>
(
ratio_h
*
k
);
y_n
=
(
y_n
>
0
)
?
y_n
:
0
;
int
y_s
=
(
y_n
+
1
)
<
(
in_h
-
1
)
?
(
y_n
+
1
)
:
(
in_h
-
1
);
float
d_n
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_h
*
(
k
+
0.5
)
-
0.5
-
y_n
...
...
@@ -70,6 +71,7 @@ static void BilinearInterpolation(const Tensor& input, Tensor* output,
int
x_w
=
(
align_mode
==
0
&&
!
align_corners
)
?
static_cast
<
int
>
(
ratio_w
*
(
l
+
0.5
)
-
0.5
)
:
static_cast
<
int
>
(
ratio_w
*
l
);
x_w
=
(
x_w
>
0
)
?
x_w
:
0
;
int
x_e
=
(
x_w
+
1
)
<
(
in_w
-
1
)
?
(
x_w
+
1
)
:
(
in_w
-
1
);
float
d_w
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_w
*
(
l
+
0.5
)
-
0.5
-
x_w
...
...
@@ -128,6 +130,7 @@ static void BilinearInterpolationGrad(const Tensor& output_grad,
int
y_n
=
(
align_mode
==
0
&&
!
align_corners
)
?
static_cast
<
int
>
(
ratio_h
*
(
k
+
0.5
)
-
0.5
)
:
static_cast
<
int
>
(
ratio_h
*
k
);
y_n
=
(
y_n
>
0
)
?
y_n
:
0
;
int
y_s
=
(
y_n
+
1
)
<
(
in_h
-
1
)
?
(
y_n
+
1
)
:
(
in_h
-
1
);
float
d_n
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_h
*
(
k
+
0.5
)
-
0.5
-
y_n
...
...
@@ -138,6 +141,7 @@ static void BilinearInterpolationGrad(const Tensor& output_grad,
int
x_w
=
(
align_mode
==
0
&&
!
align_corners
)
?
static_cast
<
int
>
(
ratio_w
*
(
l
+
0.5
)
-
0.5
)
:
static_cast
<
int
>
(
ratio_w
*
l
);
x_w
=
(
x_w
>
0
)
?
x_w
:
0
;
int
x_e
=
(
x_w
+
1
)
<
(
in_w
-
1
)
?
(
x_w
+
1
)
:
(
in_w
-
1
);
float
d_w
=
(
align_mode
==
0
&&
!
align_corners
)
?
ratio_w
*
(
l
+
0.5
)
-
0.5
-
x_w
...
...
python/paddle/fluid/layers/nn.py
浏览文件 @
88744e4a
...
...
@@ -6557,7 +6557,7 @@ def image_resize(input,
Example:
f
or scale:
F
or scale:
if align_corners = True && out_size > 1 :
...
...
@@ -6590,7 +6590,7 @@ def image_resize(input,
Bilinear interpolation:
case 1
:
if
:
align_corners = False , align_mode = 0
input : (N,C,H_in,W_in)
...
...
@@ -6600,10 +6600,7 @@ def image_resize(input,
W_out = (W_{in}+0.5) * scale_{factor} - 0.5
case 2:
align_corners = False , align_mode = 1
or
align_corners = True
else:
input : (N,C,H_in,W_in)
output: (N,C,H_out,W_out) where:
...
...
@@ -6652,8 +6649,9 @@ def image_resize(input,
input and output tensors are aligned, preserving the values at the
corner pixels.
Default: True
align_mode(int) : An optional input to specify align_corners mode. can be
\'
0
\'
for pytorch calculation method, can be
\'
1'\ for tensorflow calculation method.
align_mode(int) : An optional input to specify src_idx calculation. can be
\'
0
\'
for src_idx = scale*(dst_indx+0.5)-0.5 , can be
\'
1
\'
for
src_idx = scale*dst_index .
Returns:
Variable: The output is a 4-D tensor of the shape
...
...
@@ -6769,7 +6767,7 @@ def resize_bilinear(input,
Example:
f
or scale:
F
or scale:
if align_corners = True && out_size > 1 :
...
...
@@ -6781,7 +6779,7 @@ def resize_bilinear(input,
Bilinear interpolation:
case 1
:
if
:
align_corners = False , align_mode = 0
input : (N,C,H_in,W_in)
...
...
@@ -6791,11 +6789,8 @@ def resize_bilinear(input,
W_out = (W_{in}+0.5) * scale_{factor} - 0.5
case 2:
align_corners = False , align_mode = 1
or
align_corners = True
else:
input : (N,C,H_in,W_in)
output: (N,C,H_out,W_out) where:
...
...
@@ -6858,7 +6853,7 @@ def resize_nearest(input,
Example:
f
or scale:
F
or scale:
if align_corners = True && out_size > 1 :
...
...
python/paddle/fluid/tests/unittests/test_bilinear_interp_op.py
浏览文件 @
88744e4a
...
...
@@ -54,6 +54,7 @@ def bilinear_interp_np(input,
else
:
h
=
int
(
ratio_h
*
i
)
h
=
max
(
0
,
h
)
hid
=
1
if
h
<
in_h
-
1
else
0
if
(
align_mode
==
0
and
not
align_corners
):
h1lambda
=
ratio_h
*
(
i
+
0.5
)
-
0.5
-
h
...
...
@@ -65,6 +66,7 @@ def bilinear_interp_np(input,
w
=
int
(
ratio_w
*
(
j
+
0.5
)
-
0.5
)
else
:
w
=
int
(
ratio_w
*
j
)
w
=
max
(
0
,
w
)
wid
=
1
if
w
<
in_w
-
1
else
0
if
(
align_mode
==
0
and
not
align_corners
):
w1lambda
=
ratio_w
*
(
j
+
0.5
)
-
0.5
-
w
...
...
@@ -116,8 +118,8 @@ class TestBilinearInterpOp(OpTest):
self
.
out_h
=
2
self
.
out_w
=
2
self
.
out_size
=
np
.
array
([
3
,
3
]).
astype
(
"int32"
)
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase1
(
TestBilinearInterpOp
):
...
...
@@ -126,8 +128,8 @@ class TestBilinearInterpCase1(TestBilinearInterpOp):
self
.
input_shape
=
[
4
,
1
,
7
,
8
]
self
.
out_h
=
1
self
.
out_w
=
1
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase2
(
TestBilinearInterpOp
):
...
...
@@ -136,8 +138,8 @@ class TestBilinearInterpCase2(TestBilinearInterpOp):
self
.
input_shape
=
[
3
,
3
,
9
,
6
]
self
.
out_h
=
12
self
.
out_w
=
12
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase3
(
TestBilinearInterpOp
):
...
...
@@ -146,8 +148,8 @@ class TestBilinearInterpCase3(TestBilinearInterpOp):
self
.
input_shape
=
[
1
,
1
,
128
,
64
]
self
.
out_h
=
64
self
.
out_w
=
128
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase4
(
TestBilinearInterpOp
):
...
...
@@ -157,8 +159,8 @@ class TestBilinearInterpCase4(TestBilinearInterpOp):
self
.
out_h
=
1
self
.
out_w
=
1
self
.
out_size
=
np
.
array
([
2
,
2
]).
astype
(
"int32"
)
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase5
(
TestBilinearInterpOp
):
...
...
@@ -168,8 +170,8 @@ class TestBilinearInterpCase5(TestBilinearInterpOp):
self
.
out_h
=
12
self
.
out_w
=
12
self
.
out_size
=
np
.
array
([
11
,
11
]).
astype
(
"int32"
)
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase6
(
TestBilinearInterpOp
):
...
...
@@ -179,8 +181,8 @@ class TestBilinearInterpCase6(TestBilinearInterpOp):
self
.
out_h
=
64
self
.
out_w
=
128
self
.
out_size
=
np
.
array
([
65
,
129
]).
astype
(
"int32"
)
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpActualShape
(
TestBilinearInterpOp
):
...
...
@@ -190,8 +192,8 @@ class TestBilinearInterpActualShape(TestBilinearInterpOp):
self
.
out_h
=
64
self
.
out_w
=
32
self
.
out_size
=
np
.
array
([
66
,
40
]).
astype
(
"int32"
)
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpOpUint8
(
OpTest
):
...
...
@@ -225,8 +227,8 @@ class TestBilinearInterpOpUint8(OpTest):
self
.
input_shape
=
[
1
,
3
,
9
,
6
]
self
.
out_h
=
10
self
.
out_w
=
9
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase1Uint8
(
TestBilinearInterpOpUint8
):
...
...
@@ -235,8 +237,8 @@ class TestBilinearInterpCase1Uint8(TestBilinearInterpOpUint8):
self
.
input_shape
=
[
2
,
3
,
128
,
64
]
self
.
out_h
=
120
self
.
out_w
=
50
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpCase2Uint8
(
TestBilinearInterpOpUint8
):
...
...
@@ -246,20 +248,20 @@ class TestBilinearInterpCase2Uint8(TestBilinearInterpOpUint8):
self
.
out_h
=
5
self
.
out_w
=
13
self
.
out_size
=
np
.
array
([
6
,
15
]).
astype
(
"int32"
)
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
class
TestBilinearInterpOtherMethod1
(
TestBilinearInterpOp
):
def
set_align_mode
(
self
):
self
.
align_mode
=
1
self
.
align_corners
=
False
self
.
align_mode
=
1
class
TestBilinearInterpWithMethod2
(
TestBilinearInterpOp
):
def
set_align_mode
(
self
):
self
.
align_corners
=
Tru
e
self
.
align_mode
=
1
self
.
align_corners
=
Fals
e
self
.
align_mode
=
0
class
TestBilinearInterpWithMethod3
(
TestBilinearInterpOp
):
...
...
python/paddle/fluid/tests/unittests/test_nearest_interp_op.py
浏览文件 @
88744e4a
...
...
@@ -108,7 +108,7 @@ class TestNearestNeighborInterpCase1(TestNearestInterpOp):
self
.
input_shape
=
[
4
,
1
,
7
,
8
]
self
.
out_h
=
1
self
.
out_w
=
1
self
.
align_corners
=
Fals
e
self
.
align_corners
=
Tru
e
class
TestNearestNeighborInterpCase2
(
TestNearestInterpOp
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录