Spaces:
Sleeping
Sleeping
| # Copyright 2023 The Orbit Authors. All Rights Reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| """Provides a utility class for managing summary writing.""" | |
| import abc | |
| class SummaryManagerInterface(abc.ABC): | |
| """A utility interface for managing summary writing.""" | |
| def flush(self): | |
| """Flushes the the recorded summaries.""" | |
| raise NotImplementedError | |
| def summary_writer(self, relative_path=""): | |
| """Returns the underlying summary writer for scoped writers.""" | |
| raise NotImplementedError | |
| def write_summaries(self, summary_dict): | |
| """Writes summaries for the given dictionary of values. | |
| The summary_dict can be any nested dict. The SummaryManager should | |
| recursively creates summaries, yielding a hierarchy of summaries which will | |
| then be reflected in the corresponding UIs. | |
| For example, users may evaluate on multiple datasets and return | |
| `summary_dict` as a nested dictionary: | |
| { | |
| "dataset1": { | |
| "loss": loss1, | |
| "accuracy": accuracy1 | |
| }, | |
| "dataset2": { | |
| "loss": loss2, | |
| "accuracy": accuracy2 | |
| }, | |
| } | |
| This will create two set of summaries, "dataset1" and "dataset2". Each | |
| summary dict will contain summaries including both "loss" and "accuracy". | |
| Args: | |
| summary_dict: A dictionary of values. If any value in `summary_dict` is | |
| itself a dictionary, then the function will create a new summary_dict | |
| with name given by the corresponding key. This is performed recursively. | |
| Leaf values are then summarized using the parent relative path. | |
| """ | |
| raise NotImplementedError | |