コード例 #1
0
def session_end_pb(status, end_time_secs=None):
    """Constructs a SessionEndInfo protobuffer.

    Creates a summary that contains status information for a completed
    training session. Should be exported after the training session is completed.
    One such summary per training session should be created. Each should have
    a different run.

    Args:
      status: A tensorboard.hparams.Status enumeration value denoting the
          status of the session.
      end_time_secs: float. The time to use as the session end time. Represented
          as seconds since the unix epoch. If None uses the current time.

    Returns:
      The summary protobuffer mentioned above.
    """
    if end_time_secs is None:
        end_time_secs = time.time()

    session_end_info = plugin_data_pb2.SessionEndInfo(
        status=status, end_time_secs=end_time_secs)
    return _summary(
        metadata.SESSION_END_INFO_TAG,
        plugin_data_pb2.HParamsPluginData(session_end_info=session_end_info),
    )
コード例 #2
0
ファイル: summary_test.py プロジェクト: kokimame/tensoba
 def test_session_end_pb(self):
     end_time_secs = 1234.0
     self.assertEqual(
         summary.session_end_pb(api_pb2.STATUS_SUCCESS, end_time_secs),
         tf.compat.v1.Summary(
             value=[
                 tf.compat.v1.Summary.Value(
                     tag="_hparams_/session_end_info",
                     tensor=summary._TF_NULL_TENSOR,
                     metadata=tf.compat.v1.SummaryMetadata(
                         plugin_data=tf.compat.v1.SummaryMetadata.PluginData(
                             plugin_name="hparams",
                             content=(
                                 plugin_data_pb2.HParamsPluginData(
                                     version=0,
                                     session_end_info=(
                                         plugin_data_pb2.SessionEndInfo(
                                             status=api_pb2.STATUS_SUCCESS,
                                             end_time_secs=end_time_secs,
                                         )
                                     ),
                                 ).SerializeToString()
                             ),
                         )
                     ),
                 )
             ]
         ),
     )
コード例 #3
0
ファイル: summary.py プロジェクト: frreiss/tensorboard-fred
def session_end_pb(status):
  """Creates a summary that contains status information for a completed
  training session. Should be exported after the training session is completed.
  One such summary per training session should be created. Each should have
  a different run.
  Arguments:
    status: A tensorboard.hparams.Status enumeration value denoting the
            status of the session.

  Returns:
    Returns the summary protobuffer mentioned above.
  """
  session_end_info = plugin_data_pb2.SessionEndInfo(status=status)
  return _summary(metadata.SESSION_END_INFO_TAG,
                  plugin_data_pb2.HParamsPluginData(
                      session_end_info=session_end_info))
コード例 #4
0
  def test_eager(self):
    def mock_time():
      mock_time.time += 1
      return mock_time.time
    mock_time.time = 1556227801.875
    initial_time = mock_time.time
    with mock.patch("time.time", mock_time):
      self._initialize_model(writer=self.logdir)
      self.model.fit(x=[(1,)], y=[(2,)], callbacks=[self.callback])
    final_time = mock_time.time

    files = os.listdir(self.logdir)
    self.assertEqual(len(files), 1, files)
    events_file = os.path.join(self.logdir, files[0])
    plugin_data = []
    for event in tf.compat.v1.train.summary_iterator(events_file):
      if event.WhichOneof("what") != "summary":
        continue
      self.assertEqual(len(event.summary.value), 1, event.summary.value)
      value = event.summary.value[0]
      self.assertEqual(
          value.metadata.plugin_data.plugin_name,
          metadata.PLUGIN_NAME,
      )
      plugin_data.append(value.metadata.plugin_data.content)

    self.assertEqual(len(plugin_data), 2, plugin_data)
    (start_plugin_data, end_plugin_data) = plugin_data
    start_pb = metadata.parse_session_start_info_plugin_data(start_plugin_data)
    end_pb = metadata.parse_session_end_info_plugin_data(end_plugin_data)

    # We're not the only callers of `time.time`; Keras calls it
    # internally an unspecified number of times, so we're not guaranteed
    # to know the exact values. Instead, we perform relative checks...
    self.assertGreater(start_pb.start_time_secs, initial_time)
    self.assertLess(start_pb.start_time_secs, end_pb.end_time_secs)
    self.assertLessEqual(start_pb.start_time_secs, final_time)
    # ...and then stub out the times for proto equality checks below.
    start_pb.start_time_secs = 1234.5
    end_pb.end_time_secs = 6789.0

    expected_start_pb = plugin_data_pb2.SessionStartInfo()
    text_format.Merge(
        """
        start_time_secs: 1234.5
        group_name: "my_trial"
        hparams {
          key: "optimizer"
          value {
            string_value: "adam"
          }
        }
        hparams {
          key: "dense_neurons"
          value {
            number_value: 8.0
          }
        }
        """,
        expected_start_pb,
    )
    self.assertEqual(start_pb, expected_start_pb)

    expected_end_pb = plugin_data_pb2.SessionEndInfo()
    text_format.Merge(
        """
        end_time_secs: 6789.0
        status: STATUS_SUCCESS
        """,
        expected_end_pb,
    )
    self.assertEqual(end_pb, expected_end_pb)