Module livelossplot.plot_losses
Expand source code
import warnings
from typing import Type, TypeVar, List, Union
import livelossplot
from livelossplot.main_logger import MainLogger
from livelossplot import outputs
BO = TypeVar('BO', bound=outputs.BaseOutput)
class PlotLosses:
"""
Class collect metrics from the training engine and send it to plugins, when send is called
"""
def __init__(
self,
outputs: List[Union[Type[BO], str]] = ['MatplotlibPlot', 'ExtremaPrinter'],
mode: str = 'notebook',
**kwargs
):
"""
Args:
outputs: list of output modules: objects inheriting from BaseOutput
or strings for livelossplot built-in output methods with default parameters
mode: Options: 'notebook' or 'script' - some of outputs need to change some behaviors,
depending on the working environment
**kwargs: key-arguments which are passed to MainLogger constructor
"""
self.logger = MainLogger(**kwargs)
self.outputs = [getattr(livelossplot.outputs, out)() if isinstance(out, str) else out for out in outputs]
for out in self.outputs:
out.set_output_mode(mode)
def update(self, *args, **kwargs):
"""update logs with arguments that will be passed to main logger"""
self.logger.update(*args, **kwargs)
def send(self):
"""Method will send logs to every output class"""
for output in self.outputs:
output.send(self.logger)
def draw(self):
"""Send method substitute from old livelossplot api"""
warnings.warn('draw will be deprecated, please use send method', PendingDeprecationWarning)
self.send()
def reset_outputs(self) -> 'PlotLosses':
"""Resets all outputs.
Returns:
Plotlosses object (so it works for chaining)
"""
self.outputs = []
return self
def to_matplotlib(self, **kwargs) -> 'PlotLosses':
"""Appends outputs.MatplotlibPlot output, with specified parameters.
Args:
**kwargs: keyword arguments for MatplotlibPlot
Returns:
Plotlosses object (so it works for chaining)
"""
self.outputs.append(outputs.MatplotlibPlot(**kwargs))
return self
def to_extrema_printer(self, **kwargs) -> 'PlotLosses':
"""Appends outputs.ExtremaPrinter output, with specified parameters.
Args:
**kwargs: keyword arguments for ExtremaPrinter
Returns:
Plotlosses object (so it works for chaining)
"""
self.outputs.append(outputs.ExtremaPrinter(**kwargs))
return self
def to_bokeh(self, **kwargs) -> 'PlotLosses':
"""Appends outputs.BokehPlot output, with specified parameters.
Args:
**kwargs: keyword arguments for BokehPlot
Returns:
Plotlosses object (so it works for chaining)
"""
self.outputs.append(outputs.BokehPlot(**kwargs))
return self
def to_neptune(self, **kwargs) -> 'PlotLosses':
"""Appends outputs.NeptuneLogger output, with specified parameters.
Args:
**kwargs: keyword arguments for NeptuneLogger
Returns:
Plotlosses object (so it works for chaining)
"""
self.outputs.append(outputs.NeptuneLogger(**kwargs))
return self
def to_tensorboard(self, **kwargs) -> 'PlotLosses':
"""Appends outputs.TensorboardLogger output, with specified parameters.
Args:
**kwargs: keyword arguments for TensorboardLogger
Returns:
Plotlosses object (so it works for chaining)
"""
self.outputs.append(outputs.TensorboardLogger(**kwargs))
return self
def to_tensorboard_tf(self, **kwargs) -> 'PlotLosses':
"""Appends outputs.TensorboardTFLogger output, with specified parameters.
Args:
**kwargs: keyword arguments for TensorboardTFLogger
Returns:
Plotlosses object (so it works for chaining)
"""
self.outputs.append(outputs.TensorboardTFLogger(**kwargs))
return self
Classes
class PlotLosses (outputs: List[Union[Type[~BO], str]] = ['MatplotlibPlot', 'ExtremaPrinter'], mode: str = 'notebook', **kwargs)
-
Class collect metrics from the training engine and send it to plugins, when send is called
Args
outputs
- list of output modules: objects inheriting from BaseOutput or strings for livelossplot built-in output methods with default parameters
mode
- Options: 'notebook' or 'script' - some of outputs need to change some behaviors, depending on the working environment
**kwargs
- key-arguments which are passed to MainLogger constructor
Expand source code
class PlotLosses: """ Class collect metrics from the training engine and send it to plugins, when send is called """ def __init__( self, outputs: List[Union[Type[BO], str]] = ['MatplotlibPlot', 'ExtremaPrinter'], mode: str = 'notebook', **kwargs ): """ Args: outputs: list of output modules: objects inheriting from BaseOutput or strings for livelossplot built-in output methods with default parameters mode: Options: 'notebook' or 'script' - some of outputs need to change some behaviors, depending on the working environment **kwargs: key-arguments which are passed to MainLogger constructor """ self.logger = MainLogger(**kwargs) self.outputs = [getattr(livelossplot.outputs, out)() if isinstance(out, str) else out for out in outputs] for out in self.outputs: out.set_output_mode(mode) def update(self, *args, **kwargs): """update logs with arguments that will be passed to main logger""" self.logger.update(*args, **kwargs) def send(self): """Method will send logs to every output class""" for output in self.outputs: output.send(self.logger) def draw(self): """Send method substitute from old livelossplot api""" warnings.warn('draw will be deprecated, please use send method', PendingDeprecationWarning) self.send() def reset_outputs(self) -> 'PlotLosses': """Resets all outputs. Returns: Plotlosses object (so it works for chaining) """ self.outputs = [] return self def to_matplotlib(self, **kwargs) -> 'PlotLosses': """Appends outputs.MatplotlibPlot output, with specified parameters. Args: **kwargs: keyword arguments for MatplotlibPlot Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.MatplotlibPlot(**kwargs)) return self def to_extrema_printer(self, **kwargs) -> 'PlotLosses': """Appends outputs.ExtremaPrinter output, with specified parameters. Args: **kwargs: keyword arguments for ExtremaPrinter Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.ExtremaPrinter(**kwargs)) return self def to_bokeh(self, **kwargs) -> 'PlotLosses': """Appends outputs.BokehPlot output, with specified parameters. Args: **kwargs: keyword arguments for BokehPlot Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.BokehPlot(**kwargs)) return self def to_neptune(self, **kwargs) -> 'PlotLosses': """Appends outputs.NeptuneLogger output, with specified parameters. Args: **kwargs: keyword arguments for NeptuneLogger Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.NeptuneLogger(**kwargs)) return self def to_tensorboard(self, **kwargs) -> 'PlotLosses': """Appends outputs.TensorboardLogger output, with specified parameters. Args: **kwargs: keyword arguments for TensorboardLogger Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.TensorboardLogger(**kwargs)) return self def to_tensorboard_tf(self, **kwargs) -> 'PlotLosses': """Appends outputs.TensorboardTFLogger output, with specified parameters. Args: **kwargs: keyword arguments for TensorboardTFLogger Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.TensorboardTFLogger(**kwargs)) return self
Methods
def draw(self)
-
Send method substitute from old livelossplot api
Expand source code
def draw(self): """Send method substitute from old livelossplot api""" warnings.warn('draw will be deprecated, please use send method', PendingDeprecationWarning) self.send()
def reset_outputs(self) ‑> PlotLosses
-
Resets all outputs.
Returns
Plotlosses object (so it works for chaining)
Expand source code
def reset_outputs(self) -> 'PlotLosses': """Resets all outputs. Returns: Plotlosses object (so it works for chaining) """ self.outputs = [] return self
def send(self)
-
Method will send logs to every output class
Expand source code
def send(self): """Method will send logs to every output class""" for output in self.outputs: output.send(self.logger)
def to_bokeh(self, **kwargs) ‑> PlotLosses
-
Appends outputs.BokehPlot output, with specified parameters.
Args
**kwargs
- keyword arguments for BokehPlot
Returns
Plotlosses object (so it works for chaining)
Expand source code
def to_bokeh(self, **kwargs) -> 'PlotLosses': """Appends outputs.BokehPlot output, with specified parameters. Args: **kwargs: keyword arguments for BokehPlot Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.BokehPlot(**kwargs)) return self
def to_extrema_printer(self, **kwargs) ‑> PlotLosses
-
Appends outputs.ExtremaPrinter output, with specified parameters.
Args
**kwargs
- keyword arguments for ExtremaPrinter
Returns
Plotlosses object (so it works for chaining)
Expand source code
def to_extrema_printer(self, **kwargs) -> 'PlotLosses': """Appends outputs.ExtremaPrinter output, with specified parameters. Args: **kwargs: keyword arguments for ExtremaPrinter Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.ExtremaPrinter(**kwargs)) return self
def to_matplotlib(self, **kwargs) ‑> PlotLosses
-
Appends outputs.MatplotlibPlot output, with specified parameters.
Args
**kwargs
- keyword arguments for MatplotlibPlot
Returns
Plotlosses object (so it works for chaining)
Expand source code
def to_matplotlib(self, **kwargs) -> 'PlotLosses': """Appends outputs.MatplotlibPlot output, with specified parameters. Args: **kwargs: keyword arguments for MatplotlibPlot Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.MatplotlibPlot(**kwargs)) return self
def to_neptune(self, **kwargs) ‑> PlotLosses
-
Appends outputs.NeptuneLogger output, with specified parameters.
Args
**kwargs
- keyword arguments for NeptuneLogger
Returns
Plotlosses object (so it works for chaining)
Expand source code
def to_neptune(self, **kwargs) -> 'PlotLosses': """Appends outputs.NeptuneLogger output, with specified parameters. Args: **kwargs: keyword arguments for NeptuneLogger Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.NeptuneLogger(**kwargs)) return self
def to_tensorboard(self, **kwargs) ‑> PlotLosses
-
Appends outputs.TensorboardLogger output, with specified parameters.
Args
**kwargs
- keyword arguments for TensorboardLogger
Returns
Plotlosses object (so it works for chaining)
Expand source code
def to_tensorboard(self, **kwargs) -> 'PlotLosses': """Appends outputs.TensorboardLogger output, with specified parameters. Args: **kwargs: keyword arguments for TensorboardLogger Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.TensorboardLogger(**kwargs)) return self
def to_tensorboard_tf(self, **kwargs) ‑> PlotLosses
-
Appends outputs.TensorboardTFLogger output, with specified parameters.
Args
**kwargs
- keyword arguments for TensorboardTFLogger
Returns
Plotlosses object (so it works for chaining)
Expand source code
def to_tensorboard_tf(self, **kwargs) -> 'PlotLosses': """Appends outputs.TensorboardTFLogger output, with specified parameters. Args: **kwargs: keyword arguments for TensorboardTFLogger Returns: Plotlosses object (so it works for chaining) """ self.outputs.append(outputs.TensorboardTFLogger(**kwargs)) return self
def update(self, *args, **kwargs)
-
update logs with arguments that will be passed to main logger
Expand source code
def update(self, *args, **kwargs): """update logs with arguments that will be passed to main logger""" self.logger.update(*args, **kwargs)