Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
eade1fd9
P
Paddle
项目概览
PaddlePaddle
/
Paddle
1 年多 前同步成功
通知
2302
Star
20931
Fork
5422
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1423
列表
看板
标记
里程碑
合并请求
543
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1,423
Issue
1,423
列表
看板
标记
里程碑
合并请求
543
合并请求
543
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
eade1fd9
编写于
4月 25, 2022
作者:
P
pangyoki
提交者:
jzhang533
4月 27, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
solve conflict
上级
8964fea9
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
34 addition
and
11 deletion
+34
-11
python/paddle/fluid/backward.py
python/paddle/fluid/backward.py
+7
-3
python/paddle/fluid/dygraph/dygraph_to_static/origin_info.py
python/paddle/fluid/dygraph/dygraph_to_static/origin_info.py
+5
-1
python/paddle/fluid/layers/rnn.py
python/paddle/fluid/layers/rnn.py
+5
-1
python/paddle/fluid/layers/utils.py
python/paddle/fluid/layers/utils.py
+6
-3
python/paddle/fluid/tests/unittests/gradient_checker.py
python/paddle/fluid/tests/unittests/gradient_checker.py
+6
-2
python/paddle/nn/layer/rnn.py
python/paddle/nn/layer/rnn.py
+5
-1
未找到文件。
python/paddle/fluid/backward.py
浏览文件 @
eade1fd9
...
@@ -28,6 +28,10 @@ from . import log_helper
...
@@ -28,6 +28,10 @@ from . import log_helper
import
paddle.fluid
import
paddle.fluid
from
.data_feeder
import
check_type
from
.data_feeder
import
check_type
import
warnings
import
warnings
try
:
from
collections.abc
import
Sequence
except
:
from
collections
import
Sequence
__all__
=
[
__all__
=
[
'append_backward'
,
'append_backward'
,
'gradients'
,
'gradients'
,
...
@@ -1309,8 +1313,8 @@ def _append_backward_vars_(block, start_op_idx, grad_to_var, grad_info_map):
...
@@ -1309,8 +1313,8 @@ def _append_backward_vars_(block, start_op_idx, grad_to_var, grad_info_map):
if
grad_var_ins
:
if
grad_var_ins
:
existing_grad_var_ins
=
[
existing_grad_var_ins
=
[
var
for
var
in
grad_var_ins
var
for
var
in
grad_var_ins
if
block
.
desc
.
has_var_recursive
(
cpt
.
to_bytes
(
var
))
or
var
in
if
block
.
desc
.
has_var_recursive
(
cpt
.
to_bytes
(
var
))
or
parent_op_vars
var
in
parent_op_vars
]
]
if
not
existing_grad_var_ins
:
if
not
existing_grad_var_ins
:
'''
'''
...
@@ -1722,7 +1726,7 @@ def append_backward(loss,
...
@@ -1722,7 +1726,7 @@ def append_backward(loss,
def
_as_list
(
x
):
def
_as_list
(
x
):
if
x
is
None
:
if
x
is
None
:
return
[]
return
[]
return
list
(
x
)
if
isinstance
(
x
,
collections
.
Sequence
)
else
[
x
]
return
list
(
x
)
if
isinstance
(
x
,
Sequence
)
else
[
x
]
def
_is_ancestor_block
(
ancestor_block
,
block
):
def
_is_ancestor_block
(
ancestor_block
,
block
):
...
...
python/paddle/fluid/dygraph/dygraph_to_static/origin_info.py
浏览文件 @
eade1fd9
...
@@ -21,6 +21,10 @@ from paddle.utils import gast
...
@@ -21,6 +21,10 @@ from paddle.utils import gast
from
paddle.fluid
import
core
from
paddle.fluid
import
core
from
paddle.fluid.dygraph.dygraph_to_static.utils
import
unwrap
from
paddle.fluid.dygraph.dygraph_to_static.utils
import
unwrap
from
paddle.fluid.framework
import
Program
from
paddle.fluid.framework
import
Program
try
:
from
collections.abc
import
Sequence
except
:
from
collections
import
Sequence
# NOTE(liym27): Please use `getattr(ast_node, ORIGI_INFO)` instead of . operation to get the original information of ast node.
# NOTE(liym27): Please use `getattr(ast_node, ORIGI_INFO)` instead of . operation to get the original information of ast node.
ORIGI_INFO
=
"Original information of source code for ast node."
ORIGI_INFO
=
"Original information of source code for ast node."
...
@@ -214,7 +218,7 @@ def ast_walk(transformed_node, static_node):
...
@@ -214,7 +218,7 @@ def ast_walk(transformed_node, static_node):
def
_as_list
(
x
):
def
_as_list
(
x
):
if
x
is
None
:
if
x
is
None
:
return
[]
return
[]
return
list
(
x
)
if
isinstance
(
x
,
collections
.
Sequence
)
else
[
x
]
return
list
(
x
)
if
isinstance
(
x
,
Sequence
)
else
[
x
]
transformed_node_list
=
_as_list
(
transformed_node
)
transformed_node_list
=
_as_list
(
transformed_node
)
static_node_list
=
_as_list
(
static_node
)
static_node_list
=
_as_list
(
static_node
)
...
...
python/paddle/fluid/layers/rnn.py
浏览文件 @
eade1fd9
...
@@ -33,6 +33,10 @@ from ..layer_helper import LayerHelper
...
@@ -33,6 +33,10 @@ from ..layer_helper import LayerHelper
from
..framework
import
_non_static_mode
from
..framework
import
_non_static_mode
from
..param_attr
import
ParamAttr
from
..param_attr
import
ParamAttr
from
..data_feeder
import
check_variable_and_dtype
,
check_type
,
check_dtype
from
..data_feeder
import
check_variable_and_dtype
,
check_type
,
check_dtype
try
:
from
collections.abc
import
Sequence
except
:
from
collections
import
Sequence
__all__
=
[
__all__
=
[
'RNNCell'
,
'RNNCell'
,
...
@@ -163,7 +167,7 @@ class RNNCell(object):
...
@@ -163,7 +167,7 @@ class RNNCell(object):
# TODO: Add check for the illegal
# TODO: Add check for the illegal
if
isinstance
(
seq
,
dict
):
if
isinstance
(
seq
,
dict
):
return
True
return
True
return
(
isinstance
(
seq
,
collections
.
Sequence
)
and
return
(
isinstance
(
seq
,
Sequence
)
and
not
isinstance
(
seq
,
six
.
string_types
))
not
isinstance
(
seq
,
six
.
string_types
))
class
Shape
(
object
):
class
Shape
(
object
):
...
...
python/paddle/fluid/layers/utils.py
浏览文件 @
eade1fd9
...
@@ -21,6 +21,10 @@ from ..framework import Block, Variable, _non_static_mode
...
@@ -21,6 +21,10 @@ from ..framework import Block, Variable, _non_static_mode
from
..data_feeder
import
convert_dtype
,
check_variable_and_dtype
,
check_type
,
check_dtype
from
..data_feeder
import
convert_dtype
,
check_variable_and_dtype
,
check_type
,
check_dtype
from
..layer_helper
import
LayerHelper
from
..layer_helper
import
LayerHelper
from
sys
import
version_info
from
sys
import
version_info
try
:
from
collections.abc
import
Sequence
except
:
from
collections
import
Sequence
def
convert_to_list
(
value
,
n
,
name
,
dtype
=
int
):
def
convert_to_list
(
value
,
n
,
name
,
dtype
=
int
):
...
@@ -74,8 +78,7 @@ def is_sequence(seq):
...
@@ -74,8 +78,7 @@ def is_sequence(seq):
"""
"""
if
isinstance
(
seq
,
dict
):
if
isinstance
(
seq
,
dict
):
return
True
return
True
return
(
isinstance
(
seq
,
collections
.
Sequence
)
and
return
(
isinstance
(
seq
,
Sequence
)
and
not
isinstance
(
seq
,
six
.
string_types
))
not
isinstance
(
seq
,
six
.
string_types
))
def
_hash_with_id
(
*
args
):
def
_hash_with_id
(
*
args
):
...
@@ -148,7 +151,7 @@ def _sequence_like(instance, args):
...
@@ -148,7 +151,7 @@ def _sequence_like(instance, args):
return
type
(
instance
)((
key
,
result
[
key
])
return
type
(
instance
)((
key
,
result
[
key
])
for
key
in
six
.
iterkeys
(
instance
))
for
key
in
six
.
iterkeys
(
instance
))
elif
(
isinstance
(
instance
,
tuple
)
and
hasattr
(
instance
,
"_fields"
)
and
elif
(
isinstance
(
instance
,
tuple
)
and
hasattr
(
instance
,
"_fields"
)
and
isinstance
(
instance
.
_fields
,
collections
.
Sequence
)
and
isinstance
(
instance
.
_fields
,
Sequence
)
and
all
(
isinstance
(
f
,
six
.
string_types
)
for
f
in
instance
.
_fields
)):
all
(
isinstance
(
f
,
six
.
string_types
)
for
f
in
instance
.
_fields
)):
# This is a namedtuple
# This is a namedtuple
return
type
(
instance
)(
*
args
)
return
type
(
instance
)(
*
args
)
...
...
python/paddle/fluid/tests/unittests/gradient_checker.py
浏览文件 @
eade1fd9
...
@@ -25,6 +25,10 @@ import paddle.fluid as fluid
...
@@ -25,6 +25,10 @@ import paddle.fluid as fluid
import
paddle.fluid.core
as
core
import
paddle.fluid.core
as
core
from
paddle.fluid.executor
import
Executor
from
paddle.fluid.executor
import
Executor
from
paddle.fluid.backward
import
_append_grad_suffix_
,
_as_list
from
paddle.fluid.backward
import
_append_grad_suffix_
,
_as_list
try
:
from
collections.abc
import
Sequence
except
:
from
collections
import
Sequence
def
_product
(
t
):
def
_product
(
t
):
...
@@ -89,7 +93,7 @@ def var_to_np_array_in_scope(scope, place, name):
...
@@ -89,7 +93,7 @@ def var_to_np_array_in_scope(scope, place, name):
def
make_jacobian
(
x
,
y_size
,
np_dtype
):
def
make_jacobian
(
x
,
y_size
,
np_dtype
):
if
isinstance
(
x
,
fluid
.
framework
.
Variable
):
if
isinstance
(
x
,
fluid
.
framework
.
Variable
):
return
np
.
zeros
((
_product
(
x
.
shape
),
y_size
),
dtype
=
np_dtype
)
return
np
.
zeros
((
_product
(
x
.
shape
),
y_size
),
dtype
=
np_dtype
)
elif
isinstance
(
x
,
collections
.
Sequence
):
elif
isinstance
(
x
,
Sequence
):
jacobians
=
list
(
jacobians
=
list
(
filter
(
lambda
t
:
t
is
not
None
,
(
make_jacobian
(
filter
(
lambda
t
:
t
is
not
None
,
(
make_jacobian
(
item
,
y_size
,
np_dtype
)
for
item
in
x
)))
item
,
y_size
,
np_dtype
)
for
item
in
x
)))
...
@@ -308,7 +312,7 @@ def grad_check(x,
...
@@ -308,7 +312,7 @@ def grad_check(x,
_compute_analytical_jacobian
(
prog
,
clone_x
,
clone_y
,
place
,
scope
))
_compute_analytical_jacobian
(
prog
,
clone_x
,
clone_y
,
place
,
scope
))
for
i
,
(
x_idx
,
for
i
,
(
x_idx
,
y_idx
)
in
enumerate
(
product
(
*
[
range
(
len
(
x
)),
range
(
len
(
y
))])):
y_idx
)
in
enumerate
(
product
(
*
[
range
(
len
(
x
)),
range
(
len
(
y
))])):
a
=
analytical
[
y_idx
][
x_idx
]
a
=
analytical
[
y_idx
][
x_idx
]
n
=
numerical
[
x_idx
][
y_idx
]
n
=
numerical
[
x_idx
][
y_idx
]
if
not
np
.
allclose
(
a
,
n
,
rtol
,
atol
):
if
not
np
.
allclose
(
a
,
n
,
rtol
,
atol
):
...
...
python/paddle/nn/layer/rnn.py
浏览文件 @
eade1fd9
...
@@ -37,6 +37,10 @@ from paddle import in_dynamic_mode
...
@@ -37,6 +37,10 @@ from paddle import in_dynamic_mode
from
paddle.framework
import
core
from
paddle.framework
import
core
from
paddle.static
import
default_startup_program
from
paddle.static
import
default_startup_program
from
paddle.static
import
program_guard
from
paddle.static
import
program_guard
try
:
from
collections.abc
import
Sequence
except
:
from
collections
import
Sequence
__all__
=
[]
__all__
=
[]
...
@@ -197,7 +201,7 @@ class RNNCellBase(Layer):
...
@@ -197,7 +201,7 @@ class RNNCellBase(Layer):
# TODO: Add check for the illegal
# TODO: Add check for the illegal
if
isinstance
(
seq
,
dict
):
if
isinstance
(
seq
,
dict
):
return
True
return
True
return
(
isinstance
(
seq
,
collections
.
Sequence
)
and
return
(
isinstance
(
seq
,
Sequence
)
and
not
isinstance
(
seq
,
six
.
string_types
))
not
isinstance
(
seq
,
six
.
string_types
))
class
Shape
(
object
):
class
Shape
(
object
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录