aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/autograph
diff options
context:
space:
mode:
authorGravatar Dan Moldovan <mdan@google.com>2018-09-20 12:31:15 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-09-20 12:35:28 -0700
commita755420354d4e74e66b17d7a8c14fa421e4a7bae (patch)
tree83ea3d32ca3abafaf2c186f8b0b1c0d7d4936f05 /tensorflow/python/autograph
parent30756301bee0de2b1c16a74a710bd7bf29be468d (diff)
Replace the OrderedDict with a basic list/dict solution. OrderedDict is problematic to use in eager because of the circular references it creates.
PiperOrigin-RevId: 213862402
Diffstat (limited to 'tensorflow/python/autograph')
-rw-r--r--tensorflow/python/autograph/core/converter.py8
-rw-r--r--tensorflow/python/autograph/impl/api.py9
2 files changed, 8 insertions, 9 deletions
diff --git a/tensorflow/python/autograph/core/converter.py b/tensorflow/python/autograph/core/converter.py
index 7b3905fdee..80928ae7f4 100644
--- a/tensorflow/python/autograph/core/converter.py
+++ b/tensorflow/python/autograph/core/converter.py
@@ -63,10 +63,8 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
-import collections
from enum import Enum
-
from tensorflow.python.autograph.core import config
from tensorflow.python.autograph.core import naming
from tensorflow.python.autograph.pyct import anno
@@ -129,9 +127,8 @@ class ProgramContext(object):
self.autograph_module = autograph_module
self.uncompiled_modules = uncompiled_modules
- # Required to output dependencies in discovery order, which should match
- # the reverse dependency order.
- self.dependency_cache = collections.OrderedDict()
+ self.conversion_order = []
+ self.dependency_cache = {}
self.additional_imports = set()
self.name_map = {}
@@ -177,6 +174,7 @@ class ProgramContext(object):
self.name_map[o] = name
def add_to_cache(self, original_entity, converted_ast):
+ self.conversion_order.append(original_entity)
self.dependency_cache[original_entity] = converted_ast
diff --git a/tensorflow/python/autograph/impl/api.py b/tensorflow/python/autograph/impl/api.py
index ee2467e0dc..1dc97d2331 100644
--- a/tensorflow/python/autograph/impl/api.py
+++ b/tensorflow/python/autograph/impl/api.py
@@ -302,8 +302,9 @@ def to_graph(e,
arg_types)
nodes = []
- for dep in reversed(tuple(program_ctx.dependency_cache.values())):
- nodes.extend(dep)
+ for dep in reversed(program_ctx.conversion_order):
+ nodes.extend(program_ctx.dependency_cache[dep])
+
compiled_module, compiled_src = compiler.ast_to_object(
nodes,
source_prefix=program_ctx.required_imports,
@@ -371,7 +372,7 @@ def to_code(e,
conversion.entity_to_graph(e, program_ctx, arg_values, arg_types)
code = '\n'.join(
- compiler.ast_to_source(dep, indentation)
- for dep in reversed(tuple(program_ctx.dependency_cache.values())))
+ compiler.ast_to_source(program_ctx.dependency_cache[dep], indentation)
+ for dep in reversed(program_ctx.conversion_order))
return program_ctx.required_imports + '\n\n' + code