def test_report_image_to_tensorboard(tmp_path, read_log): pytest.importorskip("tensorboard") image = Image(image=th.rand(16, 16, 3), dataformats="HWC") writer = make_output_format("tensorboard", tmp_path) writer.write({"image": image}, key_excluded={"image": ()}) assert not read_log("tensorboard").empty writer.close()
def test_report_video_to_unsupported_format_raises_error( tmp_path, unsupported_format): writer = make_output_format(unsupported_format, tmp_path) with pytest.raises(FormatUnsupportedError) as exec_info: video = Video(frames=th.rand(1, 20, 3, 16, 16), fps=20) writer.write({"video": video}, key_excluded={"video": ()}) assert unsupported_format in str(exec_info.value) writer.close()
def test_exclude_keys(tmp_path, read_log, _format): if _format == "tensorboard": # Skip if no tensorboard installed pytest.importorskip("tensorboard") writer = make_output_format(_format, tmp_path) writer.write(dict(some_tag=42), key_excluded=dict(some_tag=(_format))) writer.close() assert read_log(_format).empty
def test_report_image_to_unsupported_format_raises_error( tmp_path, unsupported_format): writer = make_output_format(unsupported_format, tmp_path) with pytest.raises(FormatUnsupportedError) as exec_info: image = Image(image=th.rand(16, 16, 3), dataformats="HWC") writer.write({"image": image}, key_excluded={"image": ()}) assert unsupported_format in str(exec_info.value) writer.close()
def test_report_figure_to_unsupported_format_raises_error(tmp_path, unsupported_format): writer = make_output_format(unsupported_format, tmp_path) with pytest.raises(FormatUnsupportedError) as exec_info: fig = plt.figure() fig.add_subplot().plot(np.random.random(3)) figure = Figure(figure=fig, close=True) writer.write({"figure": figure}, key_excluded={"figure": ()}) assert unsupported_format in str(exec_info.value) writer.close()
def test_report_figure_to_tensorboard(tmp_path, read_log): pytest.importorskip("tensorboard") fig = plt.figure() fig.add_subplot().plot(np.random.random(3)) figure = Figure(figure=fig, close=True) writer = make_output_format("tensorboard", tmp_path) writer.write({"figure": figure}, key_excluded={"figure": ()}) assert not read_log("tensorboard").empty writer.close()
def test_report_video_to_tensorboard(tmp_path, read_log, capsys): pytest.importorskip("tensorboard") video = Video(frames=th.rand(1, 20, 3, 16, 16), fps=20) writer = make_output_format("tensorboard", tmp_path) writer.write({"video": video}, key_excluded={"video": ()}) if is_moviepy_installed(): assert not read_log("tensorboard").empty else: assert "moviepy" in capsys.readouterr().out writer.close()
def test_make_output(_format): """ test make output :param _format: (str) output format """ writer = make_output_format(_format, LOG_DIR) writer.writekvs(KEY_VALUES) if _format == "csv": read_csv(LOG_DIR + 'progress.csv') elif _format == 'json': read_json(LOG_DIR + 'progress.json') writer.close()
def test_make_output(tmp_path, read_log, _format): """ test make output :param _format: (str) output format """ if _format == "tensorboard": # Skip if no tensorboard installed pytest.importorskip("tensorboard") writer = make_output_format(_format, tmp_path) writer.write(KEY_VALUES, KEY_EXCLUDED) assert not read_log(_format).empty writer.close()
def _build_output_formats( folder: types.AnyPath, format_strs: Sequence[str] = None, ) -> Sequence[sb_logger.KVWriter]: """Build output formats for initializing a Stable Baselines Logger. Args: folder: Path to directory that logs are written to. format_strs: An list of output format strings. For details on available output formats see `stable_baselines3.logger.make_output_format`. """ os.makedirs(folder, exist_ok=True) output_formats = [sb_logger.make_output_format(f, folder) for f in format_strs] return output_formats
def _on_training_start(self) -> None: _logger = self.globals["logger"].Logger.CURRENT _dir = _logger.dir if _dir is None: warnings.warn( "Logging directory is missing. Skipping the logger {}".format( self._format)) return None log_format = logger.make_output_format(self._format, _dir, self.suffix) _logger.output_formats.append(log_format) self.log_on_start = (("log_path", _dir), *self.log_on_start) if self.log_on_start is not None: for pair in self.log_on_start: _logger.record(*pair, ("tensorboard", "stdout"))
def test_make_output(tmp_path, _format): """ test make output :param _format: (str) output format """ if _format == 'tensorboard': # Skip if no tensorboard installed pytest.importorskip("tensorboard") writer = make_output_format(_format, tmp_path) writer.write(KEY_VALUES, KEY_EXCLUDED) if _format == "csv": read_csv(tmp_path / 'progress.csv') elif _format == 'json': read_json(tmp_path / 'progress.json') writer.close()
def test_make_output_fail(): """ test value error on logger """ with pytest.raises(ValueError): make_output_format('dummy_format', LOG_DIR)
def test_make_output_fail(tmp_path): """ test value error on logger """ with pytest.raises(ValueError): make_output_format("dummy_format", tmp_path)