提交 eade1fd9 编写于 作者: P pangyoki 提交者: jzhang533

solve conflict

上级 8964fea9
...@@ -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):
......
...@@ -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)
......
...@@ -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):
......
...@@ -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)
......
...@@ -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):
......
...@@ -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.
先完成此消息的编辑!
想要评论请 注册