Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wmsofts
Paddle
提交
0718113a
P
Paddle
项目概览
wmsofts
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
0
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0718113a
编写于
9月 18, 2018
作者:
S
sneaxiy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modification
上级
d9942cd1
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
20 addition
and
21 deletion
+20
-21
paddle/fluid/API.spec
paddle/fluid/API.spec
+1
-1
paddle/fluid/operators/elementwise_mul_op.h
paddle/fluid/operators/elementwise_mul_op.h
+0
-1
paddle/fluid/operators/matmul_op.cc
paddle/fluid/operators/matmul_op.cc
+4
-6
paddle/fluid/operators/scale_op.cc
paddle/fluid/operators/scale_op.cc
+6
-0
paddle/fluid/operators/scale_op.h
paddle/fluid/operators/scale_op.h
+6
-2
python/paddle/fluid/layers/nn.py
python/paddle/fluid/layers/nn.py
+3
-11
未找到文件。
paddle/fluid/API.spec
浏览文件 @
0718113a
...
...
@@ -130,7 +130,7 @@ paddle.fluid.layers.split ArgSpec(args=['input', 'num_or_sections', 'dim', 'name
paddle.fluid.layers.ctc_greedy_decoder ArgSpec(args=['input', 'blank', 'name'], varargs=None, keywords=None, defaults=(None,))
paddle.fluid.layers.edit_distance ArgSpec(args=['input', 'label', 'normalized', 'ignored_tokens'], varargs=None, keywords=None, defaults=(True, None))
paddle.fluid.layers.l2_normalize ArgSpec(args=['x', 'axis', 'epsilon', 'name'], varargs=None, keywords=None, defaults=(1e-12, None))
paddle.fluid.layers.matmul ArgSpec(args=['x', 'y', 'transpose_x', 'transpose_y', '
scale', 'bias', 'name'], varargs=None, keywords=None, defaults=(False, False, 1.0, 0
.0, None))
paddle.fluid.layers.matmul ArgSpec(args=['x', 'y', 'transpose_x', 'transpose_y', '
alpha', 'name'], varargs=None, keywords=None, defaults=(False, False, 1
.0, None))
paddle.fluid.layers.topk ArgSpec(args=['input', 'k', 'name'], varargs=None, keywords=None, defaults=(None,))
paddle.fluid.layers.warpctc ArgSpec(args=['input', 'label', 'blank', 'norm_by_times'], varargs=None, keywords=None, defaults=(0, False))
paddle.fluid.layers.sequence_reshape ArgSpec(args=['input', 'new_dim'], varargs=None, keywords=None, defaults=None)
...
...
paddle/fluid/operators/elementwise_mul_op.h
浏览文件 @
0718113a
...
...
@@ -93,7 +93,6 @@ class ElementwiseMulGradKernel : public ElemwiseGradKernel<T> {
auto
*
x
=
ctx
.
Input
<
Tensor
>
(
"X"
);
auto
*
y
=
ctx
.
Input
<
Tensor
>
(
"Y"
);
// auto* out = ctx.Input<Tensor>("Out");
auto
*
dout
=
ctx
.
Input
<
Tensor
>
(
framework
::
GradVarName
(
"Out"
));
auto
*
out
=
dout
;
// out is not necessary
auto
*
dx
=
ctx
.
Output
<
Tensor
>
(
framework
::
GradVarName
(
"X"
));
...
...
paddle/fluid/operators/matmul_op.cc
浏览文件 @
0718113a
...
...
@@ -59,9 +59,8 @@ class MatMulKernel : public framework::OpKernel<T> {
RowMatrixFromVector
(
x
.
dims
()),
0
,
context
.
Attr
<
bool
>
(
"transpose_X"
));
auto
mat_dim_b
=
math
::
CreateMatrixDescriptor
(
ColumnMatrixFromVector
(
y
.
dims
()),
0
,
context
.
Attr
<
bool
>
(
"transpose_Y"
));
auto
scale
=
static_cast
<
T
>
(
context
.
Attr
<
float
>
(
"scale"
));
auto
bias
=
static_cast
<
T
>
(
context
.
Attr
<
float
>
(
"bias"
));
blas
.
MatMul
(
x
,
mat_dim_a
,
y
,
mat_dim_b
,
scale
,
out
,
bias
);
auto
scale
=
static_cast
<
T
>
(
context
.
Attr
<
float
>
(
"alpha"
));
blas
.
MatMul
(
x
,
mat_dim_a
,
y
,
mat_dim_b
,
scale
,
out
,
T
(
0
));
}
};
...
...
@@ -188,7 +187,7 @@ class MatMulGradKernel : public framework::OpKernel<T> {
auto
mat_dim_a
=
math
::
CreateMatrixDescriptor
(
a
.
dims
(),
0
,
trans_a
);
auto
mat_dim_b
=
math
::
CreateMatrixDescriptor
(
b
.
dims
(),
0
,
trans_b
);
blas
.
MatMul
(
a
,
mat_dim_a
,
b
,
mat_dim_b
,
static_cast
<
T
>
(
context
.
Attr
<
float
>
(
"
scale
"
)),
out
,
T
(
0
));
static_cast
<
T
>
(
context
.
Attr
<
float
>
(
"
alpha
"
)),
out
,
T
(
0
));
}
void
CalcInputGrad
(
const
framework
::
ExecutionContext
&
context
,
...
...
@@ -337,8 +336,7 @@ class MatMulOpMaker : public framework::OpProtoAndCheckerMaker {
R"DOC(If true, use the transpose of `Y`.
)DOC"
)
.
SetDefault
(
false
);
AddAttr
<
float
>
(
"scale"
,
"Scale"
).
SetDefault
(
1.0
f
);
AddAttr
<
float
>
(
"bias"
,
"Bias"
).
SetDefault
(
0.0
f
);
AddAttr
<
float
>
(
"alpha"
,
"The scale of Out"
).
SetDefault
(
1.0
f
);
AddComment
(
R"DOC(
MatMul Operator.
...
...
paddle/fluid/operators/scale_op.cc
浏览文件 @
0718113a
...
...
@@ -53,6 +53,11 @@ $$Out = scale*X$$
AddAttr
<
float
>
(
"scale"
,
"The scaling factor of the scale operator."
)
.
SetDefault
(
1.0
);
AddAttr
<
float
>
(
"bias"
,
"The bias of the scale operator."
).
SetDefault
(
0.0
);
AddAttr
<
bool
>
(
"bias_after_scale"
,
"Apply bias addition after or before scaling. It is useful for "
"numeric stability in some circumstances."
)
.
SetDefault
(
true
);
}
};
...
...
@@ -82,6 +87,7 @@ class ScaleGradMaker : public framework::SingleGradOpDescMaker {
grad_op
->
SetOutput
(
"Out"
,
InputGrad
(
"X"
));
grad_op
->
SetAttr
(
"scale"
,
GetAttr
(
"scale"
));
grad_op
->
SetAttr
(
"bias"
,
0.0
f
);
grad_op
->
SetAttr
(
"bias_after_scale"
,
true
);
return
std
::
unique_ptr
<
framework
::
OpDesc
>
(
grad_op
);
}
};
...
...
paddle/fluid/operators/scale_op.h
浏览文件 @
0718113a
...
...
@@ -35,6 +35,7 @@ class ScaleKernel : public framework::OpKernel<T> {
auto
scale
=
static_cast
<
T
>
(
ctx
.
Attr
<
float
>
(
"scale"
));
auto
bias
=
static_cast
<
T
>
(
ctx
.
Attr
<
float
>
(
"bias"
));
auto
bias_after_scale
=
ctx
.
Attr
<
bool
>
(
"bias_after_scale"
);
if
(
in_var
->
IsType
<
framework
::
SelectedRows
>
()
&&
in_var
!=
out_var
)
{
auto
&
in_slr
=
in_var
->
Get
<
framework
::
SelectedRows
>
();
...
...
@@ -46,8 +47,11 @@ class ScaleKernel : public framework::OpKernel<T> {
auto
eigen_out
=
framework
::
EigenVector
<
T
>::
Flatten
(
*
out
);
auto
eigen_in
=
framework
::
EigenVector
<
T
>::
Flatten
(
*
in
);
auto
&
dev
=
*
ctx
.
template
device_context
<
DeviceContext
>().
eigen_device
();
eigen_out
.
device
(
dev
)
=
static_cast
<
T
>
(
scale
)
*
eigen_in
+
static_cast
<
T
>
(
bias
);
if
(
bias_after_scale
)
{
eigen_out
.
device
(
dev
)
=
scale
*
eigen_in
+
bias
;
}
else
{
eigen_out
.
device
(
dev
)
=
scale
*
(
eigen_in
+
bias
);
}
}
};
...
...
python/paddle/fluid/layers/nn.py
浏览文件 @
0718113a
...
...
@@ -3388,13 +3388,7 @@ def l2_normalize(x, axis, epsilon=1e-12, name=None):
return
out
def
matmul
(
x
,
y
,
transpose_x
=
False
,
transpose_y
=
False
,
scale
=
1.0
,
bias
=
0.0
,
name
=
None
):
def
matmul
(
x
,
y
,
transpose_x
=
False
,
transpose_y
=
False
,
alpha
=
1.0
,
name
=
None
):
"""
Applies matrix multiplication to two tensors.
...
...
@@ -3428,8 +3422,7 @@ def matmul(x,
y (Variable): The input variable which is a Tensor or LoDTensor.
transpose_x (bool): Whether to transpose :math:`x` before multiplication.
transpose_y (bool): Whether to transpose :math:`y` before multiplication.
scale (float): The scale of output. Default 1.0.
bias (float): The bias added to output. Default 0.0.
alpha (float): The scale of output. Default 1.0.
name(str|None): A name for this layer(optional). If set None, the layer
will be named automatically.
...
...
@@ -3500,8 +3493,7 @@ def matmul(x,
attrs
=
{
'transpose_X'
:
transpose_x
,
'transpose_Y'
:
transpose_y
,
'scale'
:
scale
,
'bias'
:
bias
'alpha'
:
alpha
,
})
return
out
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录