def testPluginTagToContent_PluginsCannotJumpOnTheBandwagon(self): # If there are multiple `SummaryMetadata` for a given tag, and the # set of plugins in the `plugin_data` of second is different from # that of the first, then the second set should be ignored. logdir = self.get_temp_dir() summary_metadata_1 = tf.SummaryMetadata( display_name='current tagee', summary_description='no', plugin_data=[ tf.SummaryMetadata.PluginData(plugin_name='outlet', content='120v') ]) self._writeMetadata(logdir, summary_metadata_1, nonce='1') acc = ea.EventAccumulator(logdir) acc.Reload() summary_metadata_2 = tf.SummaryMetadata( display_name='tagee of the future', summary_description='definitely not', plugin_data=[ tf.SummaryMetadata.PluginData(plugin_name='plug', content='110v') ]) self._writeMetadata(logdir, summary_metadata_2, nonce='2') acc.Reload() self.assertEqual(acc.PluginTagToContent('outlet'), {'you_are_it': '120v'}) with six.assertRaisesRegex(self, KeyError, 'plug'): acc.PluginTagToContent('plug')
def printLastLayer(self, lastLayer, test_data_readable_input, output, variable_writer): input = test_data_readable_input['X_test'] with open( "Data_Set/" + FLAGS.dataset_name + "/" + str(FLAGS.network_node) + "-node/matriceShortestPath.txt", 'rb') as f: resultMatrix = pickle.load(f) for i in range(0, 50): str_result = " Input " + str(i) + " " + str(input[i]) + "\n" summary = tf.Summary() text_tensor = tf.make_tensor_proto(str_result, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary.value.add(tag=str(i) + " Input ", metadata=meta, tensor=text_tensor) variable_writer.add_summary(summary, i) source = int(input[i][FLAGS.network_link]) destination = int(input[i][FLAGS.network_link + 1]) str_result = " Output :" + str(i) + " " + str( output[i]) + "\n paths : " + str( resultMatrix[traffic_s_d_to_index(source, destination)]) summary = tf.Summary() text_tensor = tf.make_tensor_proto(str_result, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary.value.add(tag=str(i) + " Output ", metadata=meta, tensor=text_tensor) variable_writer.add_summary(summary, i) str_result = " Last Layer " + str(i) + " " + str( lastLayer[i]) + "\n\n\n " summary = tf.Summary() text_tensor = tf.make_tensor_proto(str_result, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary.value.add(tag=str(i) + " Last Layer ", metadata=meta, tensor=text_tensor) variable_writer.add_summary(summary, i)
def create_summary_metadata(display_name, description, num_thresholds): """Create a `tf.SummaryMetadata` proto for pr_curves plugin data. Arguments: display_name: The display name used in TensorBoard. description: The description to show in TensorBoard. num_thresholds: The number of thresholds to use for PR curves. Returns: A `tf.SummaryMetadata` protobuf object. """ pr_curve_plugin_data = plugin_data_pb2.PrCurvePluginData( version=PROTO_VERSION, num_thresholds=num_thresholds) content = pr_curve_plugin_data.SerializeToString() if USE_TF: return tf.SummaryMetadata( display_name=display_name, summary_description=description, plugin_data=tf.SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME, content=content)) else: return summary_pb2.SummaryMetadata( display_name=display_name, summary_description=description, plugin_data=summary_pb2.SummaryMetadata.PluginData( plugin_name=PLUGIN_NAME, content=content))
def custom_summary(text, tag): text_tensor = tf.make_tensor_proto(text, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag=tag, metadata=meta, tensor=text_tensor) return summary
def op(name, data, display_name=None, description=None, collections=None): """Create a TensorFlow summary op for a rank-2 `Tensor`. Args: name: A unique name for the generated summary node. data: A real numeric rank-2 `Tensor`. Must have `dtype` castable to `tf.float64`. display_name: Optional name for this summary in TensorBoard, as a constant `str`. Defaults to `name`. description: Optional long-form description for this summary, as a constant `str`. Markdown is supported. Defaults to empty. collections: Optional list of graph collections to add the summary op to. Defaults to `['summaries']`. Returns: A TensorFlow summary op. """ if display_name is None: display_name = name summary_metadata = tf.SummaryMetadata( display_name=display_name, summary_description=description, plugin_data=tf.SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME) ) with tf.control_dependencies([tf.assert_rank(data, 2)]): return tf.summary.tensor_summary( name=name, tensor=tf.cast(data, tf.float64), summary_metadata=summary_metadata, collections=collections )
def add_model_metadata(logdir, directory_path, flags, properties): summary_writer = tf.summary.FileWriter(logdir) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() overview = get_model_overview(directory_path) hyper_params = get_hyper_parameters(flags, properties) gan_summary = get_gan_summary() write_to_file(logdir, overview, hyper_params, gan_summary, flags) summary.value.add(tag="1_Overview", metadata=meta, tensor=tf.make_tensor_proto(overview, dtype=tf.string)) summary.value.add(tag="2_Hyperparameters", metadata=meta, tensor=tf.make_tensor_proto(hyper_params, dtype=tf.string)) summary.value.add(tag="3_Model", metadata=meta, tensor=tf.make_tensor_proto(gan_summary, dtype=tf.string)) summary_writer.add_summary(summary) summary_writer.flush() summary_writer.close() tf.logging.info("Saved meta data in {}".format(logdir.replace( "\\", "\\\\")))
def pb(tag, guest, display_name=None, description=None): """Create a greeting summary for the given guest. Arguments: tag: The string tag associated with the summary. guest: The string name of the guest to greet. display_name: If set, will be used as the display name in TensorBoard. Defaults to `tag`. description: A longform readable description of the summary data. Markdown is supported. """ message = 'Hello, %s!' % guest tensor = tf.make_tensor_proto(message, dtype=tf.string) # We have no metadata to store, but we do need to add a plugin_data entry # so that we know this summary is associated with the greeter plugin. # We could use this entry to pass additional metadata other than the # PLUGIN_NAME by using the content parameter. summary_metadata = tf.SummaryMetadata( display_name=display_name, summary_description=description, plugin_data=tf.SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME)) summary = tf.Summary() summary.value.add(tag=tag, metadata=summary_metadata, tensor=tensor) return summary
def op(name, value, display_name=None, description=None, collections=None): """Create a TensorFlow summary op to record data associated with a particular the given guest. Arguments: name: A name for this summary operation. guest: A rank-0 string `Tensor`. display_name: If set, will be used as the display name in TensorBoard. Defaults to `name`. description: A longform readable description of the summary data. Markdown is supported. collections: Which TensorFlow graph collections to add the summary op to. Defaults to `['summaries']`. Can usually be ignored. """ # The `name` argument is used to generate the summary op node name. # That node name will also involve the TensorFlow name scope. # By having the display_name default to the name argument, we make # the TensorBoard display clearer. if display_name is None: display_name = name # We could pass additional metadata other than the PLUGIN_NAME within the # plugin data by using the content parameter, but we don't need any metadata # for this simple example. summary_metadata = tf.SummaryMetadata( display_name=display_name, summary_description=description, plugin_data=tf.SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME)) # Return a summary op that is properly configured. return tf.summary.tensor_summary(name, value, summary_metadata=summary_metadata, collections=collections)
def op(name, guest, display_name=None, description=None, collections=None): """Create a TensorFlow summary op to greet the given guest. Arguments: name: A name for this summary operation. guest: A rank-0 string `Tensor`. display_name: If set, will be used as the display name in TensorBoard. Defaults to `name`. description: A longform readable description of the summary data. Markdown is supported. collections: Which TensorFlow graph collections to add the summary op to. Defaults to `['summaries']`. Can usually be ignored. """ # The `name` argument is used to generate the summary op node name. # That node name will also involve the TensorFlow name scope. # By having the display_name default to the name argument, we make # the TensorBoard display clearer. if display_name is None: display_name = name summary_metadata = tf.SummaryMetadata() # We could put additional metadata other than the PLUGIN_NAME, # but we don't need any metadata for this simple example. summary_metadata.plugin_data.add(plugin_name=PLUGIN_NAME, content="") message = tf.string_join(['Hello, ', guest, '!']) # Return a summary op that is properly configured. return tf.summary.tensor_summary(name, message, display_name=display_name, summary_metadata=summary_metadata, summary_description=description, collections=collections)
def test_session_start_pb(self): start_time_secs = 314160 session_start_info = plugin_data_pb2.SessionStartInfo( model_uri="//model/uri", group_name="session_group", start_time_secs=start_time_secs) session_start_info.hparams["param1"].string_value = "string" session_start_info.hparams["param2"].number_value = 5.0 session_start_info.hparams["param3"].bool_value = False self.assertEqual( summary.session_start_pb(hparams={ "param1": "string", "param2": 5, "param3": False }, model_uri="//model/uri", group_name="session_group", start_time_secs=start_time_secs), tf.Summary(value=[ tf.Summary.Value( tag="_hparams_/session_start_info", metadata=tf.SummaryMetadata( plugin_data=tf.SummaryMetadata.PluginData( plugin_name="hparams", content=(plugin_data_pb2.HParamsPluginData( version=0, session_start_info=session_start_info). SerializeToString())))) ]))
def create_summary_metadata(display_name, description): content = HistogramMetadata() metadata = tf.SummaryMetadata(display_name=display_name, summary_description=description) metadata.plugin_data.add(plugin_name=PLUGIN_NAME, content=json.dumps(content._asdict())) # pylint: disable=protected-access return metadata
def _architecture_metric_fn(**kwargs): """Manually creates the tf.metric with a serialized tf.Summary proto.""" del kwargs # Unused. # TODO: Should architecture.subnetworks be sorted by iteration # number first? Or perhaps, to make this more general, to have one line for # each iteration, with "|" as a delimiter if there are multiple subnetworks # in one iteration? Something like: # 0 linear # 1 dnn_width_32_depth_1 | dnn_width_64_depth_1 # 2 # 3 dnn_with_32_depth_2 architecture_ = " | ".join( [name for _, name in architecture.subnetworks]) architecture_ = "| {} |".format(architecture_) summary_metadata = tf.SummaryMetadata( plugin_data=tf.SummaryMetadata.PluginData(plugin_name="text")) summary_proto = tf.summary.Summary() summary_proto.value.add(metadata=summary_metadata, tag="architecture/adanet", tensor=tf.make_tensor_proto(architecture_, dtype=tf.string)) architecture_summary = tf.convert_to_tensor( summary_proto.SerializeToString(), name="architecture") return { "architecture/adanet/ensembles": (architecture_summary, tf.no_op()) }
def log_text(writer, tag, text): text_tensor = tf.make_tensor_proto(text, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag=tag, metadata=meta, tensor=text_tensor) writer.add_summary(summary)
def pb(tag, guest, display_name=None, description=None): """Create a greeting summary for the given guest. Arguments: tag: The string tag associated with the summary. guest: The string name of the guest to greet. display_name: If set, will be used as the display name in TensorBoard. Defaults to `tag`. description: A longform readable description of the summary data. Markdown is supported. """ message = 'Hello, %s!' % guest tensor = tf.make_tensor_proto(message, dtype=tf.string) summary_metadata = tf.SummaryMetadata(display_name=display_name, summary_description=description) metadata_content = '{}' # We have no metadata to store. summary_metadata.plugin_data.add(plugin_name=PLUGIN_NAME, content=metadata_content) summary = tf.Summary() summary.value.add(tag=tag, metadata=summary_metadata, tensor=tensor) return summary
def text_summary(self, text=''): text_tensor = tf.make_tensor_proto(text, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag="Description", metadata=meta, tensor=text_tensor) self.writer.add_summary(summary)
def log_markdown(self, tag: str, text_in_markdown: str, step: int): text_tensor = tf.make_tensor_proto(text_in_markdown, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag=tag, metadata=meta, tensor=text_tensor) self._summary_writer.add_summary(summary, step)
def pb(tag, data, display_name=None, description=None): """Create a summary for the given matrix. Args: tag: A unique name for the generated summary. data: A `np.array` or array-like form with rank 2. Must have type castable to `np.float64`. display_name: Optional name for this summary in TensorBoard, as a `str`. Defaults to `name`. description: Optional long-form description for this summary, as a `str`. Markdown is supported. Defaults to empty. Returns: A `tf.Summary` protobuf object. """ data = np.array(data).astype(np.float64) tensor = tf.make_tensor_proto(data, dtype=tf.float64) if display_name is None: display_name = tag summary_metadata = tf.SummaryMetadata( display_name=display_name, summary_description=description, plugin_data=tf.SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME) ) summary = tf.Summary() summary.value.add(tag=tag, metadata=summary_metadata, tensor=tensor) return summary
def pinnboard_summary(params, display_name=None, description=None, collections=None): """Create a TensorFlow summary op to greet the given guest. Arguments: params: parameter dictionary of the model display_name: If set, will be used as the display name in TensorBoard. Defaults to `name`. description: A longform readable description of the summary data. Markdown is supported. collections: Which TensorFlow graph collections to add the summary op to. Defaults to `['summaries']`. Can usually be ignored. """ tensors = pinnboard_tensors(params) summary_metadata = { k: tf.SummaryMetadata( summary_description=description, plugin_data=tf.SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME)) for k in tensors.keys() } summary_op = { k: tf.summary.tensor_summary('pinnboard.' + k, val, summary_metadata=summary_metadata[k], collections=collections) for k, val in tensors.items() } # Return disctionary of configured summary operations return summary_op
def add_text(self, tag, value, step): text_tensor = tf.make_tensor_proto(value, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag=tag, metadata=meta, tensor=text_tensor) self.writer.add_summary(summary, step)
def add_text_tb(summary_writer, text, tag='default_tag', index=0): text_tensor = tf.make_tensor_proto(text, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag=tag, metadata=meta, tensor=text_tensor) summary_writer.add_summary(summary, index) #tf.summary.text('info', tf.constant("This is test data"))
def _testTFSummaryTensor_SizeGuidance(self, plugin_name, tensor_size_guidance, steps, expected_count): event_sink = _EventGenerator(self, zero_out_timestamps=True) writer = tf.summary.FileWriter(self.get_temp_dir()) writer.event_writer = event_sink with self.test_session() as sess: summary_metadata = tf.SummaryMetadata( plugin_data=tf.SummaryMetadata.PluginData(plugin_name=plugin_name, content=b'{}')) tf.summary.tensor_summary('scalar', tf.constant(1.0), summary_metadata=summary_metadata) merged = tf.summary.merge_all() for step in xrange(steps): writer.add_summary(sess.run(merged), global_step=step) accumulator = ea.EventAccumulator( event_sink, tensor_size_guidance=tensor_size_guidance) accumulator.Reload() tensors = accumulator.Tensors('scalar') self.assertEqual(len(tensors), expected_count)
def add_code_summary(self): code_string = "\n".join(open(os.path.basename(__file__), 'r').readlines()) text_tensor = tf.make_tensor_proto(self.DESCRIPTION + "\n\n" + code_string, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag="Hyper parameters", metadata=meta, tensor=text_tensor) self.summary_writer.add_summary(summary)
def tensorboard_text(writer, tag, value, step=0): text_tensor = tf.make_tensor_proto(value, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag=tag, metadata=meta, tensor=text_tensor) writer.add_summary(summary) writer.flush()
def summary_text(name, tensor, family=None, step=None): meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" return summary.generic(name, tensor, metadata=meta, family=family, step=step)
def log_hparams(hparams, writer): value = get_hparams_text(hparams.values()) text_tensor = tf.make_tensor_proto(value, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag="hyperparameters", metadata=meta, tensor=text_tensor) writer.add_summary(summary)
def RecordDescription(writer, msg): text_tensor = tf.make_tensor_proto(msg, dtype=tf.string) summary = tf.Summary() meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary.value.add(tag="Description", metadata=meta, tensor=text_tensor) writer.add_summary(summary) writer.flush()
def text_summary(self, tag, value): """Log a text variable.""" text_tensor = tf.make_tensor_proto(value, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary(value=[tf.Summary.Value(tag=tag, metadata=meta, tensor=text_tensor)]) self.writer.add_summary(summary)
def add_summary(self, text): meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() text_tensor = tf.make_tensor_proto(text, dtype=tf.string) summary.value.add(tag="BLAST_" + self.running_mode, metadata=meta, tensor=text_tensor) self._summary_writer.add_summary(summary, self.global_step)
def log_board(board_str, summary_writer, summary_tag, step=0): board_str = board_str.replace('\n', '\n\t') text_tensor = tf.make_tensor_proto(board_str, dtype=tf.string) meta = tf.SummaryMetadata() meta.plugin_data.plugin_name = "text" summary = tf.Summary() summary.value.add(tag=summary_tag, metadata=meta, tensor=text_tensor) summary_writer.add_summary(summary, step) summary_writer.flush()
def testSummaryMetadata(self): logdir = self.get_temp_dir() summary_metadata = tf.SummaryMetadata(display_name='current tagee', summary_description='no') summary_metadata.plugin_data.plugin_name = 'outlet' self._writeMetadata(logdir, summary_metadata) acc = ea.EventAccumulator(logdir) acc.Reload() self.assertProtoEquals(summary_metadata, acc.SummaryMetadata('you_are_it'))