def __init__(self, key: str, title: str, actions: List[str]): super().__init__(key) self.log_key = f"actions/{title}" self.actions = actions SummaryWriterContext.add_custom_scalars_multilinechart( [f"{self.log_key}/{action_name}" for action_name in actions], category="actions", title=title, )
def test_add_custom_scalars(self): with TemporaryDirectory() as tmp_dir: writer = SummaryWriter(tmp_dir) writer.add_custom_scalars = MagicMock() with summary_writer_context(writer): SummaryWriterContext.add_custom_scalars_multilinechart( ["a", "b"], category="cat", title="title") with self.assertRaisesRegex( AssertionError, "Title \\(title\\) is already in category \\(cat\\)"): SummaryWriterContext.add_custom_scalars_multilinechart( ["c", "d"], category="cat", title="title") SummaryWriterContext.add_custom_scalars_multilinechart( ["e", "f"], category="cat", title="title2") SummaryWriterContext.add_custom_scalars_multilinechart( ["g", "h"], category="cat2", title="title") SummaryWriterContext.add_custom_scalars(writer) writer.add_custom_scalars.assert_called_once_with({ "cat": { "title": ["Multiline", ["a", "b"]], "title2": ["Multiline", ["e", "f"]], }, "cat2": { "title": ["Multiline", ["g", "h"]] }, })
def add_custom_scalars(action_names: Optional[List[str]]): if not action_names: return SummaryWriterContext.add_custom_scalars_multilinechart( [ "propensities/model/{}/mean".format(action_name) for action_name in action_names ], category="propensities", title="model", ) SummaryWriterContext.add_custom_scalars_multilinechart( [ "propensities/logged/{}/mean".format(action_name) for action_name in action_names ], category="propensities", title="logged", ) SummaryWriterContext.add_custom_scalars_multilinechart( ["actions/logged/{}".format(action_name) for action_name in action_names], category="actions", title="logged", ) SummaryWriterContext.add_custom_scalars_multilinechart( ["actions/model/{}".format(action_name) for action_name in action_names], category="actions", title="model", )
def __init__( self, key: str, category: str, title: str, actions: List[str], log_key_prefix: Optional[str] = None, ): super().__init__(key) self.log_key_prefix = log_key_prefix or f"{category}/{title}" self.actions = actions SummaryWriterContext.add_custom_scalars_multilinechart( [f"{self.log_key_prefix}/{action_name}/mean" for action_name in actions], category=category, title=title, )