You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Because this documentation consists of static html, the `live_plot` and `live_info` widget is not live.
Download the notebook in order to see the real behaviour. [^download]
:tags: [hide-cell]
import adaptive
import holoviews as hv
import numpy as np
from functools import partial
adaptive.notebook_extension()
Besides 1D functions, we can also learn 2D functions: $f: ℝ^2 → ℝ$.
def ring(xy, wait=True):
import numpy as np
from time import sleep
from random import random
if wait:
sleep(random() / 10)
x, y = xy
a = 0.2
return x + np.exp(-((x**2 + y**2 - 0.75**2) ** 2) / a**4)
learner = adaptive.Learner2D(ring, bounds=[(-1, 1), (-1, 1)])
runner = adaptive.Runner(learner, loss_goal=0.01)
:tags: [hide-cell]
await runner.task # This is not needed in a notebook environment!
import itertools
# Create a learner and add data on homogeneous grid, so that we can plot it
learner2 = adaptive.Learner2D(ring, bounds=learner.bounds)
n = int(learner.npoints**0.5)
xs, ys = [np.linspace(*bounds, n) for bounds in learner.bounds]
xys = list(itertools.product(xs, ys))
learner2.tell_many(xys, map(partial(ring, wait=False), xys))
(
learner2.plot(n).relabel("Homogeneous grid")
+ learner.plot().relabel("With adaptive")
+ learner2.plot(n, tri_alpha=0.4)
+ learner.plot(tri_alpha=0.4)
).cols(2).opts(hv.opts.EdgePaths(color="w"))