Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OPTHREE
Paddle
提交
eed2c1e1
P
Paddle
项目概览
OPTHREE
/
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
eed2c1e1
编写于
10月 04, 2017
作者:
A
Abhinav Arora
提交者:
GitHub
10月 04, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Changing SGD inputs and outputs to conform to Operator naming convention (#4586)
上级
77e07833
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
22 deletion
+22
-22
paddle/operators/sgd_op.cc
paddle/operators/sgd_op.cc
+16
-16
paddle/operators/sgd_op.h
paddle/operators/sgd_op.h
+4
-4
python/paddle/v2/framework/tests/test_sgd_op.py
python/paddle/v2/framework/tests/test_sgd_op.py
+2
-2
未找到文件。
paddle/operators/sgd_op.cc
浏览文件 @
eed2c1e1
...
@@ -23,22 +23,22 @@ class SGDOp : public framework::OperatorWithKernel {
...
@@ -23,22 +23,22 @@ class SGDOp : public framework::OperatorWithKernel {
protected:
protected:
void
InferShape
(
framework
::
InferShapeContextBase
*
ctx
)
const
override
{
void
InferShape
(
framework
::
InferShapeContextBase
*
ctx
)
const
override
{
PADDLE_ENFORCE
(
ctx
->
HasInput
(
"
p
aram"
),
PADDLE_ENFORCE
(
ctx
->
HasInput
(
"
P
aram"
),
"Input(
p
aram) of SGDOp should not be null."
);
"Input(
P
aram) of SGDOp should not be null."
);
PADDLE_ENFORCE
(
ctx
->
HasInput
(
"
g
rad"
),
PADDLE_ENFORCE
(
ctx
->
HasInput
(
"
G
rad"
),
"Input(
g
rad) of SGDOp should not be null."
);
"Input(
G
rad) of SGDOp should not be null."
);
PADDLE_ENFORCE
(
ctx
->
HasInput
(
"
learning_r
ate"
),
PADDLE_ENFORCE
(
ctx
->
HasInput
(
"
LearningR
ate"
),
"Input(
learning_r
ate) of SGDOp should not be null."
);
"Input(
LearningR
ate) of SGDOp should not be null."
);
PADDLE_ENFORCE
(
ctx
->
HasOutput
(
"
param_o
ut"
),
PADDLE_ENFORCE
(
ctx
->
HasOutput
(
"
ParamO
ut"
),
"Output(
param_o
ut) of SGDOp should not be null."
);
"Output(
ParamO
ut) of SGDOp should not be null."
);
auto
lr_dims
=
ctx
->
GetInputDim
(
"
learning_r
ate"
);
auto
lr_dims
=
ctx
->
GetInputDim
(
"
LearningR
ate"
);
PADDLE_ENFORCE_EQ
(
framework
::
product
(
lr_dims
),
1
,
PADDLE_ENFORCE_EQ
(
framework
::
product
(
lr_dims
),
1
,
"Learning rate should have 1 element"
);
"Learning rate should have 1 element"
);
auto
param_dim
=
ctx
->
GetInputDim
(
"
p
aram"
);
auto
param_dim
=
ctx
->
GetInputDim
(
"
P
aram"
);
PADDLE_ENFORCE_EQ
(
param_dim
,
ctx
->
GetInputDim
(
"
g
rad"
),
PADDLE_ENFORCE_EQ
(
param_dim
,
ctx
->
GetInputDim
(
"
G
rad"
),
"Two input of SGD Op's dimension must be same."
);
"Two input of SGD Op's dimension must be same."
);
ctx
->
SetOutputDim
(
"
param_o
ut"
,
param_dim
);
ctx
->
SetOutputDim
(
"
ParamO
ut"
,
param_dim
);
}
}
};
};
...
@@ -46,10 +46,10 @@ class SGDOpMaker : public framework::OpProtoAndCheckerMaker {
...
@@ -46,10 +46,10 @@ class SGDOpMaker : public framework::OpProtoAndCheckerMaker {
public:
public:
SGDOpMaker
(
framework
::
OpProto
*
proto
,
framework
::
OpAttrChecker
*
op_checker
)
SGDOpMaker
(
framework
::
OpProto
*
proto
,
framework
::
OpAttrChecker
*
op_checker
)
:
OpProtoAndCheckerMaker
(
proto
,
op_checker
)
{
:
OpProtoAndCheckerMaker
(
proto
,
op_checker
)
{
AddInput
(
"
param"
,
"i
nput parameter"
);
AddInput
(
"
Param"
,
"I
nput parameter"
);
AddInput
(
"
learning_rate"
,
"learning rate of sgd
"
);
AddInput
(
"
LearningRate"
,
"Learning rate of SGD
"
);
AddInput
(
"
grad"
,
"i
nput gradient"
);
AddInput
(
"
Grad"
,
"I
nput gradient"
);
AddOutput
(
"
param_o
ut"
,
"output parameter"
);
AddOutput
(
"
ParamO
ut"
,
"output parameter"
);
AddComment
(
R"DOC(
AddComment
(
R"DOC(
Simplest sgd algorithm.
Simplest sgd algorithm.
...
...
paddle/operators/sgd_op.h
浏览文件 @
eed2c1e1
...
@@ -28,10 +28,10 @@ template <typename Place, typename T>
...
@@ -28,10 +28,10 @@ template <typename Place, typename T>
class
SGDOpKernel
:
public
framework
::
OpKernel
<
T
>
{
class
SGDOpKernel
:
public
framework
::
OpKernel
<
T
>
{
public:
public:
void
Compute
(
const
framework
::
ExecutionContext
&
ctx
)
const
override
{
void
Compute
(
const
framework
::
ExecutionContext
&
ctx
)
const
override
{
auto
param
=
ctx
.
Input
<
Tensor
>
(
"
p
aram"
);
auto
param
=
ctx
.
Input
<
Tensor
>
(
"
P
aram"
);
auto
grad
=
ctx
.
Input
<
Tensor
>
(
"
g
rad"
);
auto
grad
=
ctx
.
Input
<
Tensor
>
(
"
G
rad"
);
auto
param_out
=
ctx
.
Output
<
Tensor
>
(
"
param_o
ut"
);
auto
param_out
=
ctx
.
Output
<
Tensor
>
(
"
ParamO
ut"
);
float
lr
=
ctx
.
Input
<
Tensor
>
(
"
learning_r
ate"
)
->
data
<
float
>
()[
0
];
float
lr
=
ctx
.
Input
<
Tensor
>
(
"
LearningR
ate"
)
->
data
<
float
>
()[
0
];
param_out
->
mutable_data
<
T
>
(
ctx
.
GetPlace
());
param_out
->
mutable_data
<
T
>
(
ctx
.
GetPlace
());
...
...
python/paddle/v2/framework/tests/test_sgd_op.py
浏览文件 @
eed2c1e1
...
@@ -10,8 +10,8 @@ class TestSGDOp(OpTest):
...
@@ -10,8 +10,8 @@ class TestSGDOp(OpTest):
g
=
np
.
random
.
random
((
102
,
105
)).
astype
(
"float32"
)
g
=
np
.
random
.
random
((
102
,
105
)).
astype
(
"float32"
)
lr
=
np
.
array
([
0.1
]).
astype
(
"float32"
)
lr
=
np
.
array
([
0.1
]).
astype
(
"float32"
)
self
.
inputs
=
{
'
param'
:
w
,
'grad'
:
g
,
'learning_r
ate'
:
lr
}
self
.
inputs
=
{
'
Param'
:
w
,
'Grad'
:
g
,
'LearningR
ate'
:
lr
}
self
.
outputs
=
{
'
param_o
ut'
:
w
-
lr
*
g
}
self
.
outputs
=
{
'
ParamO
ut'
:
w
-
lr
*
g
}
def
test_check_output
(
self
):
def
test_check_output
(
self
):
self
.
check_output
()
self
.
check_output
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录