From 81dbfc7ce70027c61bcf227d5e9a3be52c9d91fb Mon Sep 17 00:00:00 2001 From: David Quarel Date: Mon, 21 Sep 2026 09:50:11 -0400 Subject: [PATCH 1/4] imshow: images in a panel, and subplots to put them beside curves ARENA 0.5 shows GAN and VAE samples through `LiveImage`, an ipywidgets.Image in an output area of its own -- a widget, which is the one thing liveplot exists to avoid, and separate from the loss curves, so you cannot watch samples sharpen next to the losses. This is the liveplot side of replacing it. `LivePlot.subplots(1, 2)` mirrors `plt.subplots` and returns (plot, axes) with matplotlib's squeeze rules. A panel holds curves via `ax.plot("lossD", "lossG")` or a picture via `ax.imshow(tensor)`, which replaces whatever was there. That is matplotlib's own `ax.plot("lossD", data=d)` form with the source implicit, and `ax.twinx()` rather than a bespoke kwarg for the right-hand axis. `plot.imshow(x)` alone is the whole of LiveImage in one call. `_images.to_grid` does the shape reading, tiling and scaling as pure numpy, on the calling thread: ~0.19 ms for ten 64x64 RGB samples, and it quarters what the render process unpickles. It is forced anyway, since a CUDA tensor cannot be pickled to another process. Torch is duck-typed, never imported. Two findings shaped the design, both from checking matplotlib rather than assuming: - imshow refuses channels-first outright, so it has no (3, H, W) ambiguity to solve. We must accept it, so we raise on the two shapes that are genuinely ambiguous and name the fix. (1, H, W) is not one of them: both readings draw the same pixels. - imshow IGNORES vmin/vmax for RGB(A) data and merely clips floats to [0, 1] -- identical on 3.9.0 and 3.11.2. A generator ending in tanh outputs [-1, 1], so 44.8% of it would go to black with no way to say otherwise. So liveplot scales values itself, which also makes vmin/vmax uniform across colour and grayscale. One test is skipped on matplotlib 3.9.0-3.9.3, where any RGB draw from the spawned render process dies inside the C resampler while the same array in the same figure is fine in the parent, and which flips to passing when perturbed as transparently as wrapping matplotlib.image._resample. That is memory corruption, not logic; fixed in 3.9.4. See IMSHOW_REPORT.md. 58 passed on matplotlib 3.11.2; 57 passed, 1 skipped on 3.9.0. No existing test changed. IMSHOW_REPORT.md is the handoff, including what is left undone. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Hz3Btx6kkABaf8LzKM7s9b --- IMSHOW_REPORT.md | 138 ++++++++++++++++++++++ README.md | 69 +++++++++++ examples/demo.py | 56 +++++++++ liveplot/_images.py | 166 ++++++++++++++++++++++++++ liveplot/liveplot.py | 261 ++++++++++++++++++++++++++++++++++++++--- tests/test_images.py | 105 +++++++++++++++++ tests/test_subplots.py | 199 +++++++++++++++++++++++++++++++ 7 files changed, 977 insertions(+), 17 deletions(-) create mode 100644 IMSHOW_REPORT.md create mode 100644 liveplot/_images.py create mode 100644 tests/test_images.py create mode 100644 tests/test_subplots.py diff --git a/IMSHOW_REPORT.md b/IMSHOW_REPORT.md new file mode 100644 index 0000000..193c4ae --- /dev/null +++ b/IMSHOW_REPORT.md @@ -0,0 +1,138 @@ +# `imshow` / `subplots` for liveplot — handoff report + +Branch: `live-imshow-dev`, off `main` at `05ce94e`. Written for whoever picks this up next. + +## Why + +ARENA chapter 0.5 (`master_0_5.py`, VAE + DCGAN) shows generated samples with `LiveImage`, defined +in `chapter0_fundamentals/exercises/part5_vaes_and_gans/utils.py:52`. It is an `ipywidgets.Image` +whose `.value` is overwritten with PNG bytes from `samples_to_png()`. Three call sites: +`master_0_5.py:801` (autoencoder), `:1331` (VAE), `:3066` (DCGAN). + +Two problems. It is a **widget**, which is the one thing liveplot exists to avoid, and it is a +**separate output area** from the loss curves, so you cannot watch samples sharpen next to the +losses. `samples_to_png` also hardcodes `(b1 b2) c h w`, so it cannot take an unbatched image, and +it upscales by hand with `Image.NEAREST` because MNIST at 28x28 is unreadable — matplotlib's +`imshow` scales to the axes box, so that branch is unnecessary here. + +## What was built + +Nothing in ARENA has been changed yet. This branch is the liveplot side only. + +### New file: `liveplot/_images.py` + +`to_grid(x, rows=, cols=, grid_size=, vmin=, vmax=, scale_each=, channels=, pad_value=)` → one +`uint8` array, `(H, W)` or `(H, W, 3|4)`. Pure numpy, no liveplot state, no torch. Everything about +shape reading, tiling and scaling lives here and is unit-tested in isolation +(`tests/test_images.py`). + +Runs on the **calling** thread: ~0.19 ms for ten 64x64 RGB samples, and it quarters what the render +process unpickles (480 KiB float32 → 120 KiB uint8). It is also forced — a CUDA tensor cannot be +pickled to another process, so the `.cpu()` hop has to happen caller-side regardless. Torch is +duck-typed (`detach`, `cpu`, then `np.asarray`), never imported. + +### `liveplot/liveplot.py` + +- Panel specs gained `kind` (`"curve"` / `"image"`) and `cmap`. `_normalise_panel` takes + `allow_empty=` for the blank panels `subplots()` hands out. +- `_FigureRenderer` gained `self.images` (panel index → array), which survives a re-layout exactly + as `hist` does, plus `add_image` / `_draw_image`. `_draw_image` reuses the `AxesImage` via + `set_data` when the shape is unchanged. Image panels get `set_axis_off()` and are skipped by + `_draw_axvline` (a vertical line across a picture means nothing) and, naturally, by the autoscale + loop, which iterates `self.lines`. +- New worker message `("image", panel_index, arr)`. +- `LivePlot.subplots(nrows, ncols, figsize=, squeeze=, iterable=, **kwargs)` classmethod returning + `(plot, axes)`; `_PanelGrid` supports `axes[0][1]`, `axes[0, 1]`, `.flat`, `.shape`. +- `_Axis.plot(*names)`, `Panel.plot(*names)`, `Panel.twinx()`, `Panel.imshow(...)`, + `LivePlot.imshow(...)`. +- `figure()` and `_fall_back_to_thread` carry the images, as they already carried `hist`. + +`record=` needed no work and captures a mixed grid, since recording keeps the rendered PNG: a 1x2 +curves-and-samples run wrote a 12-frame animated GIF. That would make a better `docs/demo.gif` than +the present curves-only one — worth doing, via `examples/make_gif.py`. + +### Design decisions, and why + +Three were settled with David; the reasoning is worth keeping because two of them came out of +checking what matplotlib actually does rather than what it is assumed to do. + +1. **`ax.plot("lossD", "lossG")` names metrics.** This looked like a pun on `ax.plot(x, y)` but is + not: matplotlib genuinely accepts strings as series names via `ax.plot("step", "lossD", data=d)`. + liveplot is that form with the source implicit. The first sketch had a `secondary="acc"` kwarg; + that was dropped for `ax.twinx()`, matplotlib's own spelling, which `Panel.right` already backed. + +2. **`(3, H, W)` and `(4, H, W)` raise.** matplotlib's own answer is to refuse channels-first + entirely (`TypeError: Invalid shape (3, 8, 8) for image data`) — it only ever takes `(M, N)`, + `(M, N, 1)`, `(M, N, 3)`, `(M, N, 4)`. We must accept channels-first because torch uses it, so + the ambiguity it designed away is ours. Note `(1, H, W)` is **not** ambiguous: both readings draw + the same pixels (verified), so only two shapes raise, and the message names both escape hatches. + The cost: `(3, 64, 64)` is "one CelebA image", so anyone eyeballing a single sample hits it. If + that grates, defaulting to channels-first is a one-line change in `_as_bhwc`. + +3. **liveplot scales values itself.** Per-call min-max by default, matching what `samples_to_png` + does today, with `vmin`/`vmax` to fix the range and `scale_each` for per-image (the name is + `make_grid`'s). It is delegated to nobody because **matplotlib's `imshow` ignores `vmin`/`vmax` + for RGB(A) data** and just clips floats to `[0, 1]` — verified identical on 3.9.0 and 3.11.2, + where `imshow(rgb, vmin=-1, vmax=1)` renders pixel for pixel the same as + `imshow(clip(rgb, 0, 1))`. The DCGAN generator ends in `tanh`, so 44.8% of its output would go to + black. Doing it ourselves also makes `vmin`/`vmax` behave uniformly for colour and grayscale, + which is what people assume and better than matplotlib's asymmetry (scalar data *is* autoscaled). + +## A matplotlib 3.9.0 bug you will hit locally + +`tests/test_subplots.py::test_process_mode_curves_beside_images` is **skipped on matplotlib +3.9.0–3.9.3**, and David's conda env (`streamlit`) has exactly 3.9.0, so you will see the skip. + +On 3.9.0, any RGB(A) image drawn from the **spawned render process** dies with +`ValueError: arrays must be of dtype byte, short, float32 or float64` out of matplotlib's C +extension. What the investigation established: + +- grayscale is unaffected; only the multi-channel resample path fails +- the same array in the same figure draws fine in the **parent** process +- `float32` fails too, so it is not our `uint8` +- pure matplotlib in a spawned child is fine — it needs our renderer's state +- `matplotlib._image.resample` called directly with a `uint8` RGBA array is fine in both processes +- it flips to passing when perturbed in ways that cannot matter: calling `get_window_extent` first, + or wrapping `matplotlib.image._resample` in a transparent Python function +- reproducible with numpy 1.26.4 *and* 2.4.6, so it is not the numpy pairing +- **fixed in matplotlib 3.9.4**; 3.10.x and 3.11.2 are fine + +Behaviour that flips on transparent perturbation is memory corruption, not logic, so this was read +as a matplotlib bug and not worked around. `interpolation_stage="rgba"` was tried and does **not** +help (and would need matplotlib ≥3.8 while we declare ≥3.6), so it was reverted. The declared floor +was left at `matplotlib>=3.6`: raising it for the whole library over a bug in three patch releases +seemed worse than a documented skip, especially as ARENA does not pin matplotlib and so gets a good +one. Colour images stay covered in-process by `test_figure_includes_the_image`. + +If you want this to stop being a caveat: bump to `matplotlib>=3.9.4` and delete +`_colour_images_are_safe_here` with its skip. + +## Tests + +`58 passed` on matplotlib 3.11.2 (clean venv); `57 passed, 1 skipped` on 3.9.0 (the conda env). +19 new: `tests/test_images.py` (9) and `tests/test_subplots.py` (10). No existing test changed. + +Worth knowing: four of the `test_images.py` expectations were wrong on the first pass and the code +was right — `grid_shape` rounding (`(5, 8, 8)` → a 3x2 grid, not 3x3) and `np.round`'s banker's +rounding (127.5 → 128). But one genuine bug surfaced that way: dropping the tail of an oversized +batch happened **after** scaling, so an image nobody could see still set the range. `to_grid` now +truncates before scaling. + +## Left undone + +- **The ARENA migration.** Three `LiveImage` call sites, and `ipywidgets` then leaves the chapter's + dependencies. The DCGAN one wants `LivePlot.subplots(1, 2)` with `lossD`/`lossG` on the left panel + and `vmin=-1, vmax=1` on the samples; the two VAE ones currently pass `nrows=2` to stack input + over reconstruction, which maps to `rows=2`. +- **`tight_layout` and mixed panels.** A fixed-aspect image panel beside a curve panel leaves + whitespace. Width ratios would fix it; not attempted. +- **No inter-image padding.** `make_grid` defaults to `padding=2`, which makes grids notably easier + to read. Deliberately out of scope for a first pass — it is about four lines in `_tile`. +- **Unpushed on `main`:** nothing. `05ce94e` is on the remote. This branch does not touch + `.github/workflows/`, deliberately — the OAuth token here lacks the `workflow` scope, and a branch + push carrying a workflow change is rejected outright. + +## Try it + +`examples/demo.py` cells 9 and 10 (curves beside a fake generator's samples, and a standalone image +overwritten in place). Both were run headlessly; CI turns the file into the Colab notebook. diff --git a/README.md b/README.md index 06c54f5..55ee3f4 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,75 @@ plot.axvline(label="lr drop") # every panel, at the plot.panels[1].axvline(2000, "checkpoint", linestyle="-") # one panel, at a given x ``` +## Images beside curves: `subplots` + +`LivePlot.subplots` mirrors `plt.subplots`, and a panel can hold a picture instead of lines. That +gives you the shape a GAN training loop wants: loss curves updating every step, generated samples +every so often, in one figure and one output cell. + +```python +plot, (ax_loss, ax_samples) = LivePlot.subplots(1, 2, total=epochs * len(loader), figsize=(11, 4)) +ax_loss.plot("lossD", "lossG") # which metrics live on this axis +ax_loss.twinx().plot("D(x)") # matplotlib's own spelling for a right-hand axis +ax_samples.set_title("generator samples") + +for epoch in range(epochs): + for imgs, _ in plot(loader, desc=f"epoch {epoch}"): + plot.log(lossD=..., lossG=...) # every step + if step % 250 == 0: + ax_samples.imshow(netG(fixed_noise), rows=2, vmin=-1, vmax=1) # replaces the last one +plot.finish() +``` + +`ax.plot("lossD", "lossG")` names metrics rather than passing data, which is matplotlib's own +`ax.plot("lossD", data=d)` form with the data source implicit -- the plot is the source, filled in +later by `log()`. `axes` follows matplotlib's squeeze rules: one panel for 1x1, a flat list for a +single row or column, a 2-d grid otherwise (`axes[0][1]` and `axes[0, 1]` both work, and +`axes.flat` walks it). `figsize` is the whole figure in inches, as matplotlib means it. + +For a single picture with no curves, `plot.imshow(x)` makes the panel on first use and every later +call replaces it: + +```python +plot = LivePlot() +for step in ...: + plot.imshow(model(holdout)) # overwrites, rather than stacking a new plot underneath +``` + +### What `imshow` accepts + +A batch is tiled into a grid for you: `rows=` or `cols=` alone infers the other, `grid_size=(r, c)` +fixes both, padding with blanks or dropping the tail as needed. + +| input | read as | +|---|---| +| `(H, W)`, `(1, H, W)` | one grayscale image | +| `(H, W, 3)`, `(H, W, 4)` | one colour image, channels last | +| `(B, H, W)` | `B` grayscale images | +| `(B, 1\|3\|4, H, W)` | `B` images, channels first (torch's layout) | +| `(B, H, W, 1\|3\|4)` | `B` images, channels last | + +`(3, H, W)` and `(4, H, W)` are the ambiguous ones -- one colour image, or that many grayscale? -- +so they raise, naming the `channels=` to pass. matplotlib sidesteps this by refusing channels-first +outright; torch holds images that way, so the ambiguity is ours to resolve rather than ignore. + +Torch tensors go straight in: the conversion (`detach`, off the GPU, tile, scale to `uint8`) happens +on the calling thread, costs about 0.2 ms for ten 64x64 RGB samples, and means the render process +only ever unpickles a finished picture. Nothing in liveplot imports torch. + +### Scaling + +Values are scaled to the full range of the batch by default. `vmin` / `vmax` fix the range instead, +which is worth doing for a live view -- otherwise the black point moves every frame. `scale_each=True` +scales each image on its own, as `torchvision.utils.make_grid` does; it is off by default because it +hides exactly what you watch samples for, a washed-out or collapsed one stops looking anomalous. +`uint8` input passes through untouched. + +Note that liveplot does this scaling itself rather than leaving it to matplotlib, and so `vmin` / +`vmax` work for colour images too. matplotlib's `imshow` **ignores** them for RGB(A) data and merely +clips floats to `[0, 1]`: a generator ending in `tanh` outputs `[-1, 1]`, and roughly 45% of it would +go to black with no way to say otherwise. + ## Smoothing and log axes Per-step losses are noisy. `set_smooth(0.9)` draws each curve of a panel through wandb's default smoothing, the [time-weighted exponential moving average](https://docs.wandb.ai/models/app/features/panels/line-plot/smoothing), with the same 0 to 1 weight as wandb's smoothing slider and the raw values faded behind. On the plot it applies to every panel; `set_smooth(0)` turns it off. `set_yscale("log")` on an axis, a panel, or the plot gives log axes. diff --git a/examples/demo.py b/examples/demo.py index 05f7a17..871f222 100644 --- a/examples/demo.py +++ b/examples/demo.py @@ -179,3 +179,59 @@ def train_classifier(steps=600, batch_size=64, lr=0.5, eval_every=50, seed=0, pa if MAIN: xs, losses = plot.data["loss"] print(f"{len(xs)} loss points, x from {xs[0]} to {xs[-1]} examples; final eval acc {plot.latest['eval_acc']:.3f}") + +# %% +# 9. Images beside curves: LivePlot.subplots mirrors plt.subplots, and a panel can hold a picture +# instead of lines. `ax.plot("name", ...)` says which metrics live on an axis (matplotlib spells +# the same idea `ax.plot("name", data=d)`); `ax.imshow(tensor)` draws a batch as a grid and +# replaces it on every call. This is the shape a GAN training loop wants: loss curves updating +# every step, generated samples every so often, in one figure. +# +# A batch is tiled for you: `rows=` or `cols=` infers the other, and values are scaled to the +# full range unless you fix it with vmin/vmax -- worth doing here, since a generator that ends +# in tanh always produces [-1, 1] and a fixed range keeps the black point still between frames. + + +def fake_generator(step, rng, n=8, size=24): + """Stand-in for a generator: blobs that sharpen as `step` grows, in tanh range like a real one.""" + y, x = np.mgrid[0:size, 0:size] / size + out = np.empty((n, 3, size, size)) + for i in range(n): + cx, cy, sharp = rng.random(), rng.random(), 0.02 + 0.5 / (1 + step / 40) + blob = np.exp(-((x - cx) ** 2 + (y - cy) ** 2) / sharp) + out[i] = np.stack([blob, blob * (0.3 + 0.7 * cx), blob * (0.3 + 0.7 * cy)]) + return out * 2 - 1 # [-1, 1], as a tanh output would be + + +if MAIN: + rng = np.random.default_rng(0) + plot, (ax_loss, ax_samples) = LivePlot.subplots(1, 2, total=400, figsize=(11, 4)) + ax_loss.plot("lossD", "lossG") + ax_loss.twinx().plot("D(x)") # matplotlib's own spelling for a right-hand axis + ax_samples.set_title("generator samples") + + for step in plot(range(400)): + plot.log(lossD=1 / (1 + step / 50) + 0.05 * rng.random(), + lossG=0.4 + 0.3 * rng.random(), + **{"D(x)": 0.5 + 0.3 / (1 + step / 80)}) + if step % 25 == 0: + ax_samples.imshow(fake_generator(step, rng), rows=2, vmin=-1, vmax=1) + slow() + plot.finish() + +# %% +# 10. One image on its own, overwritten in place: plot.imshow() makes the panel on first use. The +# accepted layouts are (H, W), (C, H, W), (H, W, C), (B, H, W), (B, C, H, W) and (B, H, W, C). +# (3, H, W) and (4, H, W) are the ambiguous ones -- one colour image, or that many grayscale? -- +# and they raise, telling you which `channels=` to pass. + +if MAIN: + plot = LivePlot() + for step in range(40): + plot.imshow(np.random.default_rng(step).random((6, 1, 28, 28)), rows=2) # replaces the last + slow(0.05) + plot.finish() + try: + plot.imshow(np.zeros((3, 8, 8))) + except ValueError as e: + print(e) diff --git a/liveplot/_images.py b/liveplot/_images.py new file mode 100644 index 0000000..7b0ba1a --- /dev/null +++ b/liveplot/_images.py @@ -0,0 +1,166 @@ +""" +Turning a tensor into something matplotlib will draw: reading its layout, tiling a batch into a +grid, and scaling the values to uint8. + +Nothing here imports torch, and numpy only inside the functions that need it, so `import liveplot` +stays free (see the note at the top of liveplot.py). A caller may hand us a torch tensor, a numpy +array, or anything else with `__array__`. + +Why we scale the values ourselves instead of letting `imshow` do it: matplotlib normalises *scalar* +data with vmin/vmax, but for RGB(A) data it ignores vmin/vmax completely and simply clips floats to +[0, 1] -- checked on matplotlib 3.9 and 3.11, where `imshow(rgb, vmin=-1, vmax=1)` renders pixel for +pixel the same as `imshow(clip(rgb, 0, 1))`. A DCGAN generator ends in tanh, so its output lives in +[-1, 1] and matplotlib would clip roughly 45% of it to black with no way to say otherwise. So we do +the scaling and hand `imshow` uint8, which it passes through untouched. +""" + +from __future__ import annotations + +import math + +_CHANNELS = (1, 3, 4) # channel counts we recognise: grayscale, RGB, RGBA + + +def _as_array(x): + """Anything array-like -> a numpy array, without naming torch.""" + import numpy as np + + if hasattr(x, "detach"): + x = x.detach() # a tensor that wants grad + if hasattr(x, "cpu"): + x = x.cpu() # ... and may be on a GPU, where numpy can't see it + return np.asarray(x) + + +def _ambiguous(shape, n): + kind = "RGBA" if n == 4 else "RGB" + return ValueError( + f"ambiguous shape {shape}: one {kind} image, or {n} grayscale images?\n" + f' channels="first" -> one {kind} image (or pass shape {(1,) + shape})\n' + f' channels="none" -> {n} grayscale images (or pass shape {(n, 1) + shape[1:]})' + ) + + +def _as_bhwc(a, channels: str | None): + """ + Any accepted layout -> (batch, height, width, channels). + + `channels` says how to read a 3-d input: "first" for (C, H, W), "last" for (H, W, C), "none" + for a batch of grayscale (B, H, W). None works it out: + + (H, W) one grayscale image + (1, H, W) one grayscale image -- the two readings draw the same pixels + (3, H, W) / (4, H, W) ambiguous, raises (see _ambiguous) + (H, W, 3) / (H, W, 4) one image, channels last + (B, H, W) B grayscale images + (B, 1|3|4, H, W) B images, channels first + (B, H, W, 1|3|4) B images, channels last + + matplotlib itself sidesteps all of this by refusing channels-first outright ("Invalid shape + (3, H, W) for image data"); it only ever takes (H, W), (H, W, 1), (H, W, 3) or (H, W, 4). We + have to accept channels-first because that is how torch holds images, so the ambiguity it + designed away is ours to resolve. + """ + import numpy as np + + assert channels in (None, "first", "last", "none"), \ + f'channels must be "first", "last", "none" or None, got {channels!r}' + shape = tuple(a.shape) + + if a.ndim == 2: + return a[None, :, :, None] + + if a.ndim == 3: + if channels == "first": + assert shape[0] in _CHANNELS, f'channels="first" needs {_CHANNELS} channels, got shape {shape}' + return np.moveaxis(a, 0, -1)[None] + if channels == "last": + assert shape[-1] in _CHANNELS, f'channels="last" needs {_CHANNELS} channels, got shape {shape}' + return a[None] + if channels == "none": + return a[..., None] + if shape[0] == 1: # (1, H, W): one image either way + return np.moveaxis(a, 0, -1)[None] + if shape[0] in (3, 4): + raise _ambiguous(shape, shape[0]) + if shape[-1] in (3, 4): # a batch of grayscale 3 or 4 pixels wide is not a thing + return a[None] + return a[..., None] + + if a.ndim == 4: + assert channels != "none", 'channels="none" describes a 3-d (B, H, W) input, not a 4-d one' + if channels == "last" or (channels is None and shape[1] not in _CHANNELS): + assert shape[-1] in _CHANNELS, ( + f"shape {shape} is not a batch of images: expected {_CHANNELS} channels at dim 1 " + f"(B, C, H, W) or dim 3 (B, H, W, C)" + ) + return a + return np.moveaxis(a, 1, -1) # (B, C, H, W), torch's layout, preferred when both could fit + + raise ValueError(f"imshow needs a 2-, 3- or 4-d array, got shape {shape}") + + +def _to_uint8(a, vmin, vmax, scale_each: bool): + """Scale to 0..255. uint8 passes straight through unless vmin/vmax ask for a rescale.""" + import numpy as np + + if a.dtype == np.uint8 and vmin is None and vmax is None: + return a + a = a.astype(np.float32, copy=False) + if scale_each: # per image, like torchvision's make_grid(scale_each=True) + lo = a.min(axis=(1, 2, 3), keepdims=True) if vmin is None else np.float32(vmin) + hi = a.max(axis=(1, 2, 3), keepdims=True) if vmax is None else np.float32(vmax) + else: + lo = np.float32(a.min() if vmin is None else vmin) + hi = np.float32(a.max() if vmax is None else vmax) + a = (a - lo) / np.maximum(hi - lo, 1e-12) # a constant image comes out at 0, as in make_grid + return (np.clip(a, 0.0, 1.0) * 255).round().astype(np.uint8) + + +def grid_shape(n: int, rows: int | None, cols: int | None, grid_size=None) -> tuple[int, int]: + """ + Rows x cols for `n` images. `grid_size=(rows, cols)` fixes both; one of `rows` / `cols` infers + the other; with neither, the near-square rule liveplot already uses for its panel grid. Unlike + the panel grid, the result need not fit: the caller pads short and drops long. + """ + if grid_size is not None: + assert rows is None and cols is None, "give grid_size, or rows/cols, not both" + rows, cols = grid_size + if rows is None and cols is None: + rows = math.ceil(math.sqrt(n)) + cols = math.ceil(n / rows) + elif rows is None: + rows = math.ceil(n / cols) + elif cols is None: + cols = math.ceil(n / rows) + rows, cols = int(rows), int(cols) + assert rows >= 1 and cols >= 1, f"grid must be at least 1x1, got {rows}x{cols}" + return rows, cols + + +def _tile(a, rows: int, cols: int, pad_value: int): + """(B, H, W, C) -> (rows*H, cols*W, C), padding with blanks or dropping the tail as needed.""" + import numpy as np + + b, h, w, c = a.shape + cells = rows * cols + if b > cells: + a = a[:cells] # more images than cells: the rest fall off the end + elif b < cells: + a = np.concatenate([a, np.full((cells - b, h, w, c), pad_value, dtype=a.dtype)]) + return a.reshape(rows, cols, h, w, c).transpose(0, 2, 1, 3, 4).reshape(rows * h, cols * w, c) + + +def to_grid(x, *, rows=None, cols=None, grid_size=None, vmin=None, vmax=None, + scale_each=False, channels=None, pad_value=0): + """ + A tensor -> one uint8 image, (H, W) for grayscale or (H, W, 3|4), ready for `Axes.imshow`. + Runs on the calling thread: tiling 10 64x64 RGB samples costs ~0.2 ms and quarters what the + render process has to unpickle, and a CUDA tensor has to come back to the host here anyway. + """ + a = _as_bhwc(_as_array(x), channels) + rows, cols = grid_shape(a.shape[0], rows, cols, grid_size) + a = a[: rows * cols] # drop before scaling: an image nobody can see must not set the range + a = _to_uint8(a, vmin, vmax, scale_each) + grid = _tile(a, rows, cols, pad_value) + return grid[..., 0] if grid.shape[-1] == 1 else grid diff --git a/liveplot/liveplot.py b/liveplot/liveplot.py index 729bff7..25beeeb 100644 --- a/liveplot/liveplot.py +++ b/liveplot/liveplot.py @@ -64,6 +64,26 @@ time-weighted EMA with the same 0 to 1 weight (`smooth=0.9`), raw values faded behind. +Images beside curves: `LivePlot.subplots` mirrors `plt.subplots`, and a panel can +hold a picture instead of lines -- loss curves updating every step next to samples +from a generator, in one figure: + + plot, (ax_loss, ax_samples) = LivePlot.subplots(1, 2, total=n_steps, figsize=(11, 4)) + ax_loss.plot("lossD", "lossG") # which metrics live on this axis + ax_loss.twinx().plot("D(x)") # matplotlib's spelling for a right-hand axis + ... + ax_samples.imshow(netG(noise), rows=2, vmin=-1, vmax=1) # replaces the last one + +`plot.imshow(x)` does the same on a plot of its own, making the panel on first use. +A batch is tiled for you (`rows` / `cols` / `grid_size=(r, c)`, padding or dropping +to fit); (H, W), (C, H, W), (H, W, C), (B, H, W), (B, C, H, W) and (B, H, W, C) are +all understood, and the two genuinely ambiguous shapes, (3, H, W) and (4, H, W), +raise and name the `channels=` to pass. Values are scaled to the batch's full range +unless `vmin` / `vmax` fix it (worth doing live: otherwise the black point moves +every frame), or `scale_each=True` scales each image alone, as make_grid does. +Unlike matplotlib, which ignores vmin/vmax for colour data and clips it to [0, 1], +these apply to colour images too. + How it works: the training thread only appends numbers (~40 us per `log`). A separate *render process* owns the matplotlib figure, redraws it at most once per `refresh_seconds` (default 1.0; points arriving in between are batched into the @@ -112,7 +132,7 @@ import weakref _PANEL_KEYS = {"title", "metrics", "secondary", "xlabel", "ylabel", "ylabel2", "xlim", "ylim", "ylim2", "axhlines", "axhlines2", - "axvlines", "smooth", "yscale", "yscale2"} + "axvlines", "smooth", "yscale", "yscale2", "kind", "cmap"} _REF_LINE_STYLE = {"linestyle": "--", "linewidth": 1, "color": "0.45"} # defaults for axhline / axvline artists @@ -153,13 +173,16 @@ def _check_smooth(weight): return weight -def _normalise_panel(spec) -> dict: +def _normalise_panel(spec, allow_empty: bool = False) -> dict: + """`allow_empty` is for the panels `LivePlot.subplots` hands out before anything is drawn on them.""" if isinstance(spec, str): spec = _parse_panel_string(spec) unknown = set(spec) - _PANEL_KEYS assert not unknown, f"unknown panel keys {sorted(unknown)}; allowed: {sorted(_PANEL_KEYS)}" + kind = spec.get("kind", "curve") + assert kind in ("curve", "image"), f'kind must be "curve" or "image", got {kind!r}' metrics, secondary = list(spec.get("metrics", [])), list(spec.get("secondary", [])) - assert metrics or secondary, f"a panel needs at least one metric: {spec!r}" + assert metrics or secondary or kind == "image" or allow_empty, f"a panel needs at least one metric: {spec!r}" for lim in ("xlim", "ylim", "ylim2"): if spec.get(lim) is not None: assert len(spec[lim]) == 2, f"{lim} must be a (low, high) pair" @@ -179,6 +202,8 @@ def _normalise_panel(spec) -> dict: "smooth": _check_smooth(spec.get("smooth")), # TWEMA weight in [0, 1); None = plot-wide default; 0 = off "yscale": spec.get("yscale", "linear"), # "linear" or "log", left axis "yscale2": spec.get("yscale2", "linear"), # ... right axis + "kind": kind, # "curve" (metric lines) or "image" (one picture, overwritten in place) + "cmap": spec.get("cmap", "gray"), # image panels only; matplotlib ignores it for RGB data } @@ -239,9 +264,10 @@ class _FigureRenderer: rebuilds the figure for a new panel list, keeping the history. """ - def __init__(self, panels, xlim, layout, hist=None): + def __init__(self, panels, xlim, layout, hist=None, images=None): self.xlim, self.layout = xlim, layout # xlim = default x range or None; layout = (max_cols, rows, cols, cell_size, dpi, xlabel) self.hist = hist if hist is not None else {} + self.images = dict(images) if images else {} # panel index -> the uint8 array it is showing self.axvlines: list[dict] = [] # vertical reference lines (matplotlib axvline kwargs), drawn on every panel self.set_layout(panels) @@ -262,7 +288,15 @@ def set_layout(self, panels): self.raw_lines = {} # metric -> faded line of the unsmoothed values, on smoothed panels self.smooth = {} # metric -> TWEMA weight in (0, 1) or None self.fixed = {} # axes -> (x fixed?, y fixed?): fixed axes are never autoscaled - for ax, panel in zip(axes, panels): + self.panel_cmaps = {i: p["cmap"] for i, p in enumerate(panels)} + self.image_axes = {} # panel index -> its Axes, for the image panels + self.image_artists = {} # ... and the AxesImage drawn on it, so a redraw can set_data in place + for i, (ax, panel) in enumerate(zip(axes, panels)): + if panel["kind"] == "image": + ax.set_title(panel["title"]) + ax.set_axis_off() # pixel indices along the edge of a tiled grid are just noise + self.image_axes[i] = ax + continue names = panel["metrics"] + panel["secondary"] ax2 = ax.twinx() if panel["secondary"] else None ax.set_yscale(panel["yscale"]) @@ -293,7 +327,7 @@ def set_layout(self, panels): if panel["ylim"]: ax.set_ylim(*panel["ylim"]) self.fixed[ax] = (xlim is not None, panel["ylim"] is not None) - if names != ["_"]: # (the "waiting for data" placeholder has no legend) + if names and names != ["_"]: # (nothing logged yet, or the "waiting for data" placeholder) ax.legend(handles, names, loc="best", fontsize=8) # every panel gets a legend (reference lines included) if ax2 is not None: ax.set_ylabel(panel["ylabel"] or ", ".join(panel["metrics"])) @@ -311,6 +345,9 @@ def set_layout(self, panels): self._draw_axvline(kw, [ax]) for kw in self.axvlines: self._draw_axvline(kw) + for index, arr in self.images.items(): # a re-layout rebuilds the figure; put the pictures back + if index in self.image_axes: + self._draw_image(index, arr) self.fig.tight_layout() def add_axvline(self, kw: dict): @@ -320,11 +357,28 @@ def add_axvline(self, kw: dict): def _draw_axvline(self, kw, axes=None): label = kw.get("label") style = {**_REF_LINE_STYLE, "linestyle": ":", **{k: v for k, v in kw.items() if k != "label"}} - for ax in self.axes if axes is None else axes: + picture = set(self.image_axes.values()) # a vertical line across a picture means nothing + for ax in ([a for a in self.axes if a not in picture] if axes is None else axes): ax.axvline(**style) if label: ax.text(kw["x"], 0.98, f" {label}", transform=ax.get_xaxis_transform(), va="top", ha="left", fontsize=7, color="0.3", rotation=90) + def add_image(self, index: int, arr): + self.images[index] = arr + if index in self.image_axes: + self._draw_image(index, arr) + + def _draw_image(self, index: int, arr): + artist = self.image_artists.get(index) + if artist is not None and artist.get_array().shape == arr.shape: + artist.set_data(arr) # same size as last time: no new artist, no rescale + return + if artist is not None: + artist.remove() + ax = self.image_axes[index] + cmap = self.panel_cmaps.get(index, "gray") + self.image_artists[index] = ax.imshow(arr, cmap=cmap, interpolation="nearest") + def add(self, step, metrics: dict): for name, value in metrics.items(): xs, ys = self.hist.setdefault(name, ([], [])) @@ -393,6 +447,9 @@ def _render_worker(panels, inbox, outbox, refresh_seconds, layout, xlim, parent_ elif item[0] == "axvline": renderer.add_axvline(item[1]) dirty = True + elif item[0] == "image": + renderer.add_image(item[1], item[2]) + dirty = True else: renderer.add(item[1], item[2]) dirty = True @@ -483,6 +540,26 @@ def _set(self, key, value): self._plot._specs[self._index][key + ("2" if self._right else "")] = value self._plot._send_layout() + def plot(self, *metrics): + """ + Put these metrics on this axis: `ax.plot("lossD", "lossG")`. matplotlib spells the same + thing `ax.plot("lossD", data=d)`, naming series in a data source; here the source is the + plot itself, filled in later by `log()`. Returns the axis, so calls can be chained. + """ + assert metrics, "plot() needs at least one metric name" + assert all(isinstance(m, str) for m in metrics), \ + f"plot() takes metric names, not data: {[m for m in metrics if not isinstance(m, str)]!r}" + panel = self._plot._specs[self._index] + assert panel["kind"] == "curve", "this panel is showing an image; use a different panel for curves" + key = "secondary" if self._right else "metrics" + auto = " / ".join(panel["metrics"] + panel["secondary"]) + was_auto = panel["title"] in (auto, "") # unnamed, or named after the metrics it had + panel[key].extend(m for m in metrics if m not in panel[key]) + if was_auto: # a title set with set_title() survives a later plot() call + panel["title"] = " / ".join(panel["metrics"] + panel["secondary"]) + self._plot._place(metrics) + return self + def set_ylabel(self, ylabel): self._set("ylabel", str(ylabel)) @@ -547,6 +624,43 @@ def right(self) -> _Axis: assert self.spec["secondary"], "this panel has no right-hand axis (no metrics after '|')" return _Axis(self._plot, self._index, right=True) + def twinx(self) -> _Axis: + """Like `Axes.twinx`: this panel's right-hand y-axis, whether or not it holds anything yet.""" + return _Axis(self._plot, self._index, right=True) + + def plot(self, *metrics) -> _Axis: + """Like `ax.plot("name", data=...)`: put these metrics on the left axis. See `_Axis.plot`.""" + return self.left.plot(*metrics) + + def imshow(self, x, *, rows=None, cols=None, grid_size=None, vmin=None, vmax=None, + scale_each=False, channels=None, cmap="gray", pad_value=0): + """ + Like `Axes.imshow`, but for a whole batch and repeatable: show `x` on this panel, replacing + whatever was there. A batch is tiled into a grid -- `rows` or `cols` alone infers the other, + `grid_size=(rows, cols)` fixes both (padding with blanks, or dropping the tail). + + Accepts (H, W), (C, H, W), (H, W, C), (B, H, W), (B, C, H, W) and (B, H, W, C); (3, H, W) + and (4, H, W) are ambiguous and raise, telling you which `channels=` to pass. + + Values are scaled to the full range by default, over the whole batch; `vmin` / `vmax` fix + the range instead (worth doing for a live view -- otherwise the black point moves every + frame), and `scale_each=True` scales each image on its own, as make_grid does. Unlike + matplotlib, `vmin` / `vmax` are honoured for colour images too. + """ + from ._images import to_grid + + spec = self.spec + assert not (spec["metrics"] or spec["secondary"]), \ + f"panel {self._index} is showing curves ({' '.join(spec['metrics'] + spec['secondary'])}); " \ + f"use a different panel for the image" + arr = to_grid(x, rows=rows, cols=cols, grid_size=grid_size, vmin=vmin, vmax=vmax, + scale_each=scale_each, channels=channels, pad_value=pad_value) + if spec["kind"] != "image" or spec["cmap"] != cmap: + spec["kind"], spec["cmap"] = "image", cmap + self._plot._send_layout() + self._plot._send_image(self._index, arr) + return self + def _set(self, key, value): self.spec[key] = value self._plot._send_layout() @@ -592,6 +706,47 @@ def __repr__(self): return f"Panel({self._index}: {' '.join(self.spec['metrics'])}{' | ' + ' '.join(self.spec['secondary']) if self.spec['secondary'] else ''})" +class _PanelGrid: + """ + The panel array `LivePlot.subplots` returns, indexable the way matplotlib's is: `axes[0][1]` + and `axes[0, 1]` both work, `axes.flat` walks it in row-major order, and it unpacks. + """ + + def __init__(self, rows: list): + self._rows = rows + + def __getitem__(self, key): + if isinstance(key, tuple): + row, col = key + return self._rows[row][col] + return self._rows[key] + + def __len__(self): + return len(self._rows) + + def __iter__(self): + return iter(self._rows) + + @property + def flat(self) -> list: + return [panel for row in self._rows for panel in row] + + @property + def shape(self) -> tuple: + return (len(self._rows), len(self._rows[0])) + + def _squeezed(self): + """matplotlib's squeeze: 1x1 -> the panel, 1xN or Nx1 -> a flat list, else the grid.""" + flat = self.flat + if len(flat) == 1: + return flat[0] + rows, cols = self.shape + return flat if rows == 1 or cols == 1 else self + + def __repr__(self): + return f"_PanelGrid({self.shape[0]}x{self.shape[1]})" + + # --------------------------------------------------------------------------- the handle @@ -651,6 +806,8 @@ def __init__( self._record_path = record if isinstance(record, str) else None self.frames: list[tuple[float, bytes]] = [] # (time, png) of every frame shown, if record=True self.axvlines: list[dict] = [] # vertical reference lines added with axvline() + self._images: dict[int, object] = {} # panel index -> the uint8 array it is showing + self._fixed_grid = False # set by subplots(): grow a panel's metrics, never the grid self._t0 = time.monotonic() self._done = False self._proc = self._renderer = self._inbox = self._outbox = None @@ -669,7 +826,7 @@ def __init__( f"rendering on the training thread instead (~0.15 s per redraw).", stacklevel=2, ) - self._renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout) + self._renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._images) self.mode = "thread" # -- setup ------------------------------------------------------------------- @@ -692,6 +849,36 @@ def _with_defaults(self, panel): panel[key] = value return panel + @classmethod + def subplots(cls, nrows: int = 1, ncols: int = 1, *, figsize=None, squeeze: bool = True, + iterable=None, **kwargs): + """ + Like `plt.subplots`, for a live plot: returns `(plot, axes)` with a fixed nrows x ncols grid + of empty panels, which you then fill with `ax.plot("loss", ...)` or `ax.imshow(tensor)`. + + plot, (ax_loss, ax_samples) = LivePlot.subplots(1, 2, total=n_steps, figsize=(11, 4)) + ax_loss.plot("lossD", "lossG") + ax_samples.imshow(netG(fixed_noise), rows=2, vmin=-1, vmax=1) + + `axes` follows matplotlib's squeeze rules: one panel for 1x1, a flat list for a single row + or column, a 2-d grid otherwise. `figsize` is the whole figure in inches, as matplotlib + means it (liveplot's own `cell_size` is per panel). Every other keyword goes to `LivePlot`. + """ + assert nrows >= 1 and ncols >= 1, f"need at least a 1x1 grid, got {nrows}x{ncols}" + kwargs.setdefault("rows", nrows) + kwargs.setdefault("cols", ncols) + if figsize is not None: + kwargs["cell_size"] = (figsize[0] / ncols, figsize[1] / nrows) + plot = cls(*([] if iterable is None else [iterable]), **kwargs) + plot._specs.extend( + plot._with_defaults(_normalise_panel({"metrics": []}, allow_empty=True)) for _ in range(nrows * ncols) + ) + plot._explicit_layout = True + plot._fixed_grid = True + plot._send_layout() + grid = _PanelGrid([[Panel(plot, r * ncols + c) for c in range(ncols)] for r in range(nrows)]) + return plot, (grid._squeezed() if squeeze else grid) + # -- panels and axes, addressed like matplotlib ----------------------------------- @property @@ -910,20 +1097,32 @@ def _extend_layout(self, new_metrics): unplaced = [m for m in new_metrics if m not in self._placed] if not unplaced: return - if self._explicit_layout: + curves = [i for i, spec in enumerate(self._specs) if spec["kind"] == "curve"] + if self._fixed_grid: + # subplots() promised a grid of this shape, so grow a panel rather than the grid: the + # first one still empty, else the first curve panel there is. + assert curves, "subplots() gave this plot no curve panel to hold " + ", ".join(unplaced) + empty = [i for i in curves if not self._specs[i]["metrics"] and not self._specs[i]["secondary"]] + self._join_panel(empty[0] if empty else curves[0], unplaced) + elif self._explicit_layout: for m in unplaced: self._specs.append(self._with_defaults(_normalise_panel({"metrics": [m]}))) - elif not self._specs: + elif not curves: # nothing but image panels so far (plot.imshow() before the first log) self._specs.append(self._with_defaults(_normalise_panel({"metrics": unplaced}))) else: - spec = self._specs[0] - was_auto = spec["title"] == " / ".join(spec["metrics"] + spec["secondary"]) # a title nobody chose - spec["metrics"].extend(unplaced) - if was_auto: # a title set with set_title() survives a newly discovered metric - spec["title"] = " / ".join(spec["metrics"] + spec["secondary"]) + self._join_panel(curves[0], unplaced) self._placed.update(unplaced) self._send_layout() + def _join_panel(self, index: int, unplaced: list): + """Add metrics to an existing panel, keeping a title the user chose.""" + spec = self._specs[index] + auto = " / ".join(spec["metrics"] + spec["secondary"]) + was_auto = spec["title"] in (auto, "") # a title nobody chose, or a fresh subplots() panel + spec["metrics"].extend(unplaced) + if was_auto: # a title set with set_title() survives a newly discovered metric + spec["title"] = " / ".join(spec["metrics"] + spec["secondary"]) + def axhline(self, y, label=None, *, metric=None, **kwargs): """ Like matplotlib's `Axes.axhline`: a horizontal reference line at `y` with `label` in the legend, @@ -951,6 +1150,34 @@ def axvline(self, x=None, label=None, **kwargs): elif self.mode == "thread": self._renderer.add_axvline(line) + def imshow(self, x, **kwargs): + """ + Show an image on the plot, replacing whatever was there -- the whole of `LiveImage` in one + call. Uses the plot's image panel, creating it on first use. Keywords go to `Panel.imshow`. + """ + for i, spec in enumerate(self._specs): + if spec["kind"] == "image": + return Panel(self, i).imshow(x, **kwargs) + assert not self._fixed_grid, \ + "this plot's grid comes from subplots(); call imshow() on one of its panels instead" + self._specs.append(self._with_defaults(_normalise_panel({"kind": "image"}))) + self._send_layout() + return Panel(self, len(self._specs) - 1).imshow(x, **kwargs) + + def _place(self, metrics): + """Record metrics as already belonging to a panel, and redraw.""" + self._placed.update(metrics) + for name in metrics: + self.data.setdefault(name, ([], [])) + self._send_layout() + + def _send_image(self, index: int, arr): + self._images[index] = arr + if self.mode == "process": + self._inbox.put(("image", index, arr)) + elif self.mode == "thread": + self._renderer.add_image(index, arr) + def _send_layout(self): if self.mode == "process": self._inbox.put(("layout", self._specs)) @@ -963,7 +1190,7 @@ def figure(self): built on the calling thread and independent of the render process: title it, tweak it, `fig.savefig("run.png")`, or show it in a report. Safe to call during or after training. """ - renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout) + renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._images) for name, (xs, ys) in self.data.items(): renderer.hist[name] = (list(xs), list(ys)) for line in self.axvlines: @@ -1041,7 +1268,7 @@ def _fall_back_to_thread(self, why): # process will usually kill a renderer built here too (a bad panel spec, a missing backend), # so if this fails, say so once and carry on collecting into plot.data. try: - renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout) + renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._images) for name, (xs, ys) in self.data.items(): renderer.hist[name] = (list(xs), list(ys)) for line in self.axvlines: diff --git a/tests/test_images.py b/tests/test_images.py new file mode 100644 index 0000000..17de7e5 --- /dev/null +++ b/tests/test_images.py @@ -0,0 +1,105 @@ +"""Shape reading, grid tiling and value scaling for `imshow` -- all of `_images.py`, no figure.""" + +import numpy as np +import pytest + +from liveplot._images import grid_shape, to_grid + + +def test_accepted_layouts(): + """Every layout, read into one picture. (H, W) and (H, W, 3) come out with no batch dimension.""" + assert to_grid(np.zeros((28, 28))).shape == (28, 28) + assert to_grid(np.zeros((1, 28, 28))).shape == (28, 28), "(1, H, W): both readings draw this" + assert to_grid(np.zeros((64, 64, 3))).shape == (64, 64, 3), "channels last" + assert to_grid(np.zeros((64, 64, 4))).shape == (64, 64, 4) + assert to_grid(np.zeros((3, 64, 64)), channels="first").shape == (64, 64, 3) + assert to_grid(np.zeros((5, 8, 8))).shape == (24, 16), "5 grayscale -> near-square 3x2, one blank" + assert to_grid(np.zeros((4, 1, 8, 8))).shape == (16, 16), "(B, 1, H, W) -> 2x2" + assert to_grid(np.zeros((4, 3, 8, 8))).shape == (16, 16, 3), "(B, C, H, W), torch's layout" + assert to_grid(np.zeros((4, 8, 8, 3))).shape == (16, 16, 3), "(B, H, W, C), channels last" + + +def test_the_ambiguous_shapes_raise_and_say_how_to_fix_it(): + """matplotlib dodges this by refusing channels-first entirely; we have to accept it, so we ask.""" + for n, kind in ((3, "RGB"), (4, "RGBA")): + with pytest.raises(ValueError, match="ambiguous shape") as e: + to_grid(np.zeros((n, 8, 8))) + assert kind in str(e.value) and 'channels="first"' in str(e.value) and 'channels="none"' in str(e.value) + # ... and both escape hatches work, giving genuinely different pictures + assert to_grid(np.zeros((3, 8, 8)), channels="first").shape == (8, 8, 3) + assert to_grid(np.zeros((3, 8, 8)), channels="none").shape == (16, 16), "3 grayscale -> 2x2, one blank" + with pytest.raises(ValueError, match="2-, 3- or 4-d"): + to_grid(np.zeros((2, 3, 4, 5, 6))) + with pytest.raises(AssertionError, match="not a batch of images"): + to_grid(np.zeros((4, 7, 8, 9))) # no dimension that could be channels + + +def test_grid_shape_inference(): + assert grid_shape(10, rows=2, cols=None) == (2, 5) + assert grid_shape(10, rows=None, cols=5) == (2, 5) + assert grid_shape(10, rows=None, cols=None) == (4, 3), "near-square, as for the panel grid" + assert grid_shape(10, rows=None, cols=None, grid_size=(2, 5)) == (2, 5) + assert grid_shape(7, rows=3, cols=None) == (3, 3), "rounds up, leaving blanks" + with pytest.raises(AssertionError, match="not both"): + grid_shape(4, rows=2, cols=2, grid_size=(2, 2)) + + +def test_grid_pads_short_and_drops_long(): + imgs = np.arange(3 * 4 * 4, dtype=np.float32).reshape(3, 4, 4) # 3 distinct grayscale images + padded = to_grid(imgs, grid_size=(2, 2), channels="none") + assert padded.shape == (8, 8) + assert (padded[4:, 4:] == 0).all(), "the 4th cell is a blank, not a repeat" + dropped = to_grid(imgs, grid_size=(1, 2), channels="none") + assert dropped.shape == (4, 8) + assert np.array_equal(dropped, to_grid(imgs[:2], grid_size=(1, 2), channels="none")), \ + "the tail is dropped before scaling, so an image nobody sees cannot set the range" + + +def test_tiling_puts_images_in_row_major_order(): + imgs = np.stack([np.full((2, 2), v, np.float32) for v in (0.0, 1.0, 2.0, 3.0)]) + g = to_grid(imgs, rows=2, cols=2, channels="none", vmin=0, vmax=3) + assert [g[0, 0], g[0, 3], g[3, 0], g[3, 3]] == [0, 85, 170, 255], "0 1 / 2 3, reading across" + + +def test_value_scaling(): + x = np.array([[-1.0, 0.0, 1.0]], dtype=np.float32) + assert to_grid(x).tolist() == [[0, 128, 255]], "no range given: min-max over the batch" + assert to_grid(x, vmin=-1, vmax=1).tolist() == [[0, 128, 255]], "the same range, fixed" + assert to_grid(x, vmin=0, vmax=1).tolist() == [[0, 0, 255]], "out-of-range values clip" + flat = np.full((1, 4, 4), 0.7, np.float32) + assert (to_grid(flat) == 0).all(), "a constant image comes out at 0, as in make_grid" + + u8 = np.array([[0, 7, 255]], dtype=np.uint8) + assert to_grid(u8).tolist() == [[0, 7, 255]], "uint8 passes through untouched" + assert to_grid(u8, vmin=0, vmax=7).tolist() == [[0, 255, 255]], "... unless a range is given" + + +def test_scale_each(): + """Two images with very different ranges: together the dim one vanishes, apart both fill 0..255.""" + imgs = np.stack([np.array([[0.0, 0.1]]), np.array([[0.0, 1.0]])]).astype(np.float32) + together = to_grid(imgs, rows=1, cols=2, channels="none") + apart = to_grid(imgs, rows=1, cols=2, channels="none", scale_each=True) + assert together.tolist() == [[0, 26, 0, 255]], "one global range" + assert apart.tolist() == [[0, 255, 0, 255]], "each image on its own range" + assert to_grid(imgs, rows=1, cols=2, channels="none", scale_each=True, vmin=0, vmax=1).tolist() \ + == [[0, 26, 0, 255]], "an explicit range wins over scale_each" + + +def test_torch_tensors_without_importing_torch(): + """`to_grid` duck-types .detach()/.cpu(); nothing in liveplot names torch.""" + class FakeTensor: + def __init__(self, a): self.a, self.detached, self.moved = a, False, False + def detach(self): self.detached = True; return self + def cpu(self): self.moved = True; return self + def __array__(self, dtype=None, copy=None): return self.a + + x = FakeTensor(np.zeros((4, 1, 8, 8), np.float32)) + assert to_grid(x).shape == (16, 16) + assert x.detached and x.moved, "a grad-tracking GPU tensor must be brought back first" + import liveplot.liveplot as lp + assert "torch" not in str(lp.__dict__.keys()) + + +def test_pad_value(): + imgs = np.ones((1, 4, 4), np.float32) + assert (to_grid(imgs, grid_size=(1, 2), channels="none", pad_value=255)[:, 4:] == 255).all() diff --git a/tests/test_subplots.py b/tests/test_subplots.py new file mode 100644 index 0000000..d7289be --- /dev/null +++ b/tests/test_subplots.py @@ -0,0 +1,199 @@ +"""`LivePlot.subplots`, `ax.plot`/`ax.twinx`, and image panels sharing a figure with curves.""" + +import time + +import numpy as np +import pytest + +from liveplot import LivePlot +from liveplot.liveplot import Panel, _FigureRenderer, _normalise_panel, _PanelGrid + +LAYOUT = (3, None, None, (4, 3), 50, "step") +PNG = b"\x89PNG\r\n\x1a\n" + + +def rng_images(n=4, c=1, h=8, w=8, seed=0): + return np.random.default_rng(seed).random((n, c, h, w)).astype(np.float32) + + +def test_subplots_squeezes_like_matplotlib(): + plot, ax = LivePlot.subplots(progress=False) + assert isinstance(ax, Panel), "1x1 -> the panel itself" + plot, axs = LivePlot.subplots(1, 3, progress=False) + assert isinstance(axs, list) and len(axs) == 3, "a single row -> a flat list, so it unpacks" + plot, axs = LivePlot.subplots(3, 1, progress=False) + assert isinstance(axs, list) and len(axs) == 3 + plot, axs = LivePlot.subplots(2, 2, progress=False) + assert isinstance(axs, _PanelGrid) and axs.shape == (2, 2) and len(axs.flat) == 4 + assert axs[0, 1].spec is axs[0][1].spec, "matplotlib's two spellings agree" + assert axs[1, 0].spec is plot.panels[2].spec, "row-major, as in matplotlib" + plot, grid = LivePlot.subplots(1, 2, squeeze=False, progress=False) + assert isinstance(grid, _PanelGrid) and grid.shape == (1, 2) + with pytest.raises(AssertionError, match="1x1 grid"): + LivePlot.subplots(0, 2, progress=False) + + +def test_figsize_is_the_whole_figure_as_matplotlib_means_it(): + plot, _ = LivePlot.subplots(2, 4, figsize=(12, 6), progress=False) + assert plot._layout[3] == (3.0, 3.0), "cell_size is figsize / grid" + assert plot._layout[1:3] == (2, 4), "the grid is fixed at what was asked for" + + +def test_plot_assigns_metrics_and_twinx_gives_the_right_axis(): + plot, (ax_loss, ax_lr) = LivePlot.subplots(1, 2, progress=False) + returned = ax_loss.plot("lossD", "lossG") + assert returned.plot("lossD") is returned, "chainable, and a repeat is not a duplicate" + ax_loss.twinx().plot("D(x)") + ax_lr.plot("lr") + assert ax_loss.spec["metrics"] == ["lossD", "lossG"] and ax_loss.spec["secondary"] == ["D(x)"] + assert ax_loss.spec["title"] == "lossD / lossG / D(x)", "the auto title follows both axes" + plot.log(0, lossD=1.0, lossG=0.5, lr=1e-3, **{"D(x)": 0.6}) + assert len(plot._specs) == 2, "subplots() fixed the grid: no third panel appeared" + assert plot["D(x)"]._right and plot["lossD"]._right is False + with pytest.raises(AssertionError, match="metric names, not data"): + ax_lr.plot([1, 2, 3]) + + +def test_a_metric_nobody_declared_joins_a_panel_rather_than_growing_the_grid(): + plot, (ax_loss, ax_img) = LivePlot.subplots(1, 2, progress=False) + ax_loss.plot("lossD") + ax_img.imshow(rng_images()) + plot.log(0, lossD=1.0, surprise=2.0) + assert len(plot._specs) == 2, "the grid subplots() promised is not resized" + assert plot._specs[0]["metrics"] == ["lossD", "surprise"], "it lands on the curve panel" + # with an empty curve panel available, that one is preferred + plot2, (a, b) = LivePlot.subplots(1, 2, progress=False) + a.plot("loss") + plot2.log(0, loss=1.0, other=2.0) + assert (plot2._specs[0]["metrics"], plot2._specs[1]["metrics"]) == (["loss"], ["other"]) + # a grid of nothing but image panels has nowhere to put it + plot3, ax = LivePlot.subplots(progress=False) + ax.imshow(rng_images()) + with pytest.raises(AssertionError, match="no curve panel"): + plot3.log(0, loss=1.0) + + +def test_image_panel_and_curve_panel_do_not_mix(): + plot, (ax_loss, ax_img) = LivePlot.subplots(1, 2, progress=False) + ax_loss.plot("loss") + with pytest.raises(AssertionError, match="showing curves"): + ax_loss.imshow(rng_images()) + ax_img.imshow(rng_images()) + with pytest.raises(AssertionError, match="showing an image"): + ax_img.plot("loss") + + +def test_plot_level_imshow_is_the_whole_of_liveimage(): + plot = LivePlot(progress=False) + plot.imshow(rng_images(seed=1)) + first = plot._images[0].copy() + plot.imshow(rng_images(seed=2)) + assert [s["kind"] for s in plot._specs] == ["image"], "one image panel, reused" + assert not np.array_equal(first, plot._images[0]), "the second call overwrites the first" + plot.log(0, loss=1.0) # a curve discovered after the image panel exists + assert [s["kind"] for s in plot._specs] == ["image", "curve"] + assert plot._specs[1]["metrics"] == ["loss"] + q, ax = LivePlot.subplots(progress=False) + with pytest.raises(AssertionError, match="comes from subplots"): + q.imshow(rng_images()) + + +def test_renderer_draws_images_and_keeps_them_through_a_relayout(): + panels = [_normalise_panel({"metrics": ["loss"]}), _normalise_panel({"kind": "image", "title": "samples"})] + r = _FigureRenderer(panels, xlim=None, layout=LAYOUT) + for step in range(5): + r.add(step, {"loss": 1.0 / (step + 1)}) + arr = (np.arange(16 * 16, dtype=np.uint8).reshape(16, 16)) + r.add_image(1, arr) + assert r.render()[:8] == PNG + ax_img = r.image_axes[1] + assert len(ax_img.images) == 1 and ax_img.get_title() == "samples" + assert not ax_img.axison, "pixel indices along a tiled grid are noise" + artist = r.image_artists[1] + r.add_image(1, arr[::-1].copy()) + assert r.image_artists[1] is artist, "same shape: the artist is reused, not rebuilt" + r.add_image(1, np.zeros((8, 8), np.uint8)) + assert r.image_artists[1] is not artist, "a new shape needs a new artist" + # a re-layout rebuilds the figure; the picture must come back with it + r.set_layout(panels + [_normalise_panel("lr")]) + assert len(r.image_axes[1].images) == 1 and r.render()[:8] == PNG + assert len(r.hist["loss"][0]) == 5, "and the curve history survives as before" + + +def test_axvline_skips_image_panels(): + panels = [_normalise_panel({"metrics": ["loss"]}), _normalise_panel({"kind": "image"})] + r = _FigureRenderer(panels, xlim=None, layout=LAYOUT) + r.add_image(1, np.zeros((8, 8), np.uint8)) + r.add_axvline({"x": 2, "label": "lr drop"}) + assert any(line.get_linestyle() == ":" for line in r.axes[0].get_lines()) + assert not r.image_axes[1].get_lines(), "a vertical line across a picture means nothing" + + +def test_figure_includes_the_image(): + plot, (ax_loss, ax_img) = LivePlot.subplots(1, 2, total=20, progress=False) + ax_loss.plot("loss") + for step in range(5): + plot.log(step, loss=1.0 / (step + 1)) + ax_img.imshow(rng_images(n=4, c=3), rows=2, vmin=0, vmax=1) + fig = plot.figure() + assert sum(len(ax.images) for ax in fig.axes) == 1 + assert sum(len(ax.get_lines()) for ax in fig.axes) == 1 + img = next(im for ax in fig.axes for im in ax.images) + assert img.get_array().shape == (16, 16, 3), "two rows of two 8x8 RGB images" + + +class _FakeHandle: + def __init__(self): + self.frames = [] + + def update(self, img): + self.frames.append(img.data) + + +@pytest.fixture +def fake_notebook(monkeypatch): + h = _FakeHandle() + monkeypatch.setattr(LivePlot, "_make_display_handle", staticmethod(lambda: h)) + return h + + +def _colour_images_are_safe_here() -> bool: + """ + matplotlib 3.9.0 corrupts its multi-channel resample path when the figure is drawn from a + spawned render process: any RGB(A) image raises "arrays must be of dtype byte, short, float32 + or float64" from the C extension, while the same array in the same figure draws fine in the + parent, and grayscale is unaffected. The failure flips on perturbations as transparent as + wrapping `matplotlib.image._resample`, which is what memory corruption looks like rather than + a bug of ours. Fixed by 3.9.4; reproducible with numpy 1.26 and 2.4 alike, so it is matplotlib, + not the numpy pairing. Colour images are still covered in-process by test_figure_includes_the_image. + """ + from packaging.version import Version + + import matplotlib + + return not (Version("3.9.0") <= Version(matplotlib.__version__) < Version("3.9.4")) + + +@pytest.mark.skipif(not _colour_images_are_safe_here(), reason="matplotlib 3.9.0-3.9.3 breaks RGB draws in a spawned process") +def test_process_mode_curves_beside_images(fake_notebook): + """The DCGAN shape: curves every step, samples every so often, one figure, one output cell.""" + plot, (ax_loss, ax_img) = LivePlot.subplots(1, 2, total=200, refresh_seconds=0.1, figsize=(8, 3), dpi=40) + ax_loss.plot("lossD", "lossG") + ax_img.set_title("generator samples") + assert plot.mode == "process" + t0 = time.monotonic() + while not fake_notebook.frames and time.monotonic() - t0 < 90: # child startup + plot.log(0, lossD=1.0, lossG=1.0) + time.sleep(0.05) + assert fake_notebook.frames, "render child produced no frame" + n = len(fake_notebook.frames) + for step in range(60): + plot.log(step, lossD=1.0 / (step + 1), lossG=0.5) + if step % 20 == 0: # tanh-range samples, as a generator produces + ax_img.imshow(rng_images(n=4, c=3, seed=step) * 2 - 1, rows=2, vmin=-1, vmax=1) + time.sleep(0.02) + plot.finish() + assert len(fake_notebook.frames) > n and all(f[:8] == PNG for f in fake_notebook.frames) + assert not plot._proc.is_alive() + assert len(plot._images) == 1 and plot._images[1].shape == (16, 16, 3) + assert [s["kind"] for s in plot._specs] == ["curve", "image"] From 326a5c5764df0ef1962a4edaf6d21cfc89432650 Mon Sep 17 00:00:00 2001 From: David Quarel Date: Mon, 21 Sep 2026 15:58:50 +0000 Subject: [PATCH 2/4] imshow: bfloat16 tensors, make_grid's 2px gaps, the step in the title, griddim - to_grid widens floating tensors before np.asarray: bfloat16 (autocast output) has no numpy dtype and raised TypeError. - padding=2 pixels of pad_value around every image, as torchvision's make_grid lays a grid out; a single image gets no border. - An image panel's title says the step it was drawn at, "samples (step 399)", since the picture only changes when imshow is called. - grid_size -> griddim=(rows, cols). - docs/imshow.gif: subplots(1, 2), loss beside a toy generator's samples. - IMSHOW_REPORT.md (the handoff note) leaves the branch. Co-Authored-By: Claude Opus 5 (1M context) --- IMSHOW_REPORT.md | 138 ----------------------------------------- README.md | 2 +- docs/imshow.gif | Bin 0 -> 582896 bytes liveplot/_images.py | 42 +++++++------ liveplot/liveplot.py | 56 ++++++++++------- tests/test_images.py | 48 +++++++++----- tests/test_subplots.py | 7 ++- 7 files changed, 96 insertions(+), 197 deletions(-) delete mode 100644 IMSHOW_REPORT.md create mode 100644 docs/imshow.gif diff --git a/IMSHOW_REPORT.md b/IMSHOW_REPORT.md deleted file mode 100644 index 193c4ae..0000000 --- a/IMSHOW_REPORT.md +++ /dev/null @@ -1,138 +0,0 @@ -# `imshow` / `subplots` for liveplot — handoff report - -Branch: `live-imshow-dev`, off `main` at `05ce94e`. Written for whoever picks this up next. - -## Why - -ARENA chapter 0.5 (`master_0_5.py`, VAE + DCGAN) shows generated samples with `LiveImage`, defined -in `chapter0_fundamentals/exercises/part5_vaes_and_gans/utils.py:52`. It is an `ipywidgets.Image` -whose `.value` is overwritten with PNG bytes from `samples_to_png()`. Three call sites: -`master_0_5.py:801` (autoencoder), `:1331` (VAE), `:3066` (DCGAN). - -Two problems. It is a **widget**, which is the one thing liveplot exists to avoid, and it is a -**separate output area** from the loss curves, so you cannot watch samples sharpen next to the -losses. `samples_to_png` also hardcodes `(b1 b2) c h w`, so it cannot take an unbatched image, and -it upscales by hand with `Image.NEAREST` because MNIST at 28x28 is unreadable — matplotlib's -`imshow` scales to the axes box, so that branch is unnecessary here. - -## What was built - -Nothing in ARENA has been changed yet. This branch is the liveplot side only. - -### New file: `liveplot/_images.py` - -`to_grid(x, rows=, cols=, grid_size=, vmin=, vmax=, scale_each=, channels=, pad_value=)` → one -`uint8` array, `(H, W)` or `(H, W, 3|4)`. Pure numpy, no liveplot state, no torch. Everything about -shape reading, tiling and scaling lives here and is unit-tested in isolation -(`tests/test_images.py`). - -Runs on the **calling** thread: ~0.19 ms for ten 64x64 RGB samples, and it quarters what the render -process unpickles (480 KiB float32 → 120 KiB uint8). It is also forced — a CUDA tensor cannot be -pickled to another process, so the `.cpu()` hop has to happen caller-side regardless. Torch is -duck-typed (`detach`, `cpu`, then `np.asarray`), never imported. - -### `liveplot/liveplot.py` - -- Panel specs gained `kind` (`"curve"` / `"image"`) and `cmap`. `_normalise_panel` takes - `allow_empty=` for the blank panels `subplots()` hands out. -- `_FigureRenderer` gained `self.images` (panel index → array), which survives a re-layout exactly - as `hist` does, plus `add_image` / `_draw_image`. `_draw_image` reuses the `AxesImage` via - `set_data` when the shape is unchanged. Image panels get `set_axis_off()` and are skipped by - `_draw_axvline` (a vertical line across a picture means nothing) and, naturally, by the autoscale - loop, which iterates `self.lines`. -- New worker message `("image", panel_index, arr)`. -- `LivePlot.subplots(nrows, ncols, figsize=, squeeze=, iterable=, **kwargs)` classmethod returning - `(plot, axes)`; `_PanelGrid` supports `axes[0][1]`, `axes[0, 1]`, `.flat`, `.shape`. -- `_Axis.plot(*names)`, `Panel.plot(*names)`, `Panel.twinx()`, `Panel.imshow(...)`, - `LivePlot.imshow(...)`. -- `figure()` and `_fall_back_to_thread` carry the images, as they already carried `hist`. - -`record=` needed no work and captures a mixed grid, since recording keeps the rendered PNG: a 1x2 -curves-and-samples run wrote a 12-frame animated GIF. That would make a better `docs/demo.gif` than -the present curves-only one — worth doing, via `examples/make_gif.py`. - -### Design decisions, and why - -Three were settled with David; the reasoning is worth keeping because two of them came out of -checking what matplotlib actually does rather than what it is assumed to do. - -1. **`ax.plot("lossD", "lossG")` names metrics.** This looked like a pun on `ax.plot(x, y)` but is - not: matplotlib genuinely accepts strings as series names via `ax.plot("step", "lossD", data=d)`. - liveplot is that form with the source implicit. The first sketch had a `secondary="acc"` kwarg; - that was dropped for `ax.twinx()`, matplotlib's own spelling, which `Panel.right` already backed. - -2. **`(3, H, W)` and `(4, H, W)` raise.** matplotlib's own answer is to refuse channels-first - entirely (`TypeError: Invalid shape (3, 8, 8) for image data`) — it only ever takes `(M, N)`, - `(M, N, 1)`, `(M, N, 3)`, `(M, N, 4)`. We must accept channels-first because torch uses it, so - the ambiguity it designed away is ours. Note `(1, H, W)` is **not** ambiguous: both readings draw - the same pixels (verified), so only two shapes raise, and the message names both escape hatches. - The cost: `(3, 64, 64)` is "one CelebA image", so anyone eyeballing a single sample hits it. If - that grates, defaulting to channels-first is a one-line change in `_as_bhwc`. - -3. **liveplot scales values itself.** Per-call min-max by default, matching what `samples_to_png` - does today, with `vmin`/`vmax` to fix the range and `scale_each` for per-image (the name is - `make_grid`'s). It is delegated to nobody because **matplotlib's `imshow` ignores `vmin`/`vmax` - for RGB(A) data** and just clips floats to `[0, 1]` — verified identical on 3.9.0 and 3.11.2, - where `imshow(rgb, vmin=-1, vmax=1)` renders pixel for pixel the same as - `imshow(clip(rgb, 0, 1))`. The DCGAN generator ends in `tanh`, so 44.8% of its output would go to - black. Doing it ourselves also makes `vmin`/`vmax` behave uniformly for colour and grayscale, - which is what people assume and better than matplotlib's asymmetry (scalar data *is* autoscaled). - -## A matplotlib 3.9.0 bug you will hit locally - -`tests/test_subplots.py::test_process_mode_curves_beside_images` is **skipped on matplotlib -3.9.0–3.9.3**, and David's conda env (`streamlit`) has exactly 3.9.0, so you will see the skip. - -On 3.9.0, any RGB(A) image drawn from the **spawned render process** dies with -`ValueError: arrays must be of dtype byte, short, float32 or float64` out of matplotlib's C -extension. What the investigation established: - -- grayscale is unaffected; only the multi-channel resample path fails -- the same array in the same figure draws fine in the **parent** process -- `float32` fails too, so it is not our `uint8` -- pure matplotlib in a spawned child is fine — it needs our renderer's state -- `matplotlib._image.resample` called directly with a `uint8` RGBA array is fine in both processes -- it flips to passing when perturbed in ways that cannot matter: calling `get_window_extent` first, - or wrapping `matplotlib.image._resample` in a transparent Python function -- reproducible with numpy 1.26.4 *and* 2.4.6, so it is not the numpy pairing -- **fixed in matplotlib 3.9.4**; 3.10.x and 3.11.2 are fine - -Behaviour that flips on transparent perturbation is memory corruption, not logic, so this was read -as a matplotlib bug and not worked around. `interpolation_stage="rgba"` was tried and does **not** -help (and would need matplotlib ≥3.8 while we declare ≥3.6), so it was reverted. The declared floor -was left at `matplotlib>=3.6`: raising it for the whole library over a bug in three patch releases -seemed worse than a documented skip, especially as ARENA does not pin matplotlib and so gets a good -one. Colour images stay covered in-process by `test_figure_includes_the_image`. - -If you want this to stop being a caveat: bump to `matplotlib>=3.9.4` and delete -`_colour_images_are_safe_here` with its skip. - -## Tests - -`58 passed` on matplotlib 3.11.2 (clean venv); `57 passed, 1 skipped` on 3.9.0 (the conda env). -19 new: `tests/test_images.py` (9) and `tests/test_subplots.py` (10). No existing test changed. - -Worth knowing: four of the `test_images.py` expectations were wrong on the first pass and the code -was right — `grid_shape` rounding (`(5, 8, 8)` → a 3x2 grid, not 3x3) and `np.round`'s banker's -rounding (127.5 → 128). But one genuine bug surfaced that way: dropping the tail of an oversized -batch happened **after** scaling, so an image nobody could see still set the range. `to_grid` now -truncates before scaling. - -## Left undone - -- **The ARENA migration.** Three `LiveImage` call sites, and `ipywidgets` then leaves the chapter's - dependencies. The DCGAN one wants `LivePlot.subplots(1, 2)` with `lossD`/`lossG` on the left panel - and `vmin=-1, vmax=1` on the samples; the two VAE ones currently pass `nrows=2` to stack input - over reconstruction, which maps to `rows=2`. -- **`tight_layout` and mixed panels.** A fixed-aspect image panel beside a curve panel leaves - whitespace. Width ratios would fix it; not attempted. -- **No inter-image padding.** `make_grid` defaults to `padding=2`, which makes grids notably easier - to read. Deliberately out of scope for a first pass — it is about four lines in `_tile`. -- **Unpushed on `main`:** nothing. `05ce94e` is on the remote. This branch does not touch - `.github/workflows/`, deliberately — the OAuth token here lacks the `workflow` scope, and a branch - push carrying a workflow change is rejected outright. - -## Try it - -`examples/demo.py` cells 9 and 10 (curves beside a fake generator's samples, and a standalone image -overwritten in place). Both were run headlessly; CI turns the file into the Colab notebook. diff --git a/README.md b/README.md index 55ee3f4..5ee27a5 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,7 @@ for step in ...: ### What `imshow` accepts -A batch is tiled into a grid for you: `rows=` or `cols=` alone infers the other, `grid_size=(r, c)` +A batch is tiled into a grid for you: `rows=` or `cols=` alone infers the other, `griddim=(r, c)` fixes both, padding with blanks or dropping the tail as needed. | input | read as | diff --git a/docs/imshow.gif b/docs/imshow.gif new file mode 100644 index 0000000000000000000000000000000000000000..1608b36e9df4d137baa532db316ae3346ff1fc09 GIT binary patch literal 582896 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 z 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 z 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%0DSM1PPHDw0_Y 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 L1}A~y1Oxy(mxJh9 literal 0 HcmV?d00001 diff --git a/liveplot/_images.py b/liveplot/_images.py index 7b0ba1a..39b008b 100644 --- a/liveplot/_images.py +++ b/liveplot/_images.py @@ -29,6 +29,8 @@ def _as_array(x): x = x.detach() # a tensor that wants grad if hasattr(x, "cpu"): x = x.cpu() # ... and may be on a GPU, where numpy can't see it + if getattr(x, "is_floating_point", lambda: False)(): + x = x.float() # bfloat16 (autocast output) has no numpy dtype; float16 is widened too, harmlessly return np.asarray(x) @@ -117,15 +119,15 @@ def _to_uint8(a, vmin, vmax, scale_each: bool): return (np.clip(a, 0.0, 1.0) * 255).round().astype(np.uint8) -def grid_shape(n: int, rows: int | None, cols: int | None, grid_size=None) -> tuple[int, int]: +def grid_shape(n: int, rows: int | None, cols: int | None, griddim=None) -> tuple[int, int]: """ - Rows x cols for `n` images. `grid_size=(rows, cols)` fixes both; one of `rows` / `cols` infers + Rows x cols for `n` images. `griddim=(rows, cols)` fixes both; one of `rows` / `cols` infers the other; with neither, the near-square rule liveplot already uses for its panel grid. Unlike the panel grid, the result need not fit: the caller pads short and drops long. """ - if grid_size is not None: - assert rows is None and cols is None, "give grid_size, or rows/cols, not both" - rows, cols = grid_size + if griddim is not None: + assert rows is None and cols is None, "give griddim, or rows/cols, not both" + rows, cols = griddim if rows is None and cols is None: rows = math.ceil(math.sqrt(n)) cols = math.ceil(n / rows) @@ -138,29 +140,33 @@ def grid_shape(n: int, rows: int | None, cols: int | None, grid_size=None) -> tu return rows, cols -def _tile(a, rows: int, cols: int, pad_value: int): - """(B, H, W, C) -> (rows*H, cols*W, C), padding with blanks or dropping the tail as needed.""" +def _tile(a, rows: int, cols: int, pad_value: int, padding: int): + """ + (B, H, W, C) -> one (H', W', C) grid with `padding` pixels of `pad_value` around every image, as + torchvision's make_grid lays it out; missing images are blank cells, extra ones are dropped. A + single image gets no border. + """ import numpy as np - b, h, w, c = a.shape - cells = rows * cols - if b > cells: - a = a[:cells] # more images than cells: the rest fall off the end - elif b < cells: - a = np.concatenate([a, np.full((cells - b, h, w, c), pad_value, dtype=a.dtype)]) - return a.reshape(rows, cols, h, w, c).transpose(0, 2, 1, 3, 4).reshape(rows * h, cols * w, c) + _, h, w, c = a.shape + p = padding if rows * cols > 1 else 0 + out = np.full((rows * (h + p) + p, cols * (w + p) + p, c), pad_value, dtype=a.dtype) + for k, img in enumerate(a[: rows * cols]): # more images than cells: the rest fall off the end + r, col = divmod(k, cols) + out[p + r * (h + p): p + r * (h + p) + h, p + col * (w + p): p + col * (w + p) + w] = img + return out -def to_grid(x, *, rows=None, cols=None, grid_size=None, vmin=None, vmax=None, - scale_each=False, channels=None, pad_value=0): +def to_grid(x, *, rows=None, cols=None, griddim=None, vmin=None, vmax=None, + scale_each=False, channels=None, padding=2, pad_value=0): """ A tensor -> one uint8 image, (H, W) for grayscale or (H, W, 3|4), ready for `Axes.imshow`. Runs on the calling thread: tiling 10 64x64 RGB samples costs ~0.2 ms and quarters what the render process has to unpickle, and a CUDA tensor has to come back to the host here anyway. """ a = _as_bhwc(_as_array(x), channels) - rows, cols = grid_shape(a.shape[0], rows, cols, grid_size) + rows, cols = grid_shape(a.shape[0], rows, cols, griddim) a = a[: rows * cols] # drop before scaling: an image nobody can see must not set the range a = _to_uint8(a, vmin, vmax, scale_each) - grid = _tile(a, rows, cols, pad_value) + grid = _tile(a, rows, cols, pad_value, padding) return grid[..., 0] if grid.shape[-1] == 1 else grid diff --git a/liveplot/liveplot.py b/liveplot/liveplot.py index 25beeeb..0d8c141 100644 --- a/liveplot/liveplot.py +++ b/liveplot/liveplot.py @@ -75,8 +75,8 @@ ax_samples.imshow(netG(noise), rows=2, vmin=-1, vmax=1) # replaces the last one `plot.imshow(x)` does the same on a plot of its own, making the panel on first use. -A batch is tiled for you (`rows` / `cols` / `grid_size=(r, c)`, padding or dropping -to fit); (H, W), (C, H, W), (H, W, C), (B, H, W), (B, C, H, W) and (B, H, W, C) are +A batch is tiled for you (`rows` / `cols` / `griddim=(r, c)`, padding or dropping +to fit, with make_grid's 2-pixel gaps); (H, W), (C, H, W), (H, W, C), (B, H, W), (B, C, H, W) and (B, H, W, C) are all understood, and the two genuinely ambiguous shapes, (3, H, W) and (4, H, W), raise and name the `channels=` to pass. Values are scaled to the batch's full range unless `vmin` / `vmax` fix it (worth doing live: otherwise the black point moves @@ -267,7 +267,7 @@ class _FigureRenderer: def __init__(self, panels, xlim, layout, hist=None, images=None): self.xlim, self.layout = xlim, layout # xlim = default x range or None; layout = (max_cols, rows, cols, cell_size, dpi, xlabel) self.hist = hist if hist is not None else {} - self.images = dict(images) if images else {} # panel index -> the uint8 array it is showing + self.images = dict(images) if images else {} # panel index -> (the uint8 array it is showing, its x) self.axvlines: list[dict] = [] # vertical reference lines (matplotlib axvline kwargs), drawn on every panel self.set_layout(panels) @@ -289,6 +289,7 @@ def set_layout(self, panels): self.smooth = {} # metric -> TWEMA weight in (0, 1) or None self.fixed = {} # axes -> (x fixed?, y fixed?): fixed axes are never autoscaled self.panel_cmaps = {i: p["cmap"] for i, p in enumerate(panels)} + self.panel_titles = {i: p["title"] for i, p in enumerate(panels)} self.image_axes = {} # panel index -> its Axes, for the image panels self.image_artists = {} # ... and the AxesImage drawn on it, so a redraw can set_data in place for i, (ax, panel) in enumerate(zip(axes, panels)): @@ -345,9 +346,9 @@ def set_layout(self, panels): self._draw_axvline(kw, [ax]) for kw in self.axvlines: self._draw_axvline(kw) - for index, arr in self.images.items(): # a re-layout rebuilds the figure; put the pictures back + for index in self.images: # a re-layout rebuilds the figure; put the pictures back if index in self.image_axes: - self._draw_image(index, arr) + self._draw_image(index) self.fig.tight_layout() def add_axvline(self, kw: dict): @@ -363,19 +364,23 @@ def _draw_axvline(self, kw, axes=None): if label: ax.text(kw["x"], 0.98, f" {label}", transform=ax.get_xaxis_transform(), va="top", ha="left", fontsize=7, color="0.3", rotation=90) - def add_image(self, index: int, arr): - self.images[index] = arr + def add_image(self, index: int, arr, x=None): + self.images[index] = (arr, x) if index in self.image_axes: - self._draw_image(index, arr) + self._draw_image(index) - def _draw_image(self, index: int, arr): + def _draw_image(self, index: int): + arr, x = self.images[index] + ax = self.image_axes[index] + if x is not None: # say how old the picture is: it is only redrawn when imshow is called + title, when = self.panel_titles[index], f"{self.layout[5]} {x:g}" + ax.set_title(f"{title} ({when})" if title else when) artist = self.image_artists.get(index) if artist is not None and artist.get_array().shape == arr.shape: artist.set_data(arr) # same size as last time: no new artist, no rescale return if artist is not None: artist.remove() - ax = self.image_axes[index] cmap = self.panel_cmaps.get(index, "gray") self.image_artists[index] = ax.imshow(arr, cmap=cmap, interpolation="nearest") @@ -448,7 +453,7 @@ def _render_worker(panels, inbox, outbox, refresh_seconds, layout, xlim, parent_ renderer.add_axvline(item[1]) dirty = True elif item[0] == "image": - renderer.add_image(item[1], item[2]) + renderer.add_image(*item[1:]) dirty = True else: renderer.add(item[1], item[2]) @@ -632,12 +637,13 @@ def plot(self, *metrics) -> _Axis: """Like `ax.plot("name", data=...)`: put these metrics on the left axis. See `_Axis.plot`.""" return self.left.plot(*metrics) - def imshow(self, x, *, rows=None, cols=None, grid_size=None, vmin=None, vmax=None, - scale_each=False, channels=None, cmap="gray", pad_value=0): + def imshow(self, x, *, rows=None, cols=None, griddim=None, vmin=None, vmax=None, + scale_each=False, channels=None, cmap="gray", padding=2, pad_value=0): """ Like `Axes.imshow`, but for a whole batch and repeatable: show `x` on this panel, replacing whatever was there. A batch is tiled into a grid -- `rows` or `cols` alone infers the other, - `grid_size=(rows, cols)` fixes both (padding with blanks, or dropping the tail). + `griddim=(rows, cols)` fixes both (padding with blanks, or dropping the tail). Images are + `padding` pixels of `pad_value` apart, as in make_grid. The title shows the step it was drawn at. Accepts (H, W), (C, H, W), (H, W, C), (B, H, W), (B, C, H, W) and (B, H, W, C); (3, H, W) and (4, H, W) are ambiguous and raise, telling you which `channels=` to pass. @@ -653,8 +659,8 @@ def imshow(self, x, *, rows=None, cols=None, grid_size=None, vmin=None, vmax=Non assert not (spec["metrics"] or spec["secondary"]), \ f"panel {self._index} is showing curves ({' '.join(spec['metrics'] + spec['secondary'])}); " \ f"use a different panel for the image" - arr = to_grid(x, rows=rows, cols=cols, grid_size=grid_size, vmin=vmin, vmax=vmax, - scale_each=scale_each, channels=channels, pad_value=pad_value) + arr = to_grid(x, rows=rows, cols=cols, griddim=griddim, vmin=vmin, vmax=vmax, + scale_each=scale_each, channels=channels, padding=padding, pad_value=pad_value) if spec["kind"] != "image" or spec["cmap"] != cmap: spec["kind"], spec["cmap"] = "image", cmap self._plot._send_layout() @@ -807,6 +813,7 @@ def __init__( self.frames: list[tuple[float, bytes]] = [] # (time, png) of every frame shown, if record=True self.axvlines: list[dict] = [] # vertical reference lines added with axvline() self._images: dict[int, object] = {} # panel index -> the uint8 array it is showing + self._image_steps: dict[int, object] = {} # panel index -> the x it was shown at self._fixed_grid = False # set by subplots(): grow a panel's metrics, never the grid self._t0 = time.monotonic() self._done = False @@ -826,7 +833,7 @@ def __init__( f"rendering on the training thread instead (~0.15 s per redraw).", stacklevel=2, ) - self._renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._images) + self._renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._image_state()) self.mode = "thread" # -- setup ------------------------------------------------------------------- @@ -1172,11 +1179,16 @@ def _place(self, metrics): self._send_layout() def _send_image(self, index: int, arr): - self._images[index] = arr + x = self.step + self._images[index], self._image_steps[index] = arr, x if self.mode == "process": - self._inbox.put(("image", index, arr)) + self._inbox.put(("image", index, arr, x)) elif self.mode == "thread": - self._renderer.add_image(index, arr) + self._renderer.add_image(index, arr, x) + + def _image_state(self) -> dict: + """What a fresh renderer needs to redraw the images: panel index -> (array, x).""" + return {i: (arr, self._image_steps.get(i)) for i, arr in self._images.items()} def _send_layout(self): if self.mode == "process": @@ -1190,7 +1202,7 @@ def figure(self): built on the calling thread and independent of the render process: title it, tweak it, `fig.savefig("run.png")`, or show it in a report. Safe to call during or after training. """ - renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._images) + renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._image_state()) for name, (xs, ys) in self.data.items(): renderer.hist[name] = (list(xs), list(ys)) for line in self.axvlines: @@ -1268,7 +1280,7 @@ def _fall_back_to_thread(self, why): # process will usually kill a renderer built here too (a bad panel spec, a missing backend), # so if this fails, say so once and carry on collecting into plot.data. try: - renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._images) + renderer = _FigureRenderer(self._panels_or_placeholder(), self.x_range, self._layout, images=self._image_state()) for name, (xs, ys) in self.data.items(): renderer.hist[name] = (list(xs), list(ys)) for line in self.axvlines: diff --git a/tests/test_images.py b/tests/test_images.py index 17de7e5..6fdac47 100644 --- a/tests/test_images.py +++ b/tests/test_images.py @@ -13,10 +13,10 @@ def test_accepted_layouts(): assert to_grid(np.zeros((64, 64, 3))).shape == (64, 64, 3), "channels last" assert to_grid(np.zeros((64, 64, 4))).shape == (64, 64, 4) assert to_grid(np.zeros((3, 64, 64)), channels="first").shape == (64, 64, 3) - assert to_grid(np.zeros((5, 8, 8))).shape == (24, 16), "5 grayscale -> near-square 3x2, one blank" - assert to_grid(np.zeros((4, 1, 8, 8))).shape == (16, 16), "(B, 1, H, W) -> 2x2" - assert to_grid(np.zeros((4, 3, 8, 8))).shape == (16, 16, 3), "(B, C, H, W), torch's layout" - assert to_grid(np.zeros((4, 8, 8, 3))).shape == (16, 16, 3), "(B, H, W, C), channels last" + assert to_grid(np.zeros((5, 8, 8))).shape == (32, 22), "5 grayscale -> near-square 3x2, one blank, 2px gaps" + assert to_grid(np.zeros((4, 1, 8, 8))).shape == (22, 22), "(B, 1, H, W) -> 2x2" + assert to_grid(np.zeros((4, 3, 8, 8))).shape == (22, 22, 3), "(B, C, H, W), torch's layout" + assert to_grid(np.zeros((4, 8, 8, 3))).shape == (22, 22, 3), "(B, H, W, C), channels last" def test_the_ambiguous_shapes_raise_and_say_how_to_fix_it(): @@ -27,7 +27,7 @@ def test_the_ambiguous_shapes_raise_and_say_how_to_fix_it(): assert kind in str(e.value) and 'channels="first"' in str(e.value) and 'channels="none"' in str(e.value) # ... and both escape hatches work, giving genuinely different pictures assert to_grid(np.zeros((3, 8, 8)), channels="first").shape == (8, 8, 3) - assert to_grid(np.zeros((3, 8, 8)), channels="none").shape == (16, 16), "3 grayscale -> 2x2, one blank" + assert to_grid(np.zeros((3, 8, 8)), channels="none", padding=0).shape == (16, 16), "3 grayscale -> 2x2, one blank" with pytest.raises(ValueError, match="2-, 3- or 4-d"): to_grid(np.zeros((2, 3, 4, 5, 6))) with pytest.raises(AssertionError, match="not a batch of images"): @@ -38,26 +38,26 @@ def test_grid_shape_inference(): assert grid_shape(10, rows=2, cols=None) == (2, 5) assert grid_shape(10, rows=None, cols=5) == (2, 5) assert grid_shape(10, rows=None, cols=None) == (4, 3), "near-square, as for the panel grid" - assert grid_shape(10, rows=None, cols=None, grid_size=(2, 5)) == (2, 5) + assert grid_shape(10, rows=None, cols=None, griddim=(2, 5)) == (2, 5) assert grid_shape(7, rows=3, cols=None) == (3, 3), "rounds up, leaving blanks" with pytest.raises(AssertionError, match="not both"): - grid_shape(4, rows=2, cols=2, grid_size=(2, 2)) + grid_shape(4, rows=2, cols=2, griddim=(2, 2)) def test_grid_pads_short_and_drops_long(): imgs = np.arange(3 * 4 * 4, dtype=np.float32).reshape(3, 4, 4) # 3 distinct grayscale images - padded = to_grid(imgs, grid_size=(2, 2), channels="none") + padded = to_grid(imgs, griddim=(2, 2), channels="none", padding=0) assert padded.shape == (8, 8) assert (padded[4:, 4:] == 0).all(), "the 4th cell is a blank, not a repeat" - dropped = to_grid(imgs, grid_size=(1, 2), channels="none") + dropped = to_grid(imgs, griddim=(1, 2), channels="none", padding=0) assert dropped.shape == (4, 8) - assert np.array_equal(dropped, to_grid(imgs[:2], grid_size=(1, 2), channels="none")), \ + assert np.array_equal(dropped, to_grid(imgs[:2], griddim=(1, 2), channels="none", padding=0)), \ "the tail is dropped before scaling, so an image nobody sees cannot set the range" def test_tiling_puts_images_in_row_major_order(): imgs = np.stack([np.full((2, 2), v, np.float32) for v in (0.0, 1.0, 2.0, 3.0)]) - g = to_grid(imgs, rows=2, cols=2, channels="none", vmin=0, vmax=3) + g = to_grid(imgs, rows=2, cols=2, channels="none", vmin=0, vmax=3, padding=0) assert [g[0, 0], g[0, 3], g[3, 0], g[3, 3]] == [0, 85, 170, 255], "0 1 / 2 3, reading across" @@ -77,11 +77,11 @@ def test_value_scaling(): def test_scale_each(): """Two images with very different ranges: together the dim one vanishes, apart both fill 0..255.""" imgs = np.stack([np.array([[0.0, 0.1]]), np.array([[0.0, 1.0]])]).astype(np.float32) - together = to_grid(imgs, rows=1, cols=2, channels="none") - apart = to_grid(imgs, rows=1, cols=2, channels="none", scale_each=True) + together = to_grid(imgs, rows=1, cols=2, channels="none", padding=0) + apart = to_grid(imgs, rows=1, cols=2, channels="none", scale_each=True, padding=0) assert together.tolist() == [[0, 26, 0, 255]], "one global range" assert apart.tolist() == [[0, 255, 0, 255]], "each image on its own range" - assert to_grid(imgs, rows=1, cols=2, channels="none", scale_each=True, vmin=0, vmax=1).tolist() \ + assert to_grid(imgs, rows=1, cols=2, channels="none", scale_each=True, vmin=0, vmax=1, padding=0).tolist() \ == [[0, 26, 0, 255]], "an explicit range wins over scale_each" @@ -94,7 +94,7 @@ def cpu(self): self.moved = True; return self def __array__(self, dtype=None, copy=None): return self.a x = FakeTensor(np.zeros((4, 1, 8, 8), np.float32)) - assert to_grid(x).shape == (16, 16) + assert to_grid(x, padding=0).shape == (16, 16) assert x.detached and x.moved, "a grad-tracking GPU tensor must be brought back first" import liveplot.liveplot as lp assert "torch" not in str(lp.__dict__.keys()) @@ -102,4 +102,20 @@ def __array__(self, dtype=None, copy=None): return self.a def test_pad_value(): imgs = np.ones((1, 4, 4), np.float32) - assert (to_grid(imgs, grid_size=(1, 2), channels="none", pad_value=255)[:, 4:] == 255).all() + assert (to_grid(imgs, griddim=(1, 2), channels="none", pad_value=255, padding=0)[:, 4:] == 255).all() + + +def test_padding_between_images(): + """make_grid's layout: `padding` pixels around every image; one image alone gets no border.""" + g = to_grid(np.ones((2, 1, 3, 3), np.float32), griddim=(1, 2), vmin=0, vmax=1, pad_value=7) + assert g.shape == (3 + 4, 2 * 3 + 6) + assert (g[2:5, 2:5] == 255).all() and (g[2:5, 7:10] == 255).all(), "the images" + assert (g[:2] == 7).all() and (g[:, 5:7] == 7).all(), "the border and the gap between" + assert to_grid(np.ones((3, 3))).shape == (3, 3) + + +def test_bfloat16_tensors(): + """What autocast hands back; numpy has no bfloat16, so it must be widened before np.asarray.""" + torch = pytest.importorskip("torch") + x = torch.rand(4, 3, 5, 5, dtype=torch.bfloat16, requires_grad=True) + assert np.array_equal(to_grid(x), to_grid(x.detach().float().numpy())) diff --git a/tests/test_subplots.py b/tests/test_subplots.py index d7289be..b59f6c8 100644 --- a/tests/test_subplots.py +++ b/tests/test_subplots.py @@ -139,7 +139,10 @@ def test_figure_includes_the_image(): assert sum(len(ax.images) for ax in fig.axes) == 1 assert sum(len(ax.get_lines()) for ax in fig.axes) == 1 img = next(im for ax in fig.axes for im in ax.images) - assert img.get_array().shape == (16, 16, 3), "two rows of two 8x8 RGB images" + assert img.get_array().shape == (22, 22, 3), "two rows of two 8x8 RGB images, 2px gaps" + assert img.axes.get_title() == "step 4", "an untitled image panel says when it was drawn" + ax_img.set_title("samples") + assert next(im for ax in plot.figure().axes for im in ax.images).axes.get_title() == "samples (step 4)" class _FakeHandle: @@ -195,5 +198,5 @@ def test_process_mode_curves_beside_images(fake_notebook): plot.finish() assert len(fake_notebook.frames) > n and all(f[:8] == PNG for f in fake_notebook.frames) assert not plot._proc.is_alive() - assert len(plot._images) == 1 and plot._images[1].shape == (16, 16, 3) + assert len(plot._images) == 1 and plot._images[1].shape == (22, 22, 3) assert [s["kind"] for s in plot._specs] == ["curve", "image"] From 4167794dd119b3af32d194abc25b24b609760b0f Mon Sep 17 00:00:00 2001 From: David Quarel Date: Mon, 21 Sep 2026 16:09:10 +0000 Subject: [PATCH 3/4] DCGAN-shaped runs: update()/set_description(), ax.legend(), width_ratios, and a synthetic demo What splicing liveplot into ARENA [0.5]'s DCGANTrainer needed, in the names the code already uses: - plot.update(n) / plot.set_description(desc): tqdm's manual mode, for a loop that drives one bar for the whole run (progress_bar.update() in the trainer). The first update() opens the bar below the figure; finish() closes it with the final postfix. - ax.legend(**kwargs) -> Axes.legend, so a six-entry legend can move off the curves. - LivePlot.subplots(width_ratios=, height_ratios=), as plt.subplots; layout messages now carry the grid options, since subplots sets them after the render process has started. - examples/dcgan_synthetic.py: the trainer's shape with fake losses (lossD from ln 4 down, lossG from ln 2 up, D(x) / D(G(z)) on a right-hand axis, smoothed) and ten real CelebA faces coming out of noise as the fake generator's samples, fetched as 70 kB through the HF dataset viewer. Runs live in a notebook / interactive window, or records a GIF as a script. Checked in a real kernel: one image output holding both panels, and the tqdm bar underneath. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 23 ++++- examples/dcgan_synthetic.py | 164 ++++++++++++++++++++++++++++++++++++ liveplot/liveplot.py | 69 +++++++++++++-- tests/test_subplots.py | 39 +++++++++ 4 files changed, 286 insertions(+), 9 deletions(-) create mode 100644 examples/dcgan_synthetic.py diff --git a/README.md b/README.md index 5ee27a5..10300fd 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,28 @@ plot.finish() `ax.plot("lossD", data=d)` form with the data source implicit -- the plot is the source, filled in later by `log()`. `axes` follows matplotlib's squeeze rules: one panel for 1x1, a flat list for a single row or column, a 2-d grid otherwise (`axes[0][1]` and `axes[0, 1]` both work, and -`axes.flat` walks it). `figsize` is the whole figure in inches, as matplotlib means it. +`axes.flat` walks it). `figsize` is the whole figure in inches, as matplotlib means it, and +`width_ratios` / `height_ratios` are matplotlib's too: `width_ratios=(1, 1.25)` gives a wide grid +of samples more room. `ax.legend(**kwargs)` goes to `Axes.legend`, so a crowded legend can move +off the curves: `ax.legend(loc="upper center", bbox_to_anchor=(0.5, -0.14), ncols=3)`. + +A training loop that already drives its own bar, one for the whole run rather than one per epoch, +keeps its shape: `plot.update()` and `plot.set_description(...)` are tqdm's manual-mode methods, +and the first `update()` opens the bar below the figure. + +```python +plot, (ax_loss, ax_samples) = LivePlot.subplots(1, 2, total=epochs * len(loader), width_ratios=(1, 1.25)) +for epoch in range(epochs): + plot.set_description(f"epoch {epoch}") + for imgs, _ in loader: + plot.log(lossD=..., lossG=...) + plot.update() +plot.finish() +``` + +[`examples/dcgan_synthetic.py`](examples/dcgan_synthetic.py) is the whole thing on a fake DCGAN run +laid out like ARENA's [0.5] trainer: smoothed losses with `ln 4` / `ln 2` reference lines and the +discriminator's outputs on a right-hand axis, beside ten CelebA faces coming out of the noise. For a single picture with no curves, `plot.imshow(x)` makes the panel on first use and every later call replaces it: diff --git a/examples/dcgan_synthetic.py b/examples/dcgan_synthetic.py new file mode 100644 index 0000000..8dcf02e --- /dev/null +++ b/examples/dcgan_synthetic.py @@ -0,0 +1,164 @@ +# %% +""" +A synthetic DCGAN run, laid out like `DCGANTrainer` in ARENA's [0.5] VAEs & GANs day, to show what +liveplot looks like on that training loop without a GPU. Nothing is trained: the losses are made up +to behave the way the course describes (lossD starting at ln 4 and falling, lossG starting at ln 2 +and rising, D(x) and D(G(z)) pulling apart from 1/2), and the "generator" returns ten real CelebA +faces behind noise that fades as training goes on. + +Run it cell by cell in the VS Code / Cursor interactive window or Jupyter to see it live: the loss +curves and the samples side by side in one output, with a tqdm bar underneath. Run it as a script +(`python examples/dcgan_synthetic.py`) and nothing is drawn on screen, but it records the run to +`dcgan_synthetic.gif`. + +Needs torch and Pillow, and fetches ten CelebA faces (about 70 kB, cached in ~/.cache/liveplot) +through Hugging Face's dataset viewer, not the 1.4 GB dataset. + +The parts to copy into the real trainer are marked `# liveplot:`. +""" + +import io +import json +import math +import sys +import time +import urllib.request +from dataclasses import dataclass +from pathlib import Path + +import numpy as np +import torch as t +from PIL import Image + +from liveplot import LivePlot + +MAIN = __name__ == "__main__" +CELEB_IMAGE_SIZE = 64 + + +# %% +# The data: ten CelebA faces, prepared as the course's `get_dataset("CELEB")` does (resize the short +# side to 64, centre-crop to 64x64, uint8), then mapped to [-1, 1] like TANH_RANGE_TRANSFORM. + + +def celeba_faces(n: int = 10) -> t.Tensor: + """(n, 3, 64, 64) uint8: the first n images of nielsr/CelebA-faces, the dataset the course uses.""" + cache = Path.home() / ".cache" / "liveplot" / f"celeba_faces_{n}.npy" + if not cache.exists(): + url = f"https://datasets-server.huggingface.co/rows?dataset=nielsr/CelebA-faces&config=default&split=train&offset=0&length={n}" + rows = json.load(urllib.request.urlopen(url, timeout=60))["rows"] + faces = [] + for row in rows: + img = Image.open(io.BytesIO(urllib.request.urlopen(row["row"]["image"]["src"], timeout=60).read())).convert("RGB") + scale = CELEB_IMAGE_SIZE / min(img.size) # transforms.Resize(64): the short side to 64 + img = img.resize((round(img.width * scale), round(img.height * scale)), Image.BILINEAR) + left, top = (img.width - CELEB_IMAGE_SIZE) // 2, (img.height - CELEB_IMAGE_SIZE) // 2 + img = img.crop((left, top, left + CELEB_IMAGE_SIZE, top + CELEB_IMAGE_SIZE)) # CenterCrop(64) + faces.append(np.asarray(img).transpose(2, 0, 1)) + cache.parent.mkdir(parents=True, exist_ok=True) + np.save(cache, np.stack(faces)) + return t.from_numpy(np.load(cache)) + + +def tanh_range(x: t.Tensor) -> t.Tensor: + """TANH_RANGE_TRANSFORM on a uint8 batch: [0, 255] -> [-1, 1].""" + return x.float() / 127.5 - 1 + + +# %% +# The trainer. Same shape as the course's DCGANTrainer; the two training steps and the generator are +# fakes, and everything liveplot adds is marked. + + +@dataclass +class DCGANArgs: + batch_size: int = 64 + epochs: int = 3 + batches_per_epoch: int = 150 # stands in for len(self.trainloader) + log_every_n_steps: int = 15 # 250 in the course, with ~3000 batches per epoch + seconds_per_step: float = 0.03 # stands in for the GPU's time per batch + seed: int = 0 + + +class SyntheticDCGANTrainer: + def __init__(self, args: DCGANArgs): + self.args = args + self.gen = t.Generator().manual_seed(args.seed) + self.faces = tanh_range(celeba_faces(10)) # what a well-trained netG(self.fixed_noise) would give + self.fixed_noise = t.randn(self.faces.shape, generator=self.gen) # the fake generator's own noise + self.total_steps = args.epochs * args.batches_per_epoch + self.d_state = t.zeros(2) # slowly wandering offsets that make D(x), D(G(z)) look like a real run + + def _progress(self) -> float: + return self.step / self.total_steps + + def training_step_discriminator(self) -> tuple[float, float, float]: + """Returns lossD and the discriminator's mean outputs D(x) (real) and D(G(z)) (fake).""" + gap = 0.26 * (1 - math.exp(-6 * self._progress())) # D learns to separate real from fake, fast then slow + self.d_state = 0.9 * self.d_state + 0.04 * t.randn(2, generator=self.gen) + spike = 0.12 * float(t.rand(1, generator=self.gen) < 0.01) # the odd batch D gets badly wrong + d_real = min(max(0.5 + gap + float(self.d_state[0]) - spike, 0.02), 0.98) + d_fake = min(max(0.5 - gap + float(self.d_state[1]) + spike, 0.02), 0.98) + lossD = -(math.log(d_real) + math.log(1 - d_fake)) # the course's lossD, at the batch-mean outputs + return lossD, d_real, d_fake + + def training_step_generator(self, d_fake: float) -> float: + """lossG = -log D(G(z)), after the discriminator's step has moved D(G(z)) a little.""" + d_fake = min(max(d_fake + 0.03 * float(t.randn(1, generator=self.gen)), 0.02), 0.98) + return -math.log(d_fake) + + @t.inference_mode() + def log_samples(self) -> None: + """netG(self.fixed_noise), faked: the faces, behind noise that fades as training goes on.""" + quality = 1 - math.exp(-4 * self._progress()) + output = quality * self.faces + (1 - quality) * self.fixed_noise + # Clip values to make the visualization clearer (as the course does) + output = output.clamp(output.quantile(0.01), output.quantile(0.99)) + self.ax_samples.imshow(output, rows=2) # liveplot: replaces LiveImage.update / wandb.Image + + def train(self, **plot_kwargs) -> LivePlot: + self.step = 0 + # liveplot: one figure for the curves and the samples, and the tqdm bar underneath it (this + # replaces `self.live_image = LiveImage()` and `progress_bar = tqdm(total=...)`) + self.plot, (ax_loss, self.ax_samples) = LivePlot.subplots( + 1, 2, total=self.total_steps, figsize=(12, 4), width_ratios=(1, 1.25), **plot_kwargs + ) + ax_loss.plot("lossD", "lossG") + ax_loss.set_smooth(0.6) # per-batch GAN losses are noisy: wandb's smoothing, raw values faded behind + ax_loss.axhline(math.log(4), "ln 4: lossD, D at chance") # where lossD starts, and where a perfect G ends + ax_loss.axhline(math.log(2), "ln 2: lossG, D at chance", linestyle=":") # ... and the same for lossG + ax_loss.twinx().plot("D(x)", "D(G(z))").set_ylim(0, 1) + ax_loss.set_title("losses (left), discriminator outputs (right)") + ax_loss.legend(loc="upper center", bbox_to_anchor=(0.5, -0.14), ncols=3) # under the panel, off the curves + self.ax_samples.set_title("netG(fixed_noise)") + + for epoch in range(self.args.epochs): + self.plot.set_description(f"epoch {epoch}") # liveplot: was progress_bar.set_description + for _ in range(self.args.batches_per_epoch): # for img_real, label in self.trainloader: + lossD, d_real, d_fake = self.training_step_discriminator() + lossG = self.training_step_generator(d_fake) + + # liveplot: log the step's numbers and advance the bar (was progress_bar.update()) + self.plot.log({"lossD": lossD, "lossG": lossG, "D(x)": d_real, "D(G(z))": d_fake}) + self.plot.update() + self.step += 1 + + if self.step % self.args.log_every_n_steps == 0: + self.log_samples() + time.sleep(self.args.seconds_per_step) + + self.log_samples() # the final samples, whatever the step count + self.plot.finish() + return self.plot + + +# %% +# Run it. In a notebook or interactive window you get the live figure with a bar underneath; as a +# script, the run is recorded to a GIF instead (pass a path to choose where). + +if MAIN: + in_notebook = "ipykernel" in sys.modules + gif = None if in_notebook else (sys.argv[1] if len(sys.argv) > 1 else "dcgan_synthetic.gif") + plot = SyntheticDCGANTrainer(DCGANArgs()).train(**({"record": gif, "refresh_seconds": 0.25} if gif else {})) + if gif: + print(f"{len(plot.frames)} frames -> {gif}") diff --git a/liveplot/liveplot.py b/liveplot/liveplot.py index 0d8c141..643a444 100644 --- a/liveplot/liveplot.py +++ b/liveplot/liveplot.py @@ -132,7 +132,7 @@ import weakref _PANEL_KEYS = {"title", "metrics", "secondary", "xlabel", "ylabel", "ylabel2", "xlim", "ylim", "ylim2", "axhlines", "axhlines2", - "axvlines", "smooth", "yscale", "yscale2", "kind", "cmap"} + "axvlines", "smooth", "yscale", "yscale2", "kind", "cmap", "legend"} _REF_LINE_STYLE = {"linestyle": "--", "linewidth": 1, "color": "0.45"} # defaults for axhline / axvline artists @@ -204,6 +204,7 @@ def _normalise_panel(spec, allow_empty: bool = False) -> dict: "yscale2": spec.get("yscale2", "linear"), # ... right axis "kind": kind, # "curve" (metric lines) or "image" (one picture, overwritten in place) "cmap": spec.get("cmap", "gray"), # image panels only; matplotlib ignores it for RGB data + "legend": dict(spec.get("legend") or {}), # Axes.legend kwargs (loc, ncols, bbox_to_anchor, ...) } @@ -276,13 +277,14 @@ def set_layout(self, panels): from matplotlib.backends.backend_agg import FigureCanvasAgg from matplotlib.figure import Figure - max_cols, rows_opt, cols_opt, cell_size, dpi, xlabel = self.layout + max_cols, rows_opt, cols_opt, cell_size, dpi, xlabel, *rest = self.layout + gridspec_kw = rest[0] if rest else {} # width_ratios / height_ratios, from subplots() n = len(panels) rows, cols = _grid_shape(n, max_cols, rows_opt, cols_opt) self.fig = Figure(figsize=(cell_size[0] * cols, cell_size[1] * rows)) FigureCanvasAgg(self.fig) self.dpi = dpi - axes = self.fig.subplots(rows, cols, squeeze=False).flatten() + axes = self.fig.subplots(rows, cols, squeeze=False, gridspec_kw=gridspec_kw).flatten() palette = matplotlib.rcParams["axes.prop_cycle"].by_key()["color"] self.lines = {} self.raw_lines = {} # metric -> faded line of the unsmoothed values, on smoothed panels @@ -329,7 +331,8 @@ def set_layout(self, panels): ax.set_ylim(*panel["ylim"]) self.fixed[ax] = (xlim is not None, panel["ylim"] is not None) if names and names != ["_"]: # (nothing logged yet, or the "waiting for data" placeholder) - ax.legend(handles, names, loc="best", fontsize=8) # every panel gets a legend (reference lines included) + # every panel gets a legend (reference lines included); Panel.legend(**kwargs) moves or styles it + ax.legend(handles, names, **{"loc": "best", "fontsize": 8, **panel["legend"]}) if ax2 is not None: ax.set_ylabel(panel["ylabel"] or ", ".join(panel["metrics"])) ax2.set_ylabel(panel["ylabel2"] or ", ".join(panel["secondary"])) @@ -415,7 +418,7 @@ def _render_worker(panels, inbox, outbox, refresh_seconds, layout, xlim, parent_ """ Loop: collect messages from `inbox`, redraw at most once per `refresh_seconds` while there is new data, put PNG bytes on `outbox`. Messages: ("data", step, - metrics); ("layout", panels) to rebuild the figure; None to finish (draw one + metrics); ("layout", panels, layout) to rebuild the figure; None to finish (draw one last frame, put None, exit). Exits on its own if the parent process is gone. """ signal.signal(signal.SIGINT, signal.SIG_IGN) # Jupyter interrupts the whole process group; not our business @@ -447,6 +450,7 @@ def _render_worker(panels, inbox, outbox, refresh_seconds, layout, xlim, parent_ if item is None: running = False elif item[0] == "layout": + renderer.layout = item[2] # grid options can change after start (subplots' width_ratios) renderer.set_layout(item[1]) dirty = True elif item[0] == "axvline": @@ -590,6 +594,9 @@ def set(self, **kwargs): def set_title(self, label): self.panel.set_title(label) + def legend(self, **kwargs): + self.panel.legend(**kwargs) + def set_xlabel(self, xlabel): self.panel.set_xlabel(xlabel) @@ -674,6 +681,14 @@ def _set(self, key, value): def set_title(self, label): self._set("title", str(label)) + def legend(self, **kwargs): + """ + Like `Axes.legend`, for the panel's one legend (both y-axes' curves and its reference lines): + kwargs go to matplotlib, e.g. `legend(loc="upper left", ncols=3)`, or + `legend(loc="upper center", bbox_to_anchor=(0.5, -0.15), ncols=3)` to put it under the panel. + """ + self._set("legend", kwargs) + def set_xlabel(self, xlabel): self._set("xlabel", str(xlabel)) @@ -795,6 +810,7 @@ def __init__( self._placed = {n for p in self._specs for n in p["metrics"] + p["secondary"]} self._layout = (max_cols, rows, cols, cell_size, dpi, unit) self._iterable, self._bar, self._desc, self._progress = iterable, None, desc, progress + self._own_bar = None # the bar update() opened, which finish() closes if total is None and iterable is not None: try: total = len(iterable) @@ -858,7 +874,7 @@ def _with_defaults(self, panel): @classmethod def subplots(cls, nrows: int = 1, ncols: int = 1, *, figsize=None, squeeze: bool = True, - iterable=None, **kwargs): + width_ratios=None, height_ratios=None, iterable=None, **kwargs): """ Like `plt.subplots`, for a live plot: returns `(plot, axes)` with a fixed nrows x ncols grid of empty panels, which you then fill with `ax.plot("loss", ...)` or `ax.imshow(tensor)`. @@ -869,7 +885,9 @@ def subplots(cls, nrows: int = 1, ncols: int = 1, *, figsize=None, squeeze: bool `axes` follows matplotlib's squeeze rules: one panel for 1x1, a flat list for a single row or column, a 2-d grid otherwise. `figsize` is the whole figure in inches, as matplotlib - means it (liveplot's own `cell_size` is per panel). Every other keyword goes to `LivePlot`. + means it (liveplot's own `cell_size` is per panel). `width_ratios` / `height_ratios` are + matplotlib's too, e.g. `width_ratios=(1, 1.3)` to give an image panel more room. Every other + keyword goes to `LivePlot`. """ assert nrows >= 1 and ncols >= 1, f"need at least a 1x1 grid, got {nrows}x{ncols}" kwargs.setdefault("rows", nrows) @@ -877,6 +895,11 @@ def subplots(cls, nrows: int = 1, ncols: int = 1, *, figsize=None, squeeze: bool if figsize is not None: kwargs["cell_size"] = (figsize[0] / ncols, figsize[1] / nrows) plot = cls(*([] if iterable is None else [iterable]), **kwargs) + gridspec_kw = {k: list(v) for k, v in (("width_ratios", width_ratios), ("height_ratios", height_ratios)) if v is not None} + if gridspec_kw: + assert len(gridspec_kw.get("width_ratios", [0] * ncols)) == ncols, "width_ratios needs one entry per column" + assert len(gridspec_kw.get("height_ratios", [0] * nrows)) == nrows, "height_ratios needs one entry per row" + plot._layout = (*plot._layout[:6], gridspec_kw) plot._specs.extend( plot._with_defaults(_normalise_panel({"metrics": []}, allow_empty=True)) for _ in range(nrows * ncols) ) @@ -1053,6 +1076,32 @@ def __call__(self, iterable, **tqdm_kwargs): if ours: bar.close() + def update(self, n=1): + """ + Like tqdm's `update`, for a loop you drive yourself: advance the count, and so the x-axis, by + `n` items. The first call opens a bar of `total` items below the plot, as `tqdm(total=...)` + would, and `finish()` closes it. One bar for a whole multi-epoch run: + + plot = LivePlot(total=epochs * len(loader)) + for epoch in range(epochs): + for batch in loader: + plot.log(loss=train_step(batch)) + plot.update() + plot.finish() + """ + self._wrapping = True + if self._bar is None and self._own_bar is None: + self._own_bar = self._bar = self._make_bar(None, {"desc": self._desc} if self._desc else {}) + self.n += n + if self._own_bar is not None: + self._own_bar.update(n) + + def set_description(self, desc=None, refresh=True): + """Like tqdm's `set_description`: the text before the bar (e.g. f"epoch {epoch}").""" + self._desc = desc + if self._bar is not None: + self._bar.set_description(desc, refresh=refresh) + def __iter__(self): if self._iterable is None: raise TypeError("nothing to iterate: use LivePlot(iterable, ...), or plot(iterable) inside your loop") @@ -1192,8 +1241,9 @@ def _image_state(self) -> dict: def _send_layout(self): if self.mode == "process": - self._inbox.put(("layout", self._specs)) + self._inbox.put(("layout", self._specs, self._layout)) elif self.mode == "thread": + self._renderer.layout = self._layout self._renderer.set_layout(self._specs) def figure(self): @@ -1233,6 +1283,9 @@ def finish(self): if self._proc.is_alive(): # e.g. still importing matplotlib on a very busy machine self._proc.terminate() self._proc.join(timeout=2.0) + if self._own_bar is not None: + self._own_bar.set_postfix(self.latest, refresh=False) + self._own_bar.close() if self._record_path and self.frames: self.save_gif(self._record_path) diff --git a/tests/test_subplots.py b/tests/test_subplots.py index b59f6c8..285c2c3 100644 --- a/tests/test_subplots.py +++ b/tests/test_subplots.py @@ -200,3 +200,42 @@ def test_process_mode_curves_beside_images(fake_notebook): assert not plot._proc.is_alive() assert len(plot._images) == 1 and plot._images[1].shape == (22, 22, 3) assert [s["kind"] for s in plot._specs] == ["curve", "image"] + + +def test_width_ratios_and_legend_placement(): + """matplotlib's own names: subplots(width_ratios=...) and ax.legend(**kwargs).""" + plot, (ax_loss, ax_img) = LivePlot.subplots(1, 2, width_ratios=(1, 2), progress=False) + ax_loss.plot("lossD", "lossG") + ax_loss.twinx().plot("D(x)") + ax_loss.legend(loc="upper center", ncols=3) + ax_img.imshow(rng_images()) + plot.log(0, lossD=1.0, lossG=0.5, **{"D(x)": 0.5}) + fig = plot.figure() + axes = [ax for ax in fig.axes if ax.get_visible()] + ax_curves, ax_image = axes[0], axes[1] + assert ax_image.get_subplotspec().get_gridspec().get_width_ratios() == [1, 2] + legend = ax_curves.get_legend() + assert [t.get_text() for t in legend.get_texts()] == ["lossD", "lossG", "D(x)"], "one legend, both axes' curves" + assert legend._ncols == 3 and legend._loc == 9, "kwargs reached Axes.legend (9 = upper center)" + with pytest.raises(AssertionError, match="one entry per column"): + LivePlot.subplots(1, 2, width_ratios=(1, 2, 3), progress=False) + + +def test_update_drives_one_bar_across_epochs(): + """tqdm's manual mode: plot.update() advances the count (the x-axis) and one bar for the run.""" + pytest.importorskip("tqdm") + plot = LivePlot(total=6) + bars = set() + for epoch in range(2): + plot.set_description(f"epoch {epoch}") + for _ in range(3): + plot.log(loss=1.0) + plot.update() + bars.add(id(plot._bar)) + plot.finish() + assert len(bars) == 1 and plot._own_bar.n == 6 and plot._own_bar.total == 6 + assert plot._own_bar.desc.startswith("epoch 1") + assert plot.data["loss"][0] == [0, 1, 2, 3, 4, 5], "x counts updates, like a wrapped loop" + quiet = LivePlot(total=3, progress=False) + quiet.update(); quiet.update(2) + assert quiet._bar is None and quiet.step == 3, "progress=False: the count moves, no bar" From daf45e9a690396293a4797e207b0d97bdc65bf17 Mon Sep 17 00:00:00 2001 From: David Quarel Date: Mon, 21 Sep 2026 16:47:00 +0000 Subject: [PATCH 4/4] imshow defaults for "just plot this batch": edge to edge, near-square, capped, image panels fitted - Tiles sit edge to edge by default (padding=0); padding= / pad_value= still give make_grid's gaps. - Default grid: near-square, rows first (3 -> 2x2, 5 -> 3x2, 8 -> 3x3, 64 -> 8x8), at most max_cols=8 wide; rows= / cols= / griddim= override, and are never capped. - max_images=64: a bigger batch shows its first 64, with a warning naming the override; max_images=None shows everything. - One-row figures with an image panel and no width_ratios: the image panel is sized to its picture at the row's height and the curve panels share the rest of figsize, so the samples fill their panel instead of floating in white space. A picture of a new shape re-fits. - The step goes in an image's title only once the plot is counting steps. - dcgan_synthetic: nine samples, a 3x3 grid by default. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_013EWhdsyzPSUfHKMjcWif8D --- examples/dcgan_synthetic.py | 12 ++++----- liveplot/_images.py | 29 +++++++++++++++----- liveplot/liveplot.py | 54 ++++++++++++++++++++++++++++++------- tests/test_images.py | 35 +++++++++++++++++++----- tests/test_subplots.py | 25 +++++++++++++++-- 5 files changed, 126 insertions(+), 29 deletions(-) diff --git a/examples/dcgan_synthetic.py b/examples/dcgan_synthetic.py index 8dcf02e..2afd3f0 100644 --- a/examples/dcgan_synthetic.py +++ b/examples/dcgan_synthetic.py @@ -3,7 +3,7 @@ A synthetic DCGAN run, laid out like `DCGANTrainer` in ARENA's [0.5] VAEs & GANs day, to show what liveplot looks like on that training loop without a GPU. Nothing is trained: the losses are made up to behave the way the course describes (lossD starting at ln 4 and falling, lossG starting at ln 2 -and rising, D(x) and D(G(z)) pulling apart from 1/2), and the "generator" returns ten real CelebA +and rising, D(x) and D(G(z)) pulling apart from 1/2), and the "generator" returns nine real CelebA faces behind noise that fades as training goes on. Run it cell by cell in the VS Code / Cursor interactive window or Jupyter to see it live: the loss @@ -11,7 +11,7 @@ (`python examples/dcgan_synthetic.py`) and nothing is drawn on screen, but it records the run to `dcgan_synthetic.gif`. -Needs torch and Pillow, and fetches ten CelebA faces (about 70 kB, cached in ~/.cache/liveplot) +Needs torch and Pillow, and fetches nine CelebA faces (about 60 kB, cached in ~/.cache/liveplot) through Hugging Face's dataset viewer, not the 1.4 GB dataset. The parts to copy into the real trainer are marked `# liveplot:`. @@ -37,7 +37,7 @@ # %% -# The data: ten CelebA faces, prepared as the course's `get_dataset("CELEB")` does (resize the short +# The data: a few CelebA faces, prepared as the course's `get_dataset("CELEB")` does (resize the short # side to 64, centre-crop to 64x64, uint8), then mapped to [-1, 1] like TANH_RANGE_TRANSFORM. @@ -84,7 +84,7 @@ class SyntheticDCGANTrainer: def __init__(self, args: DCGANArgs): self.args = args self.gen = t.Generator().manual_seed(args.seed) - self.faces = tanh_range(celeba_faces(10)) # what a well-trained netG(self.fixed_noise) would give + self.faces = tanh_range(celeba_faces(9)) # what a well-trained netG(self.fixed_noise) would give self.fixed_noise = t.randn(self.faces.shape, generator=self.gen) # the fake generator's own noise self.total_steps = args.epochs * args.batches_per_epoch self.d_state = t.zeros(2) # slowly wandering offsets that make D(x), D(G(z)) look like a real run @@ -114,14 +114,14 @@ def log_samples(self) -> None: output = quality * self.faces + (1 - quality) * self.fixed_noise # Clip values to make the visualization clearer (as the course does) output = output.clamp(output.quantile(0.01), output.quantile(0.99)) - self.ax_samples.imshow(output, rows=2) # liveplot: replaces LiveImage.update / wandb.Image + self.ax_samples.imshow(output) # liveplot: replaces LiveImage.update / wandb.Image (9 -> a 3x3 grid) def train(self, **plot_kwargs) -> LivePlot: self.step = 0 # liveplot: one figure for the curves and the samples, and the tqdm bar underneath it (this # replaces `self.live_image = LiveImage()` and `progress_bar = tqdm(total=...)`) self.plot, (ax_loss, self.ax_samples) = LivePlot.subplots( - 1, 2, total=self.total_steps, figsize=(12, 4), width_ratios=(1, 1.25), **plot_kwargs + 1, 2, total=self.total_steps, figsize=(12, 4.5), **plot_kwargs ) ax_loss.plot("lossD", "lossG") ax_loss.set_smooth(0.6) # per-batch GAN losses are noisy: wandb's smoothing, raw values faded behind diff --git a/liveplot/_images.py b/liveplot/_images.py index 39b008b..94a48b2 100644 --- a/liveplot/_images.py +++ b/liveplot/_images.py @@ -119,11 +119,12 @@ def _to_uint8(a, vmin, vmax, scale_each: bool): return (np.clip(a, 0.0, 1.0) * 255).round().astype(np.uint8) -def grid_shape(n: int, rows: int | None, cols: int | None, griddim=None) -> tuple[int, int]: +def grid_shape(n: int, rows: int | None, cols: int | None, griddim=None, max_cols: int | None = 8) -> tuple[int, int]: """ Rows x cols for `n` images. `griddim=(rows, cols)` fixes both; one of `rows` / `cols` infers - the other; with neither, the near-square rule liveplot already uses for its panel grid. Unlike - the panel grid, the result need not fit: the caller pads short and drops long. + the other; with neither, the near-square rule liveplot already uses for its panel grid (3 -> 2x2, + 5 -> 3x2, 8 -> 3x3, 64 -> 8x8), at most `max_cols` wide. Unlike the panel grid, the result need + not fit: the caller pads short and drops long. """ if griddim is not None: assert rows is None and cols is None, "give griddim, or rows/cols, not both" @@ -131,6 +132,9 @@ def grid_shape(n: int, rows: int | None, cols: int | None, griddim=None) -> tupl if rows is None and cols is None: rows = math.ceil(math.sqrt(n)) cols = math.ceil(n / rows) + if max_cols is not None and cols > max_cols: + cols = max_cols + rows = math.ceil(n / cols) elif rows is None: rows = math.ceil(n / cols) elif cols is None: @@ -157,15 +161,28 @@ def _tile(a, rows: int, cols: int, pad_value: int, padding: int): return out -def to_grid(x, *, rows=None, cols=None, griddim=None, vmin=None, vmax=None, - scale_each=False, channels=None, padding=2, pad_value=0): +def to_grid(x, *, rows=None, cols=None, griddim=None, vmin=None, vmax=None, scale_each=False, + channels=None, padding=0, pad_value=0, max_images: int | None = 64, max_cols: int | None = 8): """ A tensor -> one uint8 image, (H, W) for grayscale or (H, W, 3|4), ready for `Axes.imshow`. Runs on the calling thread: tiling 10 64x64 RGB samples costs ~0.2 ms and quarters what the render process has to unpickle, and a CUDA tensor has to come back to the host here anyway. + + Only the first `max_images` of a batch are shown (with a warning), since a grid of 1000 + thumbnails is rarely what anyone meant; `max_images=None` shows them all. Images sit edge to + edge; `padding` pixels of `pad_value` between them if you want gaps, as make_grid draws them. """ + import warnings + a = _as_bhwc(_as_array(x), channels) - rows, cols = grid_shape(a.shape[0], rows, cols, griddim) + if max_images is not None and a.shape[0] > max_images: + warnings.warn( + f"imshow: showing the first {max_images} of {a.shape[0]} images " + f"(slice the batch yourself, or pass max_images=None to show them all)", + stacklevel=3, + ) + a = a[:max_images] + rows, cols = grid_shape(a.shape[0], rows, cols, griddim, max_cols) a = a[: rows * cols] # drop before scaling: an image nobody can see must not set the range a = _to_uint8(a, vmin, vmax, scale_each) grid = _tile(a, rows, cols, pad_value, padding) diff --git a/liveplot/liveplot.py b/liveplot/liveplot.py index 643a444..8da4554 100644 --- a/liveplot/liveplot.py +++ b/liveplot/liveplot.py @@ -281,7 +281,16 @@ def set_layout(self, panels): gridspec_kw = rest[0] if rest else {} # width_ratios / height_ratios, from subplots() n = len(panels) rows, cols = _grid_shape(n, max_cols, rows_opt, cols_opt) - self.fig = Figure(figsize=(cell_size[0] * cols, cell_size[1] * rows)) + self.panels = panels + fig_width = cell_size[0] * cols + # One row with pictures in it, and no width_ratios chosen: size each image panel to its picture + # at the row's height, and give the curves what is left, so neither is framed in white space. + self.fitted_aspects = None + if rows == 1 and "width_ratios" not in gridspec_kw and any(p["kind"] == "image" for p in panels): + widths, self.fitted_aspects = self._fitted_widths(panels, cell_size, fig_width) + fig_width = sum(widths) + gridspec_kw = {**gridspec_kw, "width_ratios": widths + [widths[-1]] * (cols - n)} + self.fig = Figure(figsize=(fig_width, cell_size[1] * rows)) FigureCanvasAgg(self.fig) self.dpi = dpi axes = self.fig.subplots(rows, cols, squeeze=False, gridspec_kw=gridspec_kw).flatten() @@ -352,8 +361,29 @@ def set_layout(self, panels): for index in self.images: # a re-layout rebuilds the figure; put the pictures back if index in self.image_axes: self._draw_image(index) - self.fig.tight_layout() + self.fig.tight_layout(pad=0.6) + def _fitted_widths(self, panels, cell_size, fig_width): + """ + Panel widths in inches for a one-row figure: an image panel is as wide as its picture is at the + row's height (less room for the title), the curve panels share the rest of the figure's width, + or keep their own if the pictures leave too little. Also returns the aspect ratio each image + panel was sized for, so a picture of another shape can trigger a re-layout. + """ + cell_w, cell_h = cell_size + aspects = {} + for i, panel in enumerate(panels): + if panel["kind"] == "image": + arr = self.images.get(i, (None,))[0] + aspects[i] = None if arr is None else arr.shape[1] / arr.shape[0] + image_h = cell_h - 0.55 # the title above, and tight_layout's margins + widths = [0.2 + image_h * aspects[i] if aspects.get(i) else cell_w for i in range(len(panels))] + curves = [i for i, panel in enumerate(panels) if panel["kind"] != "image"] + if curves: + spare = (fig_width - sum(widths[i] for i in aspects)) / len(curves) + for i in curves: + widths[i] = max(spare, 0.6 * cell_w) + return widths, aspects def add_axvline(self, kw: dict): self.axvlines.append(kw) self._draw_axvline(kw) @@ -374,6 +404,8 @@ def add_image(self, index: int, arr, x=None): def _draw_image(self, index: int): arr, x = self.images[index] + if self.fitted_aspects is not None and self.fitted_aspects.get(index) != arr.shape[1] / arr.shape[0]: + return self.set_layout(self.panels) # a picture of a new shape: re-fit the panel widths (draws it too) ax = self.image_axes[index] if x is not None: # say how old the picture is: it is only redrawn when imshow is called title, when = self.panel_titles[index], f"{self.layout[5]} {x:g}" @@ -644,13 +676,16 @@ def plot(self, *metrics) -> _Axis: """Like `ax.plot("name", data=...)`: put these metrics on the left axis. See `_Axis.plot`.""" return self.left.plot(*metrics) - def imshow(self, x, *, rows=None, cols=None, griddim=None, vmin=None, vmax=None, - scale_each=False, channels=None, cmap="gray", padding=2, pad_value=0): + def imshow(self, x, *, rows=None, cols=None, griddim=None, vmin=None, vmax=None, scale_each=False, + channels=None, cmap="gray", padding=0, pad_value=0, max_images=64, max_cols=8): """ Like `Axes.imshow`, but for a whole batch and repeatable: show `x` on this panel, replacing whatever was there. A batch is tiled into a grid -- `rows` or `cols` alone infers the other, - `griddim=(rows, cols)` fixes both (padding with blanks, or dropping the tail). Images are - `padding` pixels of `pad_value` apart, as in make_grid. The title shows the step it was drawn at. + `griddim=(rows, cols)` fixes both (padding with blanks, or dropping the tail). With neither, + the grid is near-square (3 -> 2x2, 5 -> 3x2, 8 -> 3x3, 64 -> 8x8), at most `max_cols` wide. + Only the first `max_images` are shown, with a warning (`max_images=None` for all of them). + Images sit edge to edge; `padding` puts that many pixels of `pad_value` between them. The + title shows the step the image was drawn at. Accepts (H, W), (C, H, W), (H, W, C), (B, H, W), (B, C, H, W) and (B, H, W, C); (3, H, W) and (4, H, W) are ambiguous and raise, telling you which `channels=` to pass. @@ -666,8 +701,9 @@ def imshow(self, x, *, rows=None, cols=None, griddim=None, vmin=None, vmax=None, assert not (spec["metrics"] or spec["secondary"]), \ f"panel {self._index} is showing curves ({' '.join(spec['metrics'] + spec['secondary'])}); " \ f"use a different panel for the image" - arr = to_grid(x, rows=rows, cols=cols, griddim=griddim, vmin=vmin, vmax=vmax, - scale_each=scale_each, channels=channels, padding=padding, pad_value=pad_value) + arr = to_grid(x, rows=rows, cols=cols, griddim=griddim, vmin=vmin, vmax=vmax, scale_each=scale_each, + channels=channels, padding=padding, pad_value=pad_value, max_images=max_images, + max_cols=max_cols) if spec["kind"] != "image" or spec["cmap"] != cmap: spec["kind"], spec["cmap"] = "image", cmap self._plot._send_layout() @@ -1228,7 +1264,7 @@ def _place(self, metrics): self._send_layout() def _send_image(self, index: int, arr): - x = self.step + x = self.step if self._wrapping or self.latest else None # a step in the title only once there are steps self._images[index], self._image_steps[index] = arr, x if self.mode == "process": self._inbox.put(("image", index, arr, x)) diff --git a/tests/test_images.py b/tests/test_images.py index 6fdac47..979c38a 100644 --- a/tests/test_images.py +++ b/tests/test_images.py @@ -1,5 +1,7 @@ """Shape reading, grid tiling and value scaling for `imshow` -- all of `_images.py`, no figure.""" +import warnings + import numpy as np import pytest @@ -13,10 +15,10 @@ def test_accepted_layouts(): assert to_grid(np.zeros((64, 64, 3))).shape == (64, 64, 3), "channels last" assert to_grid(np.zeros((64, 64, 4))).shape == (64, 64, 4) assert to_grid(np.zeros((3, 64, 64)), channels="first").shape == (64, 64, 3) - assert to_grid(np.zeros((5, 8, 8))).shape == (32, 22), "5 grayscale -> near-square 3x2, one blank, 2px gaps" - assert to_grid(np.zeros((4, 1, 8, 8))).shape == (22, 22), "(B, 1, H, W) -> 2x2" - assert to_grid(np.zeros((4, 3, 8, 8))).shape == (22, 22, 3), "(B, C, H, W), torch's layout" - assert to_grid(np.zeros((4, 8, 8, 3))).shape == (22, 22, 3), "(B, H, W, C), channels last" + assert to_grid(np.zeros((5, 8, 8))).shape == (24, 16), "5 grayscale -> near-square 3x2, one blank" + assert to_grid(np.zeros((4, 1, 8, 8))).shape == (16, 16), "(B, 1, H, W) -> 2x2, edge to edge" + assert to_grid(np.zeros((4, 3, 8, 8))).shape == (16, 16, 3), "(B, C, H, W), torch's layout" + assert to_grid(np.zeros((4, 8, 8, 3))).shape == (16, 16, 3), "(B, H, W, C), channels last" def test_the_ambiguous_shapes_raise_and_say_how_to_fix_it(): @@ -107,11 +109,32 @@ def test_pad_value(): def test_padding_between_images(): """make_grid's layout: `padding` pixels around every image; one image alone gets no border.""" - g = to_grid(np.ones((2, 1, 3, 3), np.float32), griddim=(1, 2), vmin=0, vmax=1, pad_value=7) + g = to_grid(np.ones((2, 1, 3, 3), np.float32), griddim=(1, 2), vmin=0, vmax=1, padding=2, pad_value=7) assert g.shape == (3 + 4, 2 * 3 + 6) assert (g[2:5, 2:5] == 255).all() and (g[2:5, 7:10] == 255).all(), "the images" assert (g[:2] == 7).all() and (g[:, 5:7] == 7).all(), "the border and the gap between" - assert to_grid(np.ones((3, 3))).shape == (3, 3) + assert to_grid(np.ones((3, 3)), padding=2).shape == (3, 3) + assert to_grid(np.ones((2, 1, 3, 3)), griddim=(1, 2)).shape == (3, 6), "the default is edge to edge" + + +def test_default_grid_shapes(): + """Near-square, rows first: what "just plot this batch" gives, capped at 8 columns.""" + shapes = {n: grid_shape(n, None, None) for n in (1, 2, 3, 4, 5, 8, 9, 10, 16, 64)} + assert shapes == {1: (1, 1), 2: (2, 1), 3: (2, 2), 4: (2, 2), 5: (3, 2), 8: (3, 3), 9: (3, 3), + 10: (4, 3), 16: (4, 4), 64: (8, 8)} + assert grid_shape(100, None, None) == (13, 8), "never wider than max_cols=8 ..." + assert grid_shape(100, None, None, max_cols=None) == (10, 10), "... unless told otherwise" + assert grid_shape(100, None, 20) == (5, 20), "an explicit cols is not capped" + + +def test_max_images_truncates_with_a_warning(): + many = np.zeros((1000, 1, 2, 2), np.float32) + with pytest.warns(UserWarning, match="first 64 of 1000"): + assert to_grid(many).shape == (16, 16), "64 images, 8x8" + with warnings.catch_warnings(): + warnings.simplefilter("error") + assert to_grid(many, max_images=None).shape == (125 * 2, 8 * 2), "all 1000, 8 wide: asked for, so no warning" + assert to_grid(many[:64]).shape == (16, 16), "exactly max_images: no warning" def test_bfloat16_tensors(): diff --git a/tests/test_subplots.py b/tests/test_subplots.py index 285c2c3..a0fb4e8 100644 --- a/tests/test_subplots.py +++ b/tests/test_subplots.py @@ -86,6 +86,7 @@ def test_image_panel_and_curve_panel_do_not_mix(): def test_plot_level_imshow_is_the_whole_of_liveimage(): plot = LivePlot(progress=False) plot.imshow(rng_images(seed=1)) + assert plot._image_steps[0] is None, "nothing logged or wrapped yet: no step to put in the title" first = plot._images[0].copy() plot.imshow(rng_images(seed=2)) assert [s["kind"] for s in plot._specs] == ["image"], "one image panel, reused" @@ -139,7 +140,7 @@ def test_figure_includes_the_image(): assert sum(len(ax.images) for ax in fig.axes) == 1 assert sum(len(ax.get_lines()) for ax in fig.axes) == 1 img = next(im for ax in fig.axes for im in ax.images) - assert img.get_array().shape == (22, 22, 3), "two rows of two 8x8 RGB images, 2px gaps" + assert img.get_array().shape == (16, 16, 3), "two rows of two 8x8 RGB images" assert img.axes.get_title() == "step 4", "an untitled image panel says when it was drawn" ax_img.set_title("samples") assert next(im for ax in plot.figure().axes for im in ax.images).axes.get_title() == "samples (step 4)" @@ -198,7 +199,7 @@ def test_process_mode_curves_beside_images(fake_notebook): plot.finish() assert len(fake_notebook.frames) > n and all(f[:8] == PNG for f in fake_notebook.frames) assert not plot._proc.is_alive() - assert len(plot._images) == 1 and plot._images[1].shape == (22, 22, 3) + assert len(plot._images) == 1 and plot._images[1].shape == (16, 16, 3) assert [s["kind"] for s in plot._specs] == ["curve", "image"] @@ -239,3 +240,23 @@ def test_update_drives_one_bar_across_epochs(): quiet = LivePlot(total=3, progress=False) quiet.update(); quiet.update(2) assert quiet._bar is None and quiet.step == 3, "progress=False: the count moves, no bar" + + +def test_image_panels_are_sized_to_their_picture(): + """One row, no width_ratios: the image panel is as wide as its picture needs, the curves get the rest.""" + plot, (ax_loss, ax_img) = LivePlot.subplots(1, 2, figsize=(12, 4), progress=False) + ax_loss.plot("loss") + plot.log(0, loss=1.0) + ax_img.imshow(rng_images(n=9, c=3)) # 3x3 of 8x8: square + fig = plot.figure() + assert fig.get_size_inches()[0] == pytest.approx(12), "figsize is kept" + ax_curves, ax_image = [ax for ax in fig.axes if ax.get_visible()] + fig.canvas.draw() + box = ax_image.get_window_extent() + assert box.width == pytest.approx(box.height, rel=0.02), "the picture fills its panel: no side margins" + assert ax_curves.get_window_extent().width > 1.5 * box.width, "the curves take the room the picture doesn't need" + ax_img.imshow(rng_images(n=8, c=3), griddim=(2, 4)) # a wide picture: the panel re-fits + box = [ax for ax in plot.figure().axes if ax.get_visible()][1] + box.figure.canvas.draw() + extent = box.get_window_extent() + assert extent.width == pytest.approx(2 * extent.height, rel=0.02)