aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/summary
diff options
context:
space:
mode:
authorGravatar Alexandre Passos <apassos@google.com>2018-03-13 11:43:39 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-03-13 11:51:03 -0700
commitf15b915c38ce9e2fc94a7ef260029f1c6f48fce3 (patch)
tree8258290ea1d4ddd40288c23db9d409f5709d7e10 /tensorflow/contrib/summary
parent74938be9aabe057fd7f779b6cd023f98e5a4bba2 (diff)
Proper name scoping in contrib summaries.
PiperOrigin-RevId: 188905080
Diffstat (limited to 'tensorflow/contrib/summary')
-rw-r--r--tensorflow/contrib/summary/summary_ops.py6
-rw-r--r--tensorflow/contrib/summary/summary_ops_graph_test.py32
-rw-r--r--tensorflow/contrib/summary/summary_ops_test.py15
3 files changed, 52 insertions, 1 deletions
diff --git a/tensorflow/contrib/summary/summary_ops.py b/tensorflow/contrib/summary/summary_ops.py
index a61ce04ca2..c1724c6e43 100644
--- a/tensorflow/contrib/summary/summary_ops.py
+++ b/tensorflow/contrib/summary/summary_ops.py
@@ -328,8 +328,12 @@ def summary_writer_function(name, tensor, function, family=None):
Returns:
The result of writing the summary.
"""
+ name_scope = ops.get_name_scope()
+ if name_scope:
+ # Add a slash to allow reentering the name scope.
+ name_scope += "/"
def record():
- with summary_op_util.summary_scope(
+ with ops.name_scope(name_scope), summary_op_util.summary_scope(
name, family, values=[tensor]) as (tag, scope):
with ops.control_dependencies([function(tag, scope)]):
return constant_op.constant(True)
diff --git a/tensorflow/contrib/summary/summary_ops_graph_test.py b/tensorflow/contrib/summary/summary_ops_graph_test.py
index 2b7806f80d..3aba04540e 100644
--- a/tensorflow/contrib/summary/summary_ops_graph_test.py
+++ b/tensorflow/contrib/summary/summary_ops_graph_test.py
@@ -85,6 +85,38 @@ class DbTest(summary_test_util.SummaryDbTest):
self.assertEqual(len(events), 2)
self.assertEqual(events[1].summary.value[0].tag, 'my_scalar')
+ def testScalarSummaryNameScope(self):
+ """Test record_summaries_every_n_global_steps and all_summaries()."""
+ with ops.Graph().as_default(), self.test_session() as sess:
+ global_step = training_util.get_or_create_global_step()
+ global_step.initializer.run()
+ with ops.device('/cpu:0'):
+ step_increment = state_ops.assign_add(global_step, 1)
+ sess.run(step_increment) # Increment global step from 0 to 1
+
+ logdir = tempfile.mkdtemp()
+ with summary_ops.create_file_writer(logdir, max_queue=0,
+ name='t2').as_default():
+ with summary_ops.record_summaries_every_n_global_steps(2):
+ summary_ops.initialize()
+ with ops.name_scope('scope'):
+ summary_op = summary_ops.scalar('my_scalar', 2.0)
+
+ # Neither of these should produce a summary because
+ # global_step is 1 and "1 % 2 != 0"
+ sess.run(summary_ops.all_summary_ops())
+ sess.run(summary_op)
+ events = summary_test_util.events_from_logdir(logdir)
+ self.assertEqual(len(events), 1)
+
+ # Increment global step from 1 to 2 and check that the summary
+ # is now written
+ sess.run(step_increment)
+ sess.run(summary_ops.all_summary_ops())
+ events = summary_test_util.events_from_logdir(logdir)
+ self.assertEqual(len(events), 2)
+ self.assertEqual(events[1].summary.value[0].tag, 'scope/my_scalar')
+
def testSummaryGraphModeCond(self):
with ops.Graph().as_default(), self.test_session():
training_util.get_or_create_global_step()
diff --git a/tensorflow/contrib/summary/summary_ops_test.py b/tensorflow/contrib/summary/summary_ops_test.py
index bb7215f879..c756f8b270 100644
--- a/tensorflow/contrib/summary/summary_ops_test.py
+++ b/tensorflow/contrib/summary/summary_ops_test.py
@@ -29,6 +29,7 @@ from tensorflow.core.framework import types_pb2
from tensorflow.python.eager import function
from tensorflow.python.eager import test
from tensorflow.python.framework import dtypes
+from tensorflow.python.framework import ops
from tensorflow.python.framework import test_util
from tensorflow.python.ops import array_ops
from tensorflow.python.ops import state_ops
@@ -107,6 +108,20 @@ class TargetTest(test_util.TensorFlowTestCase):
self.assertEqual(len(events), 2)
self.assertEqual(events[1].summary.value[0].tag, 'scalar')
+ def testSummaryNameScope(self):
+ training_util.get_or_create_global_step()
+ logdir = tempfile.mkdtemp()
+ with summary_ops.create_file_writer(
+ logdir, max_queue=0,
+ name='t2').as_default(), summary_ops.always_record_summaries():
+
+ with ops.name_scope('scope'):
+ summary_ops.scalar('scalar', 2.0)
+
+ events = summary_test_util.events_from_logdir(logdir)
+ self.assertEqual(len(events), 2)
+ self.assertEqual(events[1].summary.value[0].tag, 'scope/scalar')
+
def testSummaryGlobalStep(self):
step = training_util.get_or_create_global_step()
logdir = tempfile.mkdtemp()