def testSummaryDescriptionAndDisplayName(self):
    with self.cached_session() as sess:

      def get_description(summary_op):
        summ_str = sess.run(summary_op)
        summ = summary_pb2.Summary()
        summ.ParseFromString(summ_str)
        return summ.value[0].metadata

      const = constant_op.constant(1)
      # Default case; no description or display name
      simple_summary = summary_lib.tensor_summary("simple", const)

      descr = get_description(simple_summary)
      self.assertEqual(descr.display_name, "")
      self.assertEqual(descr.summary_description, "")

      # Values are provided via function args
      with_values = summary_lib.tensor_summary(
          "simple",
          const,
          display_name="my name",
          summary_description="my description")

      descr = get_description(with_values)
      self.assertEqual(descr.display_name, "my name")
      self.assertEqual(descr.summary_description, "my description")

      # Values are provided via the SummaryMetadata arg
      metadata = summary_pb2.SummaryMetadata()
      metadata.display_name = "my name"
      metadata.summary_description = "my description"

      with_metadata = summary_lib.tensor_summary(
          "simple", const, summary_metadata=metadata)
      descr = get_description(with_metadata)
      self.assertEqual(descr.display_name, "my name")
      self.assertEqual(descr.summary_description, "my description")

      # If both SummaryMetadata and explicit args are provided, the args win
      overwrite = summary_lib.tensor_summary(
          "simple",
          const,
          summary_metadata=metadata,
          display_name="overwritten",
          summary_description="overwritten")
      descr = get_description(overwrite)
      self.assertEqual(descr.display_name, "overwritten")
      self.assertEqual(descr.summary_description, "overwritten")
 def testManyScalarSummary(self):
   with self.cached_session() as sess:
     const = array_ops.ones([5, 5, 5])
     summ = summary_lib.tensor_summary("foo", const)
     result = sess.run(summ)
   value = self._SummarySingleValue(result)
   n = tensor_util.MakeNdarray(value.tensor)
   self._AssertNumpyEq(n, np.ones([5, 5, 5]))
 def testManyStringSummary(self):
   strings = [[six.b("foo bar"), six.b("baz")], [six.b("zoink"), six.b("zod")]]
   with self.cached_session() as sess:
     const = constant_op.constant(strings)
     summ = summary_lib.tensor_summary("foo", const)
     result = sess.run(summ)
   value = self._SummarySingleValue(result)
   n = tensor_util.MakeNdarray(value.tensor)
   self._AssertNumpyEq(n, strings)
  def testScalarSummary(self):
    with self.cached_session() as sess:
      const = constant_op.constant(10.0)
      summ = summary_lib.tensor_summary("foo", const)
      result = sess.run(summ)

    value = self._SummarySingleValue(result)
    n = tensor_util.MakeNdarray(value.tensor)
    self._AssertNumpyEq(n, 10)
  def testStringSummary(self):
    s = six.b("foobar")
    with self.cached_session() as sess:
      const = constant_op.constant(s)
      summ = summary_lib.tensor_summary("foo", const)
      result = sess.run(summ)

    value = self._SummarySingleValue(result)
    n = tensor_util.MakeNdarray(value.tensor)
    self._AssertNumpyEq(n, s)
  def testManyBools(self):
    bools = [True, True, True, False, False, False]
    with self.cached_session() as sess:
      const = constant_op.constant(bools)
      summ = summary_lib.tensor_summary("foo", const)
      result = sess.run(summ)

    value = self._SummarySingleValue(result)
    n = tensor_util.MakeNdarray(value.tensor)
    self._AssertNumpyEq(n, bools)
    def testStringSummary(self):
        s = six.b("foobar")
        with self.cached_session() as sess:
            const = constant_op.constant(s)
            summ = summary_lib.tensor_summary("foo", const)
            result = sess.run(summ)

        value = self._SummarySingleValue(result)
        n = tensor_util.MakeNdarray(value.tensor)
        self._AssertNumpyEq(n, s)
    def testManyBools(self):
        bools = [True, True, True, False, False, False]
        with self.cached_session() as sess:
            const = constant_op.constant(bools)
            summ = summary_lib.tensor_summary("foo", const)
            result = sess.run(summ)

        value = self._SummarySingleValue(result)
        n = tensor_util.MakeNdarray(value.tensor)
        self._AssertNumpyEq(n, bools)
    def testTFSummaryTensor(self):
        """Verify processing of tf.summary.tensor."""
        event_sink = _EventGenerator(self, zero_out_timestamps=True)
        writer = SummaryToEventTransformer(event_sink)
        with self.test_session() as sess:
            summary_lib.tensor_summary('scalar', constant_op.constant(1.0))
            summary_lib.tensor_summary('vector',
                                       constant_op.constant([1.0, 2.0, 3.0]))
            summary_lib.tensor_summary('string',
                                       constant_op.constant(six.b('foobar')))
            merged = summary_lib.merge_all()
            summ = sess.run(merged)
            writer.add_summary(summ, 0)

        accumulator = ea.EventAccumulator(event_sink)
        accumulator.Reload()

        self.assertTagsEqual(accumulator.Tags(), {
            ea.TENSORS: ['scalar', 'vector', 'string'],
        })

        scalar_proto = accumulator.Tensors('scalar')[0].tensor_proto
        scalar = tensor_util.MakeNdarray(scalar_proto)
        vector_proto = accumulator.Tensors('vector')[0].tensor_proto
        vector = tensor_util.MakeNdarray(vector_proto)
        string_proto = accumulator.Tensors('string')[0].tensor_proto
        string = tensor_util.MakeNdarray(string_proto)

        self.assertTrue(np.array_equal(scalar, 1.0))
        self.assertTrue(np.array_equal(vector, [1.0, 2.0, 3.0]))
        self.assertTrue(np.array_equal(string, six.b('foobar')))
Exemple #10
0
  def testTFSummaryTensor(self):
    """Verify processing of tf.summary.tensor."""
    event_sink = _EventGenerator(self, zero_out_timestamps=True)
    writer = SummaryToEventTransformer(event_sink)
    with self.test_session() as sess:
      summary_lib.tensor_summary('scalar', constant_op.constant(1.0))
      summary_lib.tensor_summary('vector', constant_op.constant(
          [1.0, 2.0, 3.0]))
      summary_lib.tensor_summary('string',
                                 constant_op.constant(six.b('foobar')))
      merged = summary_lib.merge_all()
      summ = sess.run(merged)
      writer.add_summary(summ, 0)

    accumulator = ea.EventAccumulator(event_sink)
    accumulator.Reload()

    self.assertTagsEqual(accumulator.Tags(), {
        ea.TENSORS: ['scalar', 'vector', 'string'],
    })

    scalar_proto = accumulator.Tensors('scalar')[0].tensor_proto
    scalar = tensor_util.MakeNdarray(scalar_proto)
    vector_proto = accumulator.Tensors('vector')[0].tensor_proto
    vector = tensor_util.MakeNdarray(vector_proto)
    string_proto = accumulator.Tensors('string')[0].tensor_proto
    string = tensor_util.MakeNdarray(string_proto)

    self.assertTrue(np.array_equal(scalar, 1.0))
    self.assertTrue(np.array_equal(vector, [1.0, 2.0, 3.0]))
    self.assertTrue(np.array_equal(string, six.b('foobar')))
Exemple #11
0
  def testTags(self):
    with self.cached_session() as sess:
      c = constant_op.constant(1)
      s1 = summary_lib.tensor_summary("s1", c)
      with ops.name_scope("foo", skip_on_eager=False):
        s2 = summary_lib.tensor_summary("s2", c)
        with ops.name_scope("zod", skip_on_eager=False):
          s3 = summary_lib.tensor_summary("s3", c)
          s4 = summary_lib.tensor_summary("TensorSummary", c)
      summ1, summ2, summ3, summ4 = self.evaluate([s1, s2, s3, s4])

    v1 = self._SummarySingleValue(summ1)
    self.assertEqual(v1.tag, "s1")

    v2 = self._SummarySingleValue(summ2)
    self.assertEqual(v2.tag, "foo/s2")

    v3 = self._SummarySingleValue(summ3)
    self.assertEqual(v3.tag, "foo/zod/s3")

    v4 = self._SummarySingleValue(summ4)
    self.assertEqual(v4.tag, "foo/zod/TensorSummary")
 def test_fully_populated_tensor(self):
   metadata = summary_pb2.SummaryMetadata()
   metadata.plugin_data.add(plugin_name='font_of_wisdom',
                            content='adobe_garamond')
   op = summary_lib.tensor_summary(
       name='tensorpocalypse',
       tensor=constant_op.constant([[0.0, 2.0], [float('inf'), float('nan')]]),
       display_name='TENSORPOCALYPSE',
       summary_description='look on my works ye mighty and despair',
       summary_metadata=metadata)
   value = self._value_from_op(op)
   assert value.HasField('tensor'), value
   self._assert_noop(value)
  def testTags(self):
    with self.cached_session() as sess:
      c = constant_op.constant(1)
      s1 = summary_lib.tensor_summary("s1", c)
      with ops.name_scope("foo"):
        s2 = summary_lib.tensor_summary("s2", c)
        with ops.name_scope("zod"):
          s3 = summary_lib.tensor_summary("s3", c)
          s4 = summary_lib.tensor_summary("TensorSummary", c)
      summ1, summ2, summ3, summ4 = sess.run([s1, s2, s3, s4])

    v1 = self._SummarySingleValue(summ1)
    self.assertEqual(v1.tag, "s1")

    v2 = self._SummarySingleValue(summ2)
    self.assertEqual(v2.tag, "foo/s2")

    v3 = self._SummarySingleValue(summ3)
    self.assertEqual(v3.tag, "foo/zod/s3")

    v4 = self._SummarySingleValue(summ4)
    self.assertEqual(v4.tag, "foo/zod/TensorSummary")
def ipu_compile_summary(name, op_list, collections=None):

  with ops.device("cpu"):
    with ops.control_dependencies(op_list):
      reports = gen_ipu_ops.ipu_event_trace()

      summary_metadata = summary_pb2.SummaryMetadata(
          plugin_data=summary_pb2.SummaryMetadata.PluginData(
              plugin_name="ipu"))

      t_summary = tensor_summary(
          name=name,
          tensor=reports,
          summary_metadata=summary_metadata,
          collections=collections)
  return t_summary