namespace {
-constexpr int kDefaultNumberOfIterations = 1;
+constexpr int kDefaultNumberOfIterations = 2;
int64 NumEdges(const GraphDef& graph) {
int64 num_edges = 0;
}
// Check if optimizer is allowed to run only once.
-bool IsRunOnceOptimizer(const string& name) { return name == "layout"; }
+bool IsRunOnceOptimizer(const string& name) {
+ return name == "layout" || name == "memory_optimizer" ||
+ name == "arithmetic_optimizer" || name == "loop_optimizer";
+}
} // namespace
from google.protobuf import message
from tensorflow.core.framework import summary_pb2
from tensorflow.core.protobuf import config_pb2
+from tensorflow.core.protobuf import rewriter_config_pb2
from tensorflow.python.client import session as tf_session
from tensorflow.python.data.ops import dataset_ops
from tensorflow.python.eager import context
logging.info('Using config: %s', str(vars(self._config)))
if self._config.session_config is None:
- self._session_config = config_pb2.ConfigProto(allow_soft_placement=True)
+ rewrite_opts = rewriter_config_pb2.RewriterConfig(
+ meta_optimizer_iterations=rewriter_config_pb2.RewriterConfig.ONE)
+ graph_opts = config_pb2.GraphOptions(rewrite_options=rewrite_opts)
+ self._session_config = config_pb2.ConfigProto(
+ allow_soft_placement=True, graph_options=graph_opts)
else:
self._session_config = self._config.session_config
rewriter_config = rewriter_config_pb2.RewriterConfig(
disable_model_pruning=True,
+ meta_optimizer_iterations=rewriter_config_pb2.RewriterConfig.ONE,
constant_folding=rewriter_config_pb2.RewriterConfig.OFF,
memory_optimization=rewriter_config_pb2.RewriterConfig.MANUAL)
graph = tf_optimizer.OptimizeGraph(rewriter_config, mg)