diff --git a/tensorflow/python/ops/parsing_ops.py b/tensorflow/python/ops/parsing_ops.py index e0e3d08e7ce..803e0e7a1e4 100644 --- a/tensorflow/python/ops/parsing_ops.py +++ b/tensorflow/python/ops/parsing_ops.py @@ -198,7 +198,11 @@ def _features_to_raw_params(features, types): sparse_types = [] dense_keys = [] dense_types = [] - dense_defaults = {} + # When the graph is built twice, multiple dense_defaults in a normal dict + # could come out in different orders. This will fail the _e2e_test which + # expects exactly the same graph. + # OrderedDict which preserves the order can solve the problem. + dense_defaults = collections.OrderedDict() dense_shapes = [] if features: # NOTE: We iterate over sorted keys to keep things deterministic. @@ -624,7 +628,8 @@ def _parse_example_raw(serialized, """ with ops.name_scope(name, "ParseExample", [serialized, names]): names = [] if names is None else names - dense_defaults = {} if dense_defaults is None else dense_defaults + dense_defaults = collections.OrderedDict( + ) if dense_defaults is None else dense_defaults sparse_keys = [] if sparse_keys is None else sparse_keys sparse_types = [] if sparse_types is None else sparse_types dense_keys = [] if dense_keys is None else dense_keys