Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
f8c764c0
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看板
提交
f8c764c0
编写于
4月 14, 2019
作者:
C
ceci3
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix batch_norm and cos_sim infer shape, test=develop
上级
a5ef6bff
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
35 addition
and
15 deletion
+35
-15
paddle/fluid/operators/batch_norm_op.cc
paddle/fluid/operators/batch_norm_op.cc
+14
-4
paddle/fluid/operators/cos_sim_op.cc
paddle/fluid/operators/cos_sim_op.cc
+21
-11
未找到文件。
paddle/fluid/operators/batch_norm_op.cc
浏览文件 @
f8c764c0
...
...
@@ -65,11 +65,21 @@ void BatchNormOp::InferShape(framework::InferShapeContext *ctx) const {
(
data_layout
==
DataLayout
::
kNCHW
?
x_dims
[
1
]
:
x_dims
[
x_dims
.
size
()
-
1
]);
PADDLE_ENFORCE_EQ
(
ctx
->
GetInputDim
(
"Scale"
).
size
(),
1UL
);
PADDLE_ENFORCE_EQ
(
ctx
->
GetInputDim
(
"Scale"
)[
0
],
C
);
PADDLE_ENFORCE_EQ
(
ctx
->
GetInputDim
(
"Bias"
).
size
(),
1UL
);
PADDLE_ENFORCE_EQ
(
ctx
->
GetInputDim
(
"Bias"
)[
0
],
C
);
auto
scale_dim
=
ctx
->
GetInputDim
(
"Scale"
);
auto
bias_dim
=
ctx
->
GetInputDim
(
"Bias"
);
bool
check
=
true
;
if
((
!
ctx
->
IsRuntime
())
&&
(
framework
::
product
(
scale_dim
)
<=
0
||
framework
::
product
(
bias_dim
)
<=
0
))
{
check
=
false
;
}
if
(
check
)
{
PADDLE_ENFORCE_EQ
(
scale_dim
.
size
(),
1UL
);
PADDLE_ENFORCE_EQ
(
scale_dim
[
0
],
C
);
PADDLE_ENFORCE_EQ
(
scale_dim
.
size
(),
1UL
);
PADDLE_ENFORCE_EQ
(
scale_dim
[
0
],
C
);
}
ctx
->
SetOutputDim
(
"Y"
,
x_dims
);
ctx
->
SetOutputDim
(
"MeanOut"
,
{
C
});
ctx
->
SetOutputDim
(
"VarianceOut"
,
{
C
});
...
...
paddle/fluid/operators/cos_sim_op.cc
浏览文件 @
f8c764c0
...
...
@@ -40,17 +40,27 @@ class CosSimOp : public framework::OperatorWithKernel {
auto
x_dims
=
ctx
->
GetInputDim
(
"X"
);
auto
y_dims
=
ctx
->
GetInputDim
(
"Y"
);
PADDLE_ENFORCE_EQ
(
x_dims
.
size
(),
y_dims
.
size
(),
"Ranks of Input(X) and Input(Y) must be equal."
);
PADDLE_ENFORCE_GE
(
x_dims
.
size
(),
2
,
"Rank of Input(X) must not be less than 2."
);
PADDLE_ENFORCE_EQ
(
framework
::
slice_ddim
(
x_dims
,
1
,
x_dims
.
size
()),
framework
::
slice_ddim
(
y_dims
,
1
,
y_dims
.
size
()),
"All dimensions except the 1st of Input(X) and Input(Y) "
"must be equal."
);
PADDLE_ENFORCE
(
x_dims
[
0
]
==
y_dims
[
0
]
||
y_dims
[
0
]
==
1
,
"The 1st dimension of Input(Y) must be equal to Input(X) or"
" just 1 (which will be broadcasted to match Input(X))."
);
bool
check
=
true
;
if
((
!
ctx
->
IsRuntime
())
&&
(
framework
::
product
(
x_dims
)
<=
0
||
framework
::
product
(
y_dims
)
<=
0
))
{
check
=
false
;
}
if
(
check
)
{
PADDLE_ENFORCE_EQ
(
x_dims
.
size
(),
y_dims
.
size
(),
"Ranks of Input(X) and Input(Y) must be equal."
);
PADDLE_ENFORCE_GE
(
x_dims
.
size
(),
2
,
"Rank of Input(X) must not be less than 2."
);
PADDLE_ENFORCE_EQ
(
framework
::
slice_ddim
(
x_dims
,
1
,
x_dims
.
size
()),
framework
::
slice_ddim
(
y_dims
,
1
,
y_dims
.
size
()),
"All dimensions except the 1st of Input(X) and Input(Y) "
"must be equal."
);
PADDLE_ENFORCE
(
x_dims
[
0
]
==
y_dims
[
0
]
||
y_dims
[
0
]
==
1
,
"The 1st dimension of Input(Y) must be equal to Input(X) or"
" just 1 (which will be broadcasted to match Input(X))."
);
}
// resize tensor
ctx
->
SetOutputDim
(
"Out"
,
{
x_dims
[
0
],
1
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录