Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
e7c67e11
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看板
未验证
提交
e7c67e11
编写于
11月 05, 2017
作者:
Y
Yu Yang
提交者:
GitHub
11月 05, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add stop_gradient in Variable (#5361)
上级
2be4c3cb
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
24 addition
and
3 deletion
+24
-3
python/paddle/v2/framework/backward.py
python/paddle/v2/framework/backward.py
+14
-2
python/paddle/v2/framework/framework.py
python/paddle/v2/framework/framework.py
+2
-0
python/paddle/v2/framework/layers.py
python/paddle/v2/framework/layers.py
+1
-1
python/paddle/v2/framework/tests/test_recurrent_op.py
python/paddle/v2/framework/tests/test_recurrent_op.py
+7
-0
未找到文件。
python/paddle/v2/framework/backward.py
浏览文件 @
e7c67e11
...
@@ -19,8 +19,20 @@ def append_backward_ops(loss, parameter_list=None, no_grad_set=None):
...
@@ -19,8 +19,20 @@ def append_backward_ops(loss, parameter_list=None, no_grad_set=None):
:rtype: list[Variable]
:rtype: list[Variable]
"""
"""
assert
isinstance
(
loss
,
framework
.
Variable
)
assert
isinstance
(
loss
,
framework
.
Variable
)
param_grad_map
=
loss
.
block
.
program
.
append_backward
(
loss
,
no_grad_set
or
set
())
if
no_grad_set
is
None
:
program
=
loss
.
block
.
program
assert
isinstance
(
program
,
framework
.
Program
)
no_grad_set
=
list
()
for
block
in
program
.
blocks
:
assert
isinstance
(
block
,
framework
.
Block
)
for
var
in
block
.
vars
.
itervalues
():
assert
isinstance
(
var
,
framework
.
Variable
)
if
var
.
stop_gradient
:
no_grad_set
.
append
(
var
.
name
)
no_grad_set
=
set
(
no_grad_set
)
param_grad_map
=
loss
.
block
.
program
.
append_backward
(
loss
,
no_grad_set
)
if
parameter_list
is
not
None
:
if
parameter_list
is
not
None
:
parameters
=
parameter_list
parameters
=
parameter_list
else
:
else
:
...
...
python/paddle/v2/framework/framework.py
浏览文件 @
e7c67e11
...
@@ -21,6 +21,7 @@ class Variable(object):
...
@@ -21,6 +21,7 @@ class Variable(object):
dtype
=
None
,
dtype
=
None
,
lod_level
=
None
,
lod_level
=
None
,
persistable
=
None
,
persistable
=
None
,
stop_gradient
=
False
,
**
kwargs
):
**
kwargs
):
self
.
block
=
block
self
.
block
=
block
...
@@ -89,6 +90,7 @@ class Variable(object):
...
@@ -89,6 +90,7 @@ class Variable(object):
self
.
block
.
vars
[
name
]
=
self
self
.
block
.
vars
[
name
]
=
self
self
.
op
=
None
self
.
op
=
None
self
.
stop_gradient
=
stop_gradient
def
__str__
(
self
):
def
__str__
(
self
):
protostr
=
self
.
desc
.
serialize_to_string
()
protostr
=
self
.
desc
.
serialize_to_string
()
...
...
python/paddle/v2/framework/layers.py
浏览文件 @
e7c67e11
...
@@ -99,7 +99,7 @@ def data(name,
...
@@ -99,7 +99,7 @@ def data(name,
shape
=
[
-
1
]
+
shape
# append batch size as -1
shape
=
[
-
1
]
+
shape
# append batch size as -1
return
helper
.
create_global_variable
(
return
helper
.
create_global_variable
(
name
=
name
,
shape
=
shape
,
dtype
=
data_type
,
type
=
type
)
name
=
name
,
shape
=
shape
,
dtype
=
data_type
,
type
=
type
,
stop_gradient
=
True
)
def
_convert_
(
name
):
def
_convert_
(
name
):
...
...
python/paddle/v2/framework/tests/test_recurrent_op.py
浏览文件 @
e7c67e11
...
@@ -125,11 +125,13 @@ class RecurrentOpTest1(unittest.TestCase):
...
@@ -125,11 +125,13 @@ class RecurrentOpTest1(unittest.TestCase):
name
=
'x'
,
name
=
'x'
,
append_batch_size
=
False
,
append_batch_size
=
False
,
**
self
.
p_info
)
**
self
.
p_info
)
x
.
stop_gradient
=
False
h_boot
=
data
(
h_boot
=
data
(
shape
=
[
self
.
input_dim
],
shape
=
[
self
.
input_dim
],
data_type
=
'float32'
,
data_type
=
'float32'
,
name
=
'h_boot'
,
name
=
'h_boot'
,
**
self
.
p_info
)
**
self
.
p_info
)
h_boot
.
stop_gradient
=
False
rnn
=
StaticRNN
(
main_program
=
self
.
main_program
)
rnn
=
StaticRNN
(
main_program
=
self
.
main_program
)
with
rnn
.
step
():
with
rnn
.
step
():
...
@@ -256,11 +258,13 @@ class RecurrentOpTest2(RecurrentOpTest1):
...
@@ -256,11 +258,13 @@ class RecurrentOpTest2(RecurrentOpTest1):
name
=
'x'
,
name
=
'x'
,
append_batch_size
=
False
,
append_batch_size
=
False
,
**
self
.
p_info
)
**
self
.
p_info
)
x
.
stop_gradient
=
False
h_boot
=
data
(
h_boot
=
data
(
shape
=
[
self
.
input_dim
],
shape
=
[
self
.
input_dim
],
data_type
=
'float32'
,
data_type
=
'float32'
,
name
=
'h_boot'
,
name
=
'h_boot'
,
**
self
.
p_info
)
**
self
.
p_info
)
h_boot
.
stop_gradient
=
False
rnn
=
StaticRNN
(
main_program
=
self
.
main_program
)
rnn
=
StaticRNN
(
main_program
=
self
.
main_program
)
with
rnn
.
step
():
with
rnn
.
step
():
...
@@ -353,18 +357,21 @@ class RecurrentOpTest3(RecurrentOpTest1):
...
@@ -353,18 +357,21 @@ class RecurrentOpTest3(RecurrentOpTest1):
name
=
'x'
,
name
=
'x'
,
append_batch_size
=
False
,
append_batch_size
=
False
,
**
self
.
p_info
)
**
self
.
p_info
)
x
.
stop_gradient
=
False
h_boot1
=
data
(
h_boot1
=
data
(
shape
=
[
self
.
batch_size
,
self
.
input_dim
],
shape
=
[
self
.
batch_size
,
self
.
input_dim
],
data_type
=
'float32'
,
data_type
=
'float32'
,
name
=
'h_boot1'
,
name
=
'h_boot1'
,
append_batch_size
=
False
,
append_batch_size
=
False
,
**
self
.
p_info
)
**
self
.
p_info
)
h_boot1
.
stop_gradient
=
False
h_boot2
=
data
(
h_boot2
=
data
(
shape
=
[
self
.
batch_size
,
self
.
input_dim
],
shape
=
[
self
.
batch_size
,
self
.
input_dim
],
data_type
=
'float32'
,
data_type
=
'float32'
,
name
=
'h_boot2'
,
name
=
'h_boot2'
,
append_batch_size
=
False
,
append_batch_size
=
False
,
**
self
.
p_info
)
**
self
.
p_info
)
h_boot2
.
stop_gradient
=
False
rnn
=
StaticRNN
(
main_program
=
self
.
main_program
)
rnn
=
StaticRNN
(
main_program
=
self
.
main_program
)
with
rnn
.
step
():
with
rnn
.
step
():
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录